packages feed

vulkan 3.7 → 3.8

raw patch · 13 files changed

+2972/−106 lines, 13 files

Files

changelog.md view
@@ -2,6 +2,17 @@  ## WIP +## [3.8] - 2020-11-30++- Bump API version to v1.2.163+- Add `Vulkan.Requirement`, a module for specifying requirements for `Device`s+  and `Instance`s+- Expose SPIR-V Extensions and Capabilities in `Vulkan.SPIRVRequirements`+- Expose extension dependencies in `Vulkan.Extensions.Dependencies`+- Squash some warnings++Thanks to @sheaf for their help with this release!+ ## [3.7] - 2020-11-24 - Bump API version to v1.2.162   - This is a breaking change to anyone using VK_KHR_ray_tracing (which no
package.yaml view
@@ -1,5 +1,5 @@ name: vulkan-version: "3.7"+version: "3.8" synopsis: Bindings to the Vulkan graphics API. category: Graphics maintainer: Joe Hermaszewski <live.long.and.prosper@monoid.al>
+ src-manual/Vulkan/Requirement.hs view
@@ -0,0 +1,163 @@+{-# LANGUAGE DataKinds               #-}+{-# LANGUAGE DerivingStrategies      #-}+{-# LANGUAGE DeriveTraversable       #-}+{-# LANGUAGE DuplicateRecordFields   #-}+{-# LANGUAGE FlexibleInstances       #-}+{-# LANGUAGE GADTs                   #-}+{-# LANGUAGE MagicHash               #-}+{-# LANGUAGE NamedFieldPuns          #-}+{-# LANGUAGE PatternSynonyms         #-}+{-# LANGUAGE PolyKinds               #-}+{-# LANGUAGE RecordWildCards         #-}+{-# LANGUAGE ScopedTypeVariables     #-}+{-# LANGUAGE Strict                  #-}+{-# LANGUAGE TypeApplications        #-}+{-# LANGUAGE TypeFamilies            #-}+{-# LANGUAGE TypeOperators           #-}+{-# LANGUAGE UndecidableInstances    #-}+{-# LANGUAGE UndecidableSuperClasses #-}++module Vulkan.Requirement+  ( -- * Vulkan requirements+    InstanceRequirement(..)+  , DeviceRequirement(..)+  , -- * Utility functionality for handling structure chains+    KnownFeatureStruct(..)+  , KnownPropertyStruct(..)+  , SFeatureStruct(..)+  , SPropertyStruct(..)+  ) where++-- base+import Data.Typeable+  ( Typeable )+import Data.Word+  ( Word32 )++-- bytestring+import Data.ByteString+  ( ByteString )++-- vulkan+import Vulkan.Core10.Device+  ( DeviceCreateInfo(..)+  )+import Vulkan.Core10.DeviceInitialization+  ( PhysicalDeviceFeatures, PhysicalDeviceProperties+  )+import Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2+    ( PhysicalDeviceFeatures2(..), PhysicalDeviceProperties2(..) )+import Vulkan.CStruct+  ( FromCStruct, ToCStruct )+import Vulkan.CStruct.Extends+  ( Extends )+import Vulkan.Zero++----------------------------------------------------------------+-- Instance Requirements+----------------------------------------------------------------++-- | A requirement on a Vulkan 'Instance'.+data InstanceRequirement where+  -- | Require a minimum Vulkan instance version.+  RequireInstanceVersion+    :: { version :: Word32 }+    -> InstanceRequirement+  -- | Require a Vulkan layer.+  RequireInstanceLayer+    :: { instanceLayerName       :: ByteString+       , instanceLayerMinVersion :: Word32+         -- ^ The 'implementationVersion' of the layer must meet or exceed this+         -- version+       }+    -> InstanceRequirement+  -- | Require a Vulkan instance extension.+  RequireInstanceExtension+    :: { instanceExtensionLayerName  :: Maybe ByteString+       , instanceExtensionName       :: ByteString+       , instanceExtensionMinVersion :: Word32+       }+    -> InstanceRequirement++----------------------------------------------------------------+-- Device Requirements+----------------------------------------------------------------++-- A requirement on a Vulkan 'PhysicalDevice'.+data DeviceRequirement where+  -- | Require a minimum device version.+  RequireDeviceVersion+    :: { version :: Word32 }+    -> DeviceRequirement+  -- | Require a Vulkan physical device feature.+  RequireDeviceFeature+    :: forall struct+    .  KnownFeatureStruct struct+    => { featureName   :: ByteString+       , checkFeature  :: struct -> Bool+       , enableFeature :: struct -> struct+       }+    -> DeviceRequirement+  -- | Require a Vulkan physical device property.+  RequireDeviceProperty+    :: forall struct+    .  KnownPropertyStruct struct+    => { propertyName  :: ByteString+       , checkProperty :: struct -> Bool+       }+    -> DeviceRequirement+  -- | Require a Vulkan device extension.+  RequireDeviceExtension+    :: { deviceExtensionLayerName  :: Maybe ByteString+       , deviceExtensionName       :: ByteString+       , deviceExtensionMinVersion :: Word32+       }+    -> DeviceRequirement++-- | Singleton for a Vulkan structure that can appear in 'PhysicalDeviceFeatures2'.+--+-- It is either 'PhysicalDeviceFeatures', or it 'Extends' 'PhysicalDeviceFeatures2'.+data SFeatureStruct feat where+  BasicFeatureStruct+    :: SFeatureStruct PhysicalDeviceFeatures+  ExtendedFeatureStruct+    :: ( Show feat+       , Extends PhysicalDeviceFeatures2 feat, Extends DeviceCreateInfo feat+       , Zero feat, FromCStruct feat, ToCStruct feat+       )+    => SFeatureStruct feat++-- | A Vulkan structure that can appear in 'PhysicalDeviceFeatures2'.+class Typeable feat => KnownFeatureStruct feat where+  sFeatureStruct :: SFeatureStruct feat++instance KnownFeatureStruct PhysicalDeviceFeatures where+  sFeatureStruct = BasicFeatureStruct++instance {-# OVERLAPPABLE #-}+         ( Typeable feat, Show feat+         , Extends PhysicalDeviceFeatures2 feat, Extends DeviceCreateInfo feat+         , Zero feat, FromCStruct feat, ToCStruct feat+         )+      => KnownFeatureStruct feat where+  sFeatureStruct = ExtendedFeatureStruct++-- | Singleton for a Vulkan structure that can appear in 'PhysicalDeviceProperties2'.+--+-- It is either 'PhysicalDeviceProperties', or it 'Extends' 'PhysicalDeviceProperties2'.+data SPropertyStruct prop where+  BasicPropertyStruct+    :: SPropertyStruct PhysicalDeviceProperties+  ExtendedPropertyStruct+    :: ( Typeable prop, Extends PhysicalDeviceProperties2 prop, FromCStruct prop, ToCStruct prop )+    => SPropertyStruct prop++-- | A Vulkan structure that can appear in 'PhysicalDeviceProperties2'.+class Typeable prop => KnownPropertyStruct prop where+  sPropertyStruct :: SPropertyStruct prop+instance KnownPropertyStruct PhysicalDeviceProperties where+  sPropertyStruct = BasicPropertyStruct+instance {-# OVERLAPPABLE #-}+         ( Typeable prop, Extends PhysicalDeviceProperties2 prop, FromCStruct prop, ToCStruct prop )+       => KnownPropertyStruct prop where+  sPropertyStruct = ExtendedPropertyStruct
src/Vulkan.hs view
@@ -6,6 +6,7 @@                , module Vulkan.Core12                , module Vulkan.Extensions                , module Vulkan.NamedType+               , module Vulkan.SPIRVRequirements                , module Vulkan.Version                , module Vulkan.Zero                ) where@@ -15,6 +16,7 @@ import Vulkan.Core12 import Vulkan.Extensions import Vulkan.NamedType+import Vulkan.SPIRVRequirements import Vulkan.Version import Vulkan.Zero 
src/Vulkan/Extensions.hs view
@@ -1,6 +1,7 @@ {-# language CPP #-} -- No documentation found for Chapter "Extensions"-module Vulkan.Extensions  ( module Vulkan.Extensions.Handles+module Vulkan.Extensions  ( module Vulkan.Extensions.Dependencies+                          , module Vulkan.Extensions.Handles                           , module Vulkan.Extensions.VK_AMD_buffer_marker                           , module Vulkan.Extensions.VK_AMD_device_coherent_memory                           , module Vulkan.Extensions.VK_AMD_display_native_hdr@@ -223,6 +224,7 @@                           , module Vulkan.Extensions.VK_QCOM_render_pass_transform                           , module Vulkan.Extensions.VK_QCOM_rotated_copy_commands                           ) where+import Vulkan.Extensions.Dependencies import Vulkan.Extensions.Handles import Vulkan.Extensions.VK_AMD_buffer_marker import Vulkan.Extensions.VK_AMD_device_coherent_memory
+ src/Vulkan/Extensions/Dependencies.hs view
@@ -0,0 +1,481 @@+{-# language CPP #-}+-- No documentation found for Chapter "Dependencies"+module Vulkan.Extensions.Dependencies  () where++import Data.Word (Word32)+import Data.ByteString (ByteString)+import Vulkan.NamedType ((:::))+import Vulkan.Extensions.VK_AMD_display_native_hdr (pattern AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME)+import Vulkan.Extensions.VK_AMD_shader_core_properties2 (pattern AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME)+import Vulkan.Extensions.VK_AMD_shader_core_properties (pattern AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME)+import Vulkan.Extensions.VK_AMD_texture_gather_bias_lod (pattern AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME)+import Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME)+import Vulkan.Core10 (pattern API_VERSION_1_0)+import Vulkan.Extensions.VK_EXT_4444_formats (pattern EXT_4444_FORMATS_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_acquire_xlib_display (pattern EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_astc_decode_mode (pattern EXT_ASTC_DECODE_MODE_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_buffer_device_address (pattern EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_conservative_rasterization (pattern EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_debug_marker (pattern EXT_DEBUG_MARKER_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_debug_report (pattern EXT_DEBUG_REPORT_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_descriptor_indexing (pattern EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_device_memory_report (pattern EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_directfb_surface (pattern EXT_DIRECTFB_SURFACE_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_direct_mode_display (pattern EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_discard_rectangles (pattern EXT_DISCARD_RECTANGLES_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_display_control (pattern EXT_DISPLAY_CONTROL_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_display_surface_counter (pattern EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_extended_dynamic_state (pattern EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_external_memory_dma_buf (pattern EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_external_memory_host (pattern EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_fragment_density_map2 (pattern EXT_FRAGMENT_DENSITY_MAP_2_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_full_screen_exclusive (pattern EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_hdr_metadata (pattern EXT_HDR_METADATA_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_headless_surface (pattern EXT_HEADLESS_SURFACE_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_host_query_reset (pattern EXT_HOST_QUERY_RESET_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_image_drm_format_modifier (pattern EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_image_robustness (pattern EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_inline_uniform_block (pattern EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_line_rasterization (pattern EXT_LINE_RASTERIZATION_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_memory_budget (pattern EXT_MEMORY_BUDGET_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_memory_priority (pattern EXT_MEMORY_PRIORITY_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_metal_surface (pattern EXT_METAL_SURFACE_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_pci_bus_info (pattern EXT_PCI_BUS_INFO_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_queue_family_foreign (pattern EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_sampler_filter_minmax (pattern EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_sample_locations (pattern EXT_SAMPLE_LOCATIONS_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_scalar_block_layout (pattern EXT_SCALAR_BLOCK_LAYOUT_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_subgroup_size_control (pattern EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_swapchain_colorspace (pattern EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_texel_buffer_alignment (pattern EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr (pattern EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_transform_feedback (pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (pattern EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (pattern EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME)+import Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface (pattern FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME)+import Vulkan.Extensions.VK_GGP_frame_token (pattern GGP_FRAME_TOKEN_EXTENSION_NAME)+import Vulkan.Extensions.VK_GGP_stream_descriptor_surface (pattern GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME)+import Vulkan.Extensions.VK_GOOGLE_display_timing (pattern GOOGLE_DISPLAY_TIMING_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_acceleration_structure (pattern KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_android_surface (pattern KHR_ANDROID_SURFACE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_bind_memory2 (pattern KHR_BIND_MEMORY_2_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_buffer_device_address (pattern KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_copy_commands2 (pattern KHR_COPY_COMMANDS_2_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_create_renderpass2 (pattern KHR_CREATE_RENDERPASS_2_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_dedicated_allocation (pattern KHR_DEDICATED_ALLOCATION_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_deferred_host_operations (pattern KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_depth_stencil_resolve (pattern KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_device_group_creation (pattern KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_device_group (pattern KHR_DEVICE_GROUP_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_display (pattern KHR_DISPLAY_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_display_swapchain (pattern KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_driver_properties (pattern KHR_DRIVER_PROPERTIES_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_external_fence_capabilities (pattern KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_external_fence (pattern KHR_EXTERNAL_FENCE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_external_fence_fd (pattern KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_external_fence_win32 (pattern KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_external_memory_capabilities (pattern KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_external_memory (pattern KHR_EXTERNAL_MEMORY_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_external_memory_fd (pattern KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_external_memory_win32 (pattern KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_external_semaphore_capabilities (pattern KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_external_semaphore (pattern KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_external_semaphore_fd (pattern KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_external_semaphore_win32 (pattern KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_fragment_shading_rate (pattern KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_get_display_properties2 (pattern KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_get_memory_requirements2 (pattern KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_get_physical_device_properties2 (pattern KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (pattern KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_imageless_framebuffer (pattern KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_image_format_list (pattern KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_incremental_present (pattern KHR_INCREMENTAL_PRESENT_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_maintenance1 (pattern KHR_MAINTENANCE1_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_maintenance2 (pattern KHR_MAINTENANCE2_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_maintenance3 (pattern KHR_MAINTENANCE3_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_multiview (pattern KHR_MULTIVIEW_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_performance_query (pattern KHR_PERFORMANCE_QUERY_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_pipeline_executable_properties (pattern KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_portability_subset (pattern KHR_PORTABILITY_SUBSET_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_push_descriptor (pattern KHR_PUSH_DESCRIPTOR_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_ray_query (pattern KHR_RAY_QUERY_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (pattern KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion (pattern KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts (pattern KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_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_float16_int8 (pattern KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_shader_float_controls (pattern KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_shader_subgroup_extended_types (pattern KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_shader_terminate_invocation (pattern KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_shared_presentable_image (pattern KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_spirv_1_4 (pattern KHR_SPIRV_1_4_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_storage_buffer_storage_class (pattern KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_surface (pattern KHR_SURFACE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_surface_protected_capabilities (pattern KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_swapchain (pattern KHR_SWAPCHAIN_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_swapchain_mutable_format (pattern KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_timeline_semaphore (pattern KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_uniform_buffer_standard_layout (pattern KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_variable_pointers (pattern KHR_VARIABLE_POINTERS_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_wayland_surface (pattern KHR_WAYLAND_SURFACE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_win32_keyed_mutex (pattern KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_win32_surface (pattern KHR_WIN32_SURFACE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_xcb_surface (pattern KHR_XCB_SURFACE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_xlib_surface (pattern KHR_XLIB_SURFACE_EXTENSION_NAME)+import Vulkan.Version (pattern MAKE_VERSION)+import Vulkan.Extensions.VK_MVK_ios_surface (pattern MVK_IOS_SURFACE_EXTENSION_NAME)+import Vulkan.Extensions.VK_MVK_macos_surface (pattern MVK_MACOS_SURFACE_EXTENSION_NAME)+import Vulkan.Extensions.VK_NN_vi_surface (pattern NN_VI_SURFACE_EXTENSION_NAME)+import Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_compute_shader_derivatives (pattern NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_cooperative_matrix (pattern NV_COOPERATIVE_MATRIX_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_corner_sampled_image (pattern NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_coverage_reduction_mode (pattern NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing (pattern NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_device_diagnostics_config (pattern NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (pattern NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_device_generated_commands (pattern NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_external_memory_capabilities (pattern NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_external_memory (pattern NV_EXTERNAL_MEMORY_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_external_memory_win32 (pattern NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_fragment_shader_barycentric (pattern NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_fragment_shading_rate_enums (pattern NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (pattern NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_mesh_shader (pattern NV_MESH_SHADER_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_ray_tracing (pattern NV_RAY_TRACING_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_scissor_exclusive (pattern NV_SCISSOR_EXCLUSIVE_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_win32_keyed_mutex (pattern NV_WIN32_KEYED_MUTEX_EXTENSION_NAME)+import Vulkan.Extensions.VK_QCOM_render_pass_transform (pattern QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME)+import Vulkan.Extensions.VK_QCOM_rotated_copy_commands (pattern QCOM_rotated_copy_commands_EXTENSION_NAME)+-- | The set of other extensions required to use this extension+extensionDependencies :: ("extensionName" ::: ByteString) -> [ByteString]+extensionDependencies = \case+  KHR_SWAPCHAIN_EXTENSION_NAME -> [KHR_SURFACE_EXTENSION_NAME]+  KHR_DISPLAY_EXTENSION_NAME   -> [KHR_SURFACE_EXTENSION_NAME]+  KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME ->+    [KHR_SWAPCHAIN_EXTENSION_NAME, KHR_DISPLAY_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]+  KHR_XLIB_SURFACE_EXTENSION_NAME              -> [KHR_SURFACE_EXTENSION_NAME]+  KHR_XCB_SURFACE_EXTENSION_NAME               -> [KHR_SURFACE_EXTENSION_NAME]+  KHR_WAYLAND_SURFACE_EXTENSION_NAME           -> [KHR_SURFACE_EXTENSION_NAME]+  KHR_ANDROID_SURFACE_EXTENSION_NAME           -> [KHR_SURFACE_EXTENSION_NAME]+  KHR_WIN32_SURFACE_EXTENSION_NAME             -> [KHR_SURFACE_EXTENSION_NAME]+  EXT_DEBUG_MARKER_EXTENSION_NAME              -> [EXT_DEBUG_REPORT_EXTENSION_NAME]+  EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME        -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME   -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME -> [KHR_SURFACE_EXTENSION_NAME]+  NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME       -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_MULTIVIEW_EXTENSION_NAME                 -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  NV_EXTERNAL_MEMORY_EXTENSION_NAME            -> [NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME]+  NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME ->+    [NV_EXTERNAL_MEMORY_EXTENSION_NAME, NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME]+  NV_WIN32_KEYED_MUTEX_EXTENSION_NAME ->+    [ NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME+    , NV_EXTERNAL_MEMORY_EXTENSION_NAME+    , NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME+    ]+  KHR_DEVICE_GROUP_EXTENSION_NAME                 -> [KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME]+  NN_VI_SURFACE_EXTENSION_NAME                    -> [KHR_SURFACE_EXTENSION_NAME]+  EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_ASTC_DECODE_MODE_EXTENSION_NAME             -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_EXTERNAL_MEMORY_EXTENSION_NAME ->+    [KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME ->+    [ KHR_EXTERNAL_MEMORY_EXTENSION_NAME+    , KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    ]+  KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME ->+    [ KHR_EXTERNAL_MEMORY_EXTENSION_NAME+    , KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    ]+  KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME ->+    [ KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME+    , KHR_EXTERNAL_MEMORY_EXTENSION_NAME+    , KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    ]+  KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME ->+    [KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME ->+    [ KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME+    , KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    ]+  KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME ->+    [ KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME+    , KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    ]+  KHR_PUSH_DESCRIPTOR_EXTENSION_NAME     -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_16BIT_STORAGE_EXTENSION_NAME ->+    [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME]+  KHR_INCREMENTAL_PRESENT_EXTENSION_NAME -> [KHR_SWAPCHAIN_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]+  EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME -> [KHR_DISPLAY_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]+  EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME ->+    [EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME, KHR_DISPLAY_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]+  EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME -> [KHR_DISPLAY_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]+  EXT_DISPLAY_CONTROL_EXTENSION_NAME ->+    [ EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME+    , KHR_SWAPCHAIN_EXTENSION_NAME+    , KHR_DISPLAY_EXTENSION_NAME+    , KHR_SURFACE_EXTENSION_NAME+    ]+  GOOGLE_DISPLAY_TIMING_EXTENSION_NAME -> [KHR_SWAPCHAIN_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]+  NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME ->+    [KHR_MULTIVIEW_EXTENSION_NAME, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_DISCARD_RECTANGLES_EXTENSION_NAME         -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME      -> [KHR_SURFACE_EXTENSION_NAME]+  EXT_HDR_METADATA_EXTENSION_NAME               -> [KHR_SWAPCHAIN_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]+  KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME -> [KHR_MAINTENANCE2_EXTENSION_NAME, KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME]+  KHR_CREATE_RENDERPASS_2_EXTENSION_NAME ->+    [KHR_MULTIVIEW_EXTENSION_NAME, KHR_MAINTENANCE2_EXTENSION_NAME, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME ->+    [ KHR_SWAPCHAIN_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    , KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME+    , KHR_SURFACE_EXTENSION_NAME+    ]+  KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_EXTERNAL_FENCE_EXTENSION_NAME ->+    [KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME ->+    [ KHR_EXTERNAL_FENCE_EXTENSION_NAME+    , KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    ]+  KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME ->+    [ KHR_EXTERNAL_FENCE_EXTENSION_NAME+    , KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    ]+  KHR_PERFORMANCE_QUERY_EXTENSION_NAME          -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME -> [KHR_SURFACE_EXTENSION_NAME]+  KHR_VARIABLE_POINTERS_EXTENSION_NAME ->+    [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME]+  KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME -> [KHR_DISPLAY_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]+  MVK_IOS_SURFACE_EXTENSION_NAME              -> [KHR_SURFACE_EXTENSION_NAME]+  MVK_MACOS_SURFACE_EXTENSION_NAME            -> [KHR_SURFACE_EXTENSION_NAME]+  EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME ->+    [ KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME+    , KHR_EXTERNAL_MEMORY_EXTENSION_NAME+    , KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    ]+  EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME ->+    [ KHR_EXTERNAL_MEMORY_EXTENSION_NAME+    , KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    ]+  KHR_DEDICATED_ALLOCATION_EXTENSION_NAME -> [KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME]+  ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME ->+    [ KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME+    , KHR_EXTERNAL_MEMORY_EXTENSION_NAME+    , EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME+    , KHR_DEDICATED_ALLOCATION_EXTENSION_NAME+    , KHR_MAINTENANCE1_EXTENSION_NAME+    , KHR_BIND_MEMORY_2_EXTENSION_NAME+    , KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    , KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME+    ]+  EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME ->+    [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, KHR_MAINTENANCE1_EXTENSION_NAME]+  EXT_SAMPLE_LOCATIONS_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME ->+    [ EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+    , KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME+    , KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    , KHR_MAINTENANCE3_EXTENSION_NAME+    ]+  KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME ->+    [ KHR_SPIRV_1_4_EXTENSION_NAME+    , KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME+    , KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    , EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+    , KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME+    , KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME+    , KHR_MAINTENANCE3_EXTENSION_NAME+    ]+  KHR_RAY_QUERY_EXTENSION_NAME ->+    [ KHR_SPIRV_1_4_EXTENSION_NAME+    , KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME+    , KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    , EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+    , KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME+    , KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME+    , KHR_MAINTENANCE3_EXTENSION_NAME+    ]+  KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME ->+    [ KHR_MAINTENANCE1_EXTENSION_NAME+    , KHR_BIND_MEMORY_2_EXTENSION_NAME+    , KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    ]+  EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME ->+    [ KHR_BIND_MEMORY_2_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    , KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME+    , KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME+    , KHR_MAINTENANCE1_EXTENSION_NAME+    , KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME+    ]+  EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME ->+    [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, KHR_MAINTENANCE3_EXTENSION_NAME]+  KHR_PORTABILITY_SUBSET_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  NV_SHADING_RATE_IMAGE_EXTENSION_NAME  -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  NV_RAY_TRACING_EXTENSION_NAME ->+    [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME]+  KHR_MAINTENANCE3_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_8BIT_STORAGE_EXTENSION_NAME ->+    [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME]+  EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME ->+    [ KHR_EXTERNAL_MEMORY_EXTENSION_NAME+    , KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    ]+  KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME      -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_SHADER_CLOCK_EXTENSION_NAME             -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME   -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  GGP_FRAME_TOKEN_EXTENSION_NAME ->+    [KHR_SWAPCHAIN_EXTENSION_NAME, GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]+  KHR_DRIVER_PROPERTIES_EXTENSION_NAME     -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME ->+    [ KHR_CREATE_RENDERPASS_2_EXTENSION_NAME+    , KHR_MULTIVIEW_EXTENSION_NAME+    , KHR_MAINTENANCE2_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    ]+  KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME ->+    [ KHR_SWAPCHAIN_EXTENSION_NAME+    , KHR_MAINTENANCE2_EXTENSION_NAME+    , KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME+    , KHR_SURFACE_EXTENSION_NAME+    ]+  NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME    -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  NV_MESH_SHADER_EXTENSION_NAME                   -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME   -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME        -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME             -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME           -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_PCI_BUS_INFO_EXTENSION_NAME                 -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME ->+    [ KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    , KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME+    , KHR_SWAPCHAIN_EXTENSION_NAME+    , KHR_SURFACE_EXTENSION_NAME+    ]+  FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME       -> [KHR_SURFACE_EXTENSION_NAME]+  KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_METAL_SURFACE_EXTENSION_NAME               -> [KHR_SURFACE_EXTENSION_NAME]+  EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME        -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME         -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME ->+    [ KHR_CREATE_RENDERPASS_2_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    , KHR_MULTIVIEW_EXTENSION_NAME+    , KHR_MAINTENANCE2_EXTENSION_NAME+    ]+  AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME ->+    [AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_SPIRV_1_4_EXTENSION_NAME ->+    [KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_MEMORY_BUDGET_EXTENSION_NAME   -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_MEMORY_PRIORITY_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME ->+    [KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]+  NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME ->+    [KHR_DEDICATED_ALLOCATION_EXTENSION_NAME, KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME]+  KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME ->+    [ KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    , KHR_CREATE_RENDERPASS_2_EXTENSION_NAME+    , KHR_MULTIVIEW_EXTENSION_NAME+    , KHR_MAINTENANCE2_EXTENSION_NAME+    ]+  EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME     -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  NV_COOPERATIVE_MATRIX_EXTENSION_NAME         -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME    -> [NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME]+  EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME ->+    [ KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME+    , KHR_MAINTENANCE1_EXTENSION_NAME+    , KHR_BIND_MEMORY_2_EXTENSION_NAME+    , KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    ]+  KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME ->+    [ KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    , KHR_SURFACE_EXTENSION_NAME+    , KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME+    , KHR_SWAPCHAIN_EXTENSION_NAME+    ]+  EXT_HEADLESS_SURFACE_EXTENSION_NAME                   -> [KHR_SURFACE_EXTENSION_NAME]+  KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME              -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_LINE_RASTERIZATION_EXTENSION_NAME                 -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME                -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_HOST_QUERY_RESET_EXTENSION_NAME                   -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME             -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME     -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME             -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME             -> [KHR_SWAPCHAIN_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]+  EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME               -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME           -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME ->+    [ KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME+    , KHR_CREATE_RENDERPASS_2_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    , KHR_MULTIVIEW_EXTENSION_NAME+    , KHR_MAINTENANCE2_EXTENSION_NAME+    ]+  EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME ->+    [EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  QCOM_rotated_copy_commands_EXTENSION_NAME ->+    [KHR_SWAPCHAIN_EXTENSION_NAME, KHR_COPY_COMMANDS_2_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]+  EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_4444_FORMATS_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]+  EXT_DIRECTFB_SURFACE_EXTENSION_NAME -> [KHR_SURFACE_EXTENSION_NAME]+  _                               -> []++-- | The minimum required API version to use this extension+extensionCoreRequirement :: ("extensionName" ::: ByteString) -> Word32+extensionCoreRequirement = \case+  KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME -> MAKE_VERSION 1 1 0+  KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME -> MAKE_VERSION 1 1 0+  KHR_RAY_QUERY_EXTENSION_NAME -> MAKE_VERSION 1 1 0+  NV_SHADER_SM_BUILTINS_EXTENSION_NAME -> MAKE_VERSION 1 1 0+  KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME -> MAKE_VERSION 1 1 0+  NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME -> MAKE_VERSION 1 1 0+  EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME -> MAKE_VERSION 1 1 0+  KHR_SPIRV_1_4_EXTENSION_NAME -> MAKE_VERSION 1 1 0+  KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME -> MAKE_VERSION 1 1 0+  NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME -> MAKE_VERSION 1 1 0+  _                            -> API_VERSION_1_0+
src/Vulkan/Extensions/VK_EXT_private_data.hs view
@@ -490,8 +490,8 @@                      -- the type of object data is associated with.                      --                      -- #VUID-vkGetPrivateDataEXT-objectType-04018# @objectType@ /must/ be-                     -- 'Vulkan.Core10.Handles.Device' or an object type whose parent is-                     -- 'Vulkan.Core10.Handles.Device'+                     -- 'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_DEVICE', or an object type+                     -- whose parent is 'Vulkan.Core10.Handles.Device'                      --                      -- #VUID-vkGetPrivateDataEXT-objectType-parameter# @objectType@ /must/ be a                      -- valid 'Vulkan.Core10.Enums.ObjectType.ObjectType' value
src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs view
@@ -3190,7 +3190,7 @@   pPpBuildRangeInfos <- ContT $ allocaBytesAligned @(Ptr AccelerationStructureBuildRangeInfoKHR) ((Data.Vector.length (buildRangeInfos)) * 8) 8   Data.Vector.imapM_ (\i e -> do     pPpBuildRangeInfos' <- ContT $ allocaBytesAligned @AccelerationStructureBuildRangeInfoKHR ((Data.Vector.length (e)) * 16) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPpBuildRangeInfos' `plusPtr` (16 * (i)) :: Ptr AccelerationStructureBuildRangeInfoKHR) (e)) (e)+    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 $ vkCmdBuildAccelerationStructuresKHR' (commandBufferHandle (commandBuffer)) ((fromIntegral pInfosLength :: Word32)) (pPInfos) (pPpBuildRangeInfos)   pure $ ()@@ -3819,7 +3819,7 @@   pPpMaxPrimitiveCounts <- ContT $ allocaBytesAligned @(Ptr Word32) ((Data.Vector.length (maxPrimitiveCounts)) * 8) 8   Data.Vector.imapM_ (\i e -> do     pPpMaxPrimitiveCounts' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (e)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPpMaxPrimitiveCounts' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (e)+    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 $ vkCmdBuildAccelerationStructuresIndirectKHR' (commandBufferHandle (commandBuffer)) ((fromIntegral pInfosLength :: Word32)) (pPInfos) (pPIndirectDeviceAddresses) (pPIndirectStrides) (pPpMaxPrimitiveCounts)   pure $ ()@@ -4284,7 +4284,7 @@   pPpBuildRangeInfos <- ContT $ allocaBytesAligned @(Ptr AccelerationStructureBuildRangeInfoKHR) ((Data.Vector.length (buildRangeInfos)) * 8) 8   Data.Vector.imapM_ (\i e -> do     pPpBuildRangeInfos' <- ContT $ allocaBytesAligned @AccelerationStructureBuildRangeInfoKHR ((Data.Vector.length (e)) * 16) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPpBuildRangeInfos' `plusPtr` (16 * (i)) :: Ptr AccelerationStructureBuildRangeInfoKHR) (e)) (e)+    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 $ vkBuildAccelerationStructuresKHR' (deviceHandle (device)) (deferredOperation) ((fromIntegral pInfosLength :: Word32)) (pPInfos) (pPpBuildRangeInfos)   lift $ when (r < SUCCESS) (throwIO (VulkanException r))@@ -6154,8 +6154,8 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     lift $ unless (Data.ByteString.length (versionData) == 2 * UUID_SIZE) $       throwIO $ IOError Nothing InvalidArgument "" "AccelerationStructureVersionKHR::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+    versionData' <- fmap (castPtr @CChar @Word8) . ContT $ unsafeUseAsCString (versionData)+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr Word8))) versionData'     lift $ f   cStructSize = 24   cStructAlignment = 8
src/Vulkan/Extensions/VK_KHR_copy_commands2.hs view
@@ -1930,205 +1930,207 @@ -- -- == Valid Usage ----- -   [[VUID-{refpage}-pRegions-00215]] The source region specified by---     each element of @pRegions@ /must/ be a region that is contained---     within @srcImage@+-- -   #VUID-VkBlitImageInfo2KHR-pRegions-00215# The source region+--     specified by each element of @pRegions@ /must/ be a region that is+--     contained within @srcImage@ ----- -   [[VUID-{refpage}-pRegions-00216]] The destination region specified---     by each element of @pRegions@ /must/ be a region that is contained---     within @dstImage@+-- -   #VUID-VkBlitImageInfo2KHR-pRegions-00216# The destination region+--     specified by each element of @pRegions@ /must/ be a region that is+--     contained within @dstImage@ ----- -   [[VUID-{refpage}-pRegions-00217]] The union of all destination---     regions, specified by the elements of @pRegions@, /must/ not overlap---     in memory with any texel that /may/ be sampled during the blit---     operation+-- -   #VUID-VkBlitImageInfo2KHR-pRegions-00217# The union of all+--     destination regions, specified by the elements of @pRegions@, /must/+--     not overlap in memory with any texel that /may/ be sampled during+--     the blit operation ----- -   [[VUID-{refpage}-srcImage-01999]] The+-- -   #VUID-VkBlitImageInfo2KHR-srcImage-01999# The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     of @srcImage@ /must/ contain --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT' ----- -   [[VUID-{refpage}-srcImage-01561]] @srcImage@ /must/ not use a format---     listed in+-- -   #VUID-VkBlitImageInfo2KHR-srcImage-01561# @srcImage@ /must/ not use+--     a format listed in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion ???> ----- -   [[VUID-{refpage}-srcImage-00219]] @srcImage@ /must/ have been---     created with+-- -   #VUID-VkBlitImageInfo2KHR-srcImage-00219# @srcImage@ /must/ have+--     been created with --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT' --     usage flag ----- -   [[VUID-{refpage}-srcImage-00220]] If @srcImage@ is non-sparse then---     it /must/ be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object+-- -   #VUID-VkBlitImageInfo2KHR-srcImage-00220# If @srcImage@ is+--     non-sparse then it /must/ be bound completely and contiguously to a+--     single 'Vulkan.Core10.Handles.DeviceMemory' object ----- -   [[VUID-{refpage}-srcImageLayout-00221]] @srcImageLayout@ /must/---     specify the layout of the image subresources of @srcImage@ specified---     in @pRegions@ at the time this command is executed on a+-- -   #VUID-VkBlitImageInfo2KHR-srcImageLayout-00221# @srcImageLayout@+--     /must/ specify the layout of the image subresources of @srcImage@+--     specified in @pRegions@ at the time this command is executed on a --     'Vulkan.Core10.Handles.Device' ----- -   [[VUID-{refpage}-srcImageLayout-01398]] @srcImageLayout@ /must/ be+-- -   #VUID-VkBlitImageInfo2KHR-srcImageLayout-01398# @srcImageLayout@+--     /must/ be --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR', --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL' --     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' ----- -   [[VUID-{refpage}-dstImage-02000]] The+-- -   #VUID-VkBlitImageInfo2KHR-dstImage-02000# The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     of @dstImage@ /must/ contain --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_DST_BIT' ----- -   [[VUID-{refpage}-dstImage-01562]] @dstImage@ /must/ not use a format---     listed in+-- -   #VUID-VkBlitImageInfo2KHR-dstImage-01562# @dstImage@ /must/ not use+--     a format listed in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion ???> ----- -   [[VUID-{refpage}-dstImage-00224]] @dstImage@ /must/ have been---     created with+-- -   #VUID-VkBlitImageInfo2KHR-dstImage-00224# @dstImage@ /must/ have+--     been created with --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' --     usage flag ----- -   [[VUID-{refpage}-dstImage-00225]] If @dstImage@ is non-sparse then---     it /must/ be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object+-- -   #VUID-VkBlitImageInfo2KHR-dstImage-00225# If @dstImage@ is+--     non-sparse then it /must/ be bound completely and contiguously to a+--     single 'Vulkan.Core10.Handles.DeviceMemory' object ----- -   [[VUID-{refpage}-dstImageLayout-00226]] @dstImageLayout@ /must/---     specify the layout of the image subresources of @dstImage@ specified---     in @pRegions@ at the time this command is executed on a+-- -   #VUID-VkBlitImageInfo2KHR-dstImageLayout-00226# @dstImageLayout@+--     /must/ specify the layout of the image subresources of @dstImage@+--     specified in @pRegions@ at the time this command is executed on a --     'Vulkan.Core10.Handles.Device' ----- -   [[VUID-{refpage}-dstImageLayout-01399]] @dstImageLayout@ /must/ be+-- -   #VUID-VkBlitImageInfo2KHR-dstImageLayout-01399# @dstImageLayout@+--     /must/ be --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR', --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL' --     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' ----- -   [[VUID-{refpage}-srcImage-00229]] If either of @srcImage@ or+-- -   #VUID-VkBlitImageInfo2KHR-srcImage-00229# If either of @srcImage@ or --     @dstImage@ was created with a signed integer --     'Vulkan.Core10.Enums.Format.Format', the other /must/ also have been --     created with a signed integer 'Vulkan.Core10.Enums.Format.Format' ----- -   [[VUID-{refpage}-srcImage-00230]] If either of @srcImage@ or+-- -   #VUID-VkBlitImageInfo2KHR-srcImage-00230# If either of @srcImage@ or --     @dstImage@ was created with an unsigned integer --     'Vulkan.Core10.Enums.Format.Format', the other /must/ also have been --     created with an unsigned integer 'Vulkan.Core10.Enums.Format.Format' ----- -   [[VUID-{refpage}-srcImage-00231]] If either of @srcImage@ or+-- -   #VUID-VkBlitImageInfo2KHR-srcImage-00231# If either of @srcImage@ or --     @dstImage@ was created with a depth\/stencil format, the other --     /must/ have exactly the same format ----- -   [[VUID-{refpage}-srcImage-00232]] If @srcImage@ was created with a---     depth\/stencil format, @filter@ /must/ be+-- -   #VUID-VkBlitImageInfo2KHR-srcImage-00232# If @srcImage@ was created+--     with a depth\/stencil format, @filter@ /must/ be --     'Vulkan.Core10.Enums.Filter.FILTER_NEAREST' ----- -   [[VUID-{refpage}-srcImage-00233]] @srcImage@ /must/ have been---     created with a @samples@ value of+-- -   #VUID-VkBlitImageInfo2KHR-srcImage-00233# @srcImage@ /must/ have+--     been created with a @samples@ value of --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' ----- -   [[VUID-{refpage}-dstImage-00234]] @dstImage@ /must/ have been---     created with a @samples@ value of+-- -   #VUID-VkBlitImageInfo2KHR-dstImage-00234# @dstImage@ /must/ have+--     been created with a @samples@ value of --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' ----- -   [[VUID-{refpage}-filter-02001]] If @filter@ is+-- -   #VUID-VkBlitImageInfo2KHR-filter-02001# If @filter@ is --     'Vulkan.Core10.Enums.Filter.FILTER_LINEAR', then the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     of @srcImage@ /must/ contain --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT' ----- -   [[VUID-{refpage}-filter-02002]] If @filter@ is+-- -   #VUID-VkBlitImageInfo2KHR-filter-02002# If @filter@ is --     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', then the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     of @srcImage@ /must/ contain --     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT' ----- -   [[VUID-{refpage}-filter-00237]] If @filter@ is+-- -   #VUID-VkBlitImageInfo2KHR-filter-00237# If @filter@ is --     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', @srcImage@ --     /must/ be of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' ----- -   [[VUID-{refpage}-srcSubresource-01705]] The+-- -   #VUID-VkBlitImageInfo2KHR-srcSubresource-01705# The --     @srcSubresource.mipLevel@ member of each element of @pRegions@ --     /must/ be less than the @mipLevels@ specified in --     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created ----- -   [[VUID-{refpage}-dstSubresource-01706]] The+-- -   #VUID-VkBlitImageInfo2KHR-dstSubresource-01706# The --     @dstSubresource.mipLevel@ member of each element of @pRegions@ --     /must/ be less than the @mipLevels@ specified in --     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created ----- -   [[VUID-{refpage}-srcSubresource-01707]] The+-- -   #VUID-VkBlitImageInfo2KHR-srcSubresource-01707# The --     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of --     each element of @pRegions@ /must/ be less than or equal to the --     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo' --     when @srcImage@ was created ----- -   [[VUID-{refpage}-dstSubresource-01708]] The+-- -   #VUID-VkBlitImageInfo2KHR-dstSubresource-01708# The --     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of --     each element of @pRegions@ /must/ be less than or equal to the --     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo' --     when @dstImage@ was created ----- -   [[VUID-{refpage}-dstImage-02545]] @dstImage@ and @srcImage@ /must/---     not have been created with @flags@ containing+-- -   #VUID-VkBlitImageInfo2KHR-dstImage-02545# @dstImage@ and @srcImage@+--     /must/ not have been created with @flags@ containing --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT' ----- -   [[VUID-{refpage}-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-VkBlitImageInfo2KHR-srcImage-00240# If either @srcImage@ or+--     @dstImage@ is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',+--     then for each element of @pRegions@, @srcSubresource.baseArrayLayer@+--     and @dstSubresource.baseArrayLayer@ /must/ each be @0@, and --     @srcSubresource.layerCount@ and @dstSubresource.layerCount@ /must/ --     each be @1@. ----- -   [[VUID-{refpage}-aspectMask-00241]] For each element of @pRegions@,---     @srcSubresource.aspectMask@ /must/ specify aspects present in---     @srcImage@+-- -   #VUID-VkBlitImageInfo2KHR-aspectMask-00241# For each element of+--     @pRegions@, @srcSubresource.aspectMask@ /must/ specify aspects+--     present in @srcImage@ ----- -   [[VUID-{refpage}-aspectMask-00242]] For each element of @pRegions@,---     @dstSubresource.aspectMask@ /must/ specify aspects present in---     @dstImage@+-- -   #VUID-VkBlitImageInfo2KHR-aspectMask-00242# For each element of+--     @pRegions@, @dstSubresource.aspectMask@ /must/ specify aspects+--     present in @dstImage@ ----- -   [[VUID-{refpage}-srcOffset-00243]] For each element of @pRegions@,---     @srcOffset@[0].x and @srcOffset@[1].x /must/ both be greater than or---     equal to @0@ and less than or equal to the width of the specified---     @srcSubresource@ of @srcImage@+-- -   #VUID-VkBlitImageInfo2KHR-srcOffset-00243# For each element of+--     @pRegions@, @srcOffset@[0].x and @srcOffset@[1].x /must/ both be+--     greater than or equal to @0@ and less than or equal to the width of+--     the specified @srcSubresource@ of @srcImage@ ----- -   [[VUID-{refpage}-srcOffset-00244]] For each element of @pRegions@,---     @srcOffset@[0].y and @srcOffset@[1].y /must/ both be greater than or---     equal to @0@ and less than or equal to the height of the specified---     @srcSubresource@ of @srcImage@+-- -   #VUID-VkBlitImageInfo2KHR-srcOffset-00244# For each element of+--     @pRegions@, @srcOffset@[0].y and @srcOffset@[1].y /must/ both be+--     greater than or equal to @0@ and less than or equal to the height of+--     the specified @srcSubresource@ of @srcImage@ ----- -   [[VUID-{refpage}-srcImage-00245]] If @srcImage@ is of type+-- -   #VUID-VkBlitImageInfo2KHR-srcImage-00245# If @srcImage@ is of type --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element --     of @pRegions@, @srcOffset@[0].y /must/ be @0@ and @srcOffset@[1].y --     /must/ be @1@ ----- -   [[VUID-{refpage}-srcOffset-00246]] For each element of @pRegions@,---     @srcOffset@[0].z and @srcOffset@[1].z /must/ both be greater than or---     equal to @0@ and less than or equal to the depth of the specified---     @srcSubresource@ of @srcImage@+-- -   #VUID-VkBlitImageInfo2KHR-srcOffset-00246# For each element of+--     @pRegions@, @srcOffset@[0].z and @srcOffset@[1].z /must/ both be+--     greater than or equal to @0@ and less than or equal to the depth of+--     the specified @srcSubresource@ of @srcImage@ ----- -   [[VUID-{refpage}-srcImage-00247]] If @srcImage@ is of type+-- -   #VUID-VkBlitImageInfo2KHR-srcImage-00247# If @srcImage@ is of type --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element --     of @pRegions@, @srcOffset@[0].z /must/ be @0@ and @srcOffset@[1].z --     /must/ be @1@ ----- -   [[VUID-{refpage}-dstOffset-00248]] For each element of @pRegions@,---     @dstOffset@[0].x and @dstOffset@[1].x /must/ both be greater than or---     equal to @0@ and less than or equal to the width of the specified---     @dstSubresource@ of @dstImage@+-- -   #VUID-VkBlitImageInfo2KHR-dstOffset-00248# For each element of+--     @pRegions@, @dstOffset@[0].x and @dstOffset@[1].x /must/ both be+--     greater than or equal to @0@ and less than or equal to the width of+--     the specified @dstSubresource@ of @dstImage@ ----- -   [[VUID-{refpage}-dstOffset-00249]] For each element of @pRegions@,---     @dstOffset@[0].y and @dstOffset@[1].y /must/ both be greater than or---     equal to @0@ and less than or equal to the height of the specified---     @dstSubresource@ of @dstImage@+-- -   #VUID-VkBlitImageInfo2KHR-dstOffset-00249# For each element of+--     @pRegions@, @dstOffset@[0].y and @dstOffset@[1].y /must/ both be+--     greater than or equal to @0@ and less than or equal to the height of+--     the specified @dstSubresource@ of @dstImage@ ----- -   [[VUID-{refpage}-dstImage-00250]] If @dstImage@ is of type+-- -   #VUID-VkBlitImageInfo2KHR-dstImage-00250# If @dstImage@ is of type --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element --     of @pRegions@, @dstOffset@[0].y /must/ be @0@ and @dstOffset@[1].y --     /must/ be @1@ ----- -   [[VUID-{refpage}-dstOffset-00251]] For each element of @pRegions@,---     @dstOffset@[0].z and @dstOffset@[1].z /must/ both be greater than or---     equal to @0@ and less than or equal to the depth of the specified---     @dstSubresource@ of @dstImage@+-- -   #VUID-VkBlitImageInfo2KHR-dstOffset-00251# For each element of+--     @pRegions@, @dstOffset@[0].z and @dstOffset@[1].z /must/ both be+--     greater than or equal to @0@ and less than or equal to the depth of+--     the specified @dstSubresource@ of @dstImage@ ----- -   [[VUID-{refpage}-dstImage-00252]] If @dstImage@ is of type+-- -   #VUID-VkBlitImageInfo2KHR-dstImage-00252# If @dstImage@ is of type --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element --     of @pRegions@, @dstOffset@[0].z /must/ be @0@ and @dstOffset@[1].z
src/Vulkan/Extensions/VK_NV_device_generated_commands.hs view
@@ -1963,10 +1963,9 @@ --     @pGroups@ -- -- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-02886#---     Each element of the @pPipelines@ member of @libraries@ /must/ have---     been created with identical state to the pipeline currently created---     except the state that can be overriden by---     'GraphicsShaderGroupCreateInfoNV'+--     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
+ src/Vulkan/SPIRVRequirements.hs view
@@ -0,0 +1,2203 @@+{-# language CPP #-}+{-# language OverloadedLists #-}+{-# language TupleSections #-}+-- No documentation found for Chapter "SPIRVRequirements"+module Vulkan.SPIRVRequirements  ( spirvExtensionRequirements+                                 , spirvCapabilityRequirements+                                 ) where++import Vulkan.Requirement (DeviceRequirement(..))+import Vulkan.Requirement (InstanceRequirement(..))+import Data.Bits ((.&.))+import Data.Bits (zeroBits)+import Data.Bits (Bits)+import Data.ByteString (ByteString)+import Vulkan.Core10.Handles (Instance)+import Vulkan.Core10.Handles (PhysicalDevice)+import Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT)+import Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT(..))+import Vulkan.Extensions.VK_NV_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesNV)+import Vulkan.Extensions.VK_NV_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesNV(..))+import Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesNV)+import Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesNV(..))+import Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures)+import Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures(..))+import Vulkan.Extensions.VK_EXT_fragment_density_map (PhysicalDeviceFragmentDensityMapFeaturesEXT)+import Vulkan.Extensions.VK_EXT_fragment_density_map (PhysicalDeviceFragmentDensityMapFeaturesEXT(..))+import Vulkan.Extensions.VK_NV_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricFeaturesNV)+import Vulkan.Extensions.VK_NV_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricFeaturesNV(..))+import Vulkan.Extensions.VK_EXT_fragment_shader_interlock (PhysicalDeviceFragmentShaderInterlockFeaturesEXT)+import Vulkan.Extensions.VK_EXT_fragment_shader_interlock (PhysicalDeviceFragmentShaderInterlockFeaturesEXT(..))+import Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRateFeaturesKHR)+import Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRateFeaturesKHR(..))+import Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)+import Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR(..))+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR)+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR(..))+import Vulkan.Extensions.VK_EXT_shader_atomic_float (PhysicalDeviceShaderAtomicFloatFeaturesEXT)+import Vulkan.Extensions.VK_EXT_shader_atomic_float (PhysicalDeviceShaderAtomicFloatFeaturesEXT(..))+import Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT)+import Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(..))+import Vulkan.Extensions.VK_EXT_shader_image_atomic_int64 (PhysicalDeviceShaderImageAtomicInt64FeaturesEXT)+import Vulkan.Extensions.VK_EXT_shader_image_atomic_int64 (PhysicalDeviceShaderImageAtomicInt64FeaturesEXT(..))+import Vulkan.Extensions.VK_NV_shader_image_footprint (PhysicalDeviceShaderImageFootprintFeaturesNV)+import Vulkan.Extensions.VK_NV_shader_image_footprint (PhysicalDeviceShaderImageFootprintFeaturesNV(..))+import Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL)+import Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(..))+import Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsFeaturesNV)+import Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsFeaturesNV(..))+import Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImageFeaturesNV)+import Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImageFeaturesNV(..))+import Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackFeaturesEXT)+import Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackFeaturesEXT(..))+import Vulkan.Core12 (PhysicalDeviceVulkan11Features)+import Vulkan.Core12 (PhysicalDeviceVulkan11Features(..))+import Vulkan.Core12 (PhysicalDeviceVulkan11Properties)+import Vulkan.Core12 (PhysicalDeviceVulkan11Properties(..))+import Vulkan.Core12 (PhysicalDeviceVulkan12Features)+import Vulkan.Core12 (PhysicalDeviceVulkan12Features(..))+import Vulkan.Core12 (PhysicalDeviceVulkan12Properties)+import Vulkan.Core12 (PhysicalDeviceVulkan12Properties(..))+import Vulkan.Extensions.VK_AMD_gcn_shader (pattern AMD_GCN_SHADER_EXTENSION_NAME)+import Vulkan.Extensions.VK_AMD_gcn_shader (pattern AMD_GCN_SHADER_SPEC_VERSION)+import Vulkan.Extensions.VK_AMD_gpu_shader_half_float (pattern AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME)+import Vulkan.Extensions.VK_AMD_gpu_shader_half_float (pattern AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION)+import Vulkan.Extensions.VK_AMD_gpu_shader_int16 (pattern AMD_GPU_SHADER_INT16_EXTENSION_NAME)+import Vulkan.Extensions.VK_AMD_gpu_shader_int16 (pattern AMD_GPU_SHADER_INT16_SPEC_VERSION)+import Vulkan.Extensions.VK_AMD_shader_ballot (pattern AMD_SHADER_BALLOT_EXTENSION_NAME)+import Vulkan.Extensions.VK_AMD_shader_ballot (pattern AMD_SHADER_BALLOT_SPEC_VERSION)+import Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter (pattern AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME)+import Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter (pattern AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION)+import Vulkan.Extensions.VK_AMD_shader_fragment_mask (pattern AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME)+import Vulkan.Extensions.VK_AMD_shader_fragment_mask (pattern AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION)+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_image_load_store_lod (pattern AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION)+import Vulkan.Extensions.VK_AMD_shader_trinary_minmax (pattern AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME)+import Vulkan.Extensions.VK_AMD_shader_trinary_minmax (pattern AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION)+import Vulkan.Extensions.VK_AMD_texture_gather_bias_lod (pattern AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME)+import Vulkan.Extensions.VK_AMD_texture_gather_bias_lod (pattern AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION)+import Vulkan.Extensions.VK_EXT_buffer_device_address (pattern EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_buffer_device_address (pattern EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION)+import Vulkan.Extensions.VK_EXT_descriptor_indexing (pattern EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_descriptor_indexing (pattern EXT_DESCRIPTOR_INDEXING_SPEC_VERSION)+import Vulkan.Extensions.VK_EXT_fragment_density_map (pattern EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_fragment_density_map (pattern EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION)+import Vulkan.Extensions.VK_EXT_fragment_shader_interlock (pattern EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_fragment_shader_interlock (pattern EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION)+import Vulkan.Extensions.VK_EXT_post_depth_coverage (pattern EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_post_depth_coverage (pattern EXT_POST_DEPTH_COVERAGE_SPEC_VERSION)+import Vulkan.Extensions.VK_EXT_shader_atomic_float (pattern EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_shader_atomic_float (pattern EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION)+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_demote_to_helper_invocation (pattern EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION)+import Vulkan.Extensions.VK_EXT_shader_image_atomic_int64 (pattern EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_shader_image_atomic_int64 (pattern EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION)+import Vulkan.Extensions.VK_EXT_shader_stencil_export (pattern EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_shader_stencil_export (pattern EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION)+import Vulkan.Extensions.VK_EXT_shader_subgroup_ballot (pattern EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_shader_subgroup_ballot (pattern EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION)+import Vulkan.Extensions.VK_EXT_shader_subgroup_vote (pattern EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_shader_subgroup_vote (pattern EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION)+import Vulkan.Extensions.VK_EXT_shader_viewport_index_layer (pattern EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_shader_viewport_index_layer (pattern EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION)+import Vulkan.Extensions.VK_EXT_transform_feedback (pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME)+import Vulkan.Extensions.VK_EXT_transform_feedback (pattern EXT_TRANSFORM_FEEDBACK_SPEC_VERSION)+import Vulkan.Extensions.VK_GOOGLE_decorate_string (pattern GOOGLE_DECORATE_STRING_EXTENSION_NAME)+import Vulkan.Extensions.VK_GOOGLE_decorate_string (pattern GOOGLE_DECORATE_STRING_SPEC_VERSION)+import Vulkan.Extensions.VK_GOOGLE_hlsl_functionality1 (pattern GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME)+import Vulkan.Extensions.VK_GOOGLE_hlsl_functionality1 (pattern GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION)+import Vulkan.Extensions.VK_GOOGLE_user_type (pattern GOOGLE_USER_TYPE_EXTENSION_NAME)+import Vulkan.Extensions.VK_GOOGLE_user_type (pattern GOOGLE_USER_TYPE_SPEC_VERSION)+import Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (pattern INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME)+import Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (pattern INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_16bit_storage (pattern KHR_16BIT_STORAGE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_16bit_storage (pattern KHR_16BIT_STORAGE_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_8bit_storage (pattern KHR_8BIT_STORAGE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_8bit_storage (pattern KHR_8BIT_STORAGE_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_acceleration_structure (pattern KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_acceleration_structure (pattern KHR_ACCELERATION_STRUCTURE_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_buffer_device_address (pattern KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_buffer_device_address (pattern KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_create_renderpass2 (pattern KHR_CREATE_RENDERPASS_2_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_create_renderpass2 (pattern KHR_CREATE_RENDERPASS_2_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_deferred_host_operations (pattern KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_deferred_host_operations (pattern KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_device_group_creation (pattern KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_device_group_creation (pattern KHR_DEVICE_GROUP_CREATION_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_device_group (pattern KHR_DEVICE_GROUP_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_device_group (pattern KHR_DEVICE_GROUP_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_fragment_shading_rate (pattern KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_fragment_shading_rate (pattern KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_get_memory_requirements2 (pattern KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_get_memory_requirements2 (pattern KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_get_physical_device_properties2 (pattern KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_get_physical_device_properties2 (pattern KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_maintenance2 (pattern KHR_MAINTENANCE2_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_maintenance2 (pattern KHR_MAINTENANCE2_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_maintenance3 (pattern KHR_MAINTENANCE3_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_maintenance3 (pattern KHR_MAINTENANCE3_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_multiview (pattern KHR_MULTIVIEW_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_multiview (pattern KHR_MULTIVIEW_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_ray_query (pattern KHR_RAY_QUERY_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_ray_query (pattern KHR_RAY_QUERY_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (pattern KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (pattern KHR_RAY_TRACING_PIPELINE_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_shader_atomic_int64 (pattern KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_shader_atomic_int64 (pattern KHR_SHADER_ATOMIC_INT64_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_shader_clock (pattern KHR_SHADER_CLOCK_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_shader_clock (pattern KHR_SHADER_CLOCK_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_shader_draw_parameters (pattern KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_shader_draw_parameters (pattern KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_shader_float16_int8 (pattern KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_shader_float16_int8 (pattern KHR_SHADER_FLOAT16_INT8_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_shader_float_controls (pattern KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_shader_float_controls (pattern KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_shader_non_semantic_info (pattern KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_shader_non_semantic_info (pattern KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_shader_terminate_invocation (pattern KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_shader_terminate_invocation (pattern KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_spirv_1_4 (pattern KHR_SPIRV_1_4_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_spirv_1_4 (pattern KHR_SPIRV_1_4_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_storage_buffer_storage_class (pattern KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_storage_buffer_storage_class (pattern KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_variable_pointers (pattern KHR_VARIABLE_POINTERS_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_variable_pointers (pattern KHR_VARIABLE_POINTERS_SPEC_VERSION)+import Vulkan.Extensions.VK_KHR_vulkan_memory_model (pattern KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME)+import Vulkan.Extensions.VK_KHR_vulkan_memory_model (pattern KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION)+import Vulkan.Version (pattern MAKE_VERSION)+import Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME)+import Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION)+import Vulkan.Extensions.VK_NV_compute_shader_derivatives (pattern NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_compute_shader_derivatives (pattern NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION)+import Vulkan.Extensions.VK_NV_cooperative_matrix (pattern NV_COOPERATIVE_MATRIX_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_cooperative_matrix (pattern NV_COOPERATIVE_MATRIX_SPEC_VERSION)+import Vulkan.Extensions.VK_NV_fragment_shader_barycentric (pattern NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_fragment_shader_barycentric (pattern NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION)+import Vulkan.Extensions.VK_NV_geometry_shader_passthrough (pattern NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_geometry_shader_passthrough (pattern NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION)+import Vulkan.Extensions.VK_NV_mesh_shader (pattern NV_MESH_SHADER_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_mesh_shader (pattern NV_MESH_SHADER_SPEC_VERSION)+import Vulkan.Extensions.VK_NV_ray_tracing (pattern NV_RAY_TRACING_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_ray_tracing (pattern NV_RAY_TRACING_SPEC_VERSION)+import Vulkan.Extensions.VK_NV_sample_mask_override_coverage (pattern NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_sample_mask_override_coverage (pattern NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION)+import Vulkan.Extensions.VK_NV_shader_image_footprint (pattern NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_shader_image_footprint (pattern NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION)+import Vulkan.Extensions.VK_NV_shader_sm_builtins (pattern NV_SHADER_SM_BUILTINS_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_shader_sm_builtins (pattern NV_SHADER_SM_BUILTINS_SPEC_VERSION)+import Vulkan.Extensions.VK_NV_shader_subgroup_partitioned (pattern NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_shader_subgroup_partitioned (pattern NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION)+import Vulkan.Extensions.VK_NV_shading_rate_image (pattern NV_SHADING_RATE_IMAGE_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_shading_rate_image (pattern NV_SHADING_RATE_IMAGE_SPEC_VERSION)+import Vulkan.Extensions.VK_NV_viewport_array2 (pattern NV_VIEWPORT_ARRAY2_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_viewport_array2 (pattern NV_VIEWPORT_ARRAY2_SPEC_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_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_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_VERSION 1 1 0]+  "SPV_AMD_shader_explicit_vertex_parameter" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME+                             , deviceExtensionMinVersion = AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION+                             }+    ]+  "SPV_AMD_gcn_shader" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = AMD_GCN_SHADER_EXTENSION_NAME+                             , deviceExtensionMinVersion = AMD_GCN_SHADER_SPEC_VERSION+                             }+    ]+  "SPV_AMD_gpu_shader_half_float" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME+                             , deviceExtensionMinVersion = AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION+                             }+    ]+  "SPV_AMD_gpu_shader_int16" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = AMD_GPU_SHADER_INT16_EXTENSION_NAME+                             , deviceExtensionMinVersion = AMD_GPU_SHADER_INT16_SPEC_VERSION+                             }+    ]+  "SPV_AMD_shader_ballot" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = AMD_SHADER_BALLOT_EXTENSION_NAME+                             , deviceExtensionMinVersion = AMD_SHADER_BALLOT_SPEC_VERSION+                             }+    ]+  "SPV_AMD_shader_fragment_mask" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME+                             , deviceExtensionMinVersion = AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION+                             }+    ]+  "SPV_AMD_shader_image_load_store_lod" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME+                             , deviceExtensionMinVersion = AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION+                             }+    ]+  "SPV_AMD_shader_trinary_minmax" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME+                             , deviceExtensionMinVersion = AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION+                             }+    ]+  "SPV_AMD_texture_gather_bias_lod" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME+                             , deviceExtensionMinVersion = AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION+                             }+    ]+  "SPV_KHR_shader_draw_parameters" ->+    (,) [RequireInstanceVersion $ MAKE_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_VERSION 1 1 0]+  "SPV_KHR_8bit_storage" ->+    (,) [RequireInstanceVersion $ MAKE_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_VERSION 1 2 0]+  "SPV_KHR_16bit_storage" ->+    (,) [RequireInstanceVersion $ MAKE_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_VERSION 1 1 0]+  "SPV_KHR_shader_clock" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_CLOCK_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_CLOCK_SPEC_VERSION+                             }+    ]+  "SPV_KHR_float_controls" ->+    (,) [RequireInstanceVersion $ MAKE_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_VERSION 1 2 0]+  "SPV_KHR_storage_buffer_storage_class" ->+    (,) [RequireInstanceVersion $ MAKE_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_VERSION 1 1 0]+  "SPV_KHR_post_depth_coverage" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_POST_DEPTH_COVERAGE_SPEC_VERSION+                             }+    ]+  "SPV_EXT_shader_stencil_export" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION+                             }+    ]+  "SPV_KHR_shader_ballot" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION+                             }+    ]+  "SPV_KHR_subgroup_vote" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION+                             }+    ]+  "SPV_NV_sample_mask_override_coverage" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION+                             }+    ]+  "SPV_NV_geometry_shader_passthrough" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION+                             }+    ]+  "SPV_NV_mesh_shader" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_MESH_SHADER_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_MESH_SHADER_SPEC_VERSION+                             }+    ]+  "SPV_NV_viewport_array2" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_VIEWPORT_ARRAY2_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_VIEWPORT_ARRAY2_SPEC_VERSION+                             }+    ]+  "SPV_NV_shader_subgroup_partitioned" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION+                             }+    ]+  "SPV_EXT_shader_viewport_index_layer" ->+    (,) [RequireInstanceVersion $ MAKE_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_VERSION 1 2 0]+  "SPV_NVX_multiview_per_view_attributes" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME+                             , deviceExtensionMinVersion = NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MULTIVIEW_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MULTIVIEW_SPEC_VERSION+                             }+    ]+  "SPV_EXT_descriptor_indexing" ->+    (,) [RequireInstanceVersion $ MAKE_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_VERSION 1 2 0]+  "SPV_KHR_vulkan_memory_model" ->+    (,) [RequireInstanceVersion $ MAKE_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_VERSION 1 2 0]+  "SPV_NV_compute_shader_derivatives" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION+                             }+    ]+  "SPV_NV_fragment_shader_barycentric" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION+                             }+    ]+  "SPV_NV_shader_image_footprint" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION+                             }+    ]+  "SPV_NV_shading_rate" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_SHADING_RATE_IMAGE_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_SHADING_RATE_IMAGE_SPEC_VERSION+                             }+    ]+  "SPV_NV_ray_tracing" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_RAY_TRACING_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_RAY_TRACING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION+                             }+    ]+  "SPV_KHR_ray_tracing" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_RAY_TRACING_PIPELINE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SPIRV_1_4_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SPIRV_1_4_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_ACCELERATION_STRUCTURE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "SPV_KHR_ray_query" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_RAY_QUERY_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_RAY_QUERY_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SPIRV_1_4_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SPIRV_1_4_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_ACCELERATION_STRUCTURE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "SPV_GOOGLE_hlsl_functionality1" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME+                             , deviceExtensionMinVersion = GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION+                             }+    ]+  "SPV_GOOGLE_user_type" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = GOOGLE_USER_TYPE_EXTENSION_NAME+                             , deviceExtensionMinVersion = GOOGLE_USER_TYPE_SPEC_VERSION+                             }+    ]+  "SPV_GOOGLE_decorate_string" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = GOOGLE_DECORATE_STRING_EXTENSION_NAME+                             , deviceExtensionMinVersion = GOOGLE_DECORATE_STRING_SPEC_VERSION+                             }+    ]+  "SPV_EXT_fragment_invocation_density" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION+                             }+    ]+  "SPV_KHR_physical_storage_buffer" ->+    (,) [RequireInstanceVersion $ MAKE_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_VERSION 1 2 0]+  "SPV_EXT_physical_storage_buffer" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION+                             }+    ]+  "SPV_NV_cooperative_matrix" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_COOPERATIVE_MATRIX_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_COOPERATIVE_MATRIX_SPEC_VERSION+                             }+    ]+  "SPV_NV_shader_sm_builtins" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_SHADER_SM_BUILTINS_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_SHADER_SM_BUILTINS_SPEC_VERSION+                             }+    ]+  "SPV_EXT_fragment_shader_interlock" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION+                             }+    ]+  "SPV_EXT_demote_to_helper_invocation" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION+                             }+    ]+  "SPV_KHR_fragment_shading_rate" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_CREATE_RENDERPASS_2_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_CREATE_RENDERPASS_2_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MULTIVIEW_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MULTIVIEW_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE2_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE2_SPEC_VERSION+                             }+    ]+  "SPV_KHR_non_semantic_info" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION+                             }+    ]+  "SPV_EXT_shader_image_int64" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION+                             }+    ]+  "SPV_KHR_terminate_invocation" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION+                             }+    ]+  _ -> ([], [])++spirvCapabilityRequirements :: ByteString -> ([InstanceRequirement], [DeviceRequirement])+spirvCapabilityRequirements = \case+  "Matrix"            -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]+  "Shader"            -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]+  "InputAttachment"   -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]+  "Sampled1D"         -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]+  "Image1D"           -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]+  "SampledBuffer"     -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]+  "ImageBuffer"       -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]+  "ImageQuery"        -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]+  "DerivativeControl" -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]+  "Geometry"          -> (,)+    []+    [ RequireDeviceFeature { featureName   = "geometryShader"+                           , checkFeature  = geometryShader :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { geometryShader = True } :: PhysicalDeviceFeatures+                           }+    ]+  "Tessellation" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "tessellationShader"+                           , checkFeature  = tessellationShader :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { tessellationShader = True } :: PhysicalDeviceFeatures+                           }+    ]+  "Float64" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "shaderFloat64"+                           , checkFeature  = shaderFloat64 :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { shaderFloat64 = True } :: PhysicalDeviceFeatures+                           }+    ]+  "Int64" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "shaderInt64"+                           , checkFeature  = shaderInt64 :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { shaderInt64 = True } :: PhysicalDeviceFeatures+                           }+    ]+  "Int64Atomics" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shaderBufferInt64Atomics"+      , checkFeature  = shaderBufferInt64Atomics :: PhysicalDeviceVulkan12Features -> Bool+      , enableFeature = \f -> f { shaderBufferInt64Atomics = True } :: PhysicalDeviceVulkan12Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_ATOMIC_INT64_SPEC_VERSION+                             }+    ]+  "AtomicFloat32AddEXT" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shaderBufferFloat32AtomicAdd"+      , checkFeature  = shaderBufferFloat32AtomicAdd :: PhysicalDeviceShaderAtomicFloatFeaturesEXT -> Bool+      , enableFeature = \f -> f { shaderBufferFloat32AtomicAdd = True } :: PhysicalDeviceShaderAtomicFloatFeaturesEXT+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION+                             }+    ]+  "AtomicFloat64AddEXT" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shaderBufferFloat64AtomicAdd"+      , checkFeature  = shaderBufferFloat64AtomicAdd :: PhysicalDeviceShaderAtomicFloatFeaturesEXT -> Bool+      , enableFeature = \f -> f { shaderBufferFloat64AtomicAdd = True } :: PhysicalDeviceShaderAtomicFloatFeaturesEXT+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION+                             }+    ]+  "Int64ImageEXT" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shaderImageInt64Atomics"+      , checkFeature  = shaderImageInt64Atomics :: PhysicalDeviceShaderImageAtomicInt64FeaturesEXT -> Bool+      , enableFeature = \f -> f { shaderImageInt64Atomics = True } :: PhysicalDeviceShaderImageAtomicInt64FeaturesEXT+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION+                             }+    ]+  "Int16" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "shaderInt16"+                           , checkFeature  = shaderInt16 :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { shaderInt16 = True } :: PhysicalDeviceFeatures+                           }+    ]+  "TessellationPointSize" -> (,)+    []+    [ RequireDeviceFeature+        { featureName   = "shaderTessellationAndGeometryPointSize"+        , checkFeature  = shaderTessellationAndGeometryPointSize :: PhysicalDeviceFeatures -> Bool+        , enableFeature = \f -> f { shaderTessellationAndGeometryPointSize = True } :: PhysicalDeviceFeatures+        }+    ]+  "GeometryPointSize" -> (,)+    []+    [ RequireDeviceFeature+        { featureName   = "shaderTessellationAndGeometryPointSize"+        , checkFeature  = shaderTessellationAndGeometryPointSize :: PhysicalDeviceFeatures -> Bool+        , enableFeature = \f -> f { shaderTessellationAndGeometryPointSize = True } :: PhysicalDeviceFeatures+        }+    ]+  "ImageGatherExtended" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "shaderImageGatherExtended"+                           , checkFeature  = shaderImageGatherExtended :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { shaderImageGatherExtended = True } :: PhysicalDeviceFeatures+                           }+    ]+  "StorageImageMultisample" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "shaderStorageImageMultisample"+                           , checkFeature  = shaderStorageImageMultisample :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { shaderStorageImageMultisample = True } :: PhysicalDeviceFeatures+                           }+    ]+  "UniformBufferArrayDynamicIndexing" -> (,)+    []+    [ RequireDeviceFeature+        { featureName   = "shaderUniformBufferArrayDynamicIndexing"+        , checkFeature  = shaderUniformBufferArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool+        , enableFeature = \f -> f { shaderUniformBufferArrayDynamicIndexing = True } :: PhysicalDeviceFeatures+        }+    ]+  "SampledImageArrayDynamicIndexing" -> (,)+    []+    [ RequireDeviceFeature+        { featureName   = "shaderSampledImageArrayDynamicIndexing"+        , checkFeature  = shaderSampledImageArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool+        , enableFeature = \f -> f { shaderSampledImageArrayDynamicIndexing = True } :: PhysicalDeviceFeatures+        }+    ]+  "StorageBufferArrayDynamicIndexing" -> (,)+    []+    [ RequireDeviceFeature+        { featureName   = "shaderStorageBufferArrayDynamicIndexing"+        , checkFeature  = shaderStorageBufferArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool+        , enableFeature = \f -> f { shaderStorageBufferArrayDynamicIndexing = True } :: PhysicalDeviceFeatures+        }+    ]+  "StorageImageArrayDynamicIndexing" -> (,)+    []+    [ RequireDeviceFeature+        { featureName   = "shaderStorageImageArrayDynamicIndexing"+        , checkFeature  = shaderStorageImageArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool+        , enableFeature = \f -> f { shaderStorageImageArrayDynamicIndexing = True } :: PhysicalDeviceFeatures+        }+    ]+  "ClipDistance" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "shaderClipDistance"+                           , checkFeature  = shaderClipDistance :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { shaderClipDistance = True } :: PhysicalDeviceFeatures+                           }+    ]+  "CullDistance" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "shaderCullDistance"+                           , checkFeature  = shaderCullDistance :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { shaderCullDistance = True } :: PhysicalDeviceFeatures+                           }+    ]+  "ImageCubeArray" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "imageCubeArray"+                           , checkFeature  = imageCubeArray :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { imageCubeArray = True } :: PhysicalDeviceFeatures+                           }+    ]+  "SampleRateShading" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "sampleRateShading"+                           , checkFeature  = sampleRateShading :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { sampleRateShading = True } :: PhysicalDeviceFeatures+                           }+    ]+  "SparseResidency" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "shaderResourceResidency"+                           , checkFeature  = shaderResourceResidency :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { shaderResourceResidency = True } :: PhysicalDeviceFeatures+                           }+    ]+  "MinLod" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "shaderResourceMinLod"+                           , checkFeature  = shaderResourceMinLod :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { shaderResourceMinLod = True } :: PhysicalDeviceFeatures+                           }+    ]+  "SampledCubeArray" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "imageCubeArray"+                           , checkFeature  = imageCubeArray :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { imageCubeArray = True } :: PhysicalDeviceFeatures+                           }+    ]+  "ImageMSArray" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "shaderStorageImageMultisample"+                           , checkFeature  = shaderStorageImageMultisample :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { shaderStorageImageMultisample = True } :: PhysicalDeviceFeatures+                           }+    ]+  "StorageImageExtendedFormats" ->+    (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]+  "InterpolationFunction" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "sampleRateShading"+                           , checkFeature  = sampleRateShading :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { sampleRateShading = True } :: PhysicalDeviceFeatures+                           }+    ]+  "StorageImageReadWithoutFormat" -> (,)+    []+    [ RequireDeviceFeature+        { featureName   = "shaderStorageImageReadWithoutFormat"+        , checkFeature  = shaderStorageImageReadWithoutFormat :: PhysicalDeviceFeatures -> Bool+        , enableFeature = \f -> f { shaderStorageImageReadWithoutFormat = True } :: PhysicalDeviceFeatures+        }+    ]+  "StorageImageWriteWithoutFormat" -> (,)+    []+    [ RequireDeviceFeature+        { featureName   = "shaderStorageImageWriteWithoutFormat"+        , checkFeature  = shaderStorageImageWriteWithoutFormat :: PhysicalDeviceFeatures -> Bool+        , enableFeature = \f -> f { shaderStorageImageWriteWithoutFormat = True } :: PhysicalDeviceFeatures+        }+    ]+  "MultiViewport" -> (,)+    []+    [ RequireDeviceFeature { featureName   = "multiViewport"+                           , checkFeature  = multiViewport :: PhysicalDeviceFeatures -> Bool+                           , enableFeature = \f -> f { multiViewport = True } :: PhysicalDeviceFeatures+                           }+    ]+  "DrawParameters" -> (,)+    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]+    [ RequireDeviceFeature { featureName   = "shaderDrawParameters"+                           , checkFeature  = shaderDrawParameters :: PhysicalDeviceVulkan11Features -> Bool+                           , enableFeature = \f -> f { shaderDrawParameters = True } :: PhysicalDeviceVulkan11Features+                           }+    , RequireDeviceVersion $ MAKE_VERSION 1 1 0+    ]+  "MultiView" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 1 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature { featureName   = "multiview"+                           , checkFeature  = multiview :: PhysicalDeviceVulkan11Features -> Bool+                           , enableFeature = \f -> f { multiview = True } :: PhysicalDeviceVulkan11Features+                           }+    , RequireDeviceVersion $ MAKE_VERSION 1 1 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MULTIVIEW_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MULTIVIEW_SPEC_VERSION+                             }+    ]+  "DeviceGroup" -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_VERSION 1 1 0]+  "VariablePointersStorageBuffer" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 1 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "variablePointersStorageBuffer"+      , checkFeature  = variablePointersStorageBuffer :: PhysicalDeviceVulkan11Features -> Bool+      , enableFeature = \f -> f { variablePointersStorageBuffer = True } :: PhysicalDeviceVulkan11Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 1 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_VARIABLE_POINTERS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_VARIABLE_POINTERS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION+                             }+    ]+  "VariablePointers" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 1 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature { featureName   = "variablePointers"+                           , checkFeature  = variablePointers :: PhysicalDeviceVulkan11Features -> Bool+                           , enableFeature = \f -> f { variablePointers = True } :: PhysicalDeviceVulkan11Features+                           }+    , RequireDeviceVersion $ MAKE_VERSION 1 1 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_VARIABLE_POINTERS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_VARIABLE_POINTERS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION+                             }+    ]+  "ShaderClockKHR" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_CLOCK_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_CLOCK_SPEC_VERSION+                             }+    ]+  "StencilExportEXT" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION+                             }+    ]+  "SubgroupBallotKHR" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION+                             }+    ]+  "SubgroupVoteKHR" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION+                             }+    ]+  "ImageReadWriteLodAMD" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME+                             , deviceExtensionMinVersion = AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION+                             }+    ]+  "ImageGatherBiasLodAMD" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME+                             , deviceExtensionMinVersion = AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION+                             }+    ]+  "FragmentMaskAMD" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME+                             , deviceExtensionMinVersion = AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION+                             }+    ]+  "SampleMaskOverrideCoverageNV" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION+                             }+    ]+  "GeometryShaderPassthroughNV" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION+                             }+    ]+  "ShaderViewportIndex" -> (,)+    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]+    [ RequireDeviceFeature+      { featureName   = "shaderOutputViewportIndex"+      , checkFeature  = shaderOutputViewportIndex :: PhysicalDeviceVulkan12Features -> Bool+      , enableFeature = \f -> f { shaderOutputViewportIndex = True } :: PhysicalDeviceVulkan12Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    ]+  "ShaderLayer" -> (,)+    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]+    [ RequireDeviceFeature { featureName   = "shaderOutputLayer"+                           , checkFeature  = shaderOutputLayer :: PhysicalDeviceVulkan12Features -> Bool+                           , enableFeature = \f -> f { shaderOutputLayer = True } :: PhysicalDeviceVulkan12Features+                           }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    ]+  "ShaderViewportIndexLayerEXT" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION+                             }+    ]+  "ShaderViewportIndexLayerNV" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_VIEWPORT_ARRAY2_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_VIEWPORT_ARRAY2_SPEC_VERSION+                             }+    ]+  "ShaderViewportMaskNV" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_VIEWPORT_ARRAY2_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_VIEWPORT_ARRAY2_SPEC_VERSION+                             }+    ]+  "PerViewAttributesNV" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME+                             , deviceExtensionMinVersion = NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MULTIVIEW_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MULTIVIEW_SPEC_VERSION+                             }+    ]+  "StorageBuffer16BitAccess" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 1 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "storageBuffer16BitAccess"+      , checkFeature  = storageBuffer16BitAccess :: PhysicalDeviceVulkan11Features -> Bool+      , enableFeature = \f -> f { storageBuffer16BitAccess = True } :: PhysicalDeviceVulkan11Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 1 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_16BIT_STORAGE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_16BIT_STORAGE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION+                             }+    ]+  "UniformAndStorageBuffer16BitAccess" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 1 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "uniformAndStorageBuffer16BitAccess"+      , checkFeature  = uniformAndStorageBuffer16BitAccess :: PhysicalDeviceVulkan11Features -> Bool+      , enableFeature = \f -> f { uniformAndStorageBuffer16BitAccess = True } :: PhysicalDeviceVulkan11Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 1 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_16BIT_STORAGE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_16BIT_STORAGE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION+                             }+    ]+  "StoragePushConstant16" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 1 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature { featureName   = "storagePushConstant16"+                           , checkFeature  = storagePushConstant16 :: PhysicalDeviceVulkan11Features -> Bool+                           , enableFeature = \f -> f { storagePushConstant16 = True } :: PhysicalDeviceVulkan11Features+                           }+    , RequireDeviceVersion $ MAKE_VERSION 1 1 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_16BIT_STORAGE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_16BIT_STORAGE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION+                             }+    ]+  "StorageInputOutput16" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 1 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature { featureName   = "storageInputOutput16"+                           , checkFeature  = storageInputOutput16 :: PhysicalDeviceVulkan11Features -> Bool+                           , enableFeature = \f -> f { storageInputOutput16 = True } :: PhysicalDeviceVulkan11Features+                           }+    , RequireDeviceVersion $ MAKE_VERSION 1 1 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_16BIT_STORAGE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_16BIT_STORAGE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION+                             }+    ]+  "GroupNonUniform" -> (,)+    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]+    [ RequireDeviceProperty+      { propertyName  = "VkPhysicalDeviceVulkan11Properties"+      , checkProperty = \p ->+        SUBGROUP_FEATURE_BASIC_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 1 0+    ]+  "GroupNonUniformVote" -> (,)+    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]+    [ RequireDeviceProperty+      { propertyName  = "VkPhysicalDeviceVulkan11Properties"+      , checkProperty = \p ->+        SUBGROUP_FEATURE_VOTE_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 1 0+    ]+  "GroupNonUniformArithmetic" -> (,)+    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]+    [ RequireDeviceProperty+      { propertyName  = "VkPhysicalDeviceVulkan11Properties"+      , checkProperty = \p ->+        SUBGROUP_FEATURE_ARITHMETIC_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 1 0+    ]+  "GroupNonUniformBallot" -> (,)+    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]+    [ RequireDeviceProperty+      { propertyName  = "VkPhysicalDeviceVulkan11Properties"+      , checkProperty = \p ->+        SUBGROUP_FEATURE_BALLOT_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 1 0+    ]+  "GroupNonUniformShuffle" -> (,)+    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]+    [ RequireDeviceProperty+      { propertyName  = "VkPhysicalDeviceVulkan11Properties"+      , checkProperty = \p ->+        SUBGROUP_FEATURE_SHUFFLE_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 1 0+    ]+  "GroupNonUniformShuffleRelative" -> (,)+    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]+    [ RequireDeviceProperty+      { propertyName  = "VkPhysicalDeviceVulkan11Properties"+      , checkProperty = \p ->+        SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 1 0+    ]+  "GroupNonUniformClustered" -> (,)+    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]+    [ RequireDeviceProperty+      { propertyName  = "VkPhysicalDeviceVulkan11Properties"+      , checkProperty = \p ->+        SUBGROUP_FEATURE_CLUSTERED_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 1 0+    ]+  "GroupNonUniformQuad" -> (,)+    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]+    [ RequireDeviceProperty+      { propertyName  = "VkPhysicalDeviceVulkan11Properties"+      , checkProperty = \p ->+        SUBGROUP_FEATURE_QUAD_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)+      }+    , RequireDeviceVersion $ MAKE_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 = NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION+                             }+    ]+  "SampleMaskPostDepthCoverage" -> (,)+    []+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_POST_DEPTH_COVERAGE_SPEC_VERSION+                             }+    ]+  "ShaderNonUniform" -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_VERSION 1 2 0]+  "RuntimeDescriptorArray" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature { featureName   = "runtimeDescriptorArray"+                           , checkFeature  = runtimeDescriptorArray :: PhysicalDeviceVulkan12Features -> Bool+                           , enableFeature = \f -> f { runtimeDescriptorArray = True } :: PhysicalDeviceVulkan12Features+                           }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "InputAttachmentArrayDynamicIndexing" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shaderInputAttachmentArrayDynamicIndexing"+      , checkFeature  = shaderInputAttachmentArrayDynamicIndexing :: PhysicalDeviceVulkan12Features -> Bool+      , enableFeature = \f -> f { shaderInputAttachmentArrayDynamicIndexing = True } :: PhysicalDeviceVulkan12Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "UniformTexelBufferArrayDynamicIndexing" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shaderUniformTexelBufferArrayDynamicIndexing"+      , checkFeature  = shaderUniformTexelBufferArrayDynamicIndexing :: PhysicalDeviceVulkan12Features -> Bool+      , enableFeature = \f ->+                          f { shaderUniformTexelBufferArrayDynamicIndexing = True } :: PhysicalDeviceVulkan12Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "StorageTexelBufferArrayDynamicIndexing" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shaderStorageTexelBufferArrayDynamicIndexing"+      , checkFeature  = shaderStorageTexelBufferArrayDynamicIndexing :: PhysicalDeviceVulkan12Features -> Bool+      , enableFeature = \f ->+                          f { shaderStorageTexelBufferArrayDynamicIndexing = True } :: PhysicalDeviceVulkan12Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "UniformBufferArrayNonUniformIndexing" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shaderUniformBufferArrayNonUniformIndexing"+      , checkFeature  = shaderUniformBufferArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool+      , enableFeature = \f -> f { shaderUniformBufferArrayNonUniformIndexing = True } :: PhysicalDeviceVulkan12Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "SampledImageArrayNonUniformIndexing" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shaderSampledImageArrayNonUniformIndexing"+      , checkFeature  = shaderSampledImageArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool+      , enableFeature = \f -> f { shaderSampledImageArrayNonUniformIndexing = True } :: PhysicalDeviceVulkan12Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "StorageBufferArrayNonUniformIndexing" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shaderStorageBufferArrayNonUniformIndexing"+      , checkFeature  = shaderStorageBufferArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool+      , enableFeature = \f -> f { shaderStorageBufferArrayNonUniformIndexing = True } :: PhysicalDeviceVulkan12Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "StorageImageArrayNonUniformIndexing" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shaderStorageImageArrayNonUniformIndexing"+      , checkFeature  = shaderStorageImageArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool+      , enableFeature = \f -> f { shaderStorageImageArrayNonUniformIndexing = True } :: PhysicalDeviceVulkan12Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "InputAttachmentArrayNonUniformIndexing" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shaderInputAttachmentArrayNonUniformIndexing"+      , checkFeature  = shaderInputAttachmentArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool+      , enableFeature = \f ->+                          f { shaderInputAttachmentArrayNonUniformIndexing = True } :: PhysicalDeviceVulkan12Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "UniformTexelBufferArrayNonUniformIndexing" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shaderUniformTexelBufferArrayNonUniformIndexing"+      , checkFeature  = shaderUniformTexelBufferArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool+      , enableFeature = \f ->+                          f { shaderUniformTexelBufferArrayNonUniformIndexing = True } :: PhysicalDeviceVulkan12Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "StorageTexelBufferArrayNonUniformIndexing" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shaderStorageTexelBufferArrayNonUniformIndexing"+      , checkFeature  = shaderStorageTexelBufferArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool+      , enableFeature = \f ->+                          f { shaderStorageTexelBufferArrayNonUniformIndexing = True } :: PhysicalDeviceVulkan12Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "Float16" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature { featureName   = "shaderFloat16"+                           , checkFeature  = shaderFloat16 :: PhysicalDeviceVulkan12Features -> Bool+                           , enableFeature = \f -> f { shaderFloat16 = True } :: PhysicalDeviceVulkan12Features+                           }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_FLOAT16_INT8_SPEC_VERSION+                             }+    ]+  "Int8" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature { featureName   = "shaderInt8"+                           , checkFeature  = shaderInt8 :: PhysicalDeviceVulkan12Features -> Bool+                           , enableFeature = \f -> f { shaderInt8 = True } :: PhysicalDeviceVulkan12Features+                           }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_FLOAT16_INT8_SPEC_VERSION+                             }+    ]+  "StorageBuffer8BitAccess" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "storageBuffer8BitAccess"+      , checkFeature  = storageBuffer8BitAccess :: PhysicalDeviceVulkan12Features -> Bool+      , enableFeature = \f -> f { storageBuffer8BitAccess = True } :: PhysicalDeviceVulkan12Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_8BIT_STORAGE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_8BIT_STORAGE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION+                             }+    ]+  "UniformAndStorageBuffer8BitAccess" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "uniformAndStorageBuffer8BitAccess"+      , checkFeature  = uniformAndStorageBuffer8BitAccess :: PhysicalDeviceVulkan12Features -> Bool+      , enableFeature = \f -> f { uniformAndStorageBuffer8BitAccess = True } :: PhysicalDeviceVulkan12Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_8BIT_STORAGE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_8BIT_STORAGE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION+                             }+    ]+  "StoragePushConstant8" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature { featureName   = "storagePushConstant8"+                           , checkFeature  = storagePushConstant8 :: PhysicalDeviceVulkan12Features -> Bool+                           , enableFeature = \f -> f { storagePushConstant8 = True } :: PhysicalDeviceVulkan12Features+                           }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_8BIT_STORAGE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_8BIT_STORAGE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION+                             }+    ]+  "VulkanMemoryModel" -> (,)+    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]+    [ RequireDeviceFeature { featureName   = "vulkanMemoryModel"+                           , checkFeature  = vulkanMemoryModel :: PhysicalDeviceVulkan12Features -> Bool+                           , enableFeature = \f -> f { vulkanMemoryModel = True } :: PhysicalDeviceVulkan12Features+                           }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION+                             }+    ]+  "VulkanMemoryModelDeviceScope" -> (,)+    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]+    [ RequireDeviceFeature+      { featureName   = "vulkanMemoryModelDeviceScope"+      , checkFeature  = vulkanMemoryModelDeviceScope :: PhysicalDeviceVulkan12Features -> Bool+      , enableFeature = \f -> f { vulkanMemoryModelDeviceScope = True } :: PhysicalDeviceVulkan12Features+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION+                             }+    ]+  "DenormPreserve" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceProperty { propertyName  = "VkPhysicalDeviceVulkan12Properties"+                            , checkProperty = \p -> shaderDenormPreserveFloat16 (p :: PhysicalDeviceVulkan12Properties)+                            }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION+                             }+    ]+  "DenormFlushToZero" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceProperty+      { propertyName  = "VkPhysicalDeviceVulkan12Properties"+      , checkProperty = \p -> shaderDenormFlushToZeroFloat16 (p :: PhysicalDeviceVulkan12Properties)+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION+                             }+    ]+  "SignedZeroInfNanPreserve" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceProperty+      { propertyName  = "VkPhysicalDeviceVulkan12Properties"+      , checkProperty = \p -> shaderSignedZeroInfNanPreserveFloat16 (p :: PhysicalDeviceVulkan12Properties)+      }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION+                             }+    ]+  "RoundingModeRTE" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceProperty { propertyName  = "VkPhysicalDeviceVulkan12Properties"+                            , checkProperty = \p -> shaderRoundingModeRTEFloat16 (p :: PhysicalDeviceVulkan12Properties)+                            }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION+                             }+    ]+  "RoundingModeRTZ" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceProperty { propertyName  = "VkPhysicalDeviceVulkan12Properties"+                            , checkProperty = \p -> shaderRoundingModeRTZFloat16 (p :: PhysicalDeviceVulkan12Properties)+                            }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION+                             }+    ]+  "ComputeDerivativeGroupQuadsNV" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "computeDerivativeGroupQuads"+      , checkFeature  = computeDerivativeGroupQuads :: PhysicalDeviceComputeShaderDerivativesFeaturesNV -> Bool+      , enableFeature = \f ->+                          f { computeDerivativeGroupQuads = True } :: PhysicalDeviceComputeShaderDerivativesFeaturesNV+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION+                             }+    ]+  "ComputeDerivativeGroupLinearNV" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "computeDerivativeGroupLinear"+      , checkFeature  = computeDerivativeGroupLinear :: PhysicalDeviceComputeShaderDerivativesFeaturesNV -> Bool+      , enableFeature = \f ->+                          f { computeDerivativeGroupLinear = True } :: PhysicalDeviceComputeShaderDerivativesFeaturesNV+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION+                             }+    ]+  "FragmentBarycentricNV" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "fragmentShaderBarycentric"+      , checkFeature  = fragmentShaderBarycentric :: PhysicalDeviceFragmentShaderBarycentricFeaturesNV -> Bool+      , enableFeature = \f ->+                          f { fragmentShaderBarycentric = True } :: PhysicalDeviceFragmentShaderBarycentricFeaturesNV+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION+                             }+    ]+  "ImageFootprintNV" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "imageFootprint"+      , checkFeature  = imageFootprint :: PhysicalDeviceShaderImageFootprintFeaturesNV -> Bool+      , enableFeature = \f -> f { imageFootprint = True } :: PhysicalDeviceShaderImageFootprintFeaturesNV+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION+                             }+    ]+  "ShadingRateNV" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shadingRateImage"+      , checkFeature  = shadingRateImage :: PhysicalDeviceShadingRateImageFeaturesNV -> Bool+      , enableFeature = \f -> f { shadingRateImage = True } :: PhysicalDeviceShadingRateImageFeaturesNV+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_SHADING_RATE_IMAGE_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_SHADING_RATE_IMAGE_SPEC_VERSION+                             }+    ]+  "MeshShadingNV" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_MESH_SHADER_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_MESH_SHADER_SPEC_VERSION+                             }+    ]+  "RayTracingKHR" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "rayTracingPipeline"+      , checkFeature  = rayTracingPipeline :: PhysicalDeviceRayTracingPipelineFeaturesKHR -> Bool+      , enableFeature = \f -> f { rayTracingPipeline = True } :: PhysicalDeviceRayTracingPipelineFeaturesKHR+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_RAY_TRACING_PIPELINE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SPIRV_1_4_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SPIRV_1_4_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_ACCELERATION_STRUCTURE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "RayQueryKHR" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature { featureName   = "rayQuery"+                           , checkFeature  = rayQuery :: PhysicalDeviceRayQueryFeaturesKHR -> Bool+                           , enableFeature = \f -> f { rayQuery = True } :: PhysicalDeviceRayQueryFeaturesKHR+                           }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_RAY_QUERY_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_RAY_QUERY_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SPIRV_1_4_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SPIRV_1_4_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_ACCELERATION_STRUCTURE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "RayTraversalPrimitiveCullingKHR" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "rayTraversalPrimitiveCulling"+      , checkFeature  = rayTraversalPrimitiveCulling :: PhysicalDeviceRayTracingPipelineFeaturesKHR -> Bool+      , enableFeature = \f -> f { rayTraversalPrimitiveCulling = True } :: PhysicalDeviceRayTracingPipelineFeaturesKHR+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_RAY_TRACING_PIPELINE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SPIRV_1_4_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SPIRV_1_4_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_ACCELERATION_STRUCTURE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE3_SPEC_VERSION+                             }+    ]+  "RayTracingNV" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_RAY_TRACING_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_RAY_TRACING_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION+                             }+    ]+  "TransformFeedback" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "transformFeedback"+      , checkFeature  = transformFeedback :: PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool+      , enableFeature = \f -> f { transformFeedback = True } :: PhysicalDeviceTransformFeedbackFeaturesEXT+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_TRANSFORM_FEEDBACK_SPEC_VERSION+                             }+    ]+  "GeometryStreams" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "geometryStreams"+      , checkFeature  = geometryStreams :: PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool+      , enableFeature = \f -> f { geometryStreams = True } :: PhysicalDeviceTransformFeedbackFeaturesEXT+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_TRANSFORM_FEEDBACK_SPEC_VERSION+                             }+    ]+  "FragmentDensityEXT" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "fragmentDensityMap"+      , checkFeature  = fragmentDensityMap :: PhysicalDeviceFragmentDensityMapFeaturesEXT -> Bool+      , enableFeature = \f -> f { fragmentDensityMap = True } :: PhysicalDeviceFragmentDensityMapFeaturesEXT+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION+                             }+    ]+  "PhysicalStorageBufferAddresses" -> (,)+    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature { featureName   = "bufferDeviceAddress"+                           , checkFeature  = bufferDeviceAddress :: PhysicalDeviceVulkan12Features -> Bool+                           , enableFeature = \f -> f { bufferDeviceAddress = True } :: PhysicalDeviceVulkan12Features+                           }+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION+                             }+    ]+  "CooperativeMatrixNV" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "cooperativeMatrix"+      , checkFeature  = cooperativeMatrix :: PhysicalDeviceCooperativeMatrixFeaturesNV -> Bool+      , enableFeature = \f -> f { cooperativeMatrix = True } :: PhysicalDeviceCooperativeMatrixFeaturesNV+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_COOPERATIVE_MATRIX_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_COOPERATIVE_MATRIX_SPEC_VERSION+                             }+    ]+  "IntegerFunctions2INTEL" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "shaderIntegerFunctions2"+      , checkFeature  = shaderIntegerFunctions2 :: PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL -> Bool+      , enableFeature = \f -> f { shaderIntegerFunctions2 = True } :: PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME+                             , deviceExtensionMinVersion = INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION+                             }+    ]+  "ShaderSMBuiltinsNV" -> (,)+    []+    [ RequireDeviceFeature+      { featureName   = "shaderSMBuiltins"+      , checkFeature  = shaderSMBuiltins :: PhysicalDeviceShaderSMBuiltinsFeaturesNV -> Bool+      , enableFeature = \f -> f { shaderSMBuiltins = True } :: PhysicalDeviceShaderSMBuiltinsFeaturesNV+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = NV_SHADER_SM_BUILTINS_EXTENSION_NAME+                             , deviceExtensionMinVersion = NV_SHADER_SM_BUILTINS_SPEC_VERSION+                             }+    ]+  "FragmentShaderSampleInterlockEXT" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "fragmentShaderSampleInterlock"+      , checkFeature  = fragmentShaderSampleInterlock :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT -> Bool+      , enableFeature = \f ->+                          f { fragmentShaderSampleInterlock = True } :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION+                             }+    ]+  "FragmentShaderPixelInterlockEXT" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "fragmentShaderPixelInterlock"+      , checkFeature  = fragmentShaderPixelInterlock :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT -> Bool+      , enableFeature = \f ->+                          f { fragmentShaderPixelInterlock = True } :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION+                             }+    ]+  "FragmentShaderShadingRateInterlockEXT" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "fragmentShaderShadingRateInterlock"+      , checkFeature  = fragmentShaderShadingRateInterlock :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT -> Bool+      , enableFeature = \f ->+        f { fragmentShaderShadingRateInterlock = True } :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION+                             }+    ]+  "DemoteToHelperInvocationEXT" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName = "shaderDemoteToHelperInvocation"+      , checkFeature = shaderDemoteToHelperInvocation :: PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT -> Bool+      , enableFeature = \f ->+        f { shaderDemoteToHelperInvocation = True } :: PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME+                             , deviceExtensionMinVersion = EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION+                             }+    ]+  "FragmentShadingRateKHR" -> (,)+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+                               , instanceExtensionMinVersion = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+                               }+    ]+    [ RequireDeviceFeature+      { featureName   = "pipelineFragmentShadingRate"+      , checkFeature  = pipelineFragmentShadingRate :: PhysicalDeviceFragmentShadingRateFeaturesKHR -> Bool+      , enableFeature = \f -> f { pipelineFragmentShadingRate = True } :: PhysicalDeviceFragmentShadingRateFeaturesKHR+      }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_CREATE_RENDERPASS_2_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_CREATE_RENDERPASS_2_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MULTIVIEW_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MULTIVIEW_SPEC_VERSION+                             }+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing+                             , deviceExtensionName       = KHR_MAINTENANCE2_EXTENSION_NAME+                             , deviceExtensionMinVersion = KHR_MAINTENANCE2_SPEC_VERSION+                             }+    ]+  _ -> ([], [])+
src/Vulkan/Version.hs view
@@ -15,11 +15,11 @@ import Data.Word (Word32)  pattern HEADER_VERSION :: Word32-pattern HEADER_VERSION = 162+pattern HEADER_VERSION = 163   pattern HEADER_VERSION_COMPLETE :: Word32-pattern HEADER_VERSION_COMPLETE = MAKE_VERSION 1 2 162+pattern HEADER_VERSION_COMPLETE = MAKE_VERSION 1 2 163   pattern MAKE_VERSION :: Word32 -> Word32 -> Word32 -> Word32
vulkan.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           vulkan-version:        3.7+version:        3.8 synopsis:       Bindings to the Vulkan graphics API. category:       Graphics homepage:       https://github.com/expipiplus1/vulkan#readme@@ -247,6 +247,7 @@       Vulkan.Dynamic       Vulkan.Exception       Vulkan.Extensions+      Vulkan.Extensions.Dependencies       Vulkan.Extensions.Handles       Vulkan.Extensions.VK_AMD_buffer_marker       Vulkan.Extensions.VK_AMD_device_coherent_memory@@ -470,9 +471,11 @@       Vulkan.Extensions.VK_QCOM_render_pass_transform       Vulkan.Extensions.VK_QCOM_rotated_copy_commands       Vulkan.NamedType+      Vulkan.SPIRVRequirements       Vulkan.Version       Vulkan.Zero       Vulkan.Internal.Utils+      Vulkan.Requirement   hs-source-dirs:       src       src-manual