h&      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v wxyz{|}~None. #$%&'(-./025679:<>? vulkan-utilsCreate an expression which checks the function pointers for all the Vulkan commands depended upon by the specified list of function names.It returns a list of function names corresponding to those functions with null pointers.Your program can use this function to fail early if a command couldn't be loaded for some reason (missing extension or layer for example).!One can create a function called  checkCommands with the following:  [d| checkCommands = $(checkCommandsExp ['withInstance, 'cmdDraw, ...]) |] It has the type 'IsString a => Instance -> Device -> [a]It looks basically like inst dev -> [ name | True <- [ nullFunPtr == pVkCreateDevice inst , nullFunPtr == pVkCreateFence dev .. ] | name <- [ "vkCreateDevice" , "vkCreateFence" .. ] ]  vulkan-utils The names of functions from the vulkan' package. Unknown commands are ignoredNone* #$%&'(-./025679:<>? vulkan-utilsA debug callback the same as  except it will call abort when -VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT is set. vulkan-utilsA debug callback which prints the message prefixed with "Validation: " to stderr. vulkan-utils Assign a name to a handle using , note that the VK_EXT_debug_utils extension must be enabled.None+ #$%&'(-./025679:<>? } vulkan-utils%Convert an OpenGL format enum into a internalFormat 0x8051Just FORMAT_R8G8B8_UNORMNone* #$%&'(-./025679:<>? None* #$%&'(-./025679:<>?+ vulkan-utilsFrom a list of things, take all the required things and as many optional things as possible. vulkan-utilsLike .Will throw an 'IOError in the case of missing things. Details on missing things will be reported in stderr.5This is useful in dealing with layers and extensions.  vulkan-utils/Show valies as a union of their individual bitsshowBits @Int 5 "1 .|. 4"showBits @Int 0 "zeroBits"(import Vulkan.Core10.Enums.QueueFlagBits3showBits (QUEUE_COMPUTE_BIT .|. QUEUE_GRAPHICS_BIT)*"QUEUE_GRAPHICS_BIT .|. QUEUE_COMPUTE_BIT"  vulkan-utils-Check if the intersection of bits is non-zero vulkan-utilsWhat do we have available vulkan-utilsOptional desired elements vulkan-utilsRequired desired elements vulkan-utils(Missing optional elements, Either (missing required elements) or (all required elements and as many optional elements as possible) vulkan-utils.What are we sorting (Used for a debug message) vulkan-utilsWhat do we have available vulkan-utilsOptional desired elements vulkan-utilsRequired desired elements vulkan-utilsAll the required elements and as many optional elements as possible, as well as the missing optional elements.  None* #$%&'(-./025679:<>? vulkan-utilsRequirements for a  to be assigned a family by .+To assign to a specific queue family index f: )queueSpecFamilyPredicate = i _ -> i == f To assign to any queue family which supports compute operations: let isComputeQueue q = QUEUE_COMPUTE_BIT .&&. queueFlags q in QueueSpec priority (_index q -> pure (isComputeQueue q))  vulkan-utilsGiven a  and a set of requirements for queues, calculate an assignment of queues to queue families and return information with which to create a . and also a function to extract the requested s from the device.,You may want to create a custom type with a % instance to store your queues like: data MyQueues q = MyQueues { computeQueue :: q , graphicsAndPresentQueue :: q , transferQueue :: q } myQueueSpecs :: MyQueues QueueSpec myQueueSpecs = MyQueues { computeQueue = QueueSpec 0.5 isComputeQueueFamily , graphicsAndPresentQueue = QueueSpec 1 isPresentQueueFamily , transferQueue = QueueSpec 1 isTransferOnlyQueueFamily } Note, this doesn't permit differentiating queue family assignment based on whether or not the queue is protected. vulkan-utilsDoes this queue have  set and not  or  vulkan-utils?% vulkan-utils The minimum value to be accepted& vulkan-utilsThe value we got, less than unsatisfiedMinumum( vulkan-utilsAll the requirements were met) vulkan-utilsDidn't attempt this check because it required getPhysicalDeviceProperties2 which wasn't loaded* vulkan-utilsDidn't attempt this check because it required getPhysicalDeviceFeatures2 which wasn't loaded+ vulkan-utilsA Layer was not found, vulkan-utils2A device version didn't meet the minimum requested- vulkan-utils6The instance version didn't meet the minimum requested. vulkan-utils1A layer version didn't meet the minimum requested/ vulkan-utilsA feature was missing0 vulkan-utils&A propery was not an appropriate value1 vulkan-utilsA device extension was missing2 vulkan-utilsA device extension was found but the version didn't meet requirements3 vulkan-utils!An instance extension was missing4 vulkan-utilsAn instance extension was found but the version didn't meet requirements7 vulkan-utilsGenerate a string describing which requirements were not met, if everything was satisfied return .5 vulkan-utilsRequired requests vulkan-utilsOptional requests vulkan-utilsAn , this will be returned appropriately modified by the requirements6 vulkan-utilsRequired requests vulkan-utilsOptional requests vulkan-utilsA deviceCreateInfo with no extensions. If you need elements in the struct chain you can add them later with #$%&'(-.+43,)/*021567856'(-.+43,)/*021#$%&78None+ !#$%&'(-./025679:<>?$YB vulkan-utilsLike C: except it will create a debug utils messenger (from the VK_EXT_debug_utils extension).If the VK_EXT_validation_features extension (from the VK_LAYER_KHRONOS_validation layer) is available is it will be enabled and best practices messages enabled.C vulkan-utils+Create an 'Instance from some requirements.Will throw an 'IOError in the case of unsatisfied non-optional requirements. Unsatisfied requirements will be listed on stderr.D vulkan-utils Create a  from some requirements.Will throw an 'IOError in the case of unsatisfied non-optional requirements. Unsatisfied requirements will be listed on stderr.E vulkan-utils Get a single ! deciding with a scoring functionPass a function which will extract any required values from a device in the spirit of parse-don't-validate. Also provide a function to compare these results for sorting multiple suitable devices.As an example, the suitability function could return a tuple of device memory and the compute queue family index, and the scoring function could be  to select devices based on their memory capacity. Consider using : to find your desired queues in the suitability function.%Pehaps also use the functionality in  and return the  too.)If no devices are deemed suitable then a  NoSuchThing  is thrown.F vulkan-utilsExtract the name of a  with B vulkan-utilsRequired vulkan-utilsOptionalC vulkan-utilsRequired vulkan-utilsOptionalD vulkan-utilsRequired vulkan-utilsOptionalE vulkan-utilsA suitability funcion for a ,  if it is not to be chosen. vulkan-utils$Scoring function to rate this result vulkan-utilsThe score and the deviceBCDEFCBDEFNone- #$%&'(-./025679:<>?+G vulkan-utils/Parse a requirement and produce an appropriate DeviceVersionRequirement s are specified by in the form  major. minor[. patch]DeviceFeatureRequirements are specified in the form  typename. and produce a % 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 myFunctioName: To check with an in-scope function taking the property type and returning > 1234: 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 valueDeviceExtensionRequirements are specified in the form  extensionname optionalversion.  extensionname must start with VK_,. The version will be compared against the  specVersion field of the ExtensionProperties record.Names may be qualified.8The separator between the type and member can be any of . :: : -> or any amount of spacelet r = [req|PhysicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline|] featureName r"PhysicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline"7let r = [req|PhysicalDeviceVulkan11Features.multiview|] featureName r*"PhysicalDeviceVulkan11Features.multiview"8let r = [req|PhysicalDeviceMultiviewFeatures.multiview|] featureName r+"PhysicalDeviceMultiviewFeatures.multiview"H vulkan-utilsLike H except that this parses a list of newline separated requirements It ignores Blank linesLines beginning with -- or #GHGH None* #$%&'(-./025679:<>?,ANOPONPNone* #$%&'(-./025679:<>?-M vulkan-utils tool name vulkan-utilswarning vulkan-utilserror vulkan-utils'Spir-V bytecode with warnings or errors vulkan-utilsSpir-V bytecode None* #$%&'(-./025679:<>?-QRSRQS None- #$%&'(-./025679:<>?0T vulkan-utilsT< performs very simple interpolation of Haskell values into s.)Interpolated variables are prefixed with $3They can optionally be surrounded with braces like ${foo}5Interpolated variables are converted to strings with  To escape a $ use \$+let foo = 123 in $(interpExp "hello, $foo") "hello, 123"1let foo = "world" in $(interpExp "hello, \\$foo") "hello, $foo"4let foo = "world" in $(interpExp "hello\r\n\rworld")"hello\r\n\rworld"TTNone* #$%&'(-./025679:<>?3: vulkan-utils9 is a QuasiQuoter which produces HLSL source code with a #line directive inserted so that error locations point to the correct location in the Haskell source file. It also permits basic string interpolation.)Interpolated variables are prefixed with $3They can optionally be surrounded with braces like ${foo}5Interpolated variables are converted to strings with  To escape a $ use \$An explicit example ( interactive is from doctest):6let foo = 450 :: Int in [hlsl|const float foo = $foo|]3"#line 77 \"\"\nconst float foo = 450"Note that line number will be thrown off if any of the interpolated variables contain newlines.None* #$%&'(-./025679:<>?6 vulkan-utils7 is a QuasiQuoter which produces GLSL source code with #line directives inserted so that error locations point to the correct location in the Haskell source file. It also permits basic string interpolation.)Interpolated variables are prefixed with $3They can optionally be surrounded with braces like ${foo}5Interpolated variables are converted to strings with  To escape a $ use \$An explicit example ( interactive is from doctest):5let version = 450 :: Int in [glsl|#version $version|]"#version 450\n#extension GL_GOOGLE_cpp_style_line_directive : enable\n#line 72 \"\"\n"Note that line number will be thrown off if any of the interpolated variables contain newlines.None* #$%&'(-./025679:<>?6None* #$%&'(-./025679:<>?: vulkan-utilsCompile a GLSL/HLSL shader to SPIR-V using glslc (from the shaderc project)Messages are converted to GHC warnings or errors depending on compilation success. vulkan-utils0Compile a GLSL/HLSL shader to spir-v using glslc vulkan-utils"Argument to pass to `--target-spv` vulkan-utils,Argument to specify between glsl/hlsl shader vulkan-utilsstage vulkan-utils6Argument to specify entry-point function name for hlsl vulkan-utilsglsl or hlsl shader code vulkan-utilsSpir-V bytecode vulkan-utilsSource location vulkan-utils"Argument to pass to `--target-spv` vulkan-utils,Argument to specify between glsl/hlsl shader vulkan-utilsstage vulkan-utils6Argument to specify entry-point function name for hlsl vulkan-utilsglsl or hlsl shader code vulkan-utils'Spir-V bytecode with warnings or errors None* #$%&'(-./025679:<>?LHU vulkan-utilsU9 is a QuasiQuoter which produces HLSL source code with a #line directive inserted so that error locations point to the correct location in the Haskell source file. It also permits basic string interpolation.)Interpolated variables are prefixed with $3They can optionally be surrounded with braces like ${foo}5Interpolated variables are converted to strings with  To escape a $ use \$*It is intended to be used in concert with d like so myConstant = 3.141 -- Note that this will have to be in a different module myFragmentShader = $(compileShaderQ Nothing "frag" Nothing [hlsl| static const float myConstant = ${myConstant}; float main (){ return myConstant; } |]) An explicit example ( interactive is from doctest):6let foo = 450 :: Int in [hlsl|const float foo = $foo|]3"#line 57 \"\"\nconst float foo = 450"Note that line number will be thrown off if any of the interpolated variables contain newlines.V vulkan-utils*QuasiQuoter for creating a compute shader.Equivalent to calling 4$(compileShaderQ Nothing "comp" Nothing [hlsl|...|]) without interpolation support.W vulkan-utils+QuasiQuoter for creating a fragment shader.Equivalent to calling 4$(compileShaderQ Nothing "frag" Nothing [hlsl|...|]) without interpolation support.X vulkan-utils+QuasiQuoter for creating a geometry shader.Equivalent to calling 4$(compileShaderQ Nothing "geom" Nothing [hlsl|...|]) without interpolation support.Y vulkan-utils7QuasiQuoter for creating a tessellation control shader.Equivalent to calling 4$(compileShaderQ Nothing "tesc" Nothing [hlsl|...|]) without interpolation support.Z vulkan-utils:QuasiQuoter for creating a tessellation evaluation shader.Equivalent to calling 4$(compileShaderQ Nothing "tese" Nothing [hlsl|...|]) without interpolation support.[ vulkan-utils)QuasiQuoter for creating a vertex shader.Equivalent to calling 4$(compileShaderQ Nothing "vert" Nothing [hlsl|...|]) without interpolation support.\ vulkan-utils1QuasiQuoter for creating a ray generation shader.Equivalent to calling <$(compileShaderQ (Just "spv1.4") "rgen" Nothing [hlsl|...|]) without interpolation support.] vulkan-utils0QuasiQuoter for creating an intersection shader.Equivalent to calling <$(compileShaderQ (Just "spv1.4") "rint" Nothing [hlsl|...|]) without interpolation support.^ vulkan-utils+QuasiQuoter for creating an any-hit shader.Equivalent to calling =$(compileShaderQ (Just "spv1.4") "rahit" Nothing [hlsl|...|]) without interpolation support._ vulkan-utils.QuasiQuoter for creating a closest hit shader.Equivalent to calling =$(compileShaderQ (Just "spv1.4") "rchit" Nothing [hlsl|...|]) without interpolation support.` vulkan-utils'QuasiQuoter for creating a miss shader.Equivalent to calling =$(compileShaderQ (Just "spv1.4") "rmiss" Nothing [hlsl|...|]) without interpolation support.a vulkan-utils+QuasiQuoter for creating a callable shader.Equivalent to calling =$(compileShaderQ (Just "spv1.4") "rcall" Nothing [hlsl|...|]) without interpolation support.b vulkan-utils'QuasiQuoter for creating a task shader.Equivalent to calling 4$(compileShaderQ Nothing "task" Nothing [hlsl|...|]) without interpolation support.c vulkan-utils'QuasiQuoter for creating a mesh shader.Equivalent to calling 4$(compileShaderQ Nothing "mesh" Nothing [hlsl|...|]) without interpolation support.d vulkan-utils,Compile a HLSL shader to spir-v using glslc.Messages are converted to GHC warnings or errors depending on compilation success.e vulkan-utils,Compile a HLSL shader to spir-v using glslc.d vulkan-utils"Argument to pass to `--target-env` vulkan-utilsstage vulkan-utilsArgument to pass to `-fentry-point=` to specify entry-point function name vulkan-utilshlsl shader code vulkan-utilsSpir-V bytecodee vulkan-utilsSource location vulkan-utils"Argument to pass to `--target-env` vulkan-utilsstage vulkan-utilsArgument to pass to `-fentry-point=` to specify entry-point function name vulkan-utilshlsl shader code vulkan-utils'Spir-V bytecode with warnings or errorsUVWXYZ[\]^_`abcdeUVWXYZ[\]^_`abcde None* #$%&'(-./025679:<>?\f vulkan-utilsf7 is a QuasiQuoter which produces GLSL source code with #line directives inserted so that error locations point to the correct location in the Haskell source file. It also permits basic string interpolation.)Interpolated variables are prefixed with $3They can optionally be surrounded with braces like ${foo}5Interpolated variables are converted to strings with  To escape a $ use \$*It is intended to be used in concert with u like so myConstant = 3.141 -- Note that this will have to be in a different module myFragmentShader = $(compileShaderQ Nothing "frag" [glsl| #version 450 const float myConstant = ${myConstant}; main (){ } |]) An explicit example ( interactive is from doctest):5let version = 450 :: Int in [glsl|#version $version|]"#version 450\n#extension GL_GOOGLE_cpp_style_line_directive : enable\n#line 52 \"\"\n"Note that line number will be thrown off if any of the interpolated variables contain newlines.g vulkan-utils*QuasiQuoter for creating a compute shader.Equivalent to calling ,$(compileShaderQ Nothing "comp" [glsl|...|]) without interpolation support.h vulkan-utils+QuasiQuoter for creating a fragment shader.Equivalent to calling ,$(compileShaderQ Nothing "frag" [glsl|...|]) without interpolation support.i vulkan-utils+QuasiQuoter for creating a geometry shader.Equivalent to calling ,$(compileShaderQ Nothing "geom" [glsl|...|]) without interpolation support.j vulkan-utils7QuasiQuoter for creating a tessellation control shader.Equivalent to calling ,$(compileShaderQ Nothing "tesc" [glsl|...|]) without interpolation support.k vulkan-utils:QuasiQuoter for creating a tessellation evaluation shader.Equivalent to calling ,$(compileShaderQ Nothing "tese" [glsl|...|]) without interpolation support.l vulkan-utils)QuasiQuoter for creating a vertex shader.Equivalent to calling ,$(compileShaderQ Nothing "vert" [glsl|...|]) without interpolation support.m vulkan-utils1QuasiQuoter for creating a ray generation shader.Equivalent to calling 4$(compileShaderQ (Just "spv1.4") "rgen" [glsl|...|]) without interpolation support.n vulkan-utils0QuasiQuoter for creating an intersection shader.Equivalent to calling 4$(compileShaderQ (Just "spv1.4") "rint" [glsl|...|]) without interpolation support.o vulkan-utils+QuasiQuoter for creating an any-hit shader.Equivalent to calling 5$(compileShaderQ (Just "spv1.4") "rahit" [glsl|...|]) without interpolation support.p vulkan-utils.QuasiQuoter for creating a closest hit shader.Equivalent to calling 5$(compileShaderQ (Just "spv1.4") "rchit" [glsl|...|]) without interpolation support.q vulkan-utils'QuasiQuoter for creating a miss shader.Equivalent to calling 5$(compileShaderQ (Just "spv1.4") "rmiss" [glsl|...|]) without interpolation support.r vulkan-utils+QuasiQuoter for creating a callable shader.Equivalent to calling 5$(compileShaderQ (Just "spv1.4") "rcall" [glsl|...|]) without interpolation support.s vulkan-utils'QuasiQuoter for creating a task shader.Equivalent to calling ,$(compileShaderQ Nothing "task" [glsl|...|]) without interpolation support.t vulkan-utils'QuasiQuoter for creating a mesh shader.Equivalent to calling ,$(compileShaderQ Nothing "mesh" [glsl|...|]) without interpolation support.u vulkan-utils,Compile a GLSL shader to spir-v using glslc.Messages are converted to GHC warnings or errors depending on compilation success.v vulkan-utils,Compile a GLSL shader to spir-v using glslc.u vulkan-utils"Argument to pass to `--target-env` vulkan-utilsstage vulkan-utilsglsl shader code vulkan-utilsSpir-V bytecodev vulkan-utilsSource location vulkan-utils"Argument to pass to `--target-env` vulkan-utilsstage vulkan-utilsglsl shader code vulkan-utils'Spir-V bytecode with warnings or errorsfghijklmnopqrstuvfghijklmnopqrstuvNone* #$%&'(-./025679:<>?` vulkan-utils?rw vulkan-utilsw9 is a QuasiQuoter which produces HLSL source code with a #line directive inserted so that error locations point to the correct location in the Haskell source file. It also permits basic string interpolation.)Interpolated variables are prefixed with $3They can optionally be surrounded with braces like ${foo}5Interpolated variables are converted to strings with  To escape a $ use \$*It is intended to be used in concert with  like so myConstant = 3.141 -- Note that this will have to be in a different module myFragmentShader = $(compileShaderQ Nothing "frag" (Just "main") [hlsl| static const float myConstant = ${myConstant}; float main (){ return myConstant; } |]) An explicit example ( interactive is from doctest):6let foo = 450 :: Int in [hlsl|const float foo = $foo|]3"#line 37 \"\"\nconst float foo = 450"Note that line number will be thrown off if any of the interpolated variables contain newlines.x vulkan-utils*QuasiQuoter for creating a compute shader.Equivalent to calling :$(compileShaderQ Nothing "comp" (Just "main") [hlsl|...|]) without interpolation support.y vulkan-utils+QuasiQuoter for creating a fragment shader.Equivalent to calling :$(compileShaderQ Nothing "frag" (Just "main") [hlsl|...|]) without interpolation support.z vulkan-utils+QuasiQuoter for creating a geometry shader.Equivalent to calling :$(compileShaderQ Nothing "geom" (Just "main") [hlsl|...|]) without interpolation support.{ vulkan-utils7QuasiQuoter for creating a tessellation control shader.Equivalent to calling :$(compileShaderQ Nothing "tesc" (Just "main") [hlsl|...|]) without interpolation support.| vulkan-utils:QuasiQuoter for creating a tessellation evaluation shader.Equivalent to calling :$(compileShaderQ Nothing "tese" (Just "main") [hlsl|...|]) without interpolation support.} vulkan-utils)QuasiQuoter for creating a vertex shader.Equivalent to calling :$(compileShaderQ Nothing "vert" (Just "main") [hlsl|...|]) without interpolation support.~ vulkan-utils1QuasiQuoter for creating a ray generation shader.Equivalent to calling $(compileShaderQ (Just "spirv1.4") "rgen" (Just "main") [hlsl|...|]) without interpolation support. vulkan-utils0QuasiQuoter for creating an intersection shader.Equivalent to calling $(compileShaderQ (Just "spirv1.4") "rint" (Just "main") [hlsl|...|]) without interpolation support. vulkan-utils+QuasiQuoter for creating an any-hit shader.Equivalent to calling $(compileShaderQ (Just "spirv1.4") "rahit" (Just "main") [hlsl|...|]) without interpolation support. vulkan-utils.QuasiQuoter for creating a closest hit shader.Equivalent to calling $(compileShaderQ (Just "spirv1.4") "rchit" (Just "main") [hlsl|...|]) without interpolation support. vulkan-utils'QuasiQuoter for creating a miss shader.Equivalent to calling $(compileShaderQ (Just "spirv1.4") "rmiss" (Just "main") [hlsl|...|]) without interpolation support. vulkan-utils+QuasiQuoter for creating a callable shader.Equivalent to calling $(compileShaderQ (Just "spirv1.4") "rcall" (Just "main") [hlsl|...|]) without interpolation support. vulkan-utils'QuasiQuoter for creating a task shader.Equivalent to calling :$(compileShaderQ Nothing "task" (Just "main") [hlsl|...|]) without interpolation support. vulkan-utils'QuasiQuoter for creating a mesh shader.Equivalent to calling :$(compileShaderQ Nothing "mesh" (Just "main") [hlsl|...|]) without interpolation support. vulkan-utils7Compile a HLSL shader to spir-v using glslangValidator.Messages are converted to GHC warnings or errors depending on compilation success. vulkan-utils7Compile a HLSL shader to spir-v using glslangValidator. vulkan-utils"Argument to pass to `--target-env` vulkan-utilsstage vulkan-utilsArgument name to pass to `-e name` to specify entry-point function name vulkan-utilshlsl shader code vulkan-utilsSpir-V bytecode vulkan-utilsSource location vulkan-utils"Argument to pass to `--target-env` vulkan-utilsstage vulkan-utilsArgument name to pass to `-e name` to specify entry-point function name vulkan-utilshlsl shader code vulkan-utils'Spir-V bytecode with warnings or errorswxyz{|}~wxyz{|}~None* #$%&'(-./025679:<>? vulkan-utils7 is a QuasiQuoter which produces GLSL source code with #line directives inserted so that error locations point to the correct location in the Haskell source file. It also permits basic string interpolation.)Interpolated variables are prefixed with $3They can optionally be surrounded with braces like ${foo}5Interpolated variables are converted to strings with  To escape a $ use \$*It is intended to be used in concert with  like so myConstant = 3.141 -- Note that this will have to be in a different module myFragmentShader = $(compileShaderQ Nothing "frag" Nothing [glsl| #version 450 const float myConstant = ${myConstant}; main (){ } |]) An explicit example ( interactive is from doctest):5let version = 450 :: Int in [glsl|#version $version|]"#version 450\n#extension GL_GOOGLE_cpp_style_line_directive : enable\n#line 32 \"\"\n"Note that line number will be thrown off if any of the interpolated variables contain newlines. vulkan-utils*QuasiQuoter for creating a compute shader.Equivalent to calling 4$(compileShaderQ Nothing "comp" Nothing [glsl|...|]) without interpolation support. vulkan-utils+QuasiQuoter for creating a fragment shader.Equivalent to calling 4$(compileShaderQ Nothing "frag" Nothing [glsl|...|]) without interpolation support. vulkan-utils+QuasiQuoter for creating a geometry shader.Equivalent to calling 4$(compileShaderQ Nothing "geom" Nothing [glsl|...|]) without interpolation support. vulkan-utils7QuasiQuoter for creating a tessellation control shader.Equivalent to calling 4$(compileShaderQ Nothing "tesc" Nothing [glsl|...|]) without interpolation support. vulkan-utils:QuasiQuoter for creating a tessellation evaluation shader.Equivalent to calling 4$(compileShaderQ Nothing "tese" Nothing [glsl|...|]) without interpolation support. vulkan-utils)QuasiQuoter for creating a vertex shader.Equivalent to calling 4$(compileShaderQ Nothing "vert" Nothing [glsl|...|]) without interpolation support. vulkan-utils1QuasiQuoter for creating a ray generation shader.Equivalent to calling >$(compileShaderQ (Just "spirv1.4") "rgen" Nothing [glsl|...|]) without interpolation support. vulkan-utils0QuasiQuoter for creating an intersection shader.Equivalent to calling >$(compileShaderQ (Just "spirv1.4") "rint" Nothing [glsl|...|]) without interpolation support. vulkan-utils+QuasiQuoter for creating an any-hit shader.Equivalent to calling ?$(compileShaderQ (Just "spirv1.4") "rahit" Nothing [glsl|...|]) without interpolation support. vulkan-utils.QuasiQuoter for creating a closest hit shader.Equivalent to calling ?$(compileShaderQ (Just "spirv1.4") "rchit" Nothing [glsl|...|]) without interpolation support. vulkan-utils'QuasiQuoter for creating a miss shader.Equivalent to calling ?$(compileShaderQ (Just "spirv1.4") "rmiss" Nothing [glsl|...|]) without interpolation support. vulkan-utils+QuasiQuoter for creating a callable shader.Equivalent to calling ?$(compileShaderQ (Just "spirv1.4") "rcall" Nothing [glsl|...|]) without interpolation support. vulkan-utils'QuasiQuoter for creating a task shader.Equivalent to calling 4$(compileShaderQ Nothing "task" Nothing [glsl|...|]) without interpolation support. vulkan-utils'QuasiQuoter for creating a mesh shader.Equivalent to calling 4$(compileShaderQ Nothing "mesh" Nothing [glsl|...|]) without interpolation support. vulkan-utils7Compile a GLSL shader to spir-v using glslangValidator.Messages are converted to GHC warnings or errors depending on compilation success. vulkan-utils7Compile a GLSL shader to spir-v using glslangValidator. vulkan-utils"Argument to pass to `--target-env` vulkan-utilsstage vulkan-utilsArgument name to pass to `-e name --source-entry-point main` to specify entry-point function name vulkan-utilsglsl shader code vulkan-utilsSpir-V bytecode vulkan-utilsSource location vulkan-utils"Argument to pass to `--target-env` vulkan-utilsstage vulkan-utilsArgument name to pass to `-e name --source-entry-point main` to specify entry-point function name vulkan-utilsglsl shader code vulkan-utils'Spir-V bytecode with warnings or errors !"#$%%&''())*+,-./01234567899:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab c d e f g h i j k l m n o p q r s t u v w x y z { k l m n o p q r s t u v w x y zjklmnopqrstuvwxyz{klmnopqrstuvwxyz|}~|||||||||||||||j{yzyz)vulkan-utils-0.5.6-Gspxr6eSHqxLqvUaLKWMUHVulkan.Utils.CommandCheckVulkan.Utils.DebugVulkan.Utils.FromGLVulkan.Utils.MiscVulkan.Utils.QueueAssignmentVulkan.Utils.RequirementsVulkan.Utils.InitializationVulkan.Utils.Requirements.TH%Vulkan.Utils.ShaderQQ.Backend.Glslang%Vulkan.Utils.ShaderQQ.Backend.Shaderc!Vulkan.Utils.ShaderQQ.Interpolate"Vulkan.Utils.ShaderQQ.HLSL.Shaderc"Vulkan.Utils.ShaderQQ.GLSL.Shaderc"Vulkan.Utils.ShaderQQ.HLSL.Glslang"Vulkan.Utils.ShaderQQ.GLSL.GlslangVulkan.Utils.Internal assignQueues Vulkan.Utils Requirements&Vulkan.Utils.ShaderQQ.Backend.InternalVulkan.Utils.ShaderQQ.HLSLVulkan.Utils.ShaderQQ.GLSL Vulkan.Utils.ShaderQQ.ShaderType.Vulkan.Utils.ShaderQQ.Backend.Shaderc.Internal.Vulkan.Utils.ShaderQQ.Backend.Glslang.InternalcheckCommandsExp$fEqDeviceOrInstanceCommand$fShowDeviceOrInstanceCommanddebugCallbackFatalPtrdebugCallbackPtr nameObjectinternalFormatpartitionOptReqpartitionOptReqIOshowBits.&&. QueueIndex$sel:unQueueIndex:QueueIndexQueueFamilyIndex($sel:unQueueFamilyIndex:QueueFamilyIndex QueueSpec%$sel:queueSpecQueuePriority:QueueSpec'$sel:queueSpecFamilyPredicate:QueueSpecisComputeQueueFamilyisGraphicsQueueFamilyisTransferQueueFamilyisTransferOnlyQueueFamilyisPresentQueueFamily$fEqQueueIndex$fOrdQueueIndex$fEnumQueueIndex$fShowQueueIndex$fEqQueueFamilyIndex$fOrdQueueFamilyIndex$fEnumQueueFamilyIndex$fShowQueueFamilyIndex Unsatisfied#$sel:unsatisfiedMinimum:Unsatisfied"$sel:unsatisfiedActual:UnsatisfiedRequirementResult SatisfiedUnattemptedPropertiesUnattemptedFeatures MissingLayerUnsatisfiedDeviceVersionUnsatisfiedInstanceVersionUnsatisfiedLayerVersionUnsatisfiedFeatureUnsatisfiedPropertyUnsatisfiedDeviceExtension!UnsatisfiedDeviceExtensionVersionUnsatisfiedInstanceExtension#UnsatisfiedInstanceExtensionVersioncheckInstanceRequirementscheckDeviceRequirementsrequirementReportprettyRequirementResult $fKnownChain:$fKnownChain[]$fDeviceFeatureChaines$fDevicePropertyChaines$fSemigroupHas$fEqRequirementResult$fOrdRequirementResult$fEqUnsatisfied$fOrdUnsatisfied#createDebugInstanceFromRequirementscreateInstanceFromRequirementscreateDeviceFromRequirementspickPhysicalDevicephysicalDeviceNamereqreqs $fShowRequest$fShowConstraint$fFunctorConstraint$fFoldableConstraint$fTraversableConstraintGlslangWarning GlslangErrorprocessGlslangMessagesShadercWarning ShadercErrorprocessShadercMessages interpExphlslcompfraggeomtesctesevertrgenrintrahitrchitrmissrcalltaskmeshcompileShaderQ compileShaderglsl!vulkan-3.16-ISwISCNXRnM8n4PweTRia$Vulkan.Extensions.VK_EXT_debug_utilssetDebugUtilsObjectNameEXTVulkan.Core10.Enums.FormatFormatunsatisfiedConstraints noSuchThingsayErrbadQQVulkan.Core10.HandlesQueuePhysicalDeviceDevicebaseData.Traversable Traversable!Vulkan.Core10.Enums.QueueFlagBitsQUEUE_TRANSFER_BITQUEUE_COMPUTE_BITQUEUE_GRAPHICS_BITVulkan.Core10.DeviceDeviceQueueCreateInfo createDevice GHC.MaybeNothing"Vulkan.Core10.DeviceInitializationInstanceCreateInfoVulkan.CStruct.ExtendsextendSomeStruct Data.TuplefstDeviceCreateInfoGHC.IO.ExceptionIOErrorgetPhysicalDevicePropertiesVulkan.RequirementDeviceRequirementRequireDeviceFeatureghc-prim GHC.TypesBoolmessageProcessGHC.BaseStringGHC.ShowshowinsertLineDirective ShaderTypeGLSLHLSL