Parse a requirement and produce an appropriate DeviceRequirement
DeviceVersionRequirements are specified by in the form
major.minor[.patch]
DeviceFeatureRequirements are specified in the form name.<member
name> and produce a RequireDeviceFeature which checks and sets this
feature.
DevicePropertyRequirements are specified like feature requirements except
with an additional description of the constraint. This may be any of
myFunctionName: To check with an in-scope function taking the property type and returning Bool> 123: To indicate a minimum bound on a integral property>= 123: To indicate an inclusive minimum bound on a integral property& SOMETHING_BIT: To indicate that the specified bit must be present in the bitmask value
DeviceExtensionRequirements are specified in the form name
version. name must start with VK_. The version
will be compared against the specVersion field of the
ExtensionProperties record.
Names may be qualified.
The separator between the type and member can be any of
.:::->or any amount of space
let r = [req|PhysicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline|]featureName r"PhysicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline"
let r = [req|PhysicalDeviceVulkan11Features.multiview|]featureName r"PhysicalDeviceVulkan11Features.multiview"
let r = [reqs| PhysicalDeviceTimelineSemaphoreFeatures.timelineSemaphore |]featureName <$> r["PhysicalDeviceTimelineSemaphoreFeatures.timelineSemaphore"]
let r = [req|PhysicalDeviceMultiviewFeatures.doesn'tExist|]... • Couldn't find member "doesn'tExist" in Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewFeatures...
let r = [req|Doesn'tExist.multiview|]... • Couldn't find type name "Doesn'tExist"...
let r = [req|Either.multiview|]... • Data.Either.Either doesn't seem to be the type of a record constructor...