vulkan 3.7 → 3.8
raw patch · 13 files changed
+2972/−106 lines, 13 files
Files
- changelog.md +11/−0
- package.yaml +1/−1
- src-manual/Vulkan/Requirement.hs +163/−0
- src/Vulkan.hs +2/−0
- src/Vulkan/Extensions.hs +3/−1
- src/Vulkan/Extensions/Dependencies.hs +481/−0
- src/Vulkan/Extensions/VK_EXT_private_data.hs +2/−2
- src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs +5/−5
- src/Vulkan/Extensions/VK_KHR_copy_commands2.hs +92/−90
- src/Vulkan/Extensions/VK_NV_device_generated_commands.hs +3/−4
- src/Vulkan/SPIRVRequirements.hs +2203/−0
- src/Vulkan/Version.hs +2/−2
- vulkan.cabal +4/−1
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