{-# 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 :: a
x .&&. :: a -> a -> Bool
.&&. y :: a
y = (a
x a -> a -> a
forall a. Bits a => a -> a -> a
.&. a
y) a -> a -> Bool
forall a. Eq a => a -> a -> Bool
/= a
forall a. Bits a => a
zeroBits

spirvExtensionRequirements :: ByteString -> ([InstanceRequirement], [DeviceRequirement])
spirvExtensionRequirements :: ByteString -> ([InstanceRequirement], [DeviceRequirement])
spirvExtensionRequirements = \case
  "SPV_KHR_variable_pointers" ->
    (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0]
  "SPV_AMD_shader_explicit_vertex_parameter" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION
                             }
    ]
  "SPV_AMD_gcn_shader" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
AMD_GCN_SHADER_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
AMD_GCN_SHADER_SPEC_VERSION
                             }
    ]
  "SPV_AMD_gpu_shader_half_float" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION
                             }
    ]
  "SPV_AMD_gpu_shader_int16" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
AMD_GPU_SHADER_INT16_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
AMD_GPU_SHADER_INT16_SPEC_VERSION
                             }
    ]
  "SPV_AMD_shader_ballot" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
AMD_SHADER_BALLOT_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
AMD_SHADER_BALLOT_SPEC_VERSION
                             }
    ]
  "SPV_AMD_shader_fragment_mask" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION
                             }
    ]
  "SPV_AMD_shader_image_load_store_lod" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION
                             }
    ]
  "SPV_AMD_shader_trinary_minmax" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION
                             }
    ]
  "SPV_AMD_texture_gather_bias_lod" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION
                             }
    ]
  "SPV_KHR_shader_draw_parameters" ->
    (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0]
  "SPV_KHR_8bit_storage" ->
    (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0]
  "SPV_KHR_16bit_storage" ->
    (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0]
  "SPV_KHR_shader_clock" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_CLOCK_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_CLOCK_SPEC_VERSION
                             }
    ]
  "SPV_KHR_float_controls" ->
    (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0]
  "SPV_KHR_storage_buffer_storage_class" ->
    (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0]
  "SPV_KHR_post_depth_coverage" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_POST_DEPTH_COVERAGE_SPEC_VERSION
                             }
    ]
  "SPV_EXT_shader_stencil_export" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION
                             }
    ]
  "SPV_KHR_shader_ballot" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION
                             }
    ]
  "SPV_KHR_subgroup_vote" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION
                             }
    ]
  "SPV_NV_sample_mask_override_coverage" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION
                             }
    ]
  "SPV_NV_geometry_shader_passthrough" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION
                             }
    ]
  "SPV_NV_mesh_shader" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_MESH_SHADER_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_MESH_SHADER_SPEC_VERSION
                             }
    ]
  "SPV_NV_viewport_array2" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_VIEWPORT_ARRAY2_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_VIEWPORT_ARRAY2_SPEC_VERSION
                             }
    ]
  "SPV_NV_shader_subgroup_partitioned" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION
                             }
    ]
  "SPV_EXT_shader_viewport_index_layer" ->
    (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0]
  "SPV_NVX_multiview_per_view_attributes" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MULTIVIEW_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MULTIVIEW_SPEC_VERSION
                             }
    ]
  "SPV_EXT_descriptor_indexing" ->
    (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0]
  "SPV_KHR_vulkan_memory_model" ->
    (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0]
  "SPV_NV_compute_shader_derivatives" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION
                             }
    ]
  "SPV_NV_fragment_shader_barycentric" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION
                             }
    ]
  "SPV_NV_shader_image_footprint" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION
                             }
    ]
  "SPV_NV_shading_rate" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_SHADING_RATE_IMAGE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_SHADING_RATE_IMAGE_SPEC_VERSION
                             }
    ]
  "SPV_NV_ray_tracing" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_RAY_TRACING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_RAY_TRACING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION
                             }
    ]
  "SPV_KHR_ray_tracing" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_RAY_TRACING_PIPELINE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SPIRV_1_4_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SPIRV_1_4_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_ACCELERATION_STRUCTURE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "SPV_KHR_ray_query" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_RAY_QUERY_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_RAY_QUERY_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SPIRV_1_4_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SPIRV_1_4_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_ACCELERATION_STRUCTURE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "SPV_GOOGLE_hlsl_functionality1" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION
                             }
    ]
  "SPV_GOOGLE_user_type" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
GOOGLE_USER_TYPE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
GOOGLE_USER_TYPE_SPEC_VERSION
                             }
    ]
  "SPV_GOOGLE_decorate_string" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
GOOGLE_DECORATE_STRING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
GOOGLE_DECORATE_STRING_SPEC_VERSION
                             }
    ]
  "SPV_EXT_fragment_invocation_density" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION
                             }
    ]
  "SPV_KHR_physical_storage_buffer" ->
    (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0]
  "SPV_EXT_physical_storage_buffer" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION
                             }
    ]
  "SPV_NV_cooperative_matrix" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_COOPERATIVE_MATRIX_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_COOPERATIVE_MATRIX_SPEC_VERSION
                             }
    ]
  "SPV_NV_shader_sm_builtins" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_SHADER_SM_BUILTINS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_SHADER_SM_BUILTINS_SPEC_VERSION
                             }
    ]
  "SPV_EXT_fragment_shader_interlock" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION
                             }
    ]
  "SPV_EXT_demote_to_helper_invocation" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION
                             }
    ]
  "SPV_KHR_fragment_shading_rate" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_CREATE_RENDERPASS_2_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_CREATE_RENDERPASS_2_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MULTIVIEW_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MULTIVIEW_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE2_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE2_SPEC_VERSION
                             }
    ]
  "SPV_KHR_non_semantic_info" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION
                             }
    ]
  "SPV_EXT_shader_image_int64" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION
                             }
    ]
  "SPV_KHR_terminate_invocation" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION
                             }
    ]
  _ -> ([], [])

spirvCapabilityRequirements :: ByteString -> ([InstanceRequirement], [DeviceRequirement])
spirvCapabilityRequirements :: ByteString -> ([InstanceRequirement], [DeviceRequirement])
spirvCapabilityRequirements = \case
  "Matrix"            -> (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0]
  "Shader"            -> (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0]
  "InputAttachment"   -> (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0]
  "Sampled1D"         -> (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0]
  "Image1D"           -> (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0]
  "SampledBuffer"     -> (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0]
  "ImageBuffer"       -> (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0]
  "ImageQuery"        -> (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0]
  "DerivativeControl" -> (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0]
  "Geometry"          -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "geometryShader"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
geometryShader :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:geometryShader:PhysicalDeviceFeatures :: Bool
geometryShader = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "Tessellation" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "tessellationShader"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
tessellationShader :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:tessellationShader:PhysicalDeviceFeatures :: Bool
tessellationShader = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "Float64" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderFloat64"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderFloat64 :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderFloat64:PhysicalDeviceFeatures :: Bool
shaderFloat64 = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "Int64" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderInt64"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderInt64 :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderInt64:PhysicalDeviceFeatures :: Bool
shaderInt64 = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "Int64Atomics" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderBufferInt64Atomics"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
shaderBufferInt64Atomics :: PhysicalDeviceVulkan12Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:shaderBufferInt64Atomics:PhysicalDeviceVulkan12Features :: Bool
shaderBufferInt64Atomics = Bool
True } :: PhysicalDeviceVulkan12Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_ATOMIC_INT64_SPEC_VERSION
                             }
    ]
  "AtomicFloat32AddEXT" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderBufferFloat32AtomicAdd"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceShaderAtomicFloatFeaturesEXT -> Bool
checkFeature  = PhysicalDeviceShaderAtomicFloatFeaturesEXT -> Bool
shaderBufferFloat32AtomicAdd :: PhysicalDeviceShaderAtomicFloatFeaturesEXT -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceShaderAtomicFloatFeaturesEXT
-> PhysicalDeviceShaderAtomicFloatFeaturesEXT
enableFeature = \f :: PhysicalDeviceShaderAtomicFloatFeaturesEXT
f -> PhysicalDeviceShaderAtomicFloatFeaturesEXT
f { $sel:shaderBufferFloat32AtomicAdd:PhysicalDeviceShaderAtomicFloatFeaturesEXT :: Bool
shaderBufferFloat32AtomicAdd = Bool
True } :: PhysicalDeviceShaderAtomicFloatFeaturesEXT
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION
                             }
    ]
  "AtomicFloat64AddEXT" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderBufferFloat64AtomicAdd"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceShaderAtomicFloatFeaturesEXT -> Bool
checkFeature  = PhysicalDeviceShaderAtomicFloatFeaturesEXT -> Bool
shaderBufferFloat64AtomicAdd :: PhysicalDeviceShaderAtomicFloatFeaturesEXT -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceShaderAtomicFloatFeaturesEXT
-> PhysicalDeviceShaderAtomicFloatFeaturesEXT
enableFeature = \f :: PhysicalDeviceShaderAtomicFloatFeaturesEXT
f -> PhysicalDeviceShaderAtomicFloatFeaturesEXT
f { $sel:shaderBufferFloat64AtomicAdd:PhysicalDeviceShaderAtomicFloatFeaturesEXT :: Bool
shaderBufferFloat64AtomicAdd = Bool
True } :: PhysicalDeviceShaderAtomicFloatFeaturesEXT
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION
                             }
    ]
  "Int64ImageEXT" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderImageInt64Atomics"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceShaderImageAtomicInt64FeaturesEXT -> Bool
checkFeature  = PhysicalDeviceShaderImageAtomicInt64FeaturesEXT -> Bool
shaderImageInt64Atomics :: PhysicalDeviceShaderImageAtomicInt64FeaturesEXT -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceShaderImageAtomicInt64FeaturesEXT
-> PhysicalDeviceShaderImageAtomicInt64FeaturesEXT
enableFeature = \f :: PhysicalDeviceShaderImageAtomicInt64FeaturesEXT
f -> PhysicalDeviceShaderImageAtomicInt64FeaturesEXT
f { $sel:shaderImageInt64Atomics:PhysicalDeviceShaderImageAtomicInt64FeaturesEXT :: Bool
shaderImageInt64Atomics = Bool
True } :: PhysicalDeviceShaderImageAtomicInt64FeaturesEXT
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION
                             }
    ]
  "Int16" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderInt16"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderInt16 :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderInt16:PhysicalDeviceFeatures :: Bool
shaderInt16 = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "TessellationPointSize" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
        { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderTessellationAndGeometryPointSize"
        , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderTessellationAndGeometryPointSize :: PhysicalDeviceFeatures -> Bool
        , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderTessellationAndGeometryPointSize:PhysicalDeviceFeatures :: Bool
shaderTessellationAndGeometryPointSize = Bool
True } :: PhysicalDeviceFeatures
        }
    ]
  "GeometryPointSize" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
        { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderTessellationAndGeometryPointSize"
        , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderTessellationAndGeometryPointSize :: PhysicalDeviceFeatures -> Bool
        , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderTessellationAndGeometryPointSize:PhysicalDeviceFeatures :: Bool
shaderTessellationAndGeometryPointSize = Bool
True } :: PhysicalDeviceFeatures
        }
    ]
  "ImageGatherExtended" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderImageGatherExtended"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderImageGatherExtended :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderImageGatherExtended:PhysicalDeviceFeatures :: Bool
shaderImageGatherExtended = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "StorageImageMultisample" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderStorageImageMultisample"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderStorageImageMultisample :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderStorageImageMultisample:PhysicalDeviceFeatures :: Bool
shaderStorageImageMultisample = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "UniformBufferArrayDynamicIndexing" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
        { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderUniformBufferArrayDynamicIndexing"
        , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderUniformBufferArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool
        , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderUniformBufferArrayDynamicIndexing:PhysicalDeviceFeatures :: Bool
shaderUniformBufferArrayDynamicIndexing = Bool
True } :: PhysicalDeviceFeatures
        }
    ]
  "SampledImageArrayDynamicIndexing" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
        { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderSampledImageArrayDynamicIndexing"
        , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderSampledImageArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool
        , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderSampledImageArrayDynamicIndexing:PhysicalDeviceFeatures :: Bool
shaderSampledImageArrayDynamicIndexing = Bool
True } :: PhysicalDeviceFeatures
        }
    ]
  "StorageBufferArrayDynamicIndexing" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
        { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderStorageBufferArrayDynamicIndexing"
        , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderStorageBufferArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool
        , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderStorageBufferArrayDynamicIndexing:PhysicalDeviceFeatures :: Bool
shaderStorageBufferArrayDynamicIndexing = Bool
True } :: PhysicalDeviceFeatures
        }
    ]
  "StorageImageArrayDynamicIndexing" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
        { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderStorageImageArrayDynamicIndexing"
        , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderStorageImageArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool
        , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderStorageImageArrayDynamicIndexing:PhysicalDeviceFeatures :: Bool
shaderStorageImageArrayDynamicIndexing = Bool
True } :: PhysicalDeviceFeatures
        }
    ]
  "ClipDistance" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderClipDistance"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderClipDistance :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderClipDistance:PhysicalDeviceFeatures :: Bool
shaderClipDistance = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "CullDistance" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderCullDistance"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderCullDistance :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderCullDistance:PhysicalDeviceFeatures :: Bool
shaderCullDistance = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "ImageCubeArray" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "imageCubeArray"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
imageCubeArray :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:imageCubeArray:PhysicalDeviceFeatures :: Bool
imageCubeArray = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "SampleRateShading" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "sampleRateShading"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
sampleRateShading :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:sampleRateShading:PhysicalDeviceFeatures :: Bool
sampleRateShading = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "SparseResidency" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderResourceResidency"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderResourceResidency :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderResourceResidency:PhysicalDeviceFeatures :: Bool
shaderResourceResidency = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "MinLod" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderResourceMinLod"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderResourceMinLod :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderResourceMinLod:PhysicalDeviceFeatures :: Bool
shaderResourceMinLod = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "SampledCubeArray" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "imageCubeArray"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
imageCubeArray :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:imageCubeArray:PhysicalDeviceFeatures :: Bool
imageCubeArray = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "ImageMSArray" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderStorageImageMultisample"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderStorageImageMultisample :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderStorageImageMultisample:PhysicalDeviceFeatures :: Bool
shaderStorageImageMultisample = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "StorageImageExtendedFormats" ->
    (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 0 0]
  "InterpolationFunction" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "sampleRateShading"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
sampleRateShading :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:sampleRateShading:PhysicalDeviceFeatures :: Bool
sampleRateShading = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "StorageImageReadWithoutFormat" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
        { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderStorageImageReadWithoutFormat"
        , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderStorageImageReadWithoutFormat :: PhysicalDeviceFeatures -> Bool
        , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderStorageImageReadWithoutFormat:PhysicalDeviceFeatures :: Bool
shaderStorageImageReadWithoutFormat = Bool
True } :: PhysicalDeviceFeatures
        }
    ]
  "StorageImageWriteWithoutFormat" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
        { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderStorageImageWriteWithoutFormat"
        , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
shaderStorageImageWriteWithoutFormat :: PhysicalDeviceFeatures -> Bool
        , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:shaderStorageImageWriteWithoutFormat:PhysicalDeviceFeatures :: Bool
shaderStorageImageWriteWithoutFormat = Bool
True } :: PhysicalDeviceFeatures
        }
    ]
  "MultiViewport" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "multiViewport"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> Bool
checkFeature  = PhysicalDeviceFeatures -> Bool
multiViewport :: PhysicalDeviceFeatures -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFeatures -> PhysicalDeviceFeatures
enableFeature = \f :: PhysicalDeviceFeatures
f -> PhysicalDeviceFeatures
f { $sel:multiViewport:PhysicalDeviceFeatures :: Bool
multiViewport = Bool
True } :: PhysicalDeviceFeatures
                           }
    ]
  "DrawParameters" -> (,)
    [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderDrawParameters"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> Bool
checkFeature  = PhysicalDeviceVulkan11Features -> Bool
shaderDrawParameters :: PhysicalDeviceVulkan11Features -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> PhysicalDeviceVulkan11Features
enableFeature = \f :: PhysicalDeviceVulkan11Features
f -> PhysicalDeviceVulkan11Features
f { $sel:shaderDrawParameters:PhysicalDeviceVulkan11Features :: Bool
shaderDrawParameters = Bool
True } :: PhysicalDeviceVulkan11Features
                           }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    ]
  "MultiView" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "multiview"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> Bool
checkFeature  = PhysicalDeviceVulkan11Features -> Bool
multiview :: PhysicalDeviceVulkan11Features -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> PhysicalDeviceVulkan11Features
enableFeature = \f :: PhysicalDeviceVulkan11Features
f -> PhysicalDeviceVulkan11Features
f { $sel:multiview:PhysicalDeviceVulkan11Features :: Bool
multiview = Bool
True } :: PhysicalDeviceVulkan11Features
                           }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MULTIVIEW_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MULTIVIEW_SPEC_VERSION
                             }
    ]
  "DeviceGroup" -> (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0]
  "VariablePointersStorageBuffer" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "variablePointersStorageBuffer"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> Bool
checkFeature  = PhysicalDeviceVulkan11Features -> Bool
variablePointersStorageBuffer :: PhysicalDeviceVulkan11Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> PhysicalDeviceVulkan11Features
enableFeature = \f :: PhysicalDeviceVulkan11Features
f -> PhysicalDeviceVulkan11Features
f { $sel:variablePointersStorageBuffer:PhysicalDeviceVulkan11Features :: Bool
variablePointersStorageBuffer = Bool
True } :: PhysicalDeviceVulkan11Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_VARIABLE_POINTERS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_VARIABLE_POINTERS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION
                             }
    ]
  "VariablePointers" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "variablePointers"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> Bool
checkFeature  = PhysicalDeviceVulkan11Features -> Bool
variablePointers :: PhysicalDeviceVulkan11Features -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> PhysicalDeviceVulkan11Features
enableFeature = \f :: PhysicalDeviceVulkan11Features
f -> PhysicalDeviceVulkan11Features
f { $sel:variablePointers:PhysicalDeviceVulkan11Features :: Bool
variablePointers = Bool
True } :: PhysicalDeviceVulkan11Features
                           }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_VARIABLE_POINTERS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_VARIABLE_POINTERS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION
                             }
    ]
  "ShaderClockKHR" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_CLOCK_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_CLOCK_SPEC_VERSION
                             }
    ]
  "StencilExportEXT" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION
                             }
    ]
  "SubgroupBallotKHR" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION
                             }
    ]
  "SubgroupVoteKHR" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION
                             }
    ]
  "ImageReadWriteLodAMD" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION
                             }
    ]
  "ImageGatherBiasLodAMD" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION
                             }
    ]
  "FragmentMaskAMD" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION
                             }
    ]
  "SampleMaskOverrideCoverageNV" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION
                             }
    ]
  "GeometryShaderPassthroughNV" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION
                             }
    ]
  "ShaderViewportIndex" -> (,)
    [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderOutputViewportIndex"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
shaderOutputViewportIndex :: PhysicalDeviceVulkan12Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:shaderOutputViewportIndex:PhysicalDeviceVulkan12Features :: Bool
shaderOutputViewportIndex = Bool
True } :: PhysicalDeviceVulkan12Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    ]
  "ShaderLayer" -> (,)
    [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderOutputLayer"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
shaderOutputLayer :: PhysicalDeviceVulkan12Features -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:shaderOutputLayer:PhysicalDeviceVulkan12Features :: Bool
shaderOutputLayer = Bool
True } :: PhysicalDeviceVulkan12Features
                           }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    ]
  "ShaderViewportIndexLayerEXT" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION
                             }
    ]
  "ShaderViewportIndexLayerNV" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_VIEWPORT_ARRAY2_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_VIEWPORT_ARRAY2_SPEC_VERSION
                             }
    ]
  "ShaderViewportMaskNV" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_VIEWPORT_ARRAY2_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_VIEWPORT_ARRAY2_SPEC_VERSION
                             }
    ]
  "PerViewAttributesNV" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MULTIVIEW_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MULTIVIEW_SPEC_VERSION
                             }
    ]
  "StorageBuffer16BitAccess" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "storageBuffer16BitAccess"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> Bool
checkFeature  = PhysicalDeviceVulkan11Features -> Bool
storageBuffer16BitAccess :: PhysicalDeviceVulkan11Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> PhysicalDeviceVulkan11Features
enableFeature = \f :: PhysicalDeviceVulkan11Features
f -> PhysicalDeviceVulkan11Features
f { $sel:storageBuffer16BitAccess:PhysicalDeviceVulkan11Features :: Bool
storageBuffer16BitAccess = Bool
True } :: PhysicalDeviceVulkan11Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_16BIT_STORAGE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_16BIT_STORAGE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION
                             }
    ]
  "UniformAndStorageBuffer16BitAccess" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "uniformAndStorageBuffer16BitAccess"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> Bool
checkFeature  = PhysicalDeviceVulkan11Features -> Bool
uniformAndStorageBuffer16BitAccess :: PhysicalDeviceVulkan11Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> PhysicalDeviceVulkan11Features
enableFeature = \f :: PhysicalDeviceVulkan11Features
f -> PhysicalDeviceVulkan11Features
f { $sel:uniformAndStorageBuffer16BitAccess:PhysicalDeviceVulkan11Features :: Bool
uniformAndStorageBuffer16BitAccess = Bool
True } :: PhysicalDeviceVulkan11Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_16BIT_STORAGE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_16BIT_STORAGE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION
                             }
    ]
  "StoragePushConstant16" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "storagePushConstant16"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> Bool
checkFeature  = PhysicalDeviceVulkan11Features -> Bool
storagePushConstant16 :: PhysicalDeviceVulkan11Features -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> PhysicalDeviceVulkan11Features
enableFeature = \f :: PhysicalDeviceVulkan11Features
f -> PhysicalDeviceVulkan11Features
f { $sel:storagePushConstant16:PhysicalDeviceVulkan11Features :: Bool
storagePushConstant16 = Bool
True } :: PhysicalDeviceVulkan11Features
                           }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_16BIT_STORAGE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_16BIT_STORAGE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION
                             }
    ]
  "StorageInputOutput16" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "storageInputOutput16"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> Bool
checkFeature  = PhysicalDeviceVulkan11Features -> Bool
storageInputOutput16 :: PhysicalDeviceVulkan11Features -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan11Features -> PhysicalDeviceVulkan11Features
enableFeature = \f :: PhysicalDeviceVulkan11Features
f -> PhysicalDeviceVulkan11Features
f { $sel:storageInputOutput16:PhysicalDeviceVulkan11Features :: Bool
storageInputOutput16 = Bool
True } :: PhysicalDeviceVulkan11Features
                           }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_16BIT_STORAGE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_16BIT_STORAGE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION
                             }
    ]
  "GroupNonUniform" -> (,)
    [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0]
    [ $WRequireDeviceProperty :: forall struct.
KnownPropertyStruct struct =>
ByteString -> (struct -> Bool) -> DeviceRequirement
RequireDeviceProperty
      { $sel:propertyName:RequireDeviceVersion :: ByteString
propertyName  = "VkPhysicalDeviceVulkan11Properties"
      , $sel:checkProperty:RequireDeviceVersion :: PhysicalDeviceVulkan11Properties -> Bool
checkProperty = \p :: PhysicalDeviceVulkan11Properties
p ->
        SubgroupFeatureFlagBits
SUBGROUP_FEATURE_BASIC_BIT SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
forall a. Bits a => a -> a -> Bool
.&&. PhysicalDeviceVulkan11Properties -> SubgroupFeatureFlagBits
subgroupSupportedOperations (PhysicalDeviceVulkan11Properties
p :: PhysicalDeviceVulkan11Properties)
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    ]
  "GroupNonUniformVote" -> (,)
    [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0]
    [ $WRequireDeviceProperty :: forall struct.
KnownPropertyStruct struct =>
ByteString -> (struct -> Bool) -> DeviceRequirement
RequireDeviceProperty
      { $sel:propertyName:RequireDeviceVersion :: ByteString
propertyName  = "VkPhysicalDeviceVulkan11Properties"
      , $sel:checkProperty:RequireDeviceVersion :: PhysicalDeviceVulkan11Properties -> Bool
checkProperty = \p :: PhysicalDeviceVulkan11Properties
p ->
        SubgroupFeatureFlagBits
SUBGROUP_FEATURE_VOTE_BIT SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
forall a. Bits a => a -> a -> Bool
.&&. PhysicalDeviceVulkan11Properties -> SubgroupFeatureFlagBits
subgroupSupportedOperations (PhysicalDeviceVulkan11Properties
p :: PhysicalDeviceVulkan11Properties)
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    ]
  "GroupNonUniformArithmetic" -> (,)
    [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0]
    [ $WRequireDeviceProperty :: forall struct.
KnownPropertyStruct struct =>
ByteString -> (struct -> Bool) -> DeviceRequirement
RequireDeviceProperty
      { $sel:propertyName:RequireDeviceVersion :: ByteString
propertyName  = "VkPhysicalDeviceVulkan11Properties"
      , $sel:checkProperty:RequireDeviceVersion :: PhysicalDeviceVulkan11Properties -> Bool
checkProperty = \p :: PhysicalDeviceVulkan11Properties
p ->
        SubgroupFeatureFlagBits
SUBGROUP_FEATURE_ARITHMETIC_BIT SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
forall a. Bits a => a -> a -> Bool
.&&. PhysicalDeviceVulkan11Properties -> SubgroupFeatureFlagBits
subgroupSupportedOperations (PhysicalDeviceVulkan11Properties
p :: PhysicalDeviceVulkan11Properties)
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    ]
  "GroupNonUniformBallot" -> (,)
    [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0]
    [ $WRequireDeviceProperty :: forall struct.
KnownPropertyStruct struct =>
ByteString -> (struct -> Bool) -> DeviceRequirement
RequireDeviceProperty
      { $sel:propertyName:RequireDeviceVersion :: ByteString
propertyName  = "VkPhysicalDeviceVulkan11Properties"
      , $sel:checkProperty:RequireDeviceVersion :: PhysicalDeviceVulkan11Properties -> Bool
checkProperty = \p :: PhysicalDeviceVulkan11Properties
p ->
        SubgroupFeatureFlagBits
SUBGROUP_FEATURE_BALLOT_BIT SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
forall a. Bits a => a -> a -> Bool
.&&. PhysicalDeviceVulkan11Properties -> SubgroupFeatureFlagBits
subgroupSupportedOperations (PhysicalDeviceVulkan11Properties
p :: PhysicalDeviceVulkan11Properties)
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    ]
  "GroupNonUniformShuffle" -> (,)
    [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0]
    [ $WRequireDeviceProperty :: forall struct.
KnownPropertyStruct struct =>
ByteString -> (struct -> Bool) -> DeviceRequirement
RequireDeviceProperty
      { $sel:propertyName:RequireDeviceVersion :: ByteString
propertyName  = "VkPhysicalDeviceVulkan11Properties"
      , $sel:checkProperty:RequireDeviceVersion :: PhysicalDeviceVulkan11Properties -> Bool
checkProperty = \p :: PhysicalDeviceVulkan11Properties
p ->
        SubgroupFeatureFlagBits
SUBGROUP_FEATURE_SHUFFLE_BIT SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
forall a. Bits a => a -> a -> Bool
.&&. PhysicalDeviceVulkan11Properties -> SubgroupFeatureFlagBits
subgroupSupportedOperations (PhysicalDeviceVulkan11Properties
p :: PhysicalDeviceVulkan11Properties)
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    ]
  "GroupNonUniformShuffleRelative" -> (,)
    [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0]
    [ $WRequireDeviceProperty :: forall struct.
KnownPropertyStruct struct =>
ByteString -> (struct -> Bool) -> DeviceRequirement
RequireDeviceProperty
      { $sel:propertyName:RequireDeviceVersion :: ByteString
propertyName  = "VkPhysicalDeviceVulkan11Properties"
      , $sel:checkProperty:RequireDeviceVersion :: PhysicalDeviceVulkan11Properties -> Bool
checkProperty = \p :: PhysicalDeviceVulkan11Properties
p ->
        SubgroupFeatureFlagBits
SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
forall a. Bits a => a -> a -> Bool
.&&. PhysicalDeviceVulkan11Properties -> SubgroupFeatureFlagBits
subgroupSupportedOperations (PhysicalDeviceVulkan11Properties
p :: PhysicalDeviceVulkan11Properties)
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    ]
  "GroupNonUniformClustered" -> (,)
    [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0]
    [ $WRequireDeviceProperty :: forall struct.
KnownPropertyStruct struct =>
ByteString -> (struct -> Bool) -> DeviceRequirement
RequireDeviceProperty
      { $sel:propertyName:RequireDeviceVersion :: ByteString
propertyName  = "VkPhysicalDeviceVulkan11Properties"
      , $sel:checkProperty:RequireDeviceVersion :: PhysicalDeviceVulkan11Properties -> Bool
checkProperty = \p :: PhysicalDeviceVulkan11Properties
p ->
        SubgroupFeatureFlagBits
SUBGROUP_FEATURE_CLUSTERED_BIT SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
forall a. Bits a => a -> a -> Bool
.&&. PhysicalDeviceVulkan11Properties -> SubgroupFeatureFlagBits
subgroupSupportedOperations (PhysicalDeviceVulkan11Properties
p :: PhysicalDeviceVulkan11Properties)
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    ]
  "GroupNonUniformQuad" -> (,)
    [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0]
    [ $WRequireDeviceProperty :: forall struct.
KnownPropertyStruct struct =>
ByteString -> (struct -> Bool) -> DeviceRequirement
RequireDeviceProperty
      { $sel:propertyName:RequireDeviceVersion :: ByteString
propertyName  = "VkPhysicalDeviceVulkan11Properties"
      , $sel:checkProperty:RequireDeviceVersion :: PhysicalDeviceVulkan11Properties -> Bool
checkProperty = \p :: PhysicalDeviceVulkan11Properties
p ->
        SubgroupFeatureFlagBits
SUBGROUP_FEATURE_QUAD_BIT SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
forall a. Bits a => a -> a -> Bool
.&&. PhysicalDeviceVulkan11Properties -> SubgroupFeatureFlagBits
subgroupSupportedOperations (PhysicalDeviceVulkan11Properties
p :: PhysicalDeviceVulkan11Properties)
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 1 0
    ]
  "GroupNonUniformPartitionedNV" -> (,)
    []
    [ $WRequireDeviceProperty :: forall struct.
KnownPropertyStruct struct =>
ByteString -> (struct -> Bool) -> DeviceRequirement
RequireDeviceProperty
      { $sel:propertyName:RequireDeviceVersion :: ByteString
propertyName  = "VkPhysicalDeviceVulkan11Properties"
      , $sel:checkProperty:RequireDeviceVersion :: PhysicalDeviceVulkan11Properties -> Bool
checkProperty = \p :: PhysicalDeviceVulkan11Properties
p ->
        SubgroupFeatureFlagBits
SUBGROUP_FEATURE_PARTITIONED_BIT_NV SubgroupFeatureFlagBits -> SubgroupFeatureFlagBits -> Bool
forall a. Bits a => a -> a -> Bool
.&&. PhysicalDeviceVulkan11Properties -> SubgroupFeatureFlagBits
subgroupSupportedOperations (PhysicalDeviceVulkan11Properties
p :: PhysicalDeviceVulkan11Properties)
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION
                             }
    ]
  "SampleMaskPostDepthCoverage" -> (,)
    []
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_POST_DEPTH_COVERAGE_SPEC_VERSION
                             }
    ]
  "ShaderNonUniform" -> (,) [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0] [Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0]
  "RuntimeDescriptorArray" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "runtimeDescriptorArray"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
runtimeDescriptorArray :: PhysicalDeviceVulkan12Features -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:runtimeDescriptorArray:PhysicalDeviceVulkan12Features :: Bool
runtimeDescriptorArray = Bool
True } :: PhysicalDeviceVulkan12Features
                           }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "InputAttachmentArrayDynamicIndexing" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderInputAttachmentArrayDynamicIndexing"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
shaderInputAttachmentArrayDynamicIndexing :: PhysicalDeviceVulkan12Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:shaderInputAttachmentArrayDynamicIndexing:PhysicalDeviceVulkan12Features :: Bool
shaderInputAttachmentArrayDynamicIndexing = Bool
True } :: PhysicalDeviceVulkan12Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "UniformTexelBufferArrayDynamicIndexing" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderUniformTexelBufferArrayDynamicIndexing"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
shaderUniformTexelBufferArrayDynamicIndexing :: PhysicalDeviceVulkan12Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f ->
                          PhysicalDeviceVulkan12Features
f { $sel:shaderUniformTexelBufferArrayDynamicIndexing:PhysicalDeviceVulkan12Features :: Bool
shaderUniformTexelBufferArrayDynamicIndexing = Bool
True } :: PhysicalDeviceVulkan12Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "StorageTexelBufferArrayDynamicIndexing" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderStorageTexelBufferArrayDynamicIndexing"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
shaderStorageTexelBufferArrayDynamicIndexing :: PhysicalDeviceVulkan12Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f ->
                          PhysicalDeviceVulkan12Features
f { $sel:shaderStorageTexelBufferArrayDynamicIndexing:PhysicalDeviceVulkan12Features :: Bool
shaderStorageTexelBufferArrayDynamicIndexing = Bool
True } :: PhysicalDeviceVulkan12Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "UniformBufferArrayNonUniformIndexing" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderUniformBufferArrayNonUniformIndexing"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
shaderUniformBufferArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:shaderUniformBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12Features :: Bool
shaderUniformBufferArrayNonUniformIndexing = Bool
True } :: PhysicalDeviceVulkan12Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "SampledImageArrayNonUniformIndexing" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderSampledImageArrayNonUniformIndexing"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
shaderSampledImageArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:shaderSampledImageArrayNonUniformIndexing:PhysicalDeviceVulkan12Features :: Bool
shaderSampledImageArrayNonUniformIndexing = Bool
True } :: PhysicalDeviceVulkan12Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "StorageBufferArrayNonUniformIndexing" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderStorageBufferArrayNonUniformIndexing"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
shaderStorageBufferArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:shaderStorageBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12Features :: Bool
shaderStorageBufferArrayNonUniformIndexing = Bool
True } :: PhysicalDeviceVulkan12Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "StorageImageArrayNonUniformIndexing" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderStorageImageArrayNonUniformIndexing"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
shaderStorageImageArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:shaderStorageImageArrayNonUniformIndexing:PhysicalDeviceVulkan12Features :: Bool
shaderStorageImageArrayNonUniformIndexing = Bool
True } :: PhysicalDeviceVulkan12Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "InputAttachmentArrayNonUniformIndexing" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderInputAttachmentArrayNonUniformIndexing"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
shaderInputAttachmentArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f ->
                          PhysicalDeviceVulkan12Features
f { $sel:shaderInputAttachmentArrayNonUniformIndexing:PhysicalDeviceVulkan12Features :: Bool
shaderInputAttachmentArrayNonUniformIndexing = Bool
True } :: PhysicalDeviceVulkan12Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "UniformTexelBufferArrayNonUniformIndexing" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderUniformTexelBufferArrayNonUniformIndexing"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
shaderUniformTexelBufferArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f ->
                          PhysicalDeviceVulkan12Features
f { $sel:shaderUniformTexelBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12Features :: Bool
shaderUniformTexelBufferArrayNonUniformIndexing = Bool
True } :: PhysicalDeviceVulkan12Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "StorageTexelBufferArrayNonUniformIndexing" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderStorageTexelBufferArrayNonUniformIndexing"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
shaderStorageTexelBufferArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f ->
                          PhysicalDeviceVulkan12Features
f { $sel:shaderStorageTexelBufferArrayNonUniformIndexing:PhysicalDeviceVulkan12Features :: Bool
shaderStorageTexelBufferArrayNonUniformIndexing = Bool
True } :: PhysicalDeviceVulkan12Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "Float16" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderFloat16"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
shaderFloat16 :: PhysicalDeviceVulkan12Features -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:shaderFloat16:PhysicalDeviceVulkan12Features :: Bool
shaderFloat16 = Bool
True } :: PhysicalDeviceVulkan12Features
                           }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_FLOAT16_INT8_SPEC_VERSION
                             }
    ]
  "Int8" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderInt8"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
shaderInt8 :: PhysicalDeviceVulkan12Features -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:shaderInt8:PhysicalDeviceVulkan12Features :: Bool
shaderInt8 = Bool
True } :: PhysicalDeviceVulkan12Features
                           }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_FLOAT16_INT8_SPEC_VERSION
                             }
    ]
  "StorageBuffer8BitAccess" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "storageBuffer8BitAccess"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
storageBuffer8BitAccess :: PhysicalDeviceVulkan12Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:storageBuffer8BitAccess:PhysicalDeviceVulkan12Features :: Bool
storageBuffer8BitAccess = Bool
True } :: PhysicalDeviceVulkan12Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_8BIT_STORAGE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_8BIT_STORAGE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION
                             }
    ]
  "UniformAndStorageBuffer8BitAccess" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "uniformAndStorageBuffer8BitAccess"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
uniformAndStorageBuffer8BitAccess :: PhysicalDeviceVulkan12Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:uniformAndStorageBuffer8BitAccess:PhysicalDeviceVulkan12Features :: Bool
uniformAndStorageBuffer8BitAccess = Bool
True } :: PhysicalDeviceVulkan12Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_8BIT_STORAGE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_8BIT_STORAGE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION
                             }
    ]
  "StoragePushConstant8" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "storagePushConstant8"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
storagePushConstant8 :: PhysicalDeviceVulkan12Features -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:storagePushConstant8:PhysicalDeviceVulkan12Features :: Bool
storagePushConstant8 = Bool
True } :: PhysicalDeviceVulkan12Features
                           }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_8BIT_STORAGE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_8BIT_STORAGE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION
                             }
    ]
  "VulkanMemoryModel" -> (,)
    [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "vulkanMemoryModel"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
vulkanMemoryModel :: PhysicalDeviceVulkan12Features -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:vulkanMemoryModel:PhysicalDeviceVulkan12Features :: Bool
vulkanMemoryModel = Bool
True } :: PhysicalDeviceVulkan12Features
                           }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION
                             }
    ]
  "VulkanMemoryModelDeviceScope" -> (,)
    [Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "vulkanMemoryModelDeviceScope"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
vulkanMemoryModelDeviceScope :: PhysicalDeviceVulkan12Features -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:vulkanMemoryModelDeviceScope:PhysicalDeviceVulkan12Features :: Bool
vulkanMemoryModelDeviceScope = Bool
True } :: PhysicalDeviceVulkan12Features
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION
                             }
    ]
  "DenormPreserve" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceProperty :: forall struct.
KnownPropertyStruct struct =>
ByteString -> (struct -> Bool) -> DeviceRequirement
RequireDeviceProperty { $sel:propertyName:RequireDeviceVersion :: ByteString
propertyName  = "VkPhysicalDeviceVulkan12Properties"
                            , $sel:checkProperty:RequireDeviceVersion :: PhysicalDeviceVulkan12Properties -> Bool
checkProperty = \p :: PhysicalDeviceVulkan12Properties
p -> PhysicalDeviceVulkan12Properties -> Bool
shaderDenormPreserveFloat16 (PhysicalDeviceVulkan12Properties
p :: PhysicalDeviceVulkan12Properties)
                            }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION
                             }
    ]
  "DenormFlushToZero" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceProperty :: forall struct.
KnownPropertyStruct struct =>
ByteString -> (struct -> Bool) -> DeviceRequirement
RequireDeviceProperty
      { $sel:propertyName:RequireDeviceVersion :: ByteString
propertyName  = "VkPhysicalDeviceVulkan12Properties"
      , $sel:checkProperty:RequireDeviceVersion :: PhysicalDeviceVulkan12Properties -> Bool
checkProperty = \p :: PhysicalDeviceVulkan12Properties
p -> PhysicalDeviceVulkan12Properties -> Bool
shaderDenormFlushToZeroFloat16 (PhysicalDeviceVulkan12Properties
p :: PhysicalDeviceVulkan12Properties)
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION
                             }
    ]
  "SignedZeroInfNanPreserve" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceProperty :: forall struct.
KnownPropertyStruct struct =>
ByteString -> (struct -> Bool) -> DeviceRequirement
RequireDeviceProperty
      { $sel:propertyName:RequireDeviceVersion :: ByteString
propertyName  = "VkPhysicalDeviceVulkan12Properties"
      , $sel:checkProperty:RequireDeviceVersion :: PhysicalDeviceVulkan12Properties -> Bool
checkProperty = \p :: PhysicalDeviceVulkan12Properties
p -> PhysicalDeviceVulkan12Properties -> Bool
shaderSignedZeroInfNanPreserveFloat16 (PhysicalDeviceVulkan12Properties
p :: PhysicalDeviceVulkan12Properties)
      }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION
                             }
    ]
  "RoundingModeRTE" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceProperty :: forall struct.
KnownPropertyStruct struct =>
ByteString -> (struct -> Bool) -> DeviceRequirement
RequireDeviceProperty { $sel:propertyName:RequireDeviceVersion :: ByteString
propertyName  = "VkPhysicalDeviceVulkan12Properties"
                            , $sel:checkProperty:RequireDeviceVersion :: PhysicalDeviceVulkan12Properties -> Bool
checkProperty = \p :: PhysicalDeviceVulkan12Properties
p -> PhysicalDeviceVulkan12Properties -> Bool
shaderRoundingModeRTEFloat16 (PhysicalDeviceVulkan12Properties
p :: PhysicalDeviceVulkan12Properties)
                            }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION
                             }
    ]
  "RoundingModeRTZ" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceProperty :: forall struct.
KnownPropertyStruct struct =>
ByteString -> (struct -> Bool) -> DeviceRequirement
RequireDeviceProperty { $sel:propertyName:RequireDeviceVersion :: ByteString
propertyName  = "VkPhysicalDeviceVulkan12Properties"
                            , $sel:checkProperty:RequireDeviceVersion :: PhysicalDeviceVulkan12Properties -> Bool
checkProperty = \p :: PhysicalDeviceVulkan12Properties
p -> PhysicalDeviceVulkan12Properties -> Bool
shaderRoundingModeRTZFloat16 (PhysicalDeviceVulkan12Properties
p :: PhysicalDeviceVulkan12Properties)
                            }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION
                             }
    ]
  "ComputeDerivativeGroupQuadsNV" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "computeDerivativeGroupQuads"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceComputeShaderDerivativesFeaturesNV -> Bool
checkFeature  = PhysicalDeviceComputeShaderDerivativesFeaturesNV -> Bool
computeDerivativeGroupQuads :: PhysicalDeviceComputeShaderDerivativesFeaturesNV -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceComputeShaderDerivativesFeaturesNV
-> PhysicalDeviceComputeShaderDerivativesFeaturesNV
enableFeature = \f :: PhysicalDeviceComputeShaderDerivativesFeaturesNV
f ->
                          PhysicalDeviceComputeShaderDerivativesFeaturesNV
f { $sel:computeDerivativeGroupQuads:PhysicalDeviceComputeShaderDerivativesFeaturesNV :: Bool
computeDerivativeGroupQuads = Bool
True } :: PhysicalDeviceComputeShaderDerivativesFeaturesNV
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION
                             }
    ]
  "ComputeDerivativeGroupLinearNV" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "computeDerivativeGroupLinear"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceComputeShaderDerivativesFeaturesNV -> Bool
checkFeature  = PhysicalDeviceComputeShaderDerivativesFeaturesNV -> Bool
computeDerivativeGroupLinear :: PhysicalDeviceComputeShaderDerivativesFeaturesNV -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceComputeShaderDerivativesFeaturesNV
-> PhysicalDeviceComputeShaderDerivativesFeaturesNV
enableFeature = \f :: PhysicalDeviceComputeShaderDerivativesFeaturesNV
f ->
                          PhysicalDeviceComputeShaderDerivativesFeaturesNV
f { $sel:computeDerivativeGroupLinear:PhysicalDeviceComputeShaderDerivativesFeaturesNV :: Bool
computeDerivativeGroupLinear = Bool
True } :: PhysicalDeviceComputeShaderDerivativesFeaturesNV
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION
                             }
    ]
  "FragmentBarycentricNV" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "fragmentShaderBarycentric"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFragmentShaderBarycentricFeaturesNV -> Bool
checkFeature  = PhysicalDeviceFragmentShaderBarycentricFeaturesNV -> Bool
fragmentShaderBarycentric :: PhysicalDeviceFragmentShaderBarycentricFeaturesNV -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFragmentShaderBarycentricFeaturesNV
-> PhysicalDeviceFragmentShaderBarycentricFeaturesNV
enableFeature = \f :: PhysicalDeviceFragmentShaderBarycentricFeaturesNV
f ->
                          PhysicalDeviceFragmentShaderBarycentricFeaturesNV
f { $sel:fragmentShaderBarycentric:PhysicalDeviceFragmentShaderBarycentricFeaturesNV :: Bool
fragmentShaderBarycentric = Bool
True } :: PhysicalDeviceFragmentShaderBarycentricFeaturesNV
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION
                             }
    ]
  "ImageFootprintNV" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "imageFootprint"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceShaderImageFootprintFeaturesNV -> Bool
checkFeature  = PhysicalDeviceShaderImageFootprintFeaturesNV -> Bool
imageFootprint :: PhysicalDeviceShaderImageFootprintFeaturesNV -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceShaderImageFootprintFeaturesNV
-> PhysicalDeviceShaderImageFootprintFeaturesNV
enableFeature = \f :: PhysicalDeviceShaderImageFootprintFeaturesNV
f -> PhysicalDeviceShaderImageFootprintFeaturesNV
f { $sel:imageFootprint:PhysicalDeviceShaderImageFootprintFeaturesNV :: Bool
imageFootprint = Bool
True } :: PhysicalDeviceShaderImageFootprintFeaturesNV
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION
                             }
    ]
  "ShadingRateNV" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shadingRateImage"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceShadingRateImageFeaturesNV -> Bool
checkFeature  = PhysicalDeviceShadingRateImageFeaturesNV -> Bool
shadingRateImage :: PhysicalDeviceShadingRateImageFeaturesNV -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceShadingRateImageFeaturesNV
-> PhysicalDeviceShadingRateImageFeaturesNV
enableFeature = \f :: PhysicalDeviceShadingRateImageFeaturesNV
f -> PhysicalDeviceShadingRateImageFeaturesNV
f { $sel:shadingRateImage:PhysicalDeviceShadingRateImageFeaturesNV :: Bool
shadingRateImage = Bool
True } :: PhysicalDeviceShadingRateImageFeaturesNV
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_SHADING_RATE_IMAGE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_SHADING_RATE_IMAGE_SPEC_VERSION
                             }
    ]
  "MeshShadingNV" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_MESH_SHADER_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_MESH_SHADER_SPEC_VERSION
                             }
    ]
  "RayTracingKHR" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "rayTracingPipeline"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceRayTracingPipelineFeaturesKHR -> Bool
checkFeature  = PhysicalDeviceRayTracingPipelineFeaturesKHR -> Bool
rayTracingPipeline :: PhysicalDeviceRayTracingPipelineFeaturesKHR -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceRayTracingPipelineFeaturesKHR
-> PhysicalDeviceRayTracingPipelineFeaturesKHR
enableFeature = \f :: PhysicalDeviceRayTracingPipelineFeaturesKHR
f -> PhysicalDeviceRayTracingPipelineFeaturesKHR
f { $sel:rayTracingPipeline:PhysicalDeviceRayTracingPipelineFeaturesKHR :: Bool
rayTracingPipeline = Bool
True } :: PhysicalDeviceRayTracingPipelineFeaturesKHR
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_RAY_TRACING_PIPELINE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SPIRV_1_4_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SPIRV_1_4_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_ACCELERATION_STRUCTURE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "RayQueryKHR" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "rayQuery"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceRayQueryFeaturesKHR -> Bool
checkFeature  = PhysicalDeviceRayQueryFeaturesKHR -> Bool
rayQuery :: PhysicalDeviceRayQueryFeaturesKHR -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceRayQueryFeaturesKHR
-> PhysicalDeviceRayQueryFeaturesKHR
enableFeature = \f :: PhysicalDeviceRayQueryFeaturesKHR
f -> PhysicalDeviceRayQueryFeaturesKHR
f { $sel:rayQuery:PhysicalDeviceRayQueryFeaturesKHR :: Bool
rayQuery = Bool
True } :: PhysicalDeviceRayQueryFeaturesKHR
                           }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_RAY_QUERY_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_RAY_QUERY_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SPIRV_1_4_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SPIRV_1_4_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_ACCELERATION_STRUCTURE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "RayTraversalPrimitiveCullingKHR" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "rayTraversalPrimitiveCulling"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceRayTracingPipelineFeaturesKHR -> Bool
checkFeature  = PhysicalDeviceRayTracingPipelineFeaturesKHR -> Bool
rayTraversalPrimitiveCulling :: PhysicalDeviceRayTracingPipelineFeaturesKHR -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceRayTracingPipelineFeaturesKHR
-> PhysicalDeviceRayTracingPipelineFeaturesKHR
enableFeature = \f :: PhysicalDeviceRayTracingPipelineFeaturesKHR
f -> PhysicalDeviceRayTracingPipelineFeaturesKHR
f { $sel:rayTraversalPrimitiveCulling:PhysicalDeviceRayTracingPipelineFeaturesKHR :: Bool
rayTraversalPrimitiveCulling = Bool
True } :: PhysicalDeviceRayTracingPipelineFeaturesKHR
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_RAY_TRACING_PIPELINE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SPIRV_1_4_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SPIRV_1_4_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_ACCELERATION_STRUCTURE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE3_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE3_SPEC_VERSION
                             }
    ]
  "RayTracingNV" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_RAY_TRACING_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_RAY_TRACING_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION
                             }
    ]
  "TransformFeedback" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "transformFeedback"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool
checkFeature  = PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool
transformFeedback :: PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceTransformFeedbackFeaturesEXT
-> PhysicalDeviceTransformFeedbackFeaturesEXT
enableFeature = \f :: PhysicalDeviceTransformFeedbackFeaturesEXT
f -> PhysicalDeviceTransformFeedbackFeaturesEXT
f { $sel:transformFeedback:PhysicalDeviceTransformFeedbackFeaturesEXT :: Bool
transformFeedback = Bool
True } :: PhysicalDeviceTransformFeedbackFeaturesEXT
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_TRANSFORM_FEEDBACK_SPEC_VERSION
                             }
    ]
  "GeometryStreams" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "geometryStreams"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool
checkFeature  = PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool
geometryStreams :: PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceTransformFeedbackFeaturesEXT
-> PhysicalDeviceTransformFeedbackFeaturesEXT
enableFeature = \f :: PhysicalDeviceTransformFeedbackFeaturesEXT
f -> PhysicalDeviceTransformFeedbackFeaturesEXT
f { $sel:geometryStreams:PhysicalDeviceTransformFeedbackFeaturesEXT :: Bool
geometryStreams = Bool
True } :: PhysicalDeviceTransformFeedbackFeaturesEXT
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_TRANSFORM_FEEDBACK_SPEC_VERSION
                             }
    ]
  "FragmentDensityEXT" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "fragmentDensityMap"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFragmentDensityMapFeaturesEXT -> Bool
checkFeature  = PhysicalDeviceFragmentDensityMapFeaturesEXT -> Bool
fragmentDensityMap :: PhysicalDeviceFragmentDensityMapFeaturesEXT -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFragmentDensityMapFeaturesEXT
-> PhysicalDeviceFragmentDensityMapFeaturesEXT
enableFeature = \f :: PhysicalDeviceFragmentDensityMapFeaturesEXT
f -> PhysicalDeviceFragmentDensityMapFeaturesEXT
f { $sel:fragmentDensityMap:PhysicalDeviceFragmentDensityMapFeaturesEXT :: Bool
fragmentDensityMap = Bool
True } :: PhysicalDeviceFragmentDensityMapFeaturesEXT
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION
                             }
    ]
  "PhysicalStorageBufferAddresses" -> (,)
    [ Word32 -> Item [InstanceRequirement]
Word32 -> InstanceRequirement
RequireInstanceVersion (Word32 -> Item [InstanceRequirement])
-> Word32 -> Item [InstanceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "bufferDeviceAddress"
                           , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> Bool
checkFeature  = PhysicalDeviceVulkan12Features -> Bool
bufferDeviceAddress :: PhysicalDeviceVulkan12Features -> Bool
                           , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceVulkan12Features -> PhysicalDeviceVulkan12Features
enableFeature = \f :: PhysicalDeviceVulkan12Features
f -> PhysicalDeviceVulkan12Features
f { $sel:bufferDeviceAddress:PhysicalDeviceVulkan12Features :: Bool
bufferDeviceAddress = Bool
True } :: PhysicalDeviceVulkan12Features
                           }
    , Word32 -> Item [DeviceRequirement]
Word32 -> DeviceRequirement
RequireDeviceVersion (Word32 -> Item [DeviceRequirement])
-> Word32 -> Item [DeviceRequirement]
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> Word32 -> Word32
MAKE_VERSION 1 2 0
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION
                             }
    ]
  "CooperativeMatrixNV" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "cooperativeMatrix"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceCooperativeMatrixFeaturesNV -> Bool
checkFeature  = PhysicalDeviceCooperativeMatrixFeaturesNV -> Bool
cooperativeMatrix :: PhysicalDeviceCooperativeMatrixFeaturesNV -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceCooperativeMatrixFeaturesNV
-> PhysicalDeviceCooperativeMatrixFeaturesNV
enableFeature = \f :: PhysicalDeviceCooperativeMatrixFeaturesNV
f -> PhysicalDeviceCooperativeMatrixFeaturesNV
f { $sel:cooperativeMatrix:PhysicalDeviceCooperativeMatrixFeaturesNV :: Bool
cooperativeMatrix = Bool
True } :: PhysicalDeviceCooperativeMatrixFeaturesNV
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_COOPERATIVE_MATRIX_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_COOPERATIVE_MATRIX_SPEC_VERSION
                             }
    ]
  "IntegerFunctions2INTEL" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderIntegerFunctions2"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL -> Bool
checkFeature  = PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL -> Bool
shaderIntegerFunctions2 :: PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL
-> PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL
enableFeature = \f :: PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL
f -> PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL
f { $sel:shaderIntegerFunctions2:PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL :: Bool
shaderIntegerFunctions2 = Bool
True } :: PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION
                             }
    ]
  "ShaderSMBuiltinsNV" -> (,)
    []
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "shaderSMBuiltins"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceShaderSMBuiltinsFeaturesNV -> Bool
checkFeature  = PhysicalDeviceShaderSMBuiltinsFeaturesNV -> Bool
shaderSMBuiltins :: PhysicalDeviceShaderSMBuiltinsFeaturesNV -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceShaderSMBuiltinsFeaturesNV
-> PhysicalDeviceShaderSMBuiltinsFeaturesNV
enableFeature = \f :: PhysicalDeviceShaderSMBuiltinsFeaturesNV
f -> PhysicalDeviceShaderSMBuiltinsFeaturesNV
f { $sel:shaderSMBuiltins:PhysicalDeviceShaderSMBuiltinsFeaturesNV :: Bool
shaderSMBuiltins = Bool
True } :: PhysicalDeviceShaderSMBuiltinsFeaturesNV
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
NV_SHADER_SM_BUILTINS_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
NV_SHADER_SM_BUILTINS_SPEC_VERSION
                             }
    ]
  "FragmentShaderSampleInterlockEXT" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "fragmentShaderSampleInterlock"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT -> Bool
checkFeature  = PhysicalDeviceFragmentShaderInterlockFeaturesEXT -> Bool
fragmentShaderSampleInterlock :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT
-> PhysicalDeviceFragmentShaderInterlockFeaturesEXT
enableFeature = \f :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT
f ->
                          PhysicalDeviceFragmentShaderInterlockFeaturesEXT
f { $sel:fragmentShaderSampleInterlock:PhysicalDeviceFragmentShaderInterlockFeaturesEXT :: Bool
fragmentShaderSampleInterlock = Bool
True } :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION
                             }
    ]
  "FragmentShaderPixelInterlockEXT" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "fragmentShaderPixelInterlock"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT -> Bool
checkFeature  = PhysicalDeviceFragmentShaderInterlockFeaturesEXT -> Bool
fragmentShaderPixelInterlock :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT
-> PhysicalDeviceFragmentShaderInterlockFeaturesEXT
enableFeature = \f :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT
f ->
                          PhysicalDeviceFragmentShaderInterlockFeaturesEXT
f { $sel:fragmentShaderPixelInterlock:PhysicalDeviceFragmentShaderInterlockFeaturesEXT :: Bool
fragmentShaderPixelInterlock = Bool
True } :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION
                             }
    ]
  "FragmentShaderShadingRateInterlockEXT" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "fragmentShaderShadingRateInterlock"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT -> Bool
checkFeature  = PhysicalDeviceFragmentShaderInterlockFeaturesEXT -> Bool
fragmentShaderShadingRateInterlock :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT
-> PhysicalDeviceFragmentShaderInterlockFeaturesEXT
enableFeature = \f :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT
f ->
        PhysicalDeviceFragmentShaderInterlockFeaturesEXT
f { $sel:fragmentShaderShadingRateInterlock:PhysicalDeviceFragmentShaderInterlockFeaturesEXT :: Bool
fragmentShaderShadingRateInterlock = Bool
True } :: PhysicalDeviceFragmentShaderInterlockFeaturesEXT
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION
                             }
    ]
  "DemoteToHelperInvocationEXT" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName = "shaderDemoteToHelperInvocation"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT -> Bool
checkFeature = PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT -> Bool
shaderDemoteToHelperInvocation :: PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
-> PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
enableFeature = \f :: PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
f ->
        PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
f { $sel:shaderDemoteToHelperInvocation:PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT :: Bool
shaderDemoteToHelperInvocation = Bool
True } :: PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION
                             }
    ]
  "FragmentShadingRateKHR" -> (,)
    [ $WRequireInstanceExtension :: Maybe ByteString -> ByteString -> Word32 -> InstanceRequirement
RequireInstanceExtension { $sel:instanceExtensionLayerName:RequireInstanceVersion :: Maybe ByteString
instanceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                               , $sel:instanceExtensionName:RequireInstanceVersion :: ByteString
instanceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                               , $sel:instanceExtensionMinVersion:RequireInstanceVersion :: Word32
instanceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
                               }
    ]
    [ $WRequireDeviceFeature :: forall struct.
KnownFeatureStruct struct =>
ByteString
-> (struct -> Bool) -> (struct -> struct) -> DeviceRequirement
RequireDeviceFeature
      { $sel:featureName:RequireDeviceVersion :: ByteString
featureName   = "pipelineFragmentShadingRate"
      , $sel:checkFeature:RequireDeviceVersion :: PhysicalDeviceFragmentShadingRateFeaturesKHR -> Bool
checkFeature  = PhysicalDeviceFragmentShadingRateFeaturesKHR -> Bool
pipelineFragmentShadingRate :: PhysicalDeviceFragmentShadingRateFeaturesKHR -> Bool
      , $sel:enableFeature:RequireDeviceVersion :: PhysicalDeviceFragmentShadingRateFeaturesKHR
-> PhysicalDeviceFragmentShadingRateFeaturesKHR
enableFeature = \f :: PhysicalDeviceFragmentShadingRateFeaturesKHR
f -> PhysicalDeviceFragmentShadingRateFeaturesKHR
f { $sel:pipelineFragmentShadingRate:PhysicalDeviceFragmentShadingRateFeaturesKHR :: Bool
pipelineFragmentShadingRate = Bool
True } :: PhysicalDeviceFragmentShadingRateFeaturesKHR
      }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_CREATE_RENDERPASS_2_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_CREATE_RENDERPASS_2_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MULTIVIEW_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MULTIVIEW_SPEC_VERSION
                             }
    , $WRequireDeviceExtension :: Maybe ByteString -> ByteString -> Word32 -> DeviceRequirement
RequireDeviceExtension { $sel:deviceExtensionLayerName:RequireDeviceVersion :: Maybe ByteString
deviceExtensionLayerName  = Maybe ByteString
forall a. Maybe a
Nothing
                             , $sel:deviceExtensionName:RequireDeviceVersion :: ByteString
deviceExtensionName       = ByteString
forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE2_EXTENSION_NAME
                             , $sel:deviceExtensionMinVersion:RequireDeviceVersion :: Word32
deviceExtensionMinVersion = Word32
forall a. Integral a => a
KHR_MAINTENANCE2_SPEC_VERSION
                             }
    ]
  _ -> ([], [])