packages feed

vulkan 3.6.15 → 3.7

raw patch · 718 files changed

+91630/−26284 lines, 718 files

Files

changelog.md view
@@ -2,6 +2,19 @@  ## WIP +## [3.7] - 2020-11-24+- Bump API version to v1.2.162+  - This is a breaking change to anyone using VK_KHR_ray_tracing (which no+    longer exists)+- Add bracketing functions for `withRayTracingPipelinesKHR` and+  `withRayTracingPipelinesNV`+- Add all possible storable instances for Vulkan structs+- Remove tuples from the constructors of `ClearColorValue`+- Unpack top level tuple in `TransformMatrixKHR`, the `matrix` record accessor+  has been split into `matrixRow0`, `matrixRow1`, and `matrixRow2`+- Add extension documentation to extension modules.+- Tweak ordering of documentation in Haddocks to make it more user-friendly+ ## [3.6.15] - 2020-11-16 - Bump API version to v1.2.161 
package.yaml view
@@ -1,5 +1,5 @@ name: vulkan-version: "3.6.15"+version: "3.7" synopsis: Bindings to the Vulkan graphics API. category: Graphics maintainer: Joe Hermaszewski <live.long.and.prosper@monoid.al>@@ -11,7 +11,9 @@ license: BSD-3-Clause  library:-  source-dirs: src+  source-dirs:+    - src+    - src-manual   verbatim:     other-modules:   dependencies:
readme.md view
@@ -139,6 +139,10 @@   length. These are currently exposed as several `Vector` arguments which must   be the same length. If they are not the same length an exception is thrown. +- Vulkan structs with bitfields have them split into their component parts in+  the Haskell record. Then marshalling to and from C the masking *and shifting*+  takes place automatically.+ If anything is unclear please raise an issue. The marshaling to and from Haskell and C is automatically generated and I've not checked every single function. It's possible that there are some commands or structs which could be
+ src-manual/Vulkan/Internal/Utils.hs view
@@ -0,0 +1,64 @@+module Vulkan.Internal.Utils+  ( enumReadPrec+  , enumShowsPrec+  ) where++import           Data.Foldable+import           GHC.Read                       ( expectP )+import           Text.ParserCombinators.ReadP   ( skipSpaces+                                                , string+                                                )+import           Text.Read++-- | The common bits of enumeration and bitmask read instances+enumReadPrec+  :: Read i+  => String+  -- ^ The common constructor prefix+  -> [(a, String)]+  -- ^ The table of values to constructor suffixes+  -> String+  -- ^ The newtype constructor name+  -> (i -> a)+  -- ^ The newtype constructor+  -> ReadPrec a+enumReadPrec prefix table conName con = parens+  (   lift+      (do+        skipSpaces+        _ <- string prefix+        asum ((\(e, s) -> e <$ string s) <$> table)+      )+  +++ prec+        10+        (do+          expectP (Ident conName)+          v <- step readPrec+          pure (con v)+        )+  )++-- | The common bits of enumeration and bitmask show instances+enumShowsPrec+  :: Eq a+  => String+  -- ^ The common constructor prefix+  -> [(a, String)]+  -- ^ A table of values to constructor suffixes+  -> String+  -- ^ The newtype constructor name+  -> (a -> i)+  -- ^ Unpack the newtype+  -> (i -> ShowS)+  -- ^ Show the underlying value+  -> Int+  -> a+  -> ShowS+enumShowsPrec prefix table conName getInternal showsInternal p e =+  case lookup e table of+    Just s -> showString prefix . showString s+    Nothing ->+      let x = getInternal e+      in  showParen (p >= 11)+                    (showString conName . showString " " . showsInternal x)+
src/Vulkan.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Vulkan" module Vulkan  ( module Vulkan.CStruct                , module Vulkan.Core10                , module Vulkan.Core11
src/Vulkan/CStruct.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "CStruct" module Vulkan.CStruct  ( ToCStruct(..)                        , FromCStruct(..)                        ) where
src/Vulkan/CStruct/Extends.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Extends" module Vulkan.CStruct.Extends  ( BaseOutStructure(..)                                , BaseInStructure(..)                                , Extends@@ -43,22 +44,21 @@ import Data.Kind (Constraint) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AabbPositionsKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureBuildGeometryInfoKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureBuildOffsetInfoKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureCreateGeometryTypeInfoKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureCreateInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AabbPositionsKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildGeometryInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildRangeInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildSizesInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCreateInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureCreateInfoNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureDeviceAddressInfoKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureGeometryAabbsDataKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureGeometryInstancesDataKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureGeometryKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureGeometryTrianglesDataKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureDeviceAddressInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryAabbsDataKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryInstancesDataKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureGeometryTrianglesDataKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureInfoNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureInstanceKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureInstanceKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureMemoryRequirementsInfoNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureVersionKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureVersionInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (AcquireNextImageInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (AcquireProfilingLockInfoKHR) import {-# SOURCE #-} Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)@@ -74,7 +74,7 @@ import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (AttachmentReference2) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (AttachmentReferenceStencilLayout) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (AttachmentSampleLocationsEXT)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (BindAccelerationStructureMemoryInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (BindAccelerationStructureMemoryInfoNV) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindBufferMemoryDeviceGroupInfo) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindBufferMemoryInfo) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindImageMemoryDeviceGroupInfo)@@ -115,15 +115,15 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (ConditionalRenderingBeginInfoEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (ConformanceVersion) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (CooperativeMatrixPropertiesNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureInfoKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureToMemoryInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureToMemoryInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyBufferInfo2KHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyBufferToImageInfo2KHR) import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_rotated_copy_commands (CopyCommandTransformInfoQCOM) import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (CopyDescriptorSet) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyImageInfo2KHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyImageToBufferInfo2KHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (CopyMemoryToAccelerationStructureInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyMemoryToAccelerationStructureInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_win32 (D3D12FenceSubmitInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerMarkerInfoEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectNameInfoEXT)@@ -137,7 +137,6 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationBufferCreateInfoNV) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationImageCreateInfoNV) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationMemoryAllocateInfoNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_deferred_host_operations (DeferredOperationInfoKHR) import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorBufferInfo) import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorImageInfo) import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorPoolCreateInfo)@@ -321,6 +320,8 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_4444_formats (PhysicalDevice4444FormatsFeaturesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage (PhysicalDevice8BitStorageFeatures) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_astc_decode_mode (PhysicalDeviceASTCDecodeFeaturesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (PhysicalDeviceAccelerationStructureFeaturesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (PhysicalDeviceAccelerationStructurePropertiesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PhysicalDeviceBlendOperationAdvancedFeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PhysicalDeviceBlendOperationAdvancedPropertiesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeatures)@@ -405,8 +406,9 @@ import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures) import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryProperties) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_push_descriptor (PhysicalDevicePushDescriptorPropertiesKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (PhysicalDeviceRayTracingFeaturesKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (PhysicalDeviceRayTracingPropertiesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelinePropertiesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (PhysicalDeviceRayTracingPropertiesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PhysicalDeviceRepresentativeFragmentTestFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_robustness2 (PhysicalDeviceRobustness2FeaturesEXT)@@ -516,10 +518,10 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (QueueFamilyCheckpointPropertiesNV) import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (QueueFamilyProperties) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (QueueFamilyProperties2)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingPipelineCreateInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingPipelineCreateInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (RayTracingPipelineCreateInfoNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingPipelineInterfaceCreateInfoKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupCreateInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingPipelineInterfaceCreateInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupCreateInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (RayTracingShaderGroupCreateInfoNV) import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Rect2D) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_incremental_present (RectLayerKHR)@@ -568,7 +570,7 @@ import {-# SOURCE #-} Vulkan.Core10.Pipeline (SpecializationMapEntry) import {-# SOURCE #-} Vulkan.Core10.Pipeline (StencilOpState) import {-# SOURCE #-} Vulkan.Extensions.VK_GGP_stream_descriptor_surface (StreamDescriptorSurfaceCreateInfoGGP)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (StridedBufferRegionKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (StridedDeviceAddressRegionKHR) import Vulkan.Core10.Enums.StructureType (StructureType) import Vulkan.Core10.Enums.StructureType (StructureType(..)) import {-# SOURCE #-} Vulkan.Core10.Queue (SubmitInfo)@@ -597,8 +599,8 @@ import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (TimelineSemaphoreSubmitInfo) import Vulkan.CStruct (ToCStruct) import Vulkan.CStruct (ToCStruct(..))-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (TraceRaysIndirectCommandKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (TransformMatrixKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (TraceRaysIndirectCommandKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (TransformMatrixKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_cache (ValidationCacheCreateInfoEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_features (ValidationFeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_flags (ValidationFlagsEXT)@@ -614,7 +616,8 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_NV_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoNV) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_win32_surface (Win32SurfaceCreateInfoKHR) import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (WriteDescriptorSet)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (WriteDescriptorSetAccelerationStructureKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (WriteDescriptorSetAccelerationStructureKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (WriteDescriptorSetAccelerationStructureNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (WriteDescriptorSetInlineUniformBlockEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_hdr_metadata (XYColorEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_xcb_surface (XcbSurfaceCreateInfoKHR)@@ -653,7 +656,6 @@   cStructAlignment = 8   pokeZeroCStruct p f = do     poke ((p `plusPtr` 0 :: Ptr StructureType)) (zero)-    poke ((p `plusPtr` 8 :: Ptr (Ptr BaseOutStructure))) (zero)     f  instance FromCStruct BaseOutStructure where@@ -708,7 +710,6 @@   cStructAlignment = 8   pokeZeroCStruct p f = do     poke ((p `plusPtr` 0 :: Ptr StructureType)) (zero)-    poke ((p `plusPtr` 8 :: Ptr (Ptr BaseInStructure))) (zero)     f  instance FromCStruct BaseInStructure where@@ -731,7 +732,6 @@   type family Extends (a :: [Type] -> Type) (b :: Type) :: Constraint where-  Extends AccelerationStructureBuildGeometryInfoKHR DeferredOperationInfoKHR = ()   Extends AndroidHardwareBufferPropertiesANDROID AndroidHardwareBufferFormatPropertiesANDROID = ()   Extends AttachmentDescription2 AttachmentDescriptionStencilLayout = ()   Extends AttachmentReference2 AttachmentReferenceStencilLayout = ()@@ -751,9 +751,6 @@   Extends CommandBufferInheritanceInfo CommandBufferInheritanceRenderPassTransformInfoQCOM = ()   Extends ComputePipelineCreateInfo PipelineCreationFeedbackCreateInfoEXT = ()   Extends ComputePipelineCreateInfo PipelineCompilerControlCreateInfoAMD = ()-  Extends CopyAccelerationStructureInfoKHR DeferredOperationInfoKHR = ()-  Extends CopyAccelerationStructureToMemoryInfoKHR DeferredOperationInfoKHR = ()-  Extends CopyMemoryToAccelerationStructureInfoKHR DeferredOperationInfoKHR = ()   Extends DescriptorPoolCreateInfo DescriptorPoolInlineUniformBlockCreateInfoEXT = ()   Extends DescriptorSetAllocateInfo DescriptorSetVariableDescriptorCountAllocateInfo = ()   Extends DescriptorSetLayoutCreateInfo DescriptorSetLayoutBindingFlagsCreateInfo = ()@@ -795,7 +792,9 @@   Extends DeviceCreateInfo PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = ()   Extends DeviceCreateInfo PhysicalDeviceShadingRateImageFeaturesNV = ()   Extends DeviceCreateInfo PhysicalDeviceMeshShaderFeaturesNV = ()-  Extends DeviceCreateInfo PhysicalDeviceRayTracingFeaturesKHR = ()+  Extends DeviceCreateInfo PhysicalDeviceAccelerationStructureFeaturesKHR = ()+  Extends DeviceCreateInfo PhysicalDeviceRayTracingPipelineFeaturesKHR = ()+  Extends DeviceCreateInfo PhysicalDeviceRayQueryFeaturesKHR = ()   Extends DeviceCreateInfo DeviceMemoryOverallocationCreateInfoAMD = ()   Extends DeviceCreateInfo PhysicalDeviceFragmentDensityMapFeaturesEXT = ()   Extends DeviceCreateInfo PhysicalDeviceFragmentDensityMap2FeaturesEXT = ()@@ -923,7 +922,9 @@   Extends PhysicalDeviceFeatures2 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceShadingRateImageFeaturesNV = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceMeshShaderFeaturesNV = ()-  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingFeaturesKHR = ()+  Extends PhysicalDeviceFeatures2 PhysicalDeviceAccelerationStructureFeaturesKHR = ()+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingPipelineFeaturesKHR = ()+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayQueryFeaturesKHR = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentDensityMapFeaturesEXT = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentDensityMap2FeaturesEXT = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceScalarBlockLayoutFeatures = ()@@ -998,7 +999,8 @@   Extends PhysicalDeviceProperties2 PhysicalDeviceTransformFeedbackPropertiesEXT = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceShadingRateImagePropertiesNV = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceMeshShaderPropertiesNV = ()-  Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingPropertiesKHR = ()+  Extends PhysicalDeviceProperties2 PhysicalDeviceAccelerationStructurePropertiesKHR = ()+  Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingPipelinePropertiesKHR = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingPropertiesNV = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentDensityMapPropertiesEXT = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentDensityMap2PropertiesEXT = ()@@ -1044,7 +1046,6 @@   Extends QueryPoolCreateInfo QueryPoolPerformanceQueryCreateInfoINTEL = ()   Extends QueueFamilyProperties2 QueueFamilyCheckpointPropertiesNV = ()   Extends RayTracingPipelineCreateInfoKHR PipelineCreationFeedbackCreateInfoEXT = ()-  Extends RayTracingPipelineCreateInfoKHR DeferredOperationInfoKHR = ()   Extends RayTracingPipelineCreateInfoNV PipelineCreationFeedbackCreateInfoEXT = ()   Extends RenderPassBeginInfo DeviceGroupRenderPassBeginInfo = ()   Extends RenderPassBeginInfo RenderPassSampleLocationsBeginInfoEXT = ()@@ -1083,6 +1084,7 @@   Extends SwapchainCreateInfoKHR SurfaceFullScreenExclusiveWin32InfoEXT = ()   Extends WriteDescriptorSet WriteDescriptorSetInlineUniformBlockEXT = ()   Extends WriteDescriptorSet WriteDescriptorSetAccelerationStructureKHR = ()+  Extends WriteDescriptorSet WriteDescriptorSetAccelerationStructureNV = ()   Extends a b = TypeError (ShowType a :<>: Text " is not extended by " :<>: ShowType b)  data SomeStruct (a :: [Type] -> Type) where@@ -1345,8 +1347,12 @@   STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV -> go @PhysicalDeviceMeshShaderFeaturesNV   STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV -> go @PhysicalDeviceMeshShaderPropertiesNV   STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR -> go @WriteDescriptorSetAccelerationStructureKHR-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR -> go @PhysicalDeviceRayTracingFeaturesKHR-  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR -> go @PhysicalDeviceRayTracingPropertiesKHR+  STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV -> go @WriteDescriptorSetAccelerationStructureNV+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR -> go @PhysicalDeviceAccelerationStructureFeaturesKHR+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR -> go @PhysicalDeviceRayTracingPipelineFeaturesKHR+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR -> go @PhysicalDeviceRayQueryFeaturesKHR+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR -> go @PhysicalDeviceAccelerationStructurePropertiesKHR+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR -> go @PhysicalDeviceRayTracingPipelinePropertiesKHR   STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV -> go @PhysicalDeviceRayTracingPropertiesNV   STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT -> go @DrmFormatModifierPropertiesListEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT -> go @PhysicalDeviceImageDrmFormatModifierInfoEXT@@ -1422,7 +1428,6 @@   STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("struct type STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT contains an undiscriminated union (ClearColorValue) and can't be safely peeked") Nothing Nothing   STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT -> go @PhysicalDeviceCustomBorderColorPropertiesEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT -> go @PhysicalDeviceCustomBorderColorFeaturesEXT-  STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR -> go @DeferredOperationInfoKHR   STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT -> go @PhysicalDeviceExtendedDynamicStateFeaturesEXT   STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM -> go @RenderPassTransformBeginInfoQCOM   STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM -> go @CopyCommandTransformInfoQCOM@@ -1656,8 +1661,12 @@ {-# complete (::&) :: PhysicalDeviceMeshShaderFeaturesNV #-} {-# complete (::&) :: PhysicalDeviceMeshShaderPropertiesNV #-} {-# complete (::&) :: WriteDescriptorSetAccelerationStructureKHR #-}-{-# complete (::&) :: PhysicalDeviceRayTracingFeaturesKHR #-}-{-# complete (::&) :: PhysicalDeviceRayTracingPropertiesKHR #-}+{-# complete (::&) :: WriteDescriptorSetAccelerationStructureNV #-}+{-# complete (::&) :: PhysicalDeviceAccelerationStructureFeaturesKHR #-}+{-# complete (::&) :: PhysicalDeviceRayTracingPipelineFeaturesKHR #-}+{-# complete (::&) :: PhysicalDeviceRayQueryFeaturesKHR #-}+{-# complete (::&) :: PhysicalDeviceAccelerationStructurePropertiesKHR #-}+{-# complete (::&) :: PhysicalDeviceRayTracingPipelinePropertiesKHR #-} {-# complete (::&) :: PhysicalDeviceRayTracingPropertiesNV #-} {-# complete (::&) :: DrmFormatModifierPropertiesListEXT #-} {-# complete (::&) :: PhysicalDeviceImageDrmFormatModifierInfoEXT #-}@@ -1733,7 +1742,6 @@ {-# complete (::&) :: SamplerCustomBorderColorCreateInfoEXT #-} {-# complete (::&) :: PhysicalDeviceCustomBorderColorPropertiesEXT #-} {-# complete (::&) :: PhysicalDeviceCustomBorderColorFeaturesEXT #-}-{-# complete (::&) :: DeferredOperationInfoKHR #-} {-# complete (::&) :: PhysicalDeviceExtendedDynamicStateFeaturesEXT #-} {-# complete (::&) :: RenderPassTransformBeginInfoQCOM #-} {-# complete (::&) :: CopyCommandTransformInfoQCOM #-}
src/Vulkan/CStruct/Extends.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Extends" module Vulkan.CStruct.Extends  ( BaseInStructure                                , BaseOutStructure                                , Extendss
src/Vulkan/CStruct/Utils.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Utils" module Vulkan.CStruct.Utils  ( pokeFixedLengthByteString                              , pokeFixedLengthNullTerminatedByteString                              , peekByteStringFromSizedVectorPtr
src/Vulkan/Core10.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Core10" module Vulkan.Core10  ( pattern API_VERSION_1_0                       , module Vulkan.Core10.APIConstants                       , module Vulkan.Core10.AllocationCallbacks
src/Vulkan/Core10/APIConstants.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "APIConstants" module Vulkan.Core10.APIConstants  ( pattern LOD_CLAMP_NONE                                    , LUID_SIZE_KHR                                    , QUEUE_FAMILY_EXTERNAL_KHR
src/Vulkan/Core10/APIConstants.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "APIConstants" module Vulkan.Core10.APIConstants  ( LUID_SIZE                                    , QUEUE_FAMILY_EXTERNAL                                    , MAX_DEVICE_GROUP_SIZE
src/Vulkan/Core10/AllocationCallbacks.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "AllocationCallbacks" module Vulkan.Core10.AllocationCallbacks  (AllocationCallbacks(..)) where  import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -50,7 +51,7 @@ -- 'Vulkan.Core10.FuncPointers.PFN_vkInternalFreeNotification', -- 'Vulkan.Core10.FuncPointers.PFN_vkReallocationFunction', -- 'Vulkan.Core10.Memory.allocateMemory',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.createAccelerationStructureKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.createAccelerationStructureKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV', -- 'Vulkan.Extensions.VK_KHR_android_surface.createAndroidSurfaceKHR', -- 'Vulkan.Core10.Buffer.createBuffer',@@ -84,7 +85,7 @@ -- 'Vulkan.Core10.PipelineLayout.createPipelineLayout', -- 'Vulkan.Extensions.VK_EXT_private_data.createPrivateDataSlotEXT', -- 'Vulkan.Core10.Query.createQueryPool',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.createRayTracingPipelinesKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV', -- 'Vulkan.Core10.Pass.createRenderPass', -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.createRenderPass2',@@ -103,7 +104,7 @@ -- 'Vulkan.Extensions.VK_KHR_win32_surface.createWin32SurfaceKHR', -- 'Vulkan.Extensions.VK_KHR_xcb_surface.createXcbSurfaceKHR', -- 'Vulkan.Extensions.VK_KHR_xlib_surface.createXlibSurfaceKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.destroyAccelerationStructureKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.destroyAccelerationStructureKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.destroyAccelerationStructureNV', -- 'Vulkan.Core10.Buffer.destroyBuffer', -- 'Vulkan.Core10.BufferView.destroyBufferView',
src/Vulkan/Core10/AllocationCallbacks.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "AllocationCallbacks" module Vulkan.Core10.AllocationCallbacks  (AllocationCallbacks) where  import Data.Kind (Type)
src/Vulkan/Core10/Buffer.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Buffer" module Vulkan.Core10.Buffer  ( createBuffer                              , withBuffer                              , destroyBuffer@@ -173,10 +174,10 @@ -- -- To ensure that 'destroyBuffer' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withBuffer :: forall a io r . (Extendss BufferCreateInfo a, PokeChain a, MonadIO io) => Device -> BufferCreateInfo a -> Maybe AllocationCallbacks -> (io (Buffer) -> ((Buffer) -> io ()) -> r) -> r+withBuffer :: forall a io r . (Extendss BufferCreateInfo a, PokeChain a, MonadIO io) => Device -> BufferCreateInfo a -> Maybe AllocationCallbacks -> (io Buffer -> (Buffer -> io ()) -> r) -> r withBuffer device pCreateInfo pAllocator b =   b (createBuffer device pCreateInfo pAllocator)     (\(o0) -> destroyBuffer device o0 pAllocator)
src/Vulkan/Core10/Buffer.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Buffer" module Vulkan.Core10.Buffer  (BufferCreateInfo) where  import Data.Kind (Type)
src/Vulkan/Core10/BufferView.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "BufferView" module Vulkan.Core10.BufferView  ( createBufferView                                  , withBufferView                                  , destroyBufferView@@ -132,10 +133,10 @@ -- -- To ensure that 'destroyBufferView' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withBufferView :: forall io r . MonadIO io => Device -> BufferViewCreateInfo -> Maybe AllocationCallbacks -> (io (BufferView) -> ((BufferView) -> io ()) -> r) -> r+withBufferView :: forall io r . MonadIO io => Device -> BufferViewCreateInfo -> Maybe AllocationCallbacks -> (io BufferView -> (BufferView -> io ()) -> r) -> r withBufferView device pCreateInfo pAllocator b =   b (createBufferView device pCreateInfo pAllocator)     (\(o0) -> destroyBufferView device o0 pAllocator)
src/Vulkan/Core10/BufferView.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "BufferView" module Vulkan.Core10.BufferView  (BufferViewCreateInfo) where  import Data.Kind (Type)
src/Vulkan/Core10/CommandBuffer.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "CommandBuffer" module Vulkan.Core10.CommandBuffer  ( allocateCommandBuffers                                     , withCommandBuffers                                     , freeCommandBuffers@@ -204,10 +205,10 @@ -- -- To ensure that 'freeCommandBuffers' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withCommandBuffers :: forall io r . MonadIO io => Device -> CommandBufferAllocateInfo -> (io (Vector CommandBuffer) -> ((Vector CommandBuffer) -> io ()) -> r) -> r+withCommandBuffers :: forall io r . MonadIO io => Device -> CommandBufferAllocateInfo -> (io (Vector CommandBuffer) -> (Vector CommandBuffer -> io ()) -> r) -> r withCommandBuffers device pAllocateInfo b =   b (allocateCommandBuffers device pAllocateInfo)     (\(o0) -> freeCommandBuffers device (commandPool (pAllocateInfo :: CommandBufferAllocateInfo)) o0)
src/Vulkan/Core10/CommandBuffer.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "CommandBuffer" module Vulkan.Core10.CommandBuffer  ( CommandBufferAllocateInfo                                     , CommandBufferBeginInfo                                     , CommandBufferInheritanceInfo
src/Vulkan/Core10/CommandBufferBuilding.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "CommandBufferBuilding" module Vulkan.Core10.CommandBufferBuilding  ( cmdBindPipeline                                             , cmdSetViewport                                             , cmdSetScissor@@ -254,8 +255,8 @@ -- -   The pipeline bound to --     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR' --     controls the behavior of---     'Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysKHR' and---     'Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysIndirectKHR'.+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysKHR' and+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysIndirectKHR'. -- -- == Valid Usage --@@ -486,7 +487,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetViewport is null" Nothing Nothing   let vkCmdSetViewport' = mkVkCmdSetViewport vkCmdSetViewportPtr   pPViewports <- ContT $ allocaBytesAligned @Viewport ((Data.Vector.length (viewports)) * 24) 4-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e) . ($ ())) (viewports)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e)) (viewports)   lift $ vkCmdSetViewport' (commandBufferHandle (commandBuffer)) (firstViewport) ((fromIntegral (Data.Vector.length $ (viewports)) :: Word32)) (pPViewports)   pure $ () @@ -599,7 +600,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetScissor is null" Nothing Nothing   let vkCmdSetScissor' = mkVkCmdSetScissor vkCmdSetScissorPtr   pPScissors <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (scissors)) * 16) 4-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (scissors)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (scissors)   lift $ vkCmdSetScissor' (commandBufferHandle (commandBuffer)) (firstScissor) ((fromIntegral (Data.Vector.length $ (scissors)) :: Word32)) (pPScissors)   pure $ () @@ -4542,7 +4543,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyBuffer is null" Nothing Nothing   let vkCmdCopyBuffer' = mkVkCmdCopyBuffer vkCmdCopyBufferPtr   pPRegions <- ContT $ allocaBytesAligned @BufferCopy ((Data.Vector.length (regions)) * 24) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions `plusPtr` (24 * (i)) :: Ptr BufferCopy) (e) . ($ ())) (regions)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (24 * (i)) :: Ptr BufferCopy) (e)) (regions)   lift $ vkCmdCopyBuffer' (commandBufferHandle (commandBuffer)) (srcBuffer) (dstBuffer) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions)   pure $ () @@ -5087,7 +5088,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyImage is null" Nothing Nothing   let vkCmdCopyImage' = mkVkCmdCopyImage vkCmdCopyImagePtr   pPRegions <- ContT $ allocaBytesAligned @ImageCopy ((Data.Vector.length (regions)) * 68) 4-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions `plusPtr` (68 * (i)) :: Ptr ImageCopy) (e) . ($ ())) (regions)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (68 * (i)) :: Ptr ImageCopy) (e)) (regions)   lift $ vkCmdCopyImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions)   pure $ () @@ -5533,7 +5534,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBlitImage is null" Nothing Nothing   let vkCmdBlitImage' = mkVkCmdBlitImage vkCmdBlitImagePtr   pPRegions <- ContT $ allocaBytesAligned @ImageBlit ((Data.Vector.length (regions)) * 80) 4-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions `plusPtr` (80 * (i)) :: Ptr ImageBlit) (e) . ($ ())) (regions)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (80 * (i)) :: Ptr ImageBlit) (e)) (regions)   lift $ vkCmdBlitImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions) (filter')   pure $ () @@ -5878,7 +5879,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyBufferToImage is null" Nothing Nothing   let vkCmdCopyBufferToImage' = mkVkCmdCopyBufferToImage vkCmdCopyBufferToImagePtr   pPRegions <- ContT $ allocaBytesAligned @BufferImageCopy ((Data.Vector.length (regions)) * 56) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions `plusPtr` (56 * (i)) :: Ptr BufferImageCopy) (e) . ($ ())) (regions)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (56 * (i)) :: Ptr BufferImageCopy) (e)) (regions)   lift $ vkCmdCopyBufferToImage' (commandBufferHandle (commandBuffer)) (srcBuffer) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions)   pure $ () @@ -6214,7 +6215,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyImageToBuffer is null" Nothing Nothing   let vkCmdCopyImageToBuffer' = mkVkCmdCopyImageToBuffer vkCmdCopyImageToBufferPtr   pPRegions <- ContT $ allocaBytesAligned @BufferImageCopy ((Data.Vector.length (regions)) * 56) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions `plusPtr` (56 * (i)) :: Ptr BufferImageCopy) (e) . ($ ())) (regions)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (56 * (i)) :: Ptr BufferImageCopy) (e)) (regions)   lift $ vkCmdCopyImageToBuffer' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstBuffer) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions)   pure $ () @@ -6691,7 +6692,7 @@   let vkCmdClearColorImage' = mkVkCmdClearColorImage vkCmdClearColorImagePtr   pColor <- ContT $ withCStruct (color)   pPRanges <- ContT $ allocaBytesAligned @ImageSubresourceRange ((Data.Vector.length (ranges)) * 20) 4-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRanges `plusPtr` (20 * (i)) :: Ptr ImageSubresourceRange) (e) . ($ ())) (ranges)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRanges `plusPtr` (20 * (i)) :: Ptr ImageSubresourceRange) (e)) (ranges)   lift $ vkCmdClearColorImage' (commandBufferHandle (commandBuffer)) (image) (imageLayout) pColor ((fromIntegral (Data.Vector.length $ (ranges)) :: Word32)) (pPRanges)   pure $ () @@ -6909,7 +6910,7 @@   let vkCmdClearDepthStencilImage' = mkVkCmdClearDepthStencilImage vkCmdClearDepthStencilImagePtr   pDepthStencil <- ContT $ withCStruct (depthStencil)   pPRanges <- ContT $ allocaBytesAligned @ImageSubresourceRange ((Data.Vector.length (ranges)) * 20) 4-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRanges `plusPtr` (20 * (i)) :: Ptr ImageSubresourceRange) (e) . ($ ())) (ranges)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRanges `plusPtr` (20 * (i)) :: Ptr ImageSubresourceRange) (e)) (ranges)   lift $ vkCmdClearDepthStencilImage' (commandBufferHandle (commandBuffer)) (image) (imageLayout) pDepthStencil ((fromIntegral (Data.Vector.length $ (ranges)) :: Word32)) (pPRanges)   pure $ () @@ -7085,7 +7086,7 @@   pPAttachments <- ContT $ allocaBytesAligned @ClearAttachment ((Data.Vector.length (attachments)) * 24) 4   Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments `plusPtr` (24 * (i)) :: Ptr ClearAttachment) (e) . ($ ())) (attachments)   pPRects <- ContT $ allocaBytesAligned @ClearRect ((Data.Vector.length (rects)) * 24) 4-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRects `plusPtr` (24 * (i)) :: Ptr ClearRect) (e) . ($ ())) (rects)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRects `plusPtr` (24 * (i)) :: Ptr ClearRect) (e)) (rects)   lift $ vkCmdClearAttachments' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (attachments)) :: Word32)) (pPAttachments) ((fromIntegral (Data.Vector.length $ (rects)) :: Word32)) (pPRects)   pure $ () @@ -7360,7 +7361,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResolveImage is null" Nothing Nothing   let vkCmdResolveImage' = mkVkCmdResolveImage vkCmdResolveImagePtr   pPRegions <- ContT $ allocaBytesAligned @ImageResolve ((Data.Vector.length (regions)) * 68) 4-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions `plusPtr` (68 * (i)) :: Ptr ImageResolve) (e) . ($ ())) (regions)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (68 * (i)) :: Ptr ImageResolve) (e)) (regions)   lift $ vkCmdResolveImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions)   pure $ () @@ -7750,9 +7751,9 @@   pPEvents <- ContT $ allocaBytesAligned @Event ((Data.Vector.length (events)) * 8) 8   lift $ Data.Vector.imapM_ (\i e -> poke (pPEvents `plusPtr` (8 * (i)) :: Ptr Event) (e)) (events)   pPMemoryBarriers <- ContT $ allocaBytesAligned @MemoryBarrier ((Data.Vector.length (memoryBarriers)) * 24) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPMemoryBarriers `plusPtr` (24 * (i)) :: Ptr MemoryBarrier) (e) . ($ ())) (memoryBarriers)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryBarriers `plusPtr` (24 * (i)) :: Ptr MemoryBarrier) (e)) (memoryBarriers)   pPBufferMemoryBarriers <- ContT $ allocaBytesAligned @BufferMemoryBarrier ((Data.Vector.length (bufferMemoryBarriers)) * 56) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBufferMemoryBarriers `plusPtr` (56 * (i)) :: Ptr BufferMemoryBarrier) (e) . ($ ())) (bufferMemoryBarriers)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferMemoryBarriers `plusPtr` (56 * (i)) :: Ptr BufferMemoryBarrier) (e)) (bufferMemoryBarriers)   pPImageMemoryBarriers <- ContT $ allocaBytesAligned @(ImageMemoryBarrier _) ((Data.Vector.length (imageMemoryBarriers)) * 72) 8   Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPImageMemoryBarriers `plusPtr` (72 * (i)) :: Ptr (ImageMemoryBarrier _))) (e) . ($ ())) (imageMemoryBarriers)   lift $ vkCmdWaitEvents' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (events)) :: Word32)) (pPEvents) (srcStageMask) (dstStageMask) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32)) (pPMemoryBarriers) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32)) (pPBufferMemoryBarriers) ((fromIntegral (Data.Vector.length $ (imageMemoryBarriers)) :: Word32)) (forgetExtensions (pPImageMemoryBarriers))@@ -8526,9 +8527,9 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPipelineBarrier is null" Nothing Nothing   let vkCmdPipelineBarrier' = mkVkCmdPipelineBarrier vkCmdPipelineBarrierPtr   pPMemoryBarriers <- ContT $ allocaBytesAligned @MemoryBarrier ((Data.Vector.length (memoryBarriers)) * 24) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPMemoryBarriers `plusPtr` (24 * (i)) :: Ptr MemoryBarrier) (e) . ($ ())) (memoryBarriers)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryBarriers `plusPtr` (24 * (i)) :: Ptr MemoryBarrier) (e)) (memoryBarriers)   pPBufferMemoryBarriers <- ContT $ allocaBytesAligned @BufferMemoryBarrier ((Data.Vector.length (bufferMemoryBarriers)) * 56) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBufferMemoryBarriers `plusPtr` (56 * (i)) :: Ptr BufferMemoryBarrier) (e) . ($ ())) (bufferMemoryBarriers)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferMemoryBarriers `plusPtr` (56 * (i)) :: Ptr BufferMemoryBarrier) (e)) (bufferMemoryBarriers)   pPImageMemoryBarriers <- ContT $ allocaBytesAligned @(ImageMemoryBarrier _) ((Data.Vector.length (imageMemoryBarriers)) * 72) 8   Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPImageMemoryBarriers `plusPtr` (72 * (i)) :: Ptr (ImageMemoryBarrier _))) (e) . ($ ())) (imageMemoryBarriers)   lift $ vkCmdPipelineBarrier' (commandBufferHandle (commandBuffer)) (srcStageMask) (dstStageMask) (dependencyFlags) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32)) (pPMemoryBarriers) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32)) (pPBufferMemoryBarriers) ((fromIntegral (Data.Vector.length $ (imageMemoryBarriers)) :: Word32)) (forgetExtensions (pPImageMemoryBarriers))@@ -9429,6 +9430,21 @@ -- -- = Description --+-- When a command buffer begins recording, all push constant values are+-- undefined.+--+-- Push constant values /can/ be updated incrementally, causing shader+-- stages in @stageFlags@ to read the new data from @pValues@ for push+-- constants modified by this command, while still reading the previous+-- data for push constants not modified by this command. When a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commands bound pipeline command>+-- is issued, the bound pipeline’s layout /must/ be compatible with the+-- layouts used to set the values of all push constants in the pipeline+-- layout’s push constant ranges, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.+-- Binding a pipeline with a layout that is not compatible with the push+-- constant layout does not disturb the push constant values.+-- -- Note -- -- As @stageFlags@ needs to include all flags the relevant push constant@@ -10245,18 +10261,18 @@  instance ToCStruct ClearRect where   withCStruct x f = allocaBytesAligned 24 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ClearRect{..} f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Rect2D)) (rect) . ($ ())-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (baseArrayLayer)-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (layerCount)-    lift $ f+  pokeCStruct p ClearRect{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Rect2D)) (rect)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (baseArrayLayer)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (layerCount)+    f   cStructSize = 24   cStructAlignment = 4-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Rect2D)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Rect2D)) (zero)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    f  instance FromCStruct ClearRect where   peekCStruct p = do@@ -10266,6 +10282,12 @@     pure $ ClearRect              rect baseArrayLayer layerCount +instance Storable ClearRect where+  sizeOf ~_ = 24+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero ClearRect where   zero = ClearRect            zero@@ -10501,22 +10523,22 @@  instance ToCStruct ImageCopy where   withCStruct x f = allocaBytesAligned 68 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ImageCopy{..} f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Offset3D)) (srcOffset) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (dstSubresource) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Offset3D)) (dstOffset) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr Extent3D)) (extent) . ($ ())-    lift $ f+  pokeCStruct p ImageCopy{..} f = do+    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource)+    poke ((p `plusPtr` 16 :: Ptr Offset3D)) (srcOffset)+    poke ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (dstSubresource)+    poke ((p `plusPtr` 44 :: Ptr Offset3D)) (dstOffset)+    poke ((p `plusPtr` 56 :: Ptr Extent3D)) (extent)+    f   cStructSize = 68   cStructAlignment = 4-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Offset3D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Offset3D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr Extent3D)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero)+    poke ((p `plusPtr` 16 :: Ptr Offset3D)) (zero)+    poke ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (zero)+    poke ((p `plusPtr` 44 :: Ptr Offset3D)) (zero)+    poke ((p `plusPtr` 56 :: Ptr Extent3D)) (zero)+    f  instance FromCStruct ImageCopy where   peekCStruct p = do@@ -10528,6 +10550,12 @@     pure $ ImageCopy              srcSubresource srcOffset dstSubresource dstOffset extent +instance Storable ImageCopy where+  sizeOf ~_ = 68+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero ImageCopy where   zero = ImageCopy            zero@@ -10586,36 +10614,36 @@  instance ToCStruct ImageBlit where   withCStruct x f = allocaBytesAligned 80 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ImageBlit{..} f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource) . ($ ())+  pokeCStruct p ImageBlit{..} f = do+    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource)     let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 2 Offset3D)))     case (srcOffsets) of       (e0, e1) -> do-        ContT $ pokeCStruct (pSrcOffsets' :: Ptr Offset3D) (e0) . ($ ())-        ContT $ pokeCStruct (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers)) (dstSubresource) . ($ ())+        poke (pSrcOffsets' :: Ptr Offset3D) (e0)+        poke (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)+    poke ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers)) (dstSubresource)     let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (FixedArray 2 Offset3D)))     case (dstOffsets) of       (e0, e1) -> do-        ContT $ pokeCStruct (pDstOffsets' :: Ptr Offset3D) (e0) . ($ ())-        ContT $ pokeCStruct (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1) . ($ ())-    lift $ f+        poke (pDstOffsets' :: Ptr Offset3D) (e0)+        poke (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)+    f   cStructSize = 80   cStructAlignment = 4-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero)     let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 2 Offset3D)))     case ((zero, zero)) of       (e0, e1) -> do-        ContT $ pokeCStruct (pSrcOffsets' :: Ptr Offset3D) (e0) . ($ ())-        ContT $ pokeCStruct (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())+        poke (pSrcOffsets' :: Ptr Offset3D) (e0)+        poke (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)+    poke ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers)) (zero)     let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (FixedArray 2 Offset3D)))     case ((zero, zero)) of       (e0, e1) -> do-        ContT $ pokeCStruct (pDstOffsets' :: Ptr Offset3D) (e0) . ($ ())-        ContT $ pokeCStruct (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1) . ($ ())-    lift $ f+        poke (pDstOffsets' :: Ptr Offset3D) (e0)+        poke (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)+    f  instance FromCStruct ImageBlit where   peekCStruct p = do@@ -10630,6 +10658,12 @@     pure $ ImageBlit              srcSubresource ((srcOffsets0, srcOffsets1)) dstSubresource ((dstOffsets0, dstOffsets1)) +instance Storable ImageBlit where+  sizeOf ~_ = 80+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero ImageBlit where   zero = ImageBlit            zero@@ -10752,24 +10786,24 @@  instance ToCStruct BufferImageCopy where   withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p BufferImageCopy{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (bufferOffset)-    lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (bufferRowLength)-    lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (bufferImageHeight)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (imageSubresource) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Offset3D)) (imageOffset) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Extent3D)) (imageExtent) . ($ ())-    lift $ f+  pokeCStruct p BufferImageCopy{..} f = do+    poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (bufferOffset)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (bufferRowLength)+    poke ((p `plusPtr` 12 :: Ptr Word32)) (bufferImageHeight)+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (imageSubresource)+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (imageOffset)+    poke ((p `plusPtr` 44 :: Ptr Extent3D)) (imageExtent)+    f   cStructSize = 56   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (zero)-    lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Offset3D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Extent3D)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (zero)+    poke ((p `plusPtr` 44 :: Ptr Extent3D)) (zero)+    f  instance FromCStruct BufferImageCopy where   peekCStruct p = do@@ -10782,6 +10816,12 @@     pure $ BufferImageCopy              bufferOffset bufferRowLength bufferImageHeight imageSubresource imageOffset imageExtent +instance Storable BufferImageCopy where+  sizeOf ~_ = 56+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero BufferImageCopy where   zero = BufferImageCopy            zero@@ -10840,22 +10880,22 @@  instance ToCStruct ImageResolve where   withCStruct x f = allocaBytesAligned 68 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ImageResolve{..} f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Offset3D)) (srcOffset) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (dstSubresource) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Offset3D)) (dstOffset) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr Extent3D)) (extent) . ($ ())-    lift $ f+  pokeCStruct p ImageResolve{..} f = do+    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource)+    poke ((p `plusPtr` 16 :: Ptr Offset3D)) (srcOffset)+    poke ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (dstSubresource)+    poke ((p `plusPtr` 44 :: Ptr Offset3D)) (dstOffset)+    poke ((p `plusPtr` 56 :: Ptr Extent3D)) (extent)+    f   cStructSize = 68   cStructAlignment = 4-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Offset3D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Offset3D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr Extent3D)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero)+    poke ((p `plusPtr` 16 :: Ptr Offset3D)) (zero)+    poke ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (zero)+    poke ((p `plusPtr` 44 :: Ptr Offset3D)) (zero)+    poke ((p `plusPtr` 56 :: Ptr Extent3D)) (zero)+    f  instance FromCStruct ImageResolve where   peekCStruct p = do@@ -10867,6 +10907,12 @@     pure $ ImageResolve              srcSubresource srcOffset dstSubresource dstOffset extent +instance Storable ImageResolve where+  sizeOf ~_ = 68+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero ImageResolve where   zero = ImageResolve            zero@@ -11225,7 +11271,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''     lift $ poke ((p `plusPtr` 16 :: Ptr RenderPass)) (renderPass)     lift $ poke ((p `plusPtr` 24 :: Ptr Framebuffer)) (framebuffer)-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Rect2D)) (renderArea) . ($ ())+    lift $ poke ((p `plusPtr` 32 :: Ptr Rect2D)) (renderArea)     lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (clearValues)) :: Word32))     pPClearValues' <- ContT $ allocaBytesAligned @ClearValue ((Data.Vector.length (clearValues)) * 16) 4     Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPClearValues' `plusPtr` (16 * (i)) :: Ptr ClearValue) (e) . ($ ())) (clearValues)@@ -11239,7 +11285,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'     lift $ poke ((p `plusPtr` 16 :: Ptr RenderPass)) (zero)     lift $ poke ((p `plusPtr` 24 :: Ptr Framebuffer)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Rect2D)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 32 :: Ptr Rect2D)) (zero)     pPClearValues' <- ContT $ allocaBytesAligned @ClearValue ((Data.Vector.length (mempty)) * 16) 4     Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPClearValues' `plusPtr` (16 * (i)) :: Ptr ClearValue) (e) . ($ ())) (mempty)     lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr ClearValue))) (pPClearValues')@@ -11409,34 +11455,34 @@   data ClearColorValue-  = Float32 ((Float, Float, Float, Float))-  | Int32 ((Int32, Int32, Int32, Int32))-  | Uint32 ((Word32, Word32, Word32, Word32))+  = Float32 Float Float Float Float+  | Int32 Int32 Int32 Int32 Int32+  | Uint32 Word32 Word32 Word32 Word32   deriving (Show)  instance ToCStruct ClearColorValue where   withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)   pokeCStruct :: Ptr ClearColorValue -> ClearColorValue -> IO a -> IO a   pokeCStruct p = (. const) . runContT .  \case-    Float32 v -> lift $ do+    Float32 v0 v1 v2 v3 -> lift $ do       let pFloat32 = lowerArrayPtr (castPtr @_ @(FixedArray 4 CFloat) p)-      case (v) of+      case ((v0, v1, v2, v3)) of         (e0, e1, e2, e3) -> do           poke (pFloat32 :: Ptr CFloat) (CFloat (e0))           poke (pFloat32 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))           poke (pFloat32 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))           poke (pFloat32 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))-    Int32 v -> lift $ do+    Int32 v0 v1 v2 v3 -> lift $ do       let pInt32 = lowerArrayPtr (castPtr @_ @(FixedArray 4 Int32) p)-      case (v) of+      case ((v0, v1, v2, v3)) of         (e0, e1, e2, e3) -> do           poke (pInt32 :: Ptr Int32) (e0)           poke (pInt32 `plusPtr` 4 :: Ptr Int32) (e1)           poke (pInt32 `plusPtr` 8 :: Ptr Int32) (e2)           poke (pInt32 `plusPtr` 12 :: Ptr Int32) (e3)-    Uint32 v -> lift $ do+    Uint32 v0 v1 v2 v3 -> lift $ do       let pUint32 = lowerArrayPtr (castPtr @_ @(FixedArray 4 Word32) p)-      case (v) of+      case ((v0, v1, v2, v3)) of         (e0, e1, e2, e3) -> do           poke (pUint32 :: Ptr Word32) (e0)           poke (pUint32 `plusPtr` 4 :: Ptr Word32) (e1)@@ -11448,7 +11494,7 @@   cStructAlignment = 4  instance Zero ClearColorValue where-  zero = Float32 (zero, zero, zero, zero)+  zero = Float32 zero zero zero zero   data ClearValue@@ -11461,7 +11507,7 @@   pokeCStruct :: Ptr ClearValue -> ClearValue -> IO a -> IO a   pokeCStruct p = (. const) . runContT .  \case     Color v -> ContT $ pokeCStruct (castPtr @_ @ClearColorValue p) (v) . ($ ())-    DepthStencil v -> ContT $ pokeCStruct (castPtr @_ @ClearDepthStencilValue p) (v) . ($ ())+    DepthStencil v -> lift $ poke (castPtr @_ @ClearDepthStencilValue p) (v)   pokeZeroCStruct :: Ptr ClearValue -> IO b -> IO b   pokeZeroCStruct _ f = f   cStructSize = 16
src/Vulkan/Core10/CommandBufferBuilding.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "CommandBufferBuilding" module Vulkan.Core10.CommandBufferBuilding  ( BufferCopy                                             , BufferImageCopy                                             , ClearAttachment
src/Vulkan/Core10/CommandPool.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "CommandPool" module Vulkan.Core10.CommandPool  ( createCommandPool                                   , withCommandPool                                   , destroyCommandPool@@ -148,10 +149,10 @@ -- -- To ensure that 'destroyCommandPool' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withCommandPool :: forall io r . MonadIO io => Device -> CommandPoolCreateInfo -> Maybe AllocationCallbacks -> (io (CommandPool) -> ((CommandPool) -> io ()) -> r) -> r+withCommandPool :: forall io r . MonadIO io => Device -> CommandPoolCreateInfo -> Maybe AllocationCallbacks -> (io CommandPool -> (CommandPool -> io ()) -> r) -> r withCommandPool device pCreateInfo pAllocator b =   b (createCommandPool device pCreateInfo pAllocator)     (\(o0) -> destroyCommandPool device o0 pAllocator)
src/Vulkan/Core10/CommandPool.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "CommandPool" module Vulkan.Core10.CommandPool  (CommandPoolCreateInfo) where  import Data.Kind (Type)
src/Vulkan/Core10/DescriptorSet.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "DescriptorSet" module Vulkan.Core10.DescriptorSet  ( createDescriptorSetLayout                                     , withDescriptorSetLayout                                     , destroyDescriptorSetLayout@@ -119,7 +120,8 @@ import Vulkan.CStruct (ToCStruct) import Vulkan.CStruct (ToCStruct(..)) import Vulkan.Exception (VulkanException(..))-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (WriteDescriptorSetAccelerationStructureKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (WriteDescriptorSetAccelerationStructureKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (WriteDescriptorSetAccelerationStructureNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (WriteDescriptorSetInlineUniformBlockEXT) import Vulkan.Zero (Zero(..)) import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_DESCRIPTOR_SET))@@ -213,10 +215,10 @@ -- -- To ensure that 'destroyDescriptorSetLayout' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withDescriptorSetLayout :: forall a io r . (Extendss DescriptorSetLayoutCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetLayoutCreateInfo a -> Maybe AllocationCallbacks -> (io (DescriptorSetLayout) -> ((DescriptorSetLayout) -> io ()) -> r) -> r+withDescriptorSetLayout :: forall a io r . (Extendss DescriptorSetLayoutCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetLayoutCreateInfo a -> Maybe AllocationCallbacks -> (io DescriptorSetLayout -> (DescriptorSetLayout -> io ()) -> r) -> r withDescriptorSetLayout device pCreateInfo pAllocator b =   b (createDescriptorSetLayout device pCreateInfo pAllocator)     (\(o0) -> destroyDescriptorSetLayout device o0 pAllocator)@@ -380,10 +382,10 @@ -- -- To ensure that 'destroyDescriptorPool' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withDescriptorPool :: forall a io r . (Extendss DescriptorPoolCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorPoolCreateInfo a -> Maybe AllocationCallbacks -> (io (DescriptorPool) -> ((DescriptorPool) -> io ()) -> r) -> r+withDescriptorPool :: forall a io r . (Extendss DescriptorPoolCreateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorPoolCreateInfo a -> Maybe AllocationCallbacks -> (io DescriptorPool -> (DescriptorPool -> io ()) -> r) -> r withDescriptorPool device pCreateInfo pAllocator b =   b (createDescriptorPool device pCreateInfo pAllocator)     (\(o0) -> destroyDescriptorPool device o0 pAllocator)@@ -676,10 +678,10 @@ -- -- To ensure that 'freeDescriptorSets' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withDescriptorSets :: forall a io r . (Extendss DescriptorSetAllocateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetAllocateInfo a -> (io (Vector DescriptorSet) -> ((Vector DescriptorSet) -> io ()) -> r) -> r+withDescriptorSets :: forall a io r . (Extendss DescriptorSetAllocateInfo a, PokeChain a, MonadIO io) => Device -> DescriptorSetAllocateInfo a -> (io (Vector DescriptorSet) -> (Vector DescriptorSet -> io ()) -> r) -> r withDescriptorSets device pAllocateInfo b =   b (allocateDescriptorSets device pAllocateInfo)     (\(o0) -> freeDescriptorSets device (descriptorPool (pAllocateInfo :: DescriptorSetAllocateInfo a)) o0)@@ -866,7 +868,7 @@   pPDescriptorWrites <- ContT $ allocaBytesAligned @(WriteDescriptorSet _) ((Data.Vector.length (descriptorWrites)) * 64) 8   Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPDescriptorWrites `plusPtr` (64 * (i)) :: Ptr (WriteDescriptorSet _))) (e) . ($ ())) (descriptorWrites)   pPDescriptorCopies <- ContT $ allocaBytesAligned @CopyDescriptorSet ((Data.Vector.length (descriptorCopies)) * 56) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDescriptorCopies `plusPtr` (56 * (i)) :: Ptr CopyDescriptorSet) (e) . ($ ())) (descriptorCopies)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptorCopies `plusPtr` (56 * (i)) :: Ptr CopyDescriptorSet) (e)) (descriptorCopies)   lift $ vkUpdateDescriptorSets' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (descriptorWrites)) :: Word32)) (forgetExtensions (pPDescriptorWrites)) ((fromIntegral (Data.Vector.length $ (descriptorCopies)) :: Word32)) (pPDescriptorCopies)   pure $ () @@ -1122,16 +1124,23 @@ -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR', -- in which case the source data for the descriptor writes is taken from -- the--- 'Vulkan.Extensions.VK_KHR_ray_tracing.WriteDescriptorSetAccelerationStructureKHR'+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR'+-- structure in the @pNext@ chain of 'WriteDescriptorSet', or if+-- @descriptorType@ is+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV',+-- in which case the source data for the descriptor writes is taken from+-- the+-- 'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV' -- structure in the @pNext@ chain of 'WriteDescriptorSet', as specified -- below. -- -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>--- feature is enabled, the buffer, imageView, or bufferView /can/ be--- 'Vulkan.Core10.APIConstants.NULL_HANDLE'. Loads from a null descriptor--- return zero values and stores and atomics to a null descriptor are--- discarded.+-- feature is enabled, the buffer, acceleration structure, imageView, or+-- bufferView /can/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'. Loads from+-- a null descriptor return zero values and stores and atomics to a null+-- descriptor are discarded. A null acceleration structure descriptor+-- results in the miss shader being invoked. -- -- If the @dstBinding@ has fewer than @descriptorCount@ array elements -- remaining starting from @dstArrayElement@, then the remainder will be@@ -1276,10 +1285,18 @@ --     is --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR', --     the @pNext@ chain /must/ include a---     'Vulkan.Extensions.VK_KHR_ray_tracing.WriteDescriptorSetAccelerationStructureKHR'+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR' --     structure whose @accelerationStructureCount@ member equals --     @descriptorCount@ --+-- -   #VUID-VkWriteDescriptorSet-descriptorType-03817# If @descriptorType@+--     is+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV',+--     the @pNext@ chain /must/ include a+--     'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'+--     structure whose @accelerationStructureCount@ member equals+--     @descriptorCount@+-- -- -   #VUID-VkWriteDescriptorSet-descriptorType-01946# If @descriptorType@ --     is --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',@@ -1481,7 +1498,8 @@ -- -   #VUID-VkWriteDescriptorSet-pNext-pNext# Each @pNext@ member of any --     structure (including this one) in the @pNext@ chain /must/ be either --     @NULL@ or a pointer to a valid instance of---     'Vulkan.Extensions.VK_KHR_ray_tracing.WriteDescriptorSetAccelerationStructureKHR'+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR',+--     'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV', --     or --     'Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT' --@@ -1528,7 +1546,7 @@     -- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT'     -- structure in the @pNext@ chain , or a value matching the     -- @accelerationStructureCount@ of a-    -- 'Vulkan.Extensions.VK_KHR_ray_tracing.WriteDescriptorSetAccelerationStructureKHR'+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR'     -- structure in the @pNext@ chain ). If the descriptor binding identified     -- by @dstSet@ and @dstBinding@ has a descriptor type of     -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'@@ -1566,6 +1584,7 @@   getNext WriteDescriptorSet{..} = next   extends :: forall e b proxy. Typeable e => proxy e -> (Extends WriteDescriptorSet e => b) -> Maybe b   extends _ f+    | Just Refl <- eqT @e @WriteDescriptorSetAccelerationStructureNV = Just f     | Just Refl <- eqT @e @WriteDescriptorSetAccelerationStructureKHR = Just f     | Just Refl <- eqT @e @WriteDescriptorSetInlineUniformBlockEXT = Just f     | otherwise = Nothing@@ -1594,14 +1613,14 @@       then pure nullPtr       else do         pPImageInfo <- ContT $ allocaBytesAligned @DescriptorImageInfo (((Data.Vector.length (imageInfo))) * 24) 8-        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPImageInfo `plusPtr` (24 * (i)) :: Ptr DescriptorImageInfo) (e) . ($ ())) ((imageInfo))+        lift $ Data.Vector.imapM_ (\i e -> poke (pPImageInfo `plusPtr` (24 * (i)) :: Ptr DescriptorImageInfo) (e)) ((imageInfo))         pure $ pPImageInfo     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr DescriptorImageInfo))) pImageInfo''     pBufferInfo'' <- if Data.Vector.null (bufferInfo)       then pure nullPtr       else do         pPBufferInfo <- ContT $ allocaBytesAligned @DescriptorBufferInfo (((Data.Vector.length (bufferInfo))) * 24) 8-        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBufferInfo `plusPtr` (24 * (i)) :: Ptr DescriptorBufferInfo) (e) . ($ ())) ((bufferInfo))+        lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferInfo `plusPtr` (24 * (i)) :: Ptr DescriptorBufferInfo) (e)) ((bufferInfo))         pure $ pPBufferInfo     lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr DescriptorBufferInfo))) pBufferInfo''     pTexelBufferView'' <- if Data.Vector.null (texelBufferView)@@ -2386,7 +2405,7 @@     lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (maxSets)     lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (poolSizes)) :: Word32))     pPPoolSizes' <- ContT $ allocaBytesAligned @DescriptorPoolSize ((Data.Vector.length (poolSizes)) * 8) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPPoolSizes' `plusPtr` (8 * (i)) :: Ptr DescriptorPoolSize) (e) . ($ ())) (poolSizes)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPPoolSizes' `plusPtr` (8 * (i)) :: Ptr DescriptorPoolSize) (e)) (poolSizes)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr DescriptorPoolSize))) (pPPoolSizes')     lift $ f   cStructSize = 40@@ -2397,7 +2416,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'     lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)     pPPoolSizes' <- ContT $ allocaBytesAligned @DescriptorPoolSize ((Data.Vector.length (mempty)) * 8) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPPoolSizes' `plusPtr` (8 * (i)) :: Ptr DescriptorPoolSize) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPPoolSizes' `plusPtr` (8 * (i)) :: Ptr DescriptorPoolSize) (e)) (mempty)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr DescriptorPoolSize))) (pPPoolSizes')     lift $ f 
src/Vulkan/Core10/DescriptorSet.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "DescriptorSet" module Vulkan.Core10.DescriptorSet  ( CopyDescriptorSet                                     , DescriptorBufferInfo                                     , DescriptorImageInfo
src/Vulkan/Core10/Device.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Device" module Vulkan.Core10.Device  ( createDevice                              , withDevice                              , destroyDevice@@ -84,6 +85,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_4444_formats (PhysicalDevice4444FormatsFeaturesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage (PhysicalDevice8BitStorageFeatures) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_astc_decode_mode (PhysicalDeviceASTCDecodeFeaturesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (PhysicalDeviceAccelerationStructureFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PhysicalDeviceBlendOperationAdvancedFeaturesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeatures) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT)@@ -125,7 +127,8 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_portability_subset (PhysicalDevicePortabilitySubsetFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_private_data (PhysicalDevicePrivateDataFeaturesEXT) import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (PhysicalDeviceRayTracingFeaturesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PhysicalDeviceRepresentativeFragmentTestFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_robustness2 (PhysicalDeviceRobustness2FeaturesEXT) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (PhysicalDeviceSamplerYcbcrConversionFeatures)@@ -294,10 +297,10 @@ -- -- To ensure that 'destroyDevice' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withDevice :: forall a io r . (Extendss DeviceCreateInfo a, PokeChain a, MonadIO io) => PhysicalDevice -> DeviceCreateInfo a -> Maybe AllocationCallbacks -> (io (Device) -> ((Device) -> io ()) -> r) -> r+withDevice :: forall a io r . (Extendss DeviceCreateInfo a, PokeChain a, MonadIO io) => PhysicalDevice -> DeviceCreateInfo a -> Maybe AllocationCallbacks -> (io Device -> (Device -> io ()) -> r) -> r withDevice physicalDevice pCreateInfo pAllocator b =   b (createDevice physicalDevice pCreateInfo pAllocator)     (\(o0) -> destroyDevice o0 pAllocator)@@ -678,6 +681,7 @@ --     'Vulkan.Extensions.VK_EXT_4444_formats.PhysicalDevice4444FormatsFeaturesEXT', --     'Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage.PhysicalDevice8BitStorageFeatures', --     'Vulkan.Extensions.VK_EXT_astc_decode_mode.PhysicalDeviceASTCDecodeFeaturesEXT',+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructureFeaturesKHR', --     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedFeaturesEXT', --     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures', --     'Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',@@ -718,7 +722,8 @@ --     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR', --     'Vulkan.Extensions.VK_EXT_private_data.PhysicalDevicePrivateDataFeaturesEXT', --     'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',---     'Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingFeaturesKHR',+--     'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR', --     'Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV', --     'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2FeaturesEXT', --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures',@@ -871,7 +876,9 @@     | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMap2FeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapFeaturesEXT = Just f     | Just Refl <- eqT @e @DeviceMemoryOverallocationCreateInfoAMD = Just f-    | Just Refl <- eqT @e @PhysicalDeviceRayTracingFeaturesKHR = Just f+    | Just Refl <- eqT @e @PhysicalDeviceRayQueryFeaturesKHR = Just f+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingPipelineFeaturesKHR = Just f+    | Just Refl <- eqT @e @PhysicalDeviceAccelerationStructureFeaturesKHR = Just f     | Just Refl <- eqT @e @PhysicalDeviceMeshShaderFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceShadingRateImageFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = Just f
src/Vulkan/Core10/Device.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Device" module Vulkan.Core10.Device  ( DeviceCreateInfo                              , DeviceQueueCreateInfo                              ) where
src/Vulkan/Core10/DeviceInitialization.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "DeviceInitialization" module Vulkan.Core10.DeviceInitialization  ( createInstance                                            , withInstance                                            , destroyInstance@@ -333,10 +334,10 @@ -- -- To ensure that 'destroyInstance' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withInstance :: forall a io r . (Extendss InstanceCreateInfo a, PokeChain a, MonadIO io) => InstanceCreateInfo a -> Maybe AllocationCallbacks -> (io (Instance) -> ((Instance) -> io ()) -> r) -> r+withInstance :: forall a io r . (Extendss InstanceCreateInfo a, PokeChain a, MonadIO io) => InstanceCreateInfo a -> Maybe AllocationCallbacks -> (io Instance -> (Instance -> io ()) -> r) -> r withInstance pCreateInfo pAllocator b =   b (createInstance pCreateInfo pAllocator)     (\(o0) -> destroyInstance o0 pAllocator)@@ -524,12 +525,12 @@ -- +----------------------+----------------------+-----------------------+ -- | device               | @NULL@               | undefined             | -- +----------------------+----------------------+-----------------------+--- | device               | core device-level    | fp2                   |--- |                      | Vulkan command       |                       |+-- | device               | core device-level    | fp3                   |+-- |                      | Vulkan command2      |                       | -- +----------------------+----------------------+-----------------------+--- | device               | enabled extension    | fp2                   |+-- | device               | enabled extension    | fp3                   | -- |                      | device-level         |                       |--- |                      | commands             |                       |+-- |                      | commands2            |                       | -- +----------------------+----------------------+-----------------------+ -- | any other case, not  |                      | @NULL@                | -- | covered above        |                      |                       |@@ -542,6 +543,10 @@ --     valid values, invalid values, and @NULL@). -- -- [2]+--     In this function, device-level excludes all physical-device-level+--     commands.+--+-- [3] --     The returned function pointer /must/ only be called with a --     dispatchable object (the first parameter) that is @device@ or a --     child of @device@ e.g. 'Vulkan.Core10.Handles.Device',@@ -1137,30 +1142,30 @@  instance ToCStruct PhysicalDeviceProperties where   withCStruct x f = allocaBytesAligned 824 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PhysicalDeviceProperties{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (apiVersion)-    lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (driverVersion)-    lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (vendorID)-    lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (deviceID)-    lift $ poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceType)) (deviceType)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) (deviceName)-    lift $ pokeFixedLengthByteString ((p `plusPtr` 276 :: Ptr (FixedArray UUID_SIZE Word8))) (pipelineCacheUUID)-    ContT $ pokeCStruct ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits)) (limits) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties)) (sparseProperties) . ($ ())-    lift $ f+  pokeCStruct p PhysicalDeviceProperties{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (apiVersion)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (driverVersion)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (vendorID)+    poke ((p `plusPtr` 12 :: Ptr Word32)) (deviceID)+    poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceType)) (deviceType)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) (deviceName)+    pokeFixedLengthByteString ((p `plusPtr` 276 :: Ptr (FixedArray UUID_SIZE Word8))) (pipelineCacheUUID)+    poke ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits)) (limits)+    poke ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties)) (sparseProperties)+    f   cStructSize = 824   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceType)) (zero)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) (mempty)-    lift $ pokeFixedLengthByteString ((p `plusPtr` 276 :: Ptr (FixedArray UUID_SIZE Word8))) (mempty)-    ContT $ pokeCStruct ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceType)) (zero)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) (mempty)+    pokeFixedLengthByteString ((p `plusPtr` 276 :: Ptr (FixedArray UUID_SIZE Word8))) (mempty)+    poke ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits)) (zero)+    poke ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties)) (zero)+    f  instance FromCStruct PhysicalDeviceProperties where   peekCStruct p = do@@ -1176,6 +1181,12 @@     pure $ PhysicalDeviceProperties              apiVersion driverVersion vendorID deviceID deviceType deviceName pipelineCacheUUID limits sparseProperties +instance Storable PhysicalDeviceProperties where+  sizeOf ~_ = 824+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero PhysicalDeviceProperties where   zero = PhysicalDeviceProperties            zero@@ -1604,19 +1615,19 @@  instance ToCStruct QueueFamilyProperties where   withCStruct x f = allocaBytesAligned 24 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p QueueFamilyProperties{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr QueueFlags)) (queueFlags)-    lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (queueCount)-    lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (timestampValidBits)-    ContT $ pokeCStruct ((p `plusPtr` 12 :: Ptr Extent3D)) (minImageTransferGranularity) . ($ ())-    lift $ f+  pokeCStruct p QueueFamilyProperties{..} f = do+    poke ((p `plusPtr` 0 :: Ptr QueueFlags)) (queueFlags)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (queueCount)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (timestampValidBits)+    poke ((p `plusPtr` 12 :: Ptr Extent3D)) (minImageTransferGranularity)+    f   cStructSize = 24   cStructAlignment = 4-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 12 :: Ptr Extent3D)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 12 :: Ptr Extent3D)) (zero)+    f  instance FromCStruct QueueFamilyProperties where   peekCStruct p = do@@ -1627,6 +1638,12 @@     pure $ QueueFamilyProperties              queueFlags queueCount timestampValidBits minImageTransferGranularity +instance Storable QueueFamilyProperties where+  sizeOf ~_ = 24+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero QueueFamilyProperties where   zero = QueueFamilyProperties            zero@@ -1923,28 +1940,28 @@  instance ToCStruct PhysicalDeviceMemoryProperties where   withCStruct x f = allocaBytesAligned 520 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PhysicalDeviceMemoryProperties{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (memoryTypeCount)-    lift $ unless ((Data.Vector.length $ (memoryTypes)) <= MAX_MEMORY_TYPES) $+  pokeCStruct p PhysicalDeviceMemoryProperties{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (memoryTypeCount)+    unless ((Data.Vector.length $ (memoryTypes)) <= MAX_MEMORY_TYPES) $       throwIO $ IOError Nothing InvalidArgument "" "memoryTypes is too long, a maximum of MAX_MEMORY_TYPES elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 4 :: Ptr (FixedArray MAX_MEMORY_TYPES MemoryType)))) `plusPtr` (8 * (i)) :: Ptr MemoryType) (e) . ($ ())) (memoryTypes)-    lift $ poke ((p `plusPtr` 260 :: Ptr Word32)) (memoryHeapCount)-    lift $ unless ((Data.Vector.length $ (memoryHeaps)) <= MAX_MEMORY_HEAPS) $+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 4 :: Ptr (FixedArray MAX_MEMORY_TYPES MemoryType)))) `plusPtr` (8 * (i)) :: Ptr MemoryType) (e)) (memoryTypes)+    poke ((p `plusPtr` 260 :: Ptr Word32)) (memoryHeapCount)+    unless ((Data.Vector.length $ (memoryHeaps)) <= MAX_MEMORY_HEAPS) $       throwIO $ IOError Nothing InvalidArgument "" "memoryHeaps is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 264 :: Ptr (FixedArray MAX_MEMORY_HEAPS MemoryHeap)))) `plusPtr` (16 * (i)) :: Ptr MemoryHeap) (e) . ($ ())) (memoryHeaps)-    lift $ f+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 264 :: Ptr (FixedArray MAX_MEMORY_HEAPS MemoryHeap)))) `plusPtr` (16 * (i)) :: Ptr MemoryHeap) (e)) (memoryHeaps)+    f   cStructSize = 520   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)-    lift $ unless ((Data.Vector.length $ (mempty)) <= MAX_MEMORY_TYPES) $+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+    unless ((Data.Vector.length $ (mempty)) <= MAX_MEMORY_TYPES) $       throwIO $ IOError Nothing InvalidArgument "" "memoryTypes is too long, a maximum of MAX_MEMORY_TYPES elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 4 :: Ptr (FixedArray MAX_MEMORY_TYPES MemoryType)))) `plusPtr` (8 * (i)) :: Ptr MemoryType) (e) . ($ ())) (mempty)-    lift $ poke ((p `plusPtr` 260 :: Ptr Word32)) (zero)-    lift $ unless ((Data.Vector.length $ (mempty)) <= MAX_MEMORY_HEAPS) $+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 4 :: Ptr (FixedArray MAX_MEMORY_TYPES MemoryType)))) `plusPtr` (8 * (i)) :: Ptr MemoryType) (e)) (mempty)+    poke ((p `plusPtr` 260 :: Ptr Word32)) (zero)+    unless ((Data.Vector.length $ (mempty)) <= MAX_MEMORY_HEAPS) $       throwIO $ IOError Nothing InvalidArgument "" "memoryHeaps is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 264 :: Ptr (FixedArray MAX_MEMORY_HEAPS MemoryHeap)))) `plusPtr` (16 * (i)) :: Ptr MemoryHeap) (e) . ($ ())) (mempty)-    lift $ f+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 264 :: Ptr (FixedArray MAX_MEMORY_HEAPS MemoryHeap)))) `plusPtr` (16 * (i)) :: Ptr MemoryHeap) (e)) (mempty)+    f  instance FromCStruct PhysicalDeviceMemoryProperties where   peekCStruct p = do@@ -1955,6 +1972,12 @@     pure $ PhysicalDeviceMemoryProperties              memoryTypeCount memoryTypes memoryHeapCount memoryHeaps +instance Storable PhysicalDeviceMemoryProperties where+  sizeOf ~_ = 520+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero PhysicalDeviceMemoryProperties where   zero = PhysicalDeviceMemoryProperties            zero@@ -2263,21 +2286,21 @@  instance ToCStruct ImageFormatProperties where   withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ImageFormatProperties{..} f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Extent3D)) (maxExtent) . ($ ())-    lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (maxMipLevels)-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (maxArrayLayers)-    lift $ poke ((p `plusPtr` 20 :: Ptr SampleCountFlags)) (sampleCounts)-    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (maxResourceSize)-    lift $ f+  pokeCStruct p ImageFormatProperties{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Extent3D)) (maxExtent)+    poke ((p `plusPtr` 12 :: Ptr Word32)) (maxMipLevels)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxArrayLayers)+    poke ((p `plusPtr` 20 :: Ptr SampleCountFlags)) (sampleCounts)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (maxResourceSize)+    f   cStructSize = 32   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Extent3D)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Extent3D)) (zero)+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+    f  instance FromCStruct ImageFormatProperties where   peekCStruct p = do@@ -2288,6 +2311,12 @@     maxResourceSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))     pure $ ImageFormatProperties              maxExtent maxMipLevels maxArrayLayers sampleCounts maxResourceSize++instance Storable ImageFormatProperties where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())  instance Zero ImageFormatProperties where   zero = ImageFormatProperties
src/Vulkan/Core10/DeviceInitialization.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "DeviceInitialization" module Vulkan.Core10.DeviceInitialization  ( ApplicationInfo                                            , FormatProperties                                            , ImageFormatProperties
src/Vulkan/Core10/Enums.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Enums" module Vulkan.Core10.Enums  ( module Vulkan.Core10.Enums.AccessFlagBits                             , module Vulkan.Core10.Enums.AttachmentDescriptionFlagBits                             , module Vulkan.Core10.Enums.AttachmentLoadOp
src/Vulkan/Core10/Enums/AccessFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.AccessFlagBits  ( AccessFlagBits( ACCESS_INDIRECT_COMMAND_READ_BIT+-- No documentation found for Chapter "AccessFlagBits"+module Vulkan.Core10.Enums.AccessFlagBits  ( AccessFlags+                                           , AccessFlagBits( ACCESS_INDIRECT_COMMAND_READ_BIT                                                            , ACCESS_INDEX_READ_BIT                                                            , ACCESS_VERTEX_ATTRIBUTE_READ_BIT                                                            , ACCESS_UNIFORM_READ_BIT@@ -29,25 +31,21 @@                                                            , ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT                                                            , ..                                                            )-                                           , AccessFlags                                            ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type AccessFlags = AccessFlagBits+ -- | VkAccessFlagBits - Bitmask specifying memory access types that will -- participate in a memory dependency --@@ -67,7 +65,8 @@ -- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+ -- | Access flag                                                                                           | Supported pipeline stages                                                                                | -- +=======================================================================================================+==========================================================================================================+--- | 'ACCESS_INDIRECT_COMMAND_READ_BIT'                                                                    | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'                             |+-- | 'ACCESS_INDIRECT_COMMAND_READ_BIT'                                                                    | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT' ,                           |+-- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'          | -- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+ -- | 'ACCESS_INDEX_READ_BIT'                                                                               | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'                              | -- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+@@ -83,7 +82,8 @@ -- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or                       | -- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                            | -- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+--- | 'ACCESS_SHADER_READ_BIT'                                                                              | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                           |+-- | 'ACCESS_SHADER_READ_BIT'                                                                              | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',         |+-- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                           | -- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                           | -- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',                   | -- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                            |@@ -115,9 +115,11 @@ -- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'                                                           | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', or                  | -- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'                       | -- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+--- | 'ACCESS_TRANSFER_READ_BIT'                                                                            | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'                                  |+-- | 'ACCESS_TRANSFER_READ_BIT'                                                                            | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT' or                               |+-- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'          | -- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+--- | 'ACCESS_TRANSFER_WRITE_BIT'                                                                           | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'                                  |+-- | 'ACCESS_TRANSFER_WRITE_BIT'                                                                           | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT' or                               |+-- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'          | -- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+ -- | 'ACCESS_HOST_READ_BIT'                                                                                | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'                                      | -- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+@@ -143,7 +145,15 @@ -- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+ -- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'                             | -- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+--- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'                                                          | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR', or                |+-- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'                                                          | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                           |+-- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                           |+-- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                            |+-- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',              |+-- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',           |+-- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                          |+-- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT',                          |+-- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT',                           |+-- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR', or                | -- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'          | -- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+ -- | 'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'                                                         | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'          |@@ -160,23 +170,24 @@   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)  -- | 'ACCESS_INDIRECT_COMMAND_READ_BIT' specifies read access to indirect--- command data read as part of an indirect drawing or dispatch command.-pattern ACCESS_INDIRECT_COMMAND_READ_BIT = AccessFlagBits 0x00000001+-- command data read as part of an indirect build, trace, drawing or+-- dispatch command.+pattern ACCESS_INDIRECT_COMMAND_READ_BIT                 = AccessFlagBits 0x00000001 -- | 'ACCESS_INDEX_READ_BIT' specifies read access to an index buffer as part -- of an indexed drawing command, bound by -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.-pattern ACCESS_INDEX_READ_BIT = AccessFlagBits 0x00000002+pattern ACCESS_INDEX_READ_BIT                            = AccessFlagBits 0x00000002 -- | 'ACCESS_VERTEX_ATTRIBUTE_READ_BIT' specifies read access to a vertex -- buffer as part of a drawing command, bound by -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'.-pattern ACCESS_VERTEX_ATTRIBUTE_READ_BIT = AccessFlagBits 0x00000004+pattern ACCESS_VERTEX_ATTRIBUTE_READ_BIT                 = AccessFlagBits 0x00000004 -- | 'ACCESS_UNIFORM_READ_BIT' specifies read access to a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer uniform buffer>.-pattern ACCESS_UNIFORM_READ_BIT = AccessFlagBits 0x00000008+pattern ACCESS_UNIFORM_READ_BIT                          = AccessFlagBits 0x00000008 -- | 'ACCESS_INPUT_ATTACHMENT_READ_BIT' specifies read access to an -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass input attachment> -- within a render pass during fragment shading.-pattern ACCESS_INPUT_ATTACHMENT_READ_BIT = AccessFlagBits 0x00000010+pattern ACCESS_INPUT_ATTACHMENT_READ_BIT                 = AccessFlagBits 0x00000010 -- | 'ACCESS_SHADER_READ_BIT' specifies read access to a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,@@ -186,14 +197,14 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image>, -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.-pattern ACCESS_SHADER_READ_BIT = AccessFlagBits 0x00000020+pattern ACCESS_SHADER_READ_BIT                           = AccessFlagBits 0x00000020 -- | 'ACCESS_SHADER_WRITE_BIT' specifies write access to a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer>, -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.-pattern ACCESS_SHADER_WRITE_BIT = AccessFlagBits 0x00000040+pattern ACCESS_SHADER_WRITE_BIT                          = AccessFlagBits 0x00000040 -- | 'ACCESS_COLOR_ATTACHMENT_READ_BIT' specifies read access to a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass color attachment>, -- such as via@@ -203,168 +214,148 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>. -- It does not include -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>.-pattern ACCESS_COLOR_ATTACHMENT_READ_BIT = AccessFlagBits 0x00000080+pattern ACCESS_COLOR_ATTACHMENT_READ_BIT                 = AccessFlagBits 0x00000080 -- | 'ACCESS_COLOR_ATTACHMENT_WRITE_BIT' specifies write access to a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass color, resolve, or depth\/stencil resolve attachment> -- during a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass render pass> -- or via certain -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>.-pattern ACCESS_COLOR_ATTACHMENT_WRITE_BIT = AccessFlagBits 0x00000100+pattern ACCESS_COLOR_ATTACHMENT_WRITE_BIT                = AccessFlagBits 0x00000100 -- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT' specifies read access to a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass depth\/stencil attachment>, -- via -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations> -- or via certain -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>.-pattern ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = AccessFlagBits 0x00000200+pattern ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT         = AccessFlagBits 0x00000200 -- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT' specifies write access to a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass depth\/stencil attachment>, -- via -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations> -- or via certain -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>.-pattern ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = AccessFlagBits 0x00000400+pattern ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT        = AccessFlagBits 0x00000400 -- | 'ACCESS_TRANSFER_READ_BIT' specifies read access to an image or buffer -- in a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy> -- operation.-pattern ACCESS_TRANSFER_READ_BIT = AccessFlagBits 0x00000800+pattern ACCESS_TRANSFER_READ_BIT                         = AccessFlagBits 0x00000800 -- | 'ACCESS_TRANSFER_WRITE_BIT' specifies write access to an image or buffer -- in a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy> -- operation.-pattern ACCESS_TRANSFER_WRITE_BIT = AccessFlagBits 0x00001000+pattern ACCESS_TRANSFER_WRITE_BIT                        = AccessFlagBits 0x00001000 -- | 'ACCESS_HOST_READ_BIT' specifies read access by a host operation. -- Accesses of this type are not performed through a resource, but directly -- on memory.-pattern ACCESS_HOST_READ_BIT = AccessFlagBits 0x00002000+pattern ACCESS_HOST_READ_BIT                             = AccessFlagBits 0x00002000 -- | 'ACCESS_HOST_WRITE_BIT' specifies write access by a host operation. -- Accesses of this type are not performed through a resource, but directly -- on memory.-pattern ACCESS_HOST_WRITE_BIT = AccessFlagBits 0x00004000+pattern ACCESS_HOST_WRITE_BIT                            = AccessFlagBits 0x00004000 -- | 'ACCESS_MEMORY_READ_BIT' specifies all read accesses. It is always valid -- in any access mask, and is treated as equivalent to setting all @READ@ -- access flags that are valid where it is used.-pattern ACCESS_MEMORY_READ_BIT = AccessFlagBits 0x00008000+pattern ACCESS_MEMORY_READ_BIT                           = AccessFlagBits 0x00008000 -- | 'ACCESS_MEMORY_WRITE_BIT' specifies all write accesses. It is always -- valid in any access mask, and is treated as equivalent to setting all -- @WRITE@ access flags that are valid where it is used.-pattern ACCESS_MEMORY_WRITE_BIT = AccessFlagBits 0x00010000+pattern ACCESS_MEMORY_WRITE_BIT                          = AccessFlagBits 0x00010000 -- | 'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV' specifies writes to the -- 'Vulkan.Core10.Handles.Buffer' preprocess outputs in -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'.-pattern ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = AccessFlagBits 0x00040000+pattern ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV           = AccessFlagBits 0x00040000 -- | 'ACCESS_COMMAND_PREPROCESS_READ_BIT_NV' specifies reads from -- 'Vulkan.Core10.Handles.Buffer' inputs to -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'.-pattern ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = AccessFlagBits 0x00020000+pattern ACCESS_COMMAND_PREPROCESS_READ_BIT_NV            = AccessFlagBits 0x00020000 -- | 'ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT' specifies read access to a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment> -- during dynamic -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops fragment density map operations>-pattern ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = AccessFlagBits 0x01000000+pattern ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT         = AccessFlagBits 0x01000000 -- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV"-pattern ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = AccessFlagBits 0x00800000+pattern ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV            = AccessFlagBits 0x00800000 -- | 'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR' specifies write access to -- an acceleration structure or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-scratch acceleration structure scratch buffer>--- as part of a build command.-pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = AccessFlagBits 0x00400000+-- as part of a build or copy command.+pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR      = AccessFlagBits 0x00400000 -- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR' specifies read access to an--- acceleration structure as part of a trace or build command, or to an+-- acceleration structure as part of a trace, build, or copy command, or to+-- an -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-scratch acceleration structure scratch buffer> -- as part of a build command.-pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = AccessFlagBits 0x00200000+pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR       = AccessFlagBits 0x00200000 -- | 'ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT' is similar to -- 'ACCESS_COLOR_ATTACHMENT_READ_BIT', but also includes -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>. pattern ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = AccessFlagBits 0x00080000 -- | 'ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT' specifies read access to a -- predicate as part of conditional rendering.-pattern ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = AccessFlagBits 0x00100000+pattern ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT        = AccessFlagBits 0x00100000 -- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT' specifies write access -- to a transform feedback counter buffer which is written when -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT' -- executes.-pattern ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = AccessFlagBits 0x08000000+pattern ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT  = AccessFlagBits 0x08000000 -- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT' specifies read access -- to a transform feedback counter buffer which is read when -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT' -- executes.-pattern ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = AccessFlagBits 0x04000000+pattern ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT   = AccessFlagBits 0x04000000 -- | 'ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT' specifies write access to a -- transform feedback buffer made when transform feedback is active.-pattern ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = AccessFlagBits 0x02000000+pattern ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT          = AccessFlagBits 0x02000000 -type AccessFlags = AccessFlagBits+conNameAccessFlagBits :: String+conNameAccessFlagBits = "AccessFlagBits" +enumPrefixAccessFlagBits :: String+enumPrefixAccessFlagBits = "ACCESS_"++showTableAccessFlagBits :: [(AccessFlagBits, String)]+showTableAccessFlagBits =+  [ (ACCESS_INDIRECT_COMMAND_READ_BIT                , "INDIRECT_COMMAND_READ_BIT")+  , (ACCESS_INDEX_READ_BIT                           , "INDEX_READ_BIT")+  , (ACCESS_VERTEX_ATTRIBUTE_READ_BIT                , "VERTEX_ATTRIBUTE_READ_BIT")+  , (ACCESS_UNIFORM_READ_BIT                         , "UNIFORM_READ_BIT")+  , (ACCESS_INPUT_ATTACHMENT_READ_BIT                , "INPUT_ATTACHMENT_READ_BIT")+  , (ACCESS_SHADER_READ_BIT                          , "SHADER_READ_BIT")+  , (ACCESS_SHADER_WRITE_BIT                         , "SHADER_WRITE_BIT")+  , (ACCESS_COLOR_ATTACHMENT_READ_BIT                , "COLOR_ATTACHMENT_READ_BIT")+  , (ACCESS_COLOR_ATTACHMENT_WRITE_BIT               , "COLOR_ATTACHMENT_WRITE_BIT")+  , (ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT        , "DEPTH_STENCIL_ATTACHMENT_READ_BIT")+  , (ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT       , "DEPTH_STENCIL_ATTACHMENT_WRITE_BIT")+  , (ACCESS_TRANSFER_READ_BIT                        , "TRANSFER_READ_BIT")+  , (ACCESS_TRANSFER_WRITE_BIT                       , "TRANSFER_WRITE_BIT")+  , (ACCESS_HOST_READ_BIT                            , "HOST_READ_BIT")+  , (ACCESS_HOST_WRITE_BIT                           , "HOST_WRITE_BIT")+  , (ACCESS_MEMORY_READ_BIT                          , "MEMORY_READ_BIT")+  , (ACCESS_MEMORY_WRITE_BIT                         , "MEMORY_WRITE_BIT")+  , (ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV          , "COMMAND_PREPROCESS_WRITE_BIT_NV")+  , (ACCESS_COMMAND_PREPROCESS_READ_BIT_NV           , "COMMAND_PREPROCESS_READ_BIT_NV")+  , (ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT        , "FRAGMENT_DENSITY_MAP_READ_BIT_EXT")+  , (ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV           , "SHADING_RATE_IMAGE_READ_BIT_NV")+  , (ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR     , "ACCELERATION_STRUCTURE_WRITE_BIT_KHR")+  , (ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR      , "ACCELERATION_STRUCTURE_READ_BIT_KHR")+  , (ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, "COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT")+  , (ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT       , "CONDITIONAL_RENDERING_READ_BIT_EXT")+  , (ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT , "TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT")+  , (ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT  , "TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT")+  , (ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT         , "TRANSFORM_FEEDBACK_WRITE_BIT_EXT")+  ]+ instance Show AccessFlagBits where-  showsPrec p = \case-    ACCESS_INDIRECT_COMMAND_READ_BIT -> showString "ACCESS_INDIRECT_COMMAND_READ_BIT"-    ACCESS_INDEX_READ_BIT -> showString "ACCESS_INDEX_READ_BIT"-    ACCESS_VERTEX_ATTRIBUTE_READ_BIT -> showString "ACCESS_VERTEX_ATTRIBUTE_READ_BIT"-    ACCESS_UNIFORM_READ_BIT -> showString "ACCESS_UNIFORM_READ_BIT"-    ACCESS_INPUT_ATTACHMENT_READ_BIT -> showString "ACCESS_INPUT_ATTACHMENT_READ_BIT"-    ACCESS_SHADER_READ_BIT -> showString "ACCESS_SHADER_READ_BIT"-    ACCESS_SHADER_WRITE_BIT -> showString "ACCESS_SHADER_WRITE_BIT"-    ACCESS_COLOR_ATTACHMENT_READ_BIT -> showString "ACCESS_COLOR_ATTACHMENT_READ_BIT"-    ACCESS_COLOR_ATTACHMENT_WRITE_BIT -> showString "ACCESS_COLOR_ATTACHMENT_WRITE_BIT"-    ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT -> showString "ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"-    ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT -> showString "ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"-    ACCESS_TRANSFER_READ_BIT -> showString "ACCESS_TRANSFER_READ_BIT"-    ACCESS_TRANSFER_WRITE_BIT -> showString "ACCESS_TRANSFER_WRITE_BIT"-    ACCESS_HOST_READ_BIT -> showString "ACCESS_HOST_READ_BIT"-    ACCESS_HOST_WRITE_BIT -> showString "ACCESS_HOST_WRITE_BIT"-    ACCESS_MEMORY_READ_BIT -> showString "ACCESS_MEMORY_READ_BIT"-    ACCESS_MEMORY_WRITE_BIT -> showString "ACCESS_MEMORY_WRITE_BIT"-    ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV -> showString "ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV"-    ACCESS_COMMAND_PREPROCESS_READ_BIT_NV -> showString "ACCESS_COMMAND_PREPROCESS_READ_BIT_NV"-    ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT -> showString "ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"-    ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV -> showString "ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV"-    ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR -> showString "ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"-    ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR -> showString "ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR"-    ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT -> showString "ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"-    ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT -> showString "ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"-    ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT -> showString "ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"-    ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT -> showString "ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"-    ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT -> showString "ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"-    AccessFlagBits x -> showParen (p >= 11) (showString "AccessFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixAccessFlagBits+                            showTableAccessFlagBits+                            conNameAccessFlagBits+                            (\(AccessFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read AccessFlagBits where-  readPrec = parens (choose [("ACCESS_INDIRECT_COMMAND_READ_BIT", pure ACCESS_INDIRECT_COMMAND_READ_BIT)-                            , ("ACCESS_INDEX_READ_BIT", pure ACCESS_INDEX_READ_BIT)-                            , ("ACCESS_VERTEX_ATTRIBUTE_READ_BIT", pure ACCESS_VERTEX_ATTRIBUTE_READ_BIT)-                            , ("ACCESS_UNIFORM_READ_BIT", pure ACCESS_UNIFORM_READ_BIT)-                            , ("ACCESS_INPUT_ATTACHMENT_READ_BIT", pure ACCESS_INPUT_ATTACHMENT_READ_BIT)-                            , ("ACCESS_SHADER_READ_BIT", pure ACCESS_SHADER_READ_BIT)-                            , ("ACCESS_SHADER_WRITE_BIT", pure ACCESS_SHADER_WRITE_BIT)-                            , ("ACCESS_COLOR_ATTACHMENT_READ_BIT", pure ACCESS_COLOR_ATTACHMENT_READ_BIT)-                            , ("ACCESS_COLOR_ATTACHMENT_WRITE_BIT", pure ACCESS_COLOR_ATTACHMENT_WRITE_BIT)-                            , ("ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT", pure ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT)-                            , ("ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT", pure ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT)-                            , ("ACCESS_TRANSFER_READ_BIT", pure ACCESS_TRANSFER_READ_BIT)-                            , ("ACCESS_TRANSFER_WRITE_BIT", pure ACCESS_TRANSFER_WRITE_BIT)-                            , ("ACCESS_HOST_READ_BIT", pure ACCESS_HOST_READ_BIT)-                            , ("ACCESS_HOST_WRITE_BIT", pure ACCESS_HOST_WRITE_BIT)-                            , ("ACCESS_MEMORY_READ_BIT", pure ACCESS_MEMORY_READ_BIT)-                            , ("ACCESS_MEMORY_WRITE_BIT", pure ACCESS_MEMORY_WRITE_BIT)-                            , ("ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV", pure ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV)-                            , ("ACCESS_COMMAND_PREPROCESS_READ_BIT_NV", pure ACCESS_COMMAND_PREPROCESS_READ_BIT_NV)-                            , ("ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT", pure ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT)-                            , ("ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV", pure ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV)-                            , ("ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR", pure ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR)-                            , ("ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR", pure ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR)-                            , ("ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT", pure ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT)-                            , ("ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT", pure ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT)-                            , ("ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT", pure ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT)-                            , ("ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT", pure ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT)-                            , ("ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT", pure ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "AccessFlagBits")-                       v <- step readPrec-                       pure (AccessFlagBits v)))+  readPrec = enumReadPrec enumPrefixAccessFlagBits showTableAccessFlagBits conNameAccessFlagBits AccessFlagBits 
src/Vulkan/Core10/Enums/AttachmentDescriptionFlagBits.hs view
@@ -1,26 +1,24 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.AttachmentDescriptionFlagBits  ( AttachmentDescriptionFlagBits( ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT+-- No documentation found for Chapter "AttachmentDescriptionFlagBits"+module Vulkan.Core10.Enums.AttachmentDescriptionFlagBits  ( AttachmentDescriptionFlags+                                                          , AttachmentDescriptionFlagBits( ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT                                                                                          , ..                                                                                          )-                                                          , AttachmentDescriptionFlags                                                           ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type AttachmentDescriptionFlags = AttachmentDescriptionFlagBits+ -- | VkAttachmentDescriptionFlagBits - Bitmask specifying additional -- properties of an attachment --@@ -34,18 +32,25 @@ -- aliases the same device memory as other attachments. pattern ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = AttachmentDescriptionFlagBits 0x00000001 -type AttachmentDescriptionFlags = AttachmentDescriptionFlagBits+conNameAttachmentDescriptionFlagBits :: String+conNameAttachmentDescriptionFlagBits = "AttachmentDescriptionFlagBits" +enumPrefixAttachmentDescriptionFlagBits :: String+enumPrefixAttachmentDescriptionFlagBits = "ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"++showTableAttachmentDescriptionFlagBits :: [(AttachmentDescriptionFlagBits, String)]+showTableAttachmentDescriptionFlagBits = [(ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT, "")]+ instance Show AttachmentDescriptionFlagBits where-  showsPrec p = \case-    ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT -> showString "ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"-    AttachmentDescriptionFlagBits x -> showParen (p >= 11) (showString "AttachmentDescriptionFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixAttachmentDescriptionFlagBits+                            showTableAttachmentDescriptionFlagBits+                            conNameAttachmentDescriptionFlagBits+                            (\(AttachmentDescriptionFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read AttachmentDescriptionFlagBits where-  readPrec = parens (choose [("ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT", pure ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "AttachmentDescriptionFlagBits")-                       v <- step readPrec-                       pure (AttachmentDescriptionFlagBits v)))+  readPrec = enumReadPrec enumPrefixAttachmentDescriptionFlagBits+                          showTableAttachmentDescriptionFlagBits+                          conNameAttachmentDescriptionFlagBits+                          AttachmentDescriptionFlagBits 
src/Vulkan/Core10/Enums/AttachmentLoadOp.hs view
@@ -1,23 +1,18 @@ {-# language CPP #-}+-- No documentation found for Chapter "AttachmentLoadOp" module Vulkan.Core10.Enums.AttachmentLoadOp  (AttachmentLoadOp( ATTACHMENT_LOAD_OP_LOAD                                                               , ATTACHMENT_LOAD_OP_CLEAR                                                               , ATTACHMENT_LOAD_OP_DONT_CARE                                                               , ..                                                               )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkAttachmentLoadOp - Specify how contents of an attachment are treated -- at the beginning of a subpass@@ -35,7 +30,7 @@ -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT'. -- For attachments with a color format, this uses the access type -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_READ_BIT'.-pattern ATTACHMENT_LOAD_OP_LOAD = AttachmentLoadOp 0+pattern ATTACHMENT_LOAD_OP_LOAD      = AttachmentLoadOp 0 -- | 'ATTACHMENT_LOAD_OP_CLEAR' specifies that the contents within the render -- area will be cleared to a uniform value, which is specified when a -- render pass instance is begun. For attachments with a depth\/stencil@@ -43,7 +38,7 @@ -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'. -- For attachments with a color format, this uses the access type -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.-pattern ATTACHMENT_LOAD_OP_CLEAR = AttachmentLoadOp 1+pattern ATTACHMENT_LOAD_OP_CLEAR     = AttachmentLoadOp 1 -- | 'ATTACHMENT_LOAD_OP_DONT_CARE' specifies that the previous contents -- within the area need not be preserved; the contents of the attachment -- will be undefined inside the render area. For attachments with a@@ -56,20 +51,23 @@              ATTACHMENT_LOAD_OP_CLEAR,              ATTACHMENT_LOAD_OP_DONT_CARE :: AttachmentLoadOp #-} +conNameAttachmentLoadOp :: String+conNameAttachmentLoadOp = "AttachmentLoadOp"++enumPrefixAttachmentLoadOp :: String+enumPrefixAttachmentLoadOp = "ATTACHMENT_LOAD_OP_"++showTableAttachmentLoadOp :: [(AttachmentLoadOp, String)]+showTableAttachmentLoadOp =+  [(ATTACHMENT_LOAD_OP_LOAD, "LOAD"), (ATTACHMENT_LOAD_OP_CLEAR, "CLEAR"), (ATTACHMENT_LOAD_OP_DONT_CARE, "DONT_CARE")]+ instance Show AttachmentLoadOp where-  showsPrec p = \case-    ATTACHMENT_LOAD_OP_LOAD -> showString "ATTACHMENT_LOAD_OP_LOAD"-    ATTACHMENT_LOAD_OP_CLEAR -> showString "ATTACHMENT_LOAD_OP_CLEAR"-    ATTACHMENT_LOAD_OP_DONT_CARE -> showString "ATTACHMENT_LOAD_OP_DONT_CARE"-    AttachmentLoadOp x -> showParen (p >= 11) (showString "AttachmentLoadOp " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixAttachmentLoadOp+                            showTableAttachmentLoadOp+                            conNameAttachmentLoadOp+                            (\(AttachmentLoadOp x) -> x)+                            (showsPrec 11)  instance Read AttachmentLoadOp where-  readPrec = parens (choose [("ATTACHMENT_LOAD_OP_LOAD", pure ATTACHMENT_LOAD_OP_LOAD)-                            , ("ATTACHMENT_LOAD_OP_CLEAR", pure ATTACHMENT_LOAD_OP_CLEAR)-                            , ("ATTACHMENT_LOAD_OP_DONT_CARE", pure ATTACHMENT_LOAD_OP_DONT_CARE)]-                     +++-                     prec 10 (do-                       expectP (Ident "AttachmentLoadOp")-                       v <- step readPrec-                       pure (AttachmentLoadOp v)))+  readPrec = enumReadPrec enumPrefixAttachmentLoadOp showTableAttachmentLoadOp conNameAttachmentLoadOp AttachmentLoadOp 
src/Vulkan/Core10/Enums/AttachmentStoreOp.hs view
@@ -1,23 +1,18 @@ {-# language CPP #-}+-- No documentation found for Chapter "AttachmentStoreOp" module Vulkan.Core10.Enums.AttachmentStoreOp  (AttachmentStoreOp( ATTACHMENT_STORE_OP_STORE                                                                 , ATTACHMENT_STORE_OP_DONT_CARE                                                                 , ATTACHMENT_STORE_OP_NONE_QCOM                                                                 , ..                                                                 )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkAttachmentStoreOp - Specify how contents of an attachment are treated -- at the end of a subpass@@ -43,7 +38,7 @@ -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'. -- For attachments with a color format, this uses the access type -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.-pattern ATTACHMENT_STORE_OP_STORE = AttachmentStoreOp 0+pattern ATTACHMENT_STORE_OP_STORE     = AttachmentStoreOp 0 -- | 'ATTACHMENT_STORE_OP_DONT_CARE' specifies the contents within the render -- area are not needed after rendering, and /may/ be discarded; the -- contents of the attachment will be undefined inside the render area. For@@ -61,20 +56,27 @@              ATTACHMENT_STORE_OP_DONT_CARE,              ATTACHMENT_STORE_OP_NONE_QCOM :: AttachmentStoreOp #-} +conNameAttachmentStoreOp :: String+conNameAttachmentStoreOp = "AttachmentStoreOp"++enumPrefixAttachmentStoreOp :: String+enumPrefixAttachmentStoreOp = "ATTACHMENT_STORE_OP_"++showTableAttachmentStoreOp :: [(AttachmentStoreOp, String)]+showTableAttachmentStoreOp =+  [ (ATTACHMENT_STORE_OP_STORE    , "STORE")+  , (ATTACHMENT_STORE_OP_DONT_CARE, "DONT_CARE")+  , (ATTACHMENT_STORE_OP_NONE_QCOM, "NONE_QCOM")+  ]+ instance Show AttachmentStoreOp where-  showsPrec p = \case-    ATTACHMENT_STORE_OP_STORE -> showString "ATTACHMENT_STORE_OP_STORE"-    ATTACHMENT_STORE_OP_DONT_CARE -> showString "ATTACHMENT_STORE_OP_DONT_CARE"-    ATTACHMENT_STORE_OP_NONE_QCOM -> showString "ATTACHMENT_STORE_OP_NONE_QCOM"-    AttachmentStoreOp x -> showParen (p >= 11) (showString "AttachmentStoreOp " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixAttachmentStoreOp+                            showTableAttachmentStoreOp+                            conNameAttachmentStoreOp+                            (\(AttachmentStoreOp x) -> x)+                            (showsPrec 11)  instance Read AttachmentStoreOp where-  readPrec = parens (choose [("ATTACHMENT_STORE_OP_STORE", pure ATTACHMENT_STORE_OP_STORE)-                            , ("ATTACHMENT_STORE_OP_DONT_CARE", pure ATTACHMENT_STORE_OP_DONT_CARE)-                            , ("ATTACHMENT_STORE_OP_NONE_QCOM", pure ATTACHMENT_STORE_OP_NONE_QCOM)]-                     +++-                     prec 10 (do-                       expectP (Ident "AttachmentStoreOp")-                       v <- step readPrec-                       pure (AttachmentStoreOp v)))+  readPrec =+    enumReadPrec enumPrefixAttachmentStoreOp showTableAttachmentStoreOp conNameAttachmentStoreOp AttachmentStoreOp 
src/Vulkan/Core10/Enums/BlendFactor.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "BlendFactor" module Vulkan.Core10.Enums.BlendFactor  (BlendFactor( BLEND_FACTOR_ZERO                                                     , BLEND_FACTOR_ONE                                                     , BLEND_FACTOR_SRC_COLOR@@ -21,19 +22,13 @@                                                     , ..                                                     )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkBlendFactor - Framebuffer blending factors --@@ -115,43 +110,43 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ZERO"-pattern BLEND_FACTOR_ZERO = BlendFactor 0+pattern BLEND_FACTOR_ZERO                     = BlendFactor 0 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE"-pattern BLEND_FACTOR_ONE = BlendFactor 1+pattern BLEND_FACTOR_ONE                      = BlendFactor 1 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_COLOR"-pattern BLEND_FACTOR_SRC_COLOR = BlendFactor 2+pattern BLEND_FACTOR_SRC_COLOR                = BlendFactor 2 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"-pattern BLEND_FACTOR_ONE_MINUS_SRC_COLOR = BlendFactor 3+pattern BLEND_FACTOR_ONE_MINUS_SRC_COLOR      = BlendFactor 3 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_DST_COLOR"-pattern BLEND_FACTOR_DST_COLOR = BlendFactor 4+pattern BLEND_FACTOR_DST_COLOR                = BlendFactor 4 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"-pattern BLEND_FACTOR_ONE_MINUS_DST_COLOR = BlendFactor 5+pattern BLEND_FACTOR_ONE_MINUS_DST_COLOR      = BlendFactor 5 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_ALPHA"-pattern BLEND_FACTOR_SRC_ALPHA = BlendFactor 6+pattern BLEND_FACTOR_SRC_ALPHA                = BlendFactor 6 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"-pattern BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = BlendFactor 7+pattern BLEND_FACTOR_ONE_MINUS_SRC_ALPHA      = BlendFactor 7 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_DST_ALPHA"-pattern BLEND_FACTOR_DST_ALPHA = BlendFactor 8+pattern BLEND_FACTOR_DST_ALPHA                = BlendFactor 8 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"-pattern BLEND_FACTOR_ONE_MINUS_DST_ALPHA = BlendFactor 9+pattern BLEND_FACTOR_ONE_MINUS_DST_ALPHA      = BlendFactor 9 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_CONSTANT_COLOR"-pattern BLEND_FACTOR_CONSTANT_COLOR = BlendFactor 10+pattern BLEND_FACTOR_CONSTANT_COLOR           = BlendFactor 10 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR" pattern BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = BlendFactor 11 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_CONSTANT_ALPHA"-pattern BLEND_FACTOR_CONSTANT_ALPHA = BlendFactor 12+pattern BLEND_FACTOR_CONSTANT_ALPHA           = BlendFactor 12 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA" pattern BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = BlendFactor 13 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"-pattern BLEND_FACTOR_SRC_ALPHA_SATURATE = BlendFactor 14+pattern BLEND_FACTOR_SRC_ALPHA_SATURATE       = BlendFactor 14 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC1_COLOR"-pattern BLEND_FACTOR_SRC1_COLOR = BlendFactor 15+pattern BLEND_FACTOR_SRC1_COLOR               = BlendFactor 15 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"-pattern BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = BlendFactor 16+pattern BLEND_FACTOR_ONE_MINUS_SRC1_COLOR     = BlendFactor 16 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC1_ALPHA"-pattern BLEND_FACTOR_SRC1_ALPHA = BlendFactor 17+pattern BLEND_FACTOR_SRC1_ALPHA               = BlendFactor 17 -- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"-pattern BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = BlendFactor 18+pattern BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA     = BlendFactor 18 {-# complete BLEND_FACTOR_ZERO,              BLEND_FACTOR_ONE,              BLEND_FACTOR_SRC_COLOR,@@ -172,52 +167,39 @@              BLEND_FACTOR_SRC1_ALPHA,              BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA :: BlendFactor #-} +conNameBlendFactor :: String+conNameBlendFactor = "BlendFactor"++enumPrefixBlendFactor :: String+enumPrefixBlendFactor = "BLEND_FACTOR_"++showTableBlendFactor :: [(BlendFactor, String)]+showTableBlendFactor =+  [ (BLEND_FACTOR_ZERO                    , "ZERO")+  , (BLEND_FACTOR_ONE                     , "ONE")+  , (BLEND_FACTOR_SRC_COLOR               , "SRC_COLOR")+  , (BLEND_FACTOR_ONE_MINUS_SRC_COLOR     , "ONE_MINUS_SRC_COLOR")+  , (BLEND_FACTOR_DST_COLOR               , "DST_COLOR")+  , (BLEND_FACTOR_ONE_MINUS_DST_COLOR     , "ONE_MINUS_DST_COLOR")+  , (BLEND_FACTOR_SRC_ALPHA               , "SRC_ALPHA")+  , (BLEND_FACTOR_ONE_MINUS_SRC_ALPHA     , "ONE_MINUS_SRC_ALPHA")+  , (BLEND_FACTOR_DST_ALPHA               , "DST_ALPHA")+  , (BLEND_FACTOR_ONE_MINUS_DST_ALPHA     , "ONE_MINUS_DST_ALPHA")+  , (BLEND_FACTOR_CONSTANT_COLOR          , "CONSTANT_COLOR")+  , (BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR, "ONE_MINUS_CONSTANT_COLOR")+  , (BLEND_FACTOR_CONSTANT_ALPHA          , "CONSTANT_ALPHA")+  , (BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA, "ONE_MINUS_CONSTANT_ALPHA")+  , (BLEND_FACTOR_SRC_ALPHA_SATURATE      , "SRC_ALPHA_SATURATE")+  , (BLEND_FACTOR_SRC1_COLOR              , "SRC1_COLOR")+  , (BLEND_FACTOR_ONE_MINUS_SRC1_COLOR    , "ONE_MINUS_SRC1_COLOR")+  , (BLEND_FACTOR_SRC1_ALPHA              , "SRC1_ALPHA")+  , (BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA    , "ONE_MINUS_SRC1_ALPHA")+  ]+ instance Show BlendFactor where-  showsPrec p = \case-    BLEND_FACTOR_ZERO -> showString "BLEND_FACTOR_ZERO"-    BLEND_FACTOR_ONE -> showString "BLEND_FACTOR_ONE"-    BLEND_FACTOR_SRC_COLOR -> showString "BLEND_FACTOR_SRC_COLOR"-    BLEND_FACTOR_ONE_MINUS_SRC_COLOR -> showString "BLEND_FACTOR_ONE_MINUS_SRC_COLOR"-    BLEND_FACTOR_DST_COLOR -> showString "BLEND_FACTOR_DST_COLOR"-    BLEND_FACTOR_ONE_MINUS_DST_COLOR -> showString "BLEND_FACTOR_ONE_MINUS_DST_COLOR"-    BLEND_FACTOR_SRC_ALPHA -> showString "BLEND_FACTOR_SRC_ALPHA"-    BLEND_FACTOR_ONE_MINUS_SRC_ALPHA -> showString "BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"-    BLEND_FACTOR_DST_ALPHA -> showString "BLEND_FACTOR_DST_ALPHA"-    BLEND_FACTOR_ONE_MINUS_DST_ALPHA -> showString "BLEND_FACTOR_ONE_MINUS_DST_ALPHA"-    BLEND_FACTOR_CONSTANT_COLOR -> showString "BLEND_FACTOR_CONSTANT_COLOR"-    BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR -> showString "BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"-    BLEND_FACTOR_CONSTANT_ALPHA -> showString "BLEND_FACTOR_CONSTANT_ALPHA"-    BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA -> showString "BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"-    BLEND_FACTOR_SRC_ALPHA_SATURATE -> showString "BLEND_FACTOR_SRC_ALPHA_SATURATE"-    BLEND_FACTOR_SRC1_COLOR -> showString "BLEND_FACTOR_SRC1_COLOR"-    BLEND_FACTOR_ONE_MINUS_SRC1_COLOR -> showString "BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"-    BLEND_FACTOR_SRC1_ALPHA -> showString "BLEND_FACTOR_SRC1_ALPHA"-    BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA -> showString "BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"-    BlendFactor x -> showParen (p >= 11) (showString "BlendFactor " . showsPrec 11 x)+  showsPrec =+    enumShowsPrec enumPrefixBlendFactor showTableBlendFactor conNameBlendFactor (\(BlendFactor x) -> x) (showsPrec 11)  instance Read BlendFactor where-  readPrec = parens (choose [("BLEND_FACTOR_ZERO", pure BLEND_FACTOR_ZERO)-                            , ("BLEND_FACTOR_ONE", pure BLEND_FACTOR_ONE)-                            , ("BLEND_FACTOR_SRC_COLOR", pure BLEND_FACTOR_SRC_COLOR)-                            , ("BLEND_FACTOR_ONE_MINUS_SRC_COLOR", pure BLEND_FACTOR_ONE_MINUS_SRC_COLOR)-                            , ("BLEND_FACTOR_DST_COLOR", pure BLEND_FACTOR_DST_COLOR)-                            , ("BLEND_FACTOR_ONE_MINUS_DST_COLOR", pure BLEND_FACTOR_ONE_MINUS_DST_COLOR)-                            , ("BLEND_FACTOR_SRC_ALPHA", pure BLEND_FACTOR_SRC_ALPHA)-                            , ("BLEND_FACTOR_ONE_MINUS_SRC_ALPHA", pure BLEND_FACTOR_ONE_MINUS_SRC_ALPHA)-                            , ("BLEND_FACTOR_DST_ALPHA", pure BLEND_FACTOR_DST_ALPHA)-                            , ("BLEND_FACTOR_ONE_MINUS_DST_ALPHA", pure BLEND_FACTOR_ONE_MINUS_DST_ALPHA)-                            , ("BLEND_FACTOR_CONSTANT_COLOR", pure BLEND_FACTOR_CONSTANT_COLOR)-                            , ("BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR", pure BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR)-                            , ("BLEND_FACTOR_CONSTANT_ALPHA", pure BLEND_FACTOR_CONSTANT_ALPHA)-                            , ("BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA", pure BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA)-                            , ("BLEND_FACTOR_SRC_ALPHA_SATURATE", pure BLEND_FACTOR_SRC_ALPHA_SATURATE)-                            , ("BLEND_FACTOR_SRC1_COLOR", pure BLEND_FACTOR_SRC1_COLOR)-                            , ("BLEND_FACTOR_ONE_MINUS_SRC1_COLOR", pure BLEND_FACTOR_ONE_MINUS_SRC1_COLOR)-                            , ("BLEND_FACTOR_SRC1_ALPHA", pure BLEND_FACTOR_SRC1_ALPHA)-                            , ("BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA", pure BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA)]-                     +++-                     prec 10 (do-                       expectP (Ident "BlendFactor")-                       v <- step readPrec-                       pure (BlendFactor v)))+  readPrec = enumReadPrec enumPrefixBlendFactor showTableBlendFactor conNameBlendFactor BlendFactor 
src/Vulkan/Core10/Enums/BlendOp.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "BlendOp" module Vulkan.Core10.Enums.BlendOp  (BlendOp( BLEND_OP_ADD                                             , BLEND_OP_SUBTRACT                                             , BLEND_OP_REVERSE_SUBTRACT@@ -53,19 +54,13 @@                                             , ..                                             )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkBlendOp - Framebuffer blending operations --@@ -142,107 +137,107 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_ADD"-pattern BLEND_OP_ADD = BlendOp 0+pattern BLEND_OP_ADD                    = BlendOp 0 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SUBTRACT"-pattern BLEND_OP_SUBTRACT = BlendOp 1+pattern BLEND_OP_SUBTRACT               = BlendOp 1 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_REVERSE_SUBTRACT"-pattern BLEND_OP_REVERSE_SUBTRACT = BlendOp 2+pattern BLEND_OP_REVERSE_SUBTRACT       = BlendOp 2 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MIN"-pattern BLEND_OP_MIN = BlendOp 3+pattern BLEND_OP_MIN                    = BlendOp 3 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MAX"-pattern BLEND_OP_MAX = BlendOp 4+pattern BLEND_OP_MAX                    = BlendOp 4 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_BLUE_EXT"-pattern BLEND_OP_BLUE_EXT = BlendOp 1000148045+pattern BLEND_OP_BLUE_EXT               = BlendOp 1000148045 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_GREEN_EXT"-pattern BLEND_OP_GREEN_EXT = BlendOp 1000148044+pattern BLEND_OP_GREEN_EXT              = BlendOp 1000148044 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_RED_EXT"-pattern BLEND_OP_RED_EXT = BlendOp 1000148043+pattern BLEND_OP_RED_EXT                = BlendOp 1000148043 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_INVERT_OVG_EXT"-pattern BLEND_OP_INVERT_OVG_EXT = BlendOp 1000148042+pattern BLEND_OP_INVERT_OVG_EXT         = BlendOp 1000148042 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_CONTRAST_EXT"-pattern BLEND_OP_CONTRAST_EXT = BlendOp 1000148041+pattern BLEND_OP_CONTRAST_EXT           = BlendOp 1000148041 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MINUS_CLAMPED_EXT"-pattern BLEND_OP_MINUS_CLAMPED_EXT = BlendOp 1000148040+pattern BLEND_OP_MINUS_CLAMPED_EXT      = BlendOp 1000148040 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MINUS_EXT"-pattern BLEND_OP_MINUS_EXT = BlendOp 1000148039+pattern BLEND_OP_MINUS_EXT              = BlendOp 1000148039 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_DARKER_EXT"-pattern BLEND_OP_PLUS_DARKER_EXT = BlendOp 1000148038+pattern BLEND_OP_PLUS_DARKER_EXT        = BlendOp 1000148038 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT" pattern BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = BlendOp 1000148037 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_CLAMPED_EXT"-pattern BLEND_OP_PLUS_CLAMPED_EXT = BlendOp 1000148036+pattern BLEND_OP_PLUS_CLAMPED_EXT       = BlendOp 1000148036 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_EXT"-pattern BLEND_OP_PLUS_EXT = BlendOp 1000148035+pattern BLEND_OP_PLUS_EXT               = BlendOp 1000148035 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_LUMINOSITY_EXT"-pattern BLEND_OP_HSL_LUMINOSITY_EXT = BlendOp 1000148034+pattern BLEND_OP_HSL_LUMINOSITY_EXT     = BlendOp 1000148034 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_COLOR_EXT"-pattern BLEND_OP_HSL_COLOR_EXT = BlendOp 1000148033+pattern BLEND_OP_HSL_COLOR_EXT          = BlendOp 1000148033 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_SATURATION_EXT"-pattern BLEND_OP_HSL_SATURATION_EXT = BlendOp 1000148032+pattern BLEND_OP_HSL_SATURATION_EXT     = BlendOp 1000148032 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_HUE_EXT"-pattern BLEND_OP_HSL_HUE_EXT = BlendOp 1000148031+pattern BLEND_OP_HSL_HUE_EXT            = BlendOp 1000148031 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HARDMIX_EXT"-pattern BLEND_OP_HARDMIX_EXT = BlendOp 1000148030+pattern BLEND_OP_HARDMIX_EXT            = BlendOp 1000148030 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PINLIGHT_EXT"-pattern BLEND_OP_PINLIGHT_EXT = BlendOp 1000148029+pattern BLEND_OP_PINLIGHT_EXT           = BlendOp 1000148029 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LINEARLIGHT_EXT"-pattern BLEND_OP_LINEARLIGHT_EXT = BlendOp 1000148028+pattern BLEND_OP_LINEARLIGHT_EXT        = BlendOp 1000148028 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_VIVIDLIGHT_EXT"-pattern BLEND_OP_VIVIDLIGHT_EXT = BlendOp 1000148027+pattern BLEND_OP_VIVIDLIGHT_EXT         = BlendOp 1000148027 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LINEARBURN_EXT"-pattern BLEND_OP_LINEARBURN_EXT = BlendOp 1000148026+pattern BLEND_OP_LINEARBURN_EXT         = BlendOp 1000148026 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LINEARDODGE_EXT"-pattern BLEND_OP_LINEARDODGE_EXT = BlendOp 1000148025+pattern BLEND_OP_LINEARDODGE_EXT        = BlendOp 1000148025 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_INVERT_RGB_EXT"-pattern BLEND_OP_INVERT_RGB_EXT = BlendOp 1000148024+pattern BLEND_OP_INVERT_RGB_EXT         = BlendOp 1000148024 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_INVERT_EXT"-pattern BLEND_OP_INVERT_EXT = BlendOp 1000148023+pattern BLEND_OP_INVERT_EXT             = BlendOp 1000148023 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_EXCLUSION_EXT"-pattern BLEND_OP_EXCLUSION_EXT = BlendOp 1000148022+pattern BLEND_OP_EXCLUSION_EXT          = BlendOp 1000148022 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DIFFERENCE_EXT"-pattern BLEND_OP_DIFFERENCE_EXT = BlendOp 1000148021+pattern BLEND_OP_DIFFERENCE_EXT         = BlendOp 1000148021 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SOFTLIGHT_EXT"-pattern BLEND_OP_SOFTLIGHT_EXT = BlendOp 1000148020+pattern BLEND_OP_SOFTLIGHT_EXT          = BlendOp 1000148020 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HARDLIGHT_EXT"-pattern BLEND_OP_HARDLIGHT_EXT = BlendOp 1000148019+pattern BLEND_OP_HARDLIGHT_EXT          = BlendOp 1000148019 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_COLORBURN_EXT"-pattern BLEND_OP_COLORBURN_EXT = BlendOp 1000148018+pattern BLEND_OP_COLORBURN_EXT          = BlendOp 1000148018 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_COLORDODGE_EXT"-pattern BLEND_OP_COLORDODGE_EXT = BlendOp 1000148017+pattern BLEND_OP_COLORDODGE_EXT         = BlendOp 1000148017 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LIGHTEN_EXT"-pattern BLEND_OP_LIGHTEN_EXT = BlendOp 1000148016+pattern BLEND_OP_LIGHTEN_EXT            = BlendOp 1000148016 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DARKEN_EXT"-pattern BLEND_OP_DARKEN_EXT = BlendOp 1000148015+pattern BLEND_OP_DARKEN_EXT             = BlendOp 1000148015 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_OVERLAY_EXT"-pattern BLEND_OP_OVERLAY_EXT = BlendOp 1000148014+pattern BLEND_OP_OVERLAY_EXT            = BlendOp 1000148014 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SCREEN_EXT"-pattern BLEND_OP_SCREEN_EXT = BlendOp 1000148013+pattern BLEND_OP_SCREEN_EXT             = BlendOp 1000148013 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MULTIPLY_EXT"-pattern BLEND_OP_MULTIPLY_EXT = BlendOp 1000148012+pattern BLEND_OP_MULTIPLY_EXT           = BlendOp 1000148012 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_XOR_EXT"-pattern BLEND_OP_XOR_EXT = BlendOp 1000148011+pattern BLEND_OP_XOR_EXT                = BlendOp 1000148011 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_ATOP_EXT"-pattern BLEND_OP_DST_ATOP_EXT = BlendOp 1000148010+pattern BLEND_OP_DST_ATOP_EXT           = BlendOp 1000148010 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_ATOP_EXT"-pattern BLEND_OP_SRC_ATOP_EXT = BlendOp 1000148009+pattern BLEND_OP_SRC_ATOP_EXT           = BlendOp 1000148009 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_OUT_EXT"-pattern BLEND_OP_DST_OUT_EXT = BlendOp 1000148008+pattern BLEND_OP_DST_OUT_EXT            = BlendOp 1000148008 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_OUT_EXT"-pattern BLEND_OP_SRC_OUT_EXT = BlendOp 1000148007+pattern BLEND_OP_SRC_OUT_EXT            = BlendOp 1000148007 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_IN_EXT"-pattern BLEND_OP_DST_IN_EXT = BlendOp 1000148006+pattern BLEND_OP_DST_IN_EXT             = BlendOp 1000148006 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_IN_EXT"-pattern BLEND_OP_SRC_IN_EXT = BlendOp 1000148005+pattern BLEND_OP_SRC_IN_EXT             = BlendOp 1000148005 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_OVER_EXT"-pattern BLEND_OP_DST_OVER_EXT = BlendOp 1000148004+pattern BLEND_OP_DST_OVER_EXT           = BlendOp 1000148004 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_OVER_EXT"-pattern BLEND_OP_SRC_OVER_EXT = BlendOp 1000148003+pattern BLEND_OP_SRC_OVER_EXT           = BlendOp 1000148003 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_EXT"-pattern BLEND_OP_DST_EXT = BlendOp 1000148002+pattern BLEND_OP_DST_EXT                = BlendOp 1000148002 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_EXT"-pattern BLEND_OP_SRC_EXT = BlendOp 1000148001+pattern BLEND_OP_SRC_EXT                = BlendOp 1000148001 -- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_ZERO_EXT"-pattern BLEND_OP_ZERO_EXT = BlendOp 1000148000+pattern BLEND_OP_ZERO_EXT               = BlendOp 1000148000 {-# complete BLEND_OP_ADD,              BLEND_OP_SUBTRACT,              BLEND_OP_REVERSE_SUBTRACT,@@ -295,116 +290,70 @@              BLEND_OP_SRC_EXT,              BLEND_OP_ZERO_EXT :: BlendOp #-} +conNameBlendOp :: String+conNameBlendOp = "BlendOp"++enumPrefixBlendOp :: String+enumPrefixBlendOp = "BLEND_OP_"++showTableBlendOp :: [(BlendOp, String)]+showTableBlendOp =+  [ (BLEND_OP_ADD                   , "ADD")+  , (BLEND_OP_SUBTRACT              , "SUBTRACT")+  , (BLEND_OP_REVERSE_SUBTRACT      , "REVERSE_SUBTRACT")+  , (BLEND_OP_MIN                   , "MIN")+  , (BLEND_OP_MAX                   , "MAX")+  , (BLEND_OP_BLUE_EXT              , "BLUE_EXT")+  , (BLEND_OP_GREEN_EXT             , "GREEN_EXT")+  , (BLEND_OP_RED_EXT               , "RED_EXT")+  , (BLEND_OP_INVERT_OVG_EXT        , "INVERT_OVG_EXT")+  , (BLEND_OP_CONTRAST_EXT          , "CONTRAST_EXT")+  , (BLEND_OP_MINUS_CLAMPED_EXT     , "MINUS_CLAMPED_EXT")+  , (BLEND_OP_MINUS_EXT             , "MINUS_EXT")+  , (BLEND_OP_PLUS_DARKER_EXT       , "PLUS_DARKER_EXT")+  , (BLEND_OP_PLUS_CLAMPED_ALPHA_EXT, "PLUS_CLAMPED_ALPHA_EXT")+  , (BLEND_OP_PLUS_CLAMPED_EXT      , "PLUS_CLAMPED_EXT")+  , (BLEND_OP_PLUS_EXT              , "PLUS_EXT")+  , (BLEND_OP_HSL_LUMINOSITY_EXT    , "HSL_LUMINOSITY_EXT")+  , (BLEND_OP_HSL_COLOR_EXT         , "HSL_COLOR_EXT")+  , (BLEND_OP_HSL_SATURATION_EXT    , "HSL_SATURATION_EXT")+  , (BLEND_OP_HSL_HUE_EXT           , "HSL_HUE_EXT")+  , (BLEND_OP_HARDMIX_EXT           , "HARDMIX_EXT")+  , (BLEND_OP_PINLIGHT_EXT          , "PINLIGHT_EXT")+  , (BLEND_OP_LINEARLIGHT_EXT       , "LINEARLIGHT_EXT")+  , (BLEND_OP_VIVIDLIGHT_EXT        , "VIVIDLIGHT_EXT")+  , (BLEND_OP_LINEARBURN_EXT        , "LINEARBURN_EXT")+  , (BLEND_OP_LINEARDODGE_EXT       , "LINEARDODGE_EXT")+  , (BLEND_OP_INVERT_RGB_EXT        , "INVERT_RGB_EXT")+  , (BLEND_OP_INVERT_EXT            , "INVERT_EXT")+  , (BLEND_OP_EXCLUSION_EXT         , "EXCLUSION_EXT")+  , (BLEND_OP_DIFFERENCE_EXT        , "DIFFERENCE_EXT")+  , (BLEND_OP_SOFTLIGHT_EXT         , "SOFTLIGHT_EXT")+  , (BLEND_OP_HARDLIGHT_EXT         , "HARDLIGHT_EXT")+  , (BLEND_OP_COLORBURN_EXT         , "COLORBURN_EXT")+  , (BLEND_OP_COLORDODGE_EXT        , "COLORDODGE_EXT")+  , (BLEND_OP_LIGHTEN_EXT           , "LIGHTEN_EXT")+  , (BLEND_OP_DARKEN_EXT            , "DARKEN_EXT")+  , (BLEND_OP_OVERLAY_EXT           , "OVERLAY_EXT")+  , (BLEND_OP_SCREEN_EXT            , "SCREEN_EXT")+  , (BLEND_OP_MULTIPLY_EXT          , "MULTIPLY_EXT")+  , (BLEND_OP_XOR_EXT               , "XOR_EXT")+  , (BLEND_OP_DST_ATOP_EXT          , "DST_ATOP_EXT")+  , (BLEND_OP_SRC_ATOP_EXT          , "SRC_ATOP_EXT")+  , (BLEND_OP_DST_OUT_EXT           , "DST_OUT_EXT")+  , (BLEND_OP_SRC_OUT_EXT           , "SRC_OUT_EXT")+  , (BLEND_OP_DST_IN_EXT            , "DST_IN_EXT")+  , (BLEND_OP_SRC_IN_EXT            , "SRC_IN_EXT")+  , (BLEND_OP_DST_OVER_EXT          , "DST_OVER_EXT")+  , (BLEND_OP_SRC_OVER_EXT          , "SRC_OVER_EXT")+  , (BLEND_OP_DST_EXT               , "DST_EXT")+  , (BLEND_OP_SRC_EXT               , "SRC_EXT")+  , (BLEND_OP_ZERO_EXT              , "ZERO_EXT")+  ]+ instance Show BlendOp where-  showsPrec p = \case-    BLEND_OP_ADD -> showString "BLEND_OP_ADD"-    BLEND_OP_SUBTRACT -> showString "BLEND_OP_SUBTRACT"-    BLEND_OP_REVERSE_SUBTRACT -> showString "BLEND_OP_REVERSE_SUBTRACT"-    BLEND_OP_MIN -> showString "BLEND_OP_MIN"-    BLEND_OP_MAX -> showString "BLEND_OP_MAX"-    BLEND_OP_BLUE_EXT -> showString "BLEND_OP_BLUE_EXT"-    BLEND_OP_GREEN_EXT -> showString "BLEND_OP_GREEN_EXT"-    BLEND_OP_RED_EXT -> showString "BLEND_OP_RED_EXT"-    BLEND_OP_INVERT_OVG_EXT -> showString "BLEND_OP_INVERT_OVG_EXT"-    BLEND_OP_CONTRAST_EXT -> showString "BLEND_OP_CONTRAST_EXT"-    BLEND_OP_MINUS_CLAMPED_EXT -> showString "BLEND_OP_MINUS_CLAMPED_EXT"-    BLEND_OP_MINUS_EXT -> showString "BLEND_OP_MINUS_EXT"-    BLEND_OP_PLUS_DARKER_EXT -> showString "BLEND_OP_PLUS_DARKER_EXT"-    BLEND_OP_PLUS_CLAMPED_ALPHA_EXT -> showString "BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"-    BLEND_OP_PLUS_CLAMPED_EXT -> showString "BLEND_OP_PLUS_CLAMPED_EXT"-    BLEND_OP_PLUS_EXT -> showString "BLEND_OP_PLUS_EXT"-    BLEND_OP_HSL_LUMINOSITY_EXT -> showString "BLEND_OP_HSL_LUMINOSITY_EXT"-    BLEND_OP_HSL_COLOR_EXT -> showString "BLEND_OP_HSL_COLOR_EXT"-    BLEND_OP_HSL_SATURATION_EXT -> showString "BLEND_OP_HSL_SATURATION_EXT"-    BLEND_OP_HSL_HUE_EXT -> showString "BLEND_OP_HSL_HUE_EXT"-    BLEND_OP_HARDMIX_EXT -> showString "BLEND_OP_HARDMIX_EXT"-    BLEND_OP_PINLIGHT_EXT -> showString "BLEND_OP_PINLIGHT_EXT"-    BLEND_OP_LINEARLIGHT_EXT -> showString "BLEND_OP_LINEARLIGHT_EXT"-    BLEND_OP_VIVIDLIGHT_EXT -> showString "BLEND_OP_VIVIDLIGHT_EXT"-    BLEND_OP_LINEARBURN_EXT -> showString "BLEND_OP_LINEARBURN_EXT"-    BLEND_OP_LINEARDODGE_EXT -> showString "BLEND_OP_LINEARDODGE_EXT"-    BLEND_OP_INVERT_RGB_EXT -> showString "BLEND_OP_INVERT_RGB_EXT"-    BLEND_OP_INVERT_EXT -> showString "BLEND_OP_INVERT_EXT"-    BLEND_OP_EXCLUSION_EXT -> showString "BLEND_OP_EXCLUSION_EXT"-    BLEND_OP_DIFFERENCE_EXT -> showString "BLEND_OP_DIFFERENCE_EXT"-    BLEND_OP_SOFTLIGHT_EXT -> showString "BLEND_OP_SOFTLIGHT_EXT"-    BLEND_OP_HARDLIGHT_EXT -> showString "BLEND_OP_HARDLIGHT_EXT"-    BLEND_OP_COLORBURN_EXT -> showString "BLEND_OP_COLORBURN_EXT"-    BLEND_OP_COLORDODGE_EXT -> showString "BLEND_OP_COLORDODGE_EXT"-    BLEND_OP_LIGHTEN_EXT -> showString "BLEND_OP_LIGHTEN_EXT"-    BLEND_OP_DARKEN_EXT -> showString "BLEND_OP_DARKEN_EXT"-    BLEND_OP_OVERLAY_EXT -> showString "BLEND_OP_OVERLAY_EXT"-    BLEND_OP_SCREEN_EXT -> showString "BLEND_OP_SCREEN_EXT"-    BLEND_OP_MULTIPLY_EXT -> showString "BLEND_OP_MULTIPLY_EXT"-    BLEND_OP_XOR_EXT -> showString "BLEND_OP_XOR_EXT"-    BLEND_OP_DST_ATOP_EXT -> showString "BLEND_OP_DST_ATOP_EXT"-    BLEND_OP_SRC_ATOP_EXT -> showString "BLEND_OP_SRC_ATOP_EXT"-    BLEND_OP_DST_OUT_EXT -> showString "BLEND_OP_DST_OUT_EXT"-    BLEND_OP_SRC_OUT_EXT -> showString "BLEND_OP_SRC_OUT_EXT"-    BLEND_OP_DST_IN_EXT -> showString "BLEND_OP_DST_IN_EXT"-    BLEND_OP_SRC_IN_EXT -> showString "BLEND_OP_SRC_IN_EXT"-    BLEND_OP_DST_OVER_EXT -> showString "BLEND_OP_DST_OVER_EXT"-    BLEND_OP_SRC_OVER_EXT -> showString "BLEND_OP_SRC_OVER_EXT"-    BLEND_OP_DST_EXT -> showString "BLEND_OP_DST_EXT"-    BLEND_OP_SRC_EXT -> showString "BLEND_OP_SRC_EXT"-    BLEND_OP_ZERO_EXT -> showString "BLEND_OP_ZERO_EXT"-    BlendOp x -> showParen (p >= 11) (showString "BlendOp " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixBlendOp showTableBlendOp conNameBlendOp (\(BlendOp x) -> x) (showsPrec 11)  instance Read BlendOp where-  readPrec = parens (choose [("BLEND_OP_ADD", pure BLEND_OP_ADD)-                            , ("BLEND_OP_SUBTRACT", pure BLEND_OP_SUBTRACT)-                            , ("BLEND_OP_REVERSE_SUBTRACT", pure BLEND_OP_REVERSE_SUBTRACT)-                            , ("BLEND_OP_MIN", pure BLEND_OP_MIN)-                            , ("BLEND_OP_MAX", pure BLEND_OP_MAX)-                            , ("BLEND_OP_BLUE_EXT", pure BLEND_OP_BLUE_EXT)-                            , ("BLEND_OP_GREEN_EXT", pure BLEND_OP_GREEN_EXT)-                            , ("BLEND_OP_RED_EXT", pure BLEND_OP_RED_EXT)-                            , ("BLEND_OP_INVERT_OVG_EXT", pure BLEND_OP_INVERT_OVG_EXT)-                            , ("BLEND_OP_CONTRAST_EXT", pure BLEND_OP_CONTRAST_EXT)-                            , ("BLEND_OP_MINUS_CLAMPED_EXT", pure BLEND_OP_MINUS_CLAMPED_EXT)-                            , ("BLEND_OP_MINUS_EXT", pure BLEND_OP_MINUS_EXT)-                            , ("BLEND_OP_PLUS_DARKER_EXT", pure BLEND_OP_PLUS_DARKER_EXT)-                            , ("BLEND_OP_PLUS_CLAMPED_ALPHA_EXT", pure BLEND_OP_PLUS_CLAMPED_ALPHA_EXT)-                            , ("BLEND_OP_PLUS_CLAMPED_EXT", pure BLEND_OP_PLUS_CLAMPED_EXT)-                            , ("BLEND_OP_PLUS_EXT", pure BLEND_OP_PLUS_EXT)-                            , ("BLEND_OP_HSL_LUMINOSITY_EXT", pure BLEND_OP_HSL_LUMINOSITY_EXT)-                            , ("BLEND_OP_HSL_COLOR_EXT", pure BLEND_OP_HSL_COLOR_EXT)-                            , ("BLEND_OP_HSL_SATURATION_EXT", pure BLEND_OP_HSL_SATURATION_EXT)-                            , ("BLEND_OP_HSL_HUE_EXT", pure BLEND_OP_HSL_HUE_EXT)-                            , ("BLEND_OP_HARDMIX_EXT", pure BLEND_OP_HARDMIX_EXT)-                            , ("BLEND_OP_PINLIGHT_EXT", pure BLEND_OP_PINLIGHT_EXT)-                            , ("BLEND_OP_LINEARLIGHT_EXT", pure BLEND_OP_LINEARLIGHT_EXT)-                            , ("BLEND_OP_VIVIDLIGHT_EXT", pure BLEND_OP_VIVIDLIGHT_EXT)-                            , ("BLEND_OP_LINEARBURN_EXT", pure BLEND_OP_LINEARBURN_EXT)-                            , ("BLEND_OP_LINEARDODGE_EXT", pure BLEND_OP_LINEARDODGE_EXT)-                            , ("BLEND_OP_INVERT_RGB_EXT", pure BLEND_OP_INVERT_RGB_EXT)-                            , ("BLEND_OP_INVERT_EXT", pure BLEND_OP_INVERT_EXT)-                            , ("BLEND_OP_EXCLUSION_EXT", pure BLEND_OP_EXCLUSION_EXT)-                            , ("BLEND_OP_DIFFERENCE_EXT", pure BLEND_OP_DIFFERENCE_EXT)-                            , ("BLEND_OP_SOFTLIGHT_EXT", pure BLEND_OP_SOFTLIGHT_EXT)-                            , ("BLEND_OP_HARDLIGHT_EXT", pure BLEND_OP_HARDLIGHT_EXT)-                            , ("BLEND_OP_COLORBURN_EXT", pure BLEND_OP_COLORBURN_EXT)-                            , ("BLEND_OP_COLORDODGE_EXT", pure BLEND_OP_COLORDODGE_EXT)-                            , ("BLEND_OP_LIGHTEN_EXT", pure BLEND_OP_LIGHTEN_EXT)-                            , ("BLEND_OP_DARKEN_EXT", pure BLEND_OP_DARKEN_EXT)-                            , ("BLEND_OP_OVERLAY_EXT", pure BLEND_OP_OVERLAY_EXT)-                            , ("BLEND_OP_SCREEN_EXT", pure BLEND_OP_SCREEN_EXT)-                            , ("BLEND_OP_MULTIPLY_EXT", pure BLEND_OP_MULTIPLY_EXT)-                            , ("BLEND_OP_XOR_EXT", pure BLEND_OP_XOR_EXT)-                            , ("BLEND_OP_DST_ATOP_EXT", pure BLEND_OP_DST_ATOP_EXT)-                            , ("BLEND_OP_SRC_ATOP_EXT", pure BLEND_OP_SRC_ATOP_EXT)-                            , ("BLEND_OP_DST_OUT_EXT", pure BLEND_OP_DST_OUT_EXT)-                            , ("BLEND_OP_SRC_OUT_EXT", pure BLEND_OP_SRC_OUT_EXT)-                            , ("BLEND_OP_DST_IN_EXT", pure BLEND_OP_DST_IN_EXT)-                            , ("BLEND_OP_SRC_IN_EXT", pure BLEND_OP_SRC_IN_EXT)-                            , ("BLEND_OP_DST_OVER_EXT", pure BLEND_OP_DST_OVER_EXT)-                            , ("BLEND_OP_SRC_OVER_EXT", pure BLEND_OP_SRC_OVER_EXT)-                            , ("BLEND_OP_DST_EXT", pure BLEND_OP_DST_EXT)-                            , ("BLEND_OP_SRC_EXT", pure BLEND_OP_SRC_EXT)-                            , ("BLEND_OP_ZERO_EXT", pure BLEND_OP_ZERO_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "BlendOp")-                       v <- step readPrec-                       pure (BlendOp v)))+  readPrec = enumReadPrec enumPrefixBlendOp showTableBlendOp conNameBlendOp BlendOp 
src/Vulkan/Core10/Enums/BorderColor.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "BorderColor" module Vulkan.Core10.Enums.BorderColor  (BorderColor( BORDER_COLOR_FLOAT_TRANSPARENT_BLACK                                                     , BORDER_COLOR_INT_TRANSPARENT_BLACK                                                     , BORDER_COLOR_FLOAT_OPAQUE_BLACK@@ -10,19 +11,13 @@                                                     , ..                                                     )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkBorderColor - Specify border color used for texture lookups --@@ -42,31 +37,31 @@ pattern BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = BorderColor 0 -- | 'BORDER_COLOR_INT_TRANSPARENT_BLACK' specifies a transparent, integer -- format, black color.-pattern BORDER_COLOR_INT_TRANSPARENT_BLACK = BorderColor 1+pattern BORDER_COLOR_INT_TRANSPARENT_BLACK   = BorderColor 1 -- | 'BORDER_COLOR_FLOAT_OPAQUE_BLACK' specifies an opaque, floating-point -- format, black color.-pattern BORDER_COLOR_FLOAT_OPAQUE_BLACK = BorderColor 2+pattern BORDER_COLOR_FLOAT_OPAQUE_BLACK      = BorderColor 2 -- | 'BORDER_COLOR_INT_OPAQUE_BLACK' specifies an opaque, integer format, -- black color.-pattern BORDER_COLOR_INT_OPAQUE_BLACK = BorderColor 3+pattern BORDER_COLOR_INT_OPAQUE_BLACK        = BorderColor 3 -- | 'BORDER_COLOR_FLOAT_OPAQUE_WHITE' specifies an opaque, floating-point -- format, white color.-pattern BORDER_COLOR_FLOAT_OPAQUE_WHITE = BorderColor 4+pattern BORDER_COLOR_FLOAT_OPAQUE_WHITE      = BorderColor 4 -- | 'BORDER_COLOR_INT_OPAQUE_WHITE' specifies an opaque, integer format, -- white color.-pattern BORDER_COLOR_INT_OPAQUE_WHITE = BorderColor 5+pattern BORDER_COLOR_INT_OPAQUE_WHITE        = BorderColor 5 -- | 'BORDER_COLOR_INT_CUSTOM_EXT' indicates that a -- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT' -- structure is present in the -- 'Vulkan.Core10.Sampler.SamplerCreateInfo'::@pNext@ chain which contains -- the color data in integer format.-pattern BORDER_COLOR_INT_CUSTOM_EXT = BorderColor 1000287004+pattern BORDER_COLOR_INT_CUSTOM_EXT          = BorderColor 1000287004 -- | 'BORDER_COLOR_FLOAT_CUSTOM_EXT' indicates that a -- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT' -- structure is present in the -- 'Vulkan.Core10.Sampler.SamplerCreateInfo'::@pNext@ chain which contains -- the color data in floating-point format.-pattern BORDER_COLOR_FLOAT_CUSTOM_EXT = BorderColor 1000287003+pattern BORDER_COLOR_FLOAT_CUSTOM_EXT        = BorderColor 1000287003 {-# complete BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,              BORDER_COLOR_INT_TRANSPARENT_BLACK,              BORDER_COLOR_FLOAT_OPAQUE_BLACK,@@ -76,30 +71,28 @@              BORDER_COLOR_INT_CUSTOM_EXT,              BORDER_COLOR_FLOAT_CUSTOM_EXT :: BorderColor #-} +conNameBorderColor :: String+conNameBorderColor = "BorderColor"++enumPrefixBorderColor :: String+enumPrefixBorderColor = "BORDER_COLOR_"++showTableBorderColor :: [(BorderColor, String)]+showTableBorderColor =+  [ (BORDER_COLOR_FLOAT_TRANSPARENT_BLACK, "FLOAT_TRANSPARENT_BLACK")+  , (BORDER_COLOR_INT_TRANSPARENT_BLACK  , "INT_TRANSPARENT_BLACK")+  , (BORDER_COLOR_FLOAT_OPAQUE_BLACK     , "FLOAT_OPAQUE_BLACK")+  , (BORDER_COLOR_INT_OPAQUE_BLACK       , "INT_OPAQUE_BLACK")+  , (BORDER_COLOR_FLOAT_OPAQUE_WHITE     , "FLOAT_OPAQUE_WHITE")+  , (BORDER_COLOR_INT_OPAQUE_WHITE       , "INT_OPAQUE_WHITE")+  , (BORDER_COLOR_INT_CUSTOM_EXT         , "INT_CUSTOM_EXT")+  , (BORDER_COLOR_FLOAT_CUSTOM_EXT       , "FLOAT_CUSTOM_EXT")+  ]+ instance Show BorderColor where-  showsPrec p = \case-    BORDER_COLOR_FLOAT_TRANSPARENT_BLACK -> showString "BORDER_COLOR_FLOAT_TRANSPARENT_BLACK"-    BORDER_COLOR_INT_TRANSPARENT_BLACK -> showString "BORDER_COLOR_INT_TRANSPARENT_BLACK"-    BORDER_COLOR_FLOAT_OPAQUE_BLACK -> showString "BORDER_COLOR_FLOAT_OPAQUE_BLACK"-    BORDER_COLOR_INT_OPAQUE_BLACK -> showString "BORDER_COLOR_INT_OPAQUE_BLACK"-    BORDER_COLOR_FLOAT_OPAQUE_WHITE -> showString "BORDER_COLOR_FLOAT_OPAQUE_WHITE"-    BORDER_COLOR_INT_OPAQUE_WHITE -> showString "BORDER_COLOR_INT_OPAQUE_WHITE"-    BORDER_COLOR_INT_CUSTOM_EXT -> showString "BORDER_COLOR_INT_CUSTOM_EXT"-    BORDER_COLOR_FLOAT_CUSTOM_EXT -> showString "BORDER_COLOR_FLOAT_CUSTOM_EXT"-    BorderColor x -> showParen (p >= 11) (showString "BorderColor " . showsPrec 11 x)+  showsPrec =+    enumShowsPrec enumPrefixBorderColor showTableBorderColor conNameBorderColor (\(BorderColor x) -> x) (showsPrec 11)  instance Read BorderColor where-  readPrec = parens (choose [("BORDER_COLOR_FLOAT_TRANSPARENT_BLACK", pure BORDER_COLOR_FLOAT_TRANSPARENT_BLACK)-                            , ("BORDER_COLOR_INT_TRANSPARENT_BLACK", pure BORDER_COLOR_INT_TRANSPARENT_BLACK)-                            , ("BORDER_COLOR_FLOAT_OPAQUE_BLACK", pure BORDER_COLOR_FLOAT_OPAQUE_BLACK)-                            , ("BORDER_COLOR_INT_OPAQUE_BLACK", pure BORDER_COLOR_INT_OPAQUE_BLACK)-                            , ("BORDER_COLOR_FLOAT_OPAQUE_WHITE", pure BORDER_COLOR_FLOAT_OPAQUE_WHITE)-                            , ("BORDER_COLOR_INT_OPAQUE_WHITE", pure BORDER_COLOR_INT_OPAQUE_WHITE)-                            , ("BORDER_COLOR_INT_CUSTOM_EXT", pure BORDER_COLOR_INT_CUSTOM_EXT)-                            , ("BORDER_COLOR_FLOAT_CUSTOM_EXT", pure BORDER_COLOR_FLOAT_CUSTOM_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "BorderColor")-                       v <- step readPrec-                       pure (BorderColor v)))+  readPrec = enumReadPrec enumPrefixBorderColor showTableBorderColor conNameBorderColor BorderColor 
src/Vulkan/Core10/Enums/BufferCreateFlagBits.hs view
@@ -1,30 +1,28 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.BufferCreateFlagBits  ( BufferCreateFlagBits( BUFFER_CREATE_SPARSE_BINDING_BIT+-- No documentation found for Chapter "BufferCreateFlagBits"+module Vulkan.Core10.Enums.BufferCreateFlagBits  ( BufferCreateFlags+                                                 , BufferCreateFlagBits( BUFFER_CREATE_SPARSE_BINDING_BIT                                                                        , BUFFER_CREATE_SPARSE_RESIDENCY_BIT                                                                        , BUFFER_CREATE_SPARSE_ALIASED_BIT                                                                        , BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT                                                                        , BUFFER_CREATE_PROTECTED_BIT                                                                        , ..                                                                        )-                                                 , BufferCreateFlags                                                  ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type BufferCreateFlags = BufferCreateFlagBits+ -- | VkBufferCreateFlagBits - Bitmask specifying additional parameters of a -- buffer --@@ -44,18 +42,18 @@  -- | 'BUFFER_CREATE_SPARSE_BINDING_BIT' specifies that the buffer will be -- backed using sparse memory binding.-pattern BUFFER_CREATE_SPARSE_BINDING_BIT = BufferCreateFlagBits 0x00000001+pattern BUFFER_CREATE_SPARSE_BINDING_BIT                = BufferCreateFlagBits 0x00000001 -- | 'BUFFER_CREATE_SPARSE_RESIDENCY_BIT' specifies that the buffer /can/ be -- partially backed using sparse memory binding. Buffers created with this -- flag /must/ also be created with the 'BUFFER_CREATE_SPARSE_BINDING_BIT' -- flag.-pattern BUFFER_CREATE_SPARSE_RESIDENCY_BIT = BufferCreateFlagBits 0x00000002+pattern BUFFER_CREATE_SPARSE_RESIDENCY_BIT              = BufferCreateFlagBits 0x00000002 -- | 'BUFFER_CREATE_SPARSE_ALIASED_BIT' specifies that the buffer will be -- backed using sparse memory binding with memory ranges that might also -- simultaneously be backing another buffer (or another portion of the same -- buffer). Buffers created with this flag /must/ also be created with the -- 'BUFFER_CREATE_SPARSE_BINDING_BIT' flag.-pattern BUFFER_CREATE_SPARSE_ALIASED_BIT = BufferCreateFlagBits 0x00000004+pattern BUFFER_CREATE_SPARSE_ALIASED_BIT                = BufferCreateFlagBits 0x00000004 -- | 'BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT' specifies that the -- buffer’s address /can/ be saved and reused on a subsequent run (e.g. for -- trace capture and replay), see@@ -64,28 +62,33 @@ pattern BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = BufferCreateFlagBits 0x00000010 -- | 'BUFFER_CREATE_PROTECTED_BIT' specifies that the buffer is a protected -- buffer.-pattern BUFFER_CREATE_PROTECTED_BIT = BufferCreateFlagBits 0x00000008+pattern BUFFER_CREATE_PROTECTED_BIT                     = BufferCreateFlagBits 0x00000008 -type BufferCreateFlags = BufferCreateFlagBits+conNameBufferCreateFlagBits :: String+conNameBufferCreateFlagBits = "BufferCreateFlagBits" +enumPrefixBufferCreateFlagBits :: String+enumPrefixBufferCreateFlagBits = "BUFFER_CREATE_"++showTableBufferCreateFlagBits :: [(BufferCreateFlagBits, String)]+showTableBufferCreateFlagBits =+  [ (BUFFER_CREATE_SPARSE_BINDING_BIT               , "SPARSE_BINDING_BIT")+  , (BUFFER_CREATE_SPARSE_RESIDENCY_BIT             , "SPARSE_RESIDENCY_BIT")+  , (BUFFER_CREATE_SPARSE_ALIASED_BIT               , "SPARSE_ALIASED_BIT")+  , (BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, "DEVICE_ADDRESS_CAPTURE_REPLAY_BIT")+  , (BUFFER_CREATE_PROTECTED_BIT                    , "PROTECTED_BIT")+  ]+ instance Show BufferCreateFlagBits where-  showsPrec p = \case-    BUFFER_CREATE_SPARSE_BINDING_BIT -> showString "BUFFER_CREATE_SPARSE_BINDING_BIT"-    BUFFER_CREATE_SPARSE_RESIDENCY_BIT -> showString "BUFFER_CREATE_SPARSE_RESIDENCY_BIT"-    BUFFER_CREATE_SPARSE_ALIASED_BIT -> showString "BUFFER_CREATE_SPARSE_ALIASED_BIT"-    BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT -> showString "BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"-    BUFFER_CREATE_PROTECTED_BIT -> showString "BUFFER_CREATE_PROTECTED_BIT"-    BufferCreateFlagBits x -> showParen (p >= 11) (showString "BufferCreateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixBufferCreateFlagBits+                            showTableBufferCreateFlagBits+                            conNameBufferCreateFlagBits+                            (\(BufferCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read BufferCreateFlagBits where-  readPrec = parens (choose [("BUFFER_CREATE_SPARSE_BINDING_BIT", pure BUFFER_CREATE_SPARSE_BINDING_BIT)-                            , ("BUFFER_CREATE_SPARSE_RESIDENCY_BIT", pure BUFFER_CREATE_SPARSE_RESIDENCY_BIT)-                            , ("BUFFER_CREATE_SPARSE_ALIASED_BIT", pure BUFFER_CREATE_SPARSE_ALIASED_BIT)-                            , ("BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT", pure BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT)-                            , ("BUFFER_CREATE_PROTECTED_BIT", pure BUFFER_CREATE_PROTECTED_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "BufferCreateFlagBits")-                       v <- step readPrec-                       pure (BufferCreateFlagBits v)))+  readPrec = enumReadPrec enumPrefixBufferCreateFlagBits+                          showTableBufferCreateFlagBits+                          conNameBufferCreateFlagBits+                          BufferCreateFlagBits 
src/Vulkan/Core10/Enums/BufferUsageFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.BufferUsageFlagBits  ( BufferUsageFlagBits( BUFFER_USAGE_TRANSFER_SRC_BIT+-- No documentation found for Chapter "BufferUsageFlagBits"+module Vulkan.Core10.Enums.BufferUsageFlagBits  ( BufferUsageFlags+                                                , BufferUsageFlagBits( BUFFER_USAGE_TRANSFER_SRC_BIT                                                                      , BUFFER_USAGE_TRANSFER_DST_BIT                                                                      , BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT                                                                      , BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT@@ -8,32 +10,30 @@                                                                      , BUFFER_USAGE_INDEX_BUFFER_BIT                                                                      , BUFFER_USAGE_VERTEX_BUFFER_BIT                                                                      , BUFFER_USAGE_INDIRECT_BUFFER_BIT-                                                                     , BUFFER_USAGE_RAY_TRACING_BIT_KHR+                                                                     , BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR+                                                                     , BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR+                                                                     , BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR                                                                      , BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT                                                                      , BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT                                                                      , BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT                                                                      , BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT                                                                      , ..                                                                      )-                                                , BufferUsageFlags                                                 ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type BufferUsageFlags = BufferUsageFlagBits+ -- | VkBufferUsageFlagBits - Bitmask specifying allowed usage of a buffer -- -- = See Also@@ -45,42 +45,42 @@ -- | 'BUFFER_USAGE_TRANSFER_SRC_BIT' specifies that the buffer /can/ be used -- as the source of a /transfer command/ (see the definition of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer >).-pattern BUFFER_USAGE_TRANSFER_SRC_BIT = BufferUsageFlagBits 0x00000001+pattern BUFFER_USAGE_TRANSFER_SRC_BIT                          = BufferUsageFlagBits 0x00000001 -- | 'BUFFER_USAGE_TRANSFER_DST_BIT' specifies that the buffer /can/ be used -- as the destination of a transfer command.-pattern BUFFER_USAGE_TRANSFER_DST_BIT = BufferUsageFlagBits 0x00000002+pattern BUFFER_USAGE_TRANSFER_DST_BIT                          = BufferUsageFlagBits 0x00000002 -- | 'BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT' specifies that the buffer /can/ -- be used to create a 'Vulkan.Core10.Handles.BufferView' suitable for -- occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot of type -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'.-pattern BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = BufferUsageFlagBits 0x00000004+pattern BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT                  = BufferUsageFlagBits 0x00000004 -- | 'BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT' specifies that the buffer /can/ -- be used to create a 'Vulkan.Core10.Handles.BufferView' suitable for -- occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot of type -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'.-pattern BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = BufferUsageFlagBits 0x00000008+pattern BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT                  = BufferUsageFlagBits 0x00000008 -- | 'BUFFER_USAGE_UNIFORM_BUFFER_BIT' specifies that the buffer /can/ be -- used in a 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' suitable -- for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot either of -- type 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER' -- or -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'.-pattern BUFFER_USAGE_UNIFORM_BUFFER_BIT = BufferUsageFlagBits 0x00000010+pattern BUFFER_USAGE_UNIFORM_BUFFER_BIT                        = BufferUsageFlagBits 0x00000010 -- | 'BUFFER_USAGE_STORAGE_BUFFER_BIT' specifies that the buffer /can/ be -- used in a 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' suitable -- for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot either of -- type 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER' -- or -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'.-pattern BUFFER_USAGE_STORAGE_BUFFER_BIT = BufferUsageFlagBits 0x00000020+pattern BUFFER_USAGE_STORAGE_BUFFER_BIT                        = BufferUsageFlagBits 0x00000020 -- | 'BUFFER_USAGE_INDEX_BUFFER_BIT' specifies that the buffer is suitable -- for passing as the @buffer@ parameter to -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.-pattern BUFFER_USAGE_INDEX_BUFFER_BIT = BufferUsageFlagBits 0x00000040+pattern BUFFER_USAGE_INDEX_BUFFER_BIT                          = BufferUsageFlagBits 0x00000040 -- | 'BUFFER_USAGE_VERTEX_BUFFER_BIT' specifies that the buffer is suitable -- for passing as an element of the @pBuffers@ array to -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'.-pattern BUFFER_USAGE_VERTEX_BUFFER_BIT = BufferUsageFlagBits 0x00000080+pattern BUFFER_USAGE_VERTEX_BUFFER_BIT                         = BufferUsageFlagBits 0x00000080 -- | 'BUFFER_USAGE_INDIRECT_BUFFER_BIT' specifies that the buffer is suitable -- for passing as the @buffer@ parameter to -- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',@@ -93,15 +93,23 @@ -- or @sequencesCountBuffer@ or @sequencesIndexBuffer@ or -- @preprocessedBuffer@ member of -- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV'-pattern BUFFER_USAGE_INDIRECT_BUFFER_BIT = BufferUsageFlagBits 0x00000100--- | 'BUFFER_USAGE_RAY_TRACING_BIT_KHR' specifies that the buffer is suitable--- for use in 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysKHR' and--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureKHR'.-pattern BUFFER_USAGE_RAY_TRACING_BIT_KHR = BufferUsageFlagBits 0x00000400+pattern BUFFER_USAGE_INDIRECT_BUFFER_BIT                       = BufferUsageFlagBits 0x00000100+-- | 'BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR' specifies that the buffer is+-- suitable for use as a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-binding-table Shader Binding Table>.+pattern BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR              = BufferUsageFlagBits 0x00000400+-- | 'BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR' specifies that the+-- buffer is suitable for storage space for a+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR'.+pattern BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR    = BufferUsageFlagBits 0x00100000+-- | 'BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'+-- specifies that the buffer is suitable for use as a read-only input to an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-building acceleration structure build>.+pattern BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = BufferUsageFlagBits 0x00080000 -- | 'BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT' specifies that the buffer -- is suitable for passing as the @buffer@ parameter to -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.cmdBeginConditionalRenderingEXT'.-pattern BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = BufferUsageFlagBits 0x00000200+pattern BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT             = BufferUsageFlagBits 0x00000200 -- | 'BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT' specifies that -- the buffer is suitable for using as a counter buffer with -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT'@@ -112,51 +120,51 @@ -- buffer is suitable for using for binding as a transform feedback buffer -- with -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT'.-pattern BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = BufferUsageFlagBits 0x00000800+pattern BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT         = BufferUsageFlagBits 0x00000800 -- | 'BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT' specifies that the buffer /can/ -- be used to retrieve a buffer device address via -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress' -- and use that address to access the buffer’s memory from a shader.-pattern BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = BufferUsageFlagBits 0x00020000+pattern BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT                 = BufferUsageFlagBits 0x00020000 -type BufferUsageFlags = BufferUsageFlagBits+conNameBufferUsageFlagBits :: String+conNameBufferUsageFlagBits = "BufferUsageFlagBits" +enumPrefixBufferUsageFlagBits :: String+enumPrefixBufferUsageFlagBits = "BUFFER_USAGE_"++showTableBufferUsageFlagBits :: [(BufferUsageFlagBits, String)]+showTableBufferUsageFlagBits =+  [ (BUFFER_USAGE_TRANSFER_SRC_BIT                      , "TRANSFER_SRC_BIT")+  , (BUFFER_USAGE_TRANSFER_DST_BIT                      , "TRANSFER_DST_BIT")+  , (BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT              , "UNIFORM_TEXEL_BUFFER_BIT")+  , (BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT              , "STORAGE_TEXEL_BUFFER_BIT")+  , (BUFFER_USAGE_UNIFORM_BUFFER_BIT                    , "UNIFORM_BUFFER_BIT")+  , (BUFFER_USAGE_STORAGE_BUFFER_BIT                    , "STORAGE_BUFFER_BIT")+  , (BUFFER_USAGE_INDEX_BUFFER_BIT                      , "INDEX_BUFFER_BIT")+  , (BUFFER_USAGE_VERTEX_BUFFER_BIT                     , "VERTEX_BUFFER_BIT")+  , (BUFFER_USAGE_INDIRECT_BUFFER_BIT                   , "INDIRECT_BUFFER_BIT")+  , (BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR          , "SHADER_BINDING_TABLE_BIT_KHR")+  , (BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR, "ACCELERATION_STRUCTURE_STORAGE_BIT_KHR")+  , ( BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR+    , "ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR"+    )+  , (BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT            , "CONDITIONAL_RENDERING_BIT_EXT")+  , (BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT, "TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT")+  , (BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT        , "TRANSFORM_FEEDBACK_BUFFER_BIT_EXT")+  , (BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT                , "SHADER_DEVICE_ADDRESS_BIT")+  ]+ instance Show BufferUsageFlagBits where-  showsPrec p = \case-    BUFFER_USAGE_TRANSFER_SRC_BIT -> showString "BUFFER_USAGE_TRANSFER_SRC_BIT"-    BUFFER_USAGE_TRANSFER_DST_BIT -> showString "BUFFER_USAGE_TRANSFER_DST_BIT"-    BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT -> showString "BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"-    BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT -> showString "BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"-    BUFFER_USAGE_UNIFORM_BUFFER_BIT -> showString "BUFFER_USAGE_UNIFORM_BUFFER_BIT"-    BUFFER_USAGE_STORAGE_BUFFER_BIT -> showString "BUFFER_USAGE_STORAGE_BUFFER_BIT"-    BUFFER_USAGE_INDEX_BUFFER_BIT -> showString "BUFFER_USAGE_INDEX_BUFFER_BIT"-    BUFFER_USAGE_VERTEX_BUFFER_BIT -> showString "BUFFER_USAGE_VERTEX_BUFFER_BIT"-    BUFFER_USAGE_INDIRECT_BUFFER_BIT -> showString "BUFFER_USAGE_INDIRECT_BUFFER_BIT"-    BUFFER_USAGE_RAY_TRACING_BIT_KHR -> showString "BUFFER_USAGE_RAY_TRACING_BIT_KHR"-    BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT -> showString "BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"-    BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT -> showString "BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"-    BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT -> showString "BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"-    BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT -> showString "BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"-    BufferUsageFlagBits x -> showParen (p >= 11) (showString "BufferUsageFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixBufferUsageFlagBits+                            showTableBufferUsageFlagBits+                            conNameBufferUsageFlagBits+                            (\(BufferUsageFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read BufferUsageFlagBits where-  readPrec = parens (choose [("BUFFER_USAGE_TRANSFER_SRC_BIT", pure BUFFER_USAGE_TRANSFER_SRC_BIT)-                            , ("BUFFER_USAGE_TRANSFER_DST_BIT", pure BUFFER_USAGE_TRANSFER_DST_BIT)-                            , ("BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT", pure BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT)-                            , ("BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT", pure BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT)-                            , ("BUFFER_USAGE_UNIFORM_BUFFER_BIT", pure BUFFER_USAGE_UNIFORM_BUFFER_BIT)-                            , ("BUFFER_USAGE_STORAGE_BUFFER_BIT", pure BUFFER_USAGE_STORAGE_BUFFER_BIT)-                            , ("BUFFER_USAGE_INDEX_BUFFER_BIT", pure BUFFER_USAGE_INDEX_BUFFER_BIT)-                            , ("BUFFER_USAGE_VERTEX_BUFFER_BIT", pure BUFFER_USAGE_VERTEX_BUFFER_BIT)-                            , ("BUFFER_USAGE_INDIRECT_BUFFER_BIT", pure BUFFER_USAGE_INDIRECT_BUFFER_BIT)-                            , ("BUFFER_USAGE_RAY_TRACING_BIT_KHR", pure BUFFER_USAGE_RAY_TRACING_BIT_KHR)-                            , ("BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT", pure BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT)-                            , ("BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT", pure BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT)-                            , ("BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT", pure BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT)-                            , ("BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT", pure BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "BufferUsageFlagBits")-                       v <- step readPrec-                       pure (BufferUsageFlagBits v)))+  readPrec = enumReadPrec enumPrefixBufferUsageFlagBits+                          showTableBufferUsageFlagBits+                          conNameBufferUsageFlagBits+                          BufferUsageFlagBits 
src/Vulkan/Core10/Enums/BufferViewCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "BufferViewCreateFlags" module Vulkan.Core10.Enums.BufferViewCreateFlags  (BufferViewCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkBufferViewCreateFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNameBufferViewCreateFlags :: String+conNameBufferViewCreateFlags = "BufferViewCreateFlags"++enumPrefixBufferViewCreateFlags :: String+enumPrefixBufferViewCreateFlags = ""++showTableBufferViewCreateFlags :: [(BufferViewCreateFlags, String)]+showTableBufferViewCreateFlags = []+ instance Show BufferViewCreateFlags where-  showsPrec p = \case-    BufferViewCreateFlags x -> showParen (p >= 11) (showString "BufferViewCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixBufferViewCreateFlags+                            showTableBufferViewCreateFlags+                            conNameBufferViewCreateFlags+                            (\(BufferViewCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read BufferViewCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "BufferViewCreateFlags")-                       v <- step readPrec-                       pure (BufferViewCreateFlags v)))+  readPrec = enumReadPrec enumPrefixBufferViewCreateFlags+                          showTableBufferViewCreateFlags+                          conNameBufferViewCreateFlags+                          BufferViewCreateFlags 
src/Vulkan/Core10/Enums/ColorComponentFlagBits.hs view
@@ -1,29 +1,27 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.ColorComponentFlagBits  ( ColorComponentFlagBits( COLOR_COMPONENT_R_BIT+-- No documentation found for Chapter "ColorComponentFlagBits"+module Vulkan.Core10.Enums.ColorComponentFlagBits  ( ColorComponentFlags+                                                   , ColorComponentFlagBits( COLOR_COMPONENT_R_BIT                                                                            , COLOR_COMPONENT_G_BIT                                                                            , COLOR_COMPONENT_B_BIT                                                                            , COLOR_COMPONENT_A_BIT                                                                            , ..                                                                            )-                                                   , ColorComponentFlags                                                    ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type ColorComponentFlags = ColorComponentFlagBits+ -- | VkColorComponentFlagBits - Bitmask controlling which components are -- written to the framebuffer --@@ -55,24 +53,30 @@ -- memory is unmodified. pattern COLOR_COMPONENT_A_BIT = ColorComponentFlagBits 0x00000008 -type ColorComponentFlags = ColorComponentFlagBits+conNameColorComponentFlagBits :: String+conNameColorComponentFlagBits = "ColorComponentFlagBits" +enumPrefixColorComponentFlagBits :: String+enumPrefixColorComponentFlagBits = "COLOR_COMPONENT_"++showTableColorComponentFlagBits :: [(ColorComponentFlagBits, String)]+showTableColorComponentFlagBits =+  [ (COLOR_COMPONENT_R_BIT, "R_BIT")+  , (COLOR_COMPONENT_G_BIT, "G_BIT")+  , (COLOR_COMPONENT_B_BIT, "B_BIT")+  , (COLOR_COMPONENT_A_BIT, "A_BIT")+  ]+ instance Show ColorComponentFlagBits where-  showsPrec p = \case-    COLOR_COMPONENT_R_BIT -> showString "COLOR_COMPONENT_R_BIT"-    COLOR_COMPONENT_G_BIT -> showString "COLOR_COMPONENT_G_BIT"-    COLOR_COMPONENT_B_BIT -> showString "COLOR_COMPONENT_B_BIT"-    COLOR_COMPONENT_A_BIT -> showString "COLOR_COMPONENT_A_BIT"-    ColorComponentFlagBits x -> showParen (p >= 11) (showString "ColorComponentFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixColorComponentFlagBits+                            showTableColorComponentFlagBits+                            conNameColorComponentFlagBits+                            (\(ColorComponentFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ColorComponentFlagBits where-  readPrec = parens (choose [("COLOR_COMPONENT_R_BIT", pure COLOR_COMPONENT_R_BIT)-                            , ("COLOR_COMPONENT_G_BIT", pure COLOR_COMPONENT_G_BIT)-                            , ("COLOR_COMPONENT_B_BIT", pure COLOR_COMPONENT_B_BIT)-                            , ("COLOR_COMPONENT_A_BIT", pure COLOR_COMPONENT_A_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ColorComponentFlagBits")-                       v <- step readPrec-                       pure (ColorComponentFlagBits v)))+  readPrec = enumReadPrec enumPrefixColorComponentFlagBits+                          showTableColorComponentFlagBits+                          conNameColorComponentFlagBits+                          ColorComponentFlagBits 
src/Vulkan/Core10/Enums/CommandBufferLevel.hs view
@@ -1,22 +1,17 @@ {-# language CPP #-}+-- No documentation found for Chapter "CommandBufferLevel" module Vulkan.Core10.Enums.CommandBufferLevel  (CommandBufferLevel( COMMAND_BUFFER_LEVEL_PRIMARY                                                                   , COMMAND_BUFFER_LEVEL_SECONDARY                                                                   , ..                                                                   )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkCommandBufferLevel - Enumerant specifying a command buffer level --@@ -27,24 +22,30 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- | 'COMMAND_BUFFER_LEVEL_PRIMARY' specifies a primary command buffer.-pattern COMMAND_BUFFER_LEVEL_PRIMARY = CommandBufferLevel 0+pattern COMMAND_BUFFER_LEVEL_PRIMARY   = CommandBufferLevel 0 -- | 'COMMAND_BUFFER_LEVEL_SECONDARY' specifies a secondary command buffer. pattern COMMAND_BUFFER_LEVEL_SECONDARY = CommandBufferLevel 1 {-# complete COMMAND_BUFFER_LEVEL_PRIMARY,              COMMAND_BUFFER_LEVEL_SECONDARY :: CommandBufferLevel #-} +conNameCommandBufferLevel :: String+conNameCommandBufferLevel = "CommandBufferLevel"++enumPrefixCommandBufferLevel :: String+enumPrefixCommandBufferLevel = "COMMAND_BUFFER_LEVEL_"++showTableCommandBufferLevel :: [(CommandBufferLevel, String)]+showTableCommandBufferLevel =+  [(COMMAND_BUFFER_LEVEL_PRIMARY, "PRIMARY"), (COMMAND_BUFFER_LEVEL_SECONDARY, "SECONDARY")]+ instance Show CommandBufferLevel where-  showsPrec p = \case-    COMMAND_BUFFER_LEVEL_PRIMARY -> showString "COMMAND_BUFFER_LEVEL_PRIMARY"-    COMMAND_BUFFER_LEVEL_SECONDARY -> showString "COMMAND_BUFFER_LEVEL_SECONDARY"-    CommandBufferLevel x -> showParen (p >= 11) (showString "CommandBufferLevel " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixCommandBufferLevel+                            showTableCommandBufferLevel+                            conNameCommandBufferLevel+                            (\(CommandBufferLevel x) -> x)+                            (showsPrec 11)  instance Read CommandBufferLevel where-  readPrec = parens (choose [("COMMAND_BUFFER_LEVEL_PRIMARY", pure COMMAND_BUFFER_LEVEL_PRIMARY)-                            , ("COMMAND_BUFFER_LEVEL_SECONDARY", pure COMMAND_BUFFER_LEVEL_SECONDARY)]-                     +++-                     prec 10 (do-                       expectP (Ident "CommandBufferLevel")-                       v <- step readPrec-                       pure (CommandBufferLevel v)))+  readPrec =+    enumReadPrec enumPrefixCommandBufferLevel showTableCommandBufferLevel conNameCommandBufferLevel CommandBufferLevel 
src/Vulkan/Core10/Enums/CommandBufferResetFlagBits.hs view
@@ -1,26 +1,24 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.CommandBufferResetFlagBits  ( CommandBufferResetFlagBits( COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT+-- No documentation found for Chapter "CommandBufferResetFlagBits"+module Vulkan.Core10.Enums.CommandBufferResetFlagBits  ( CommandBufferResetFlags+                                                       , CommandBufferResetFlagBits( COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT                                                                                    , ..                                                                                    )-                                                       , CommandBufferResetFlags                                                        ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type CommandBufferResetFlags = CommandBufferResetFlagBits+ -- | VkCommandBufferResetFlagBits - Bitmask controlling behavior of a command -- buffer reset --@@ -38,18 +36,25 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>. pattern COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = CommandBufferResetFlagBits 0x00000001 -type CommandBufferResetFlags = CommandBufferResetFlagBits+conNameCommandBufferResetFlagBits :: String+conNameCommandBufferResetFlagBits = "CommandBufferResetFlagBits" +enumPrefixCommandBufferResetFlagBits :: String+enumPrefixCommandBufferResetFlagBits = "COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"++showTableCommandBufferResetFlagBits :: [(CommandBufferResetFlagBits, String)]+showTableCommandBufferResetFlagBits = [(COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT, "")]+ instance Show CommandBufferResetFlagBits where-  showsPrec p = \case-    COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT -> showString "COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"-    CommandBufferResetFlagBits x -> showParen (p >= 11) (showString "CommandBufferResetFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixCommandBufferResetFlagBits+                            showTableCommandBufferResetFlagBits+                            conNameCommandBufferResetFlagBits+                            (\(CommandBufferResetFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read CommandBufferResetFlagBits where-  readPrec = parens (choose [("COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT", pure COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "CommandBufferResetFlagBits")-                       v <- step readPrec-                       pure (CommandBufferResetFlagBits v)))+  readPrec = enumReadPrec enumPrefixCommandBufferResetFlagBits+                          showTableCommandBufferResetFlagBits+                          conNameCommandBufferResetFlagBits+                          CommandBufferResetFlagBits 
src/Vulkan/Core10/Enums/CommandBufferResetFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.CommandBufferResetFlagBits  ( CommandBufferResetFlagBits-                                                       , CommandBufferResetFlags+-- No documentation found for Chapter "CommandBufferResetFlagBits"+module Vulkan.Core10.Enums.CommandBufferResetFlagBits  ( CommandBufferResetFlags+                                                       , CommandBufferResetFlagBits                                                        ) where   -data CommandBufferResetFlagBits- type CommandBufferResetFlags = CommandBufferResetFlagBits++data CommandBufferResetFlagBits 
src/Vulkan/Core10/Enums/CommandBufferUsageFlagBits.hs view
@@ -1,28 +1,26 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.CommandBufferUsageFlagBits  ( CommandBufferUsageFlagBits( COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT+-- No documentation found for Chapter "CommandBufferUsageFlagBits"+module Vulkan.Core10.Enums.CommandBufferUsageFlagBits  ( CommandBufferUsageFlags+                                                       , CommandBufferUsageFlagBits( COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT                                                                                    , COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT                                                                                    , COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT                                                                                    , ..                                                                                    )-                                                       , CommandBufferUsageFlags                                                        ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type CommandBufferUsageFlags = CommandBufferUsageFlagBits+ -- | VkCommandBufferUsageFlagBits - Bitmask specifying usage behavior for -- command buffer --@@ -35,7 +33,7 @@ -- | 'COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT' specifies that each recording -- of the command buffer will only be submitted once, and the command -- buffer will be reset and recorded again between each submission.-pattern COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = CommandBufferUsageFlagBits 0x00000001+pattern COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT      = CommandBufferUsageFlagBits 0x00000001 -- | 'COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT' specifies that a -- secondary command buffer is considered to be entirely inside a render -- pass. If this is a primary command buffer, then this bit is ignored.@@ -43,24 +41,31 @@ -- | 'COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT' specifies that a command -- buffer /can/ be resubmitted to a queue while it is in the /pending -- state/, and recorded into multiple primary command buffers.-pattern COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = CommandBufferUsageFlagBits 0x00000004+pattern COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT     = CommandBufferUsageFlagBits 0x00000004 -type CommandBufferUsageFlags = CommandBufferUsageFlagBits+conNameCommandBufferUsageFlagBits :: String+conNameCommandBufferUsageFlagBits = "CommandBufferUsageFlagBits" +enumPrefixCommandBufferUsageFlagBits :: String+enumPrefixCommandBufferUsageFlagBits = "COMMAND_BUFFER_USAGE_"++showTableCommandBufferUsageFlagBits :: [(CommandBufferUsageFlagBits, String)]+showTableCommandBufferUsageFlagBits =+  [ (COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT     , "ONE_TIME_SUBMIT_BIT")+  , (COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, "RENDER_PASS_CONTINUE_BIT")+  , (COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT    , "SIMULTANEOUS_USE_BIT")+  ]+ instance Show CommandBufferUsageFlagBits where-  showsPrec p = \case-    COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT -> showString "COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"-    COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT -> showString "COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"-    COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT -> showString "COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"-    CommandBufferUsageFlagBits x -> showParen (p >= 11) (showString "CommandBufferUsageFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixCommandBufferUsageFlagBits+                            showTableCommandBufferUsageFlagBits+                            conNameCommandBufferUsageFlagBits+                            (\(CommandBufferUsageFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read CommandBufferUsageFlagBits where-  readPrec = parens (choose [("COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT", pure COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT)-                            , ("COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT", pure COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT)-                            , ("COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT", pure COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "CommandBufferUsageFlagBits")-                       v <- step readPrec-                       pure (CommandBufferUsageFlagBits v)))+  readPrec = enumReadPrec enumPrefixCommandBufferUsageFlagBits+                          showTableCommandBufferUsageFlagBits+                          conNameCommandBufferUsageFlagBits+                          CommandBufferUsageFlagBits 
src/Vulkan/Core10/Enums/CommandPoolCreateFlagBits.hs view
@@ -1,28 +1,26 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.CommandPoolCreateFlagBits  ( CommandPoolCreateFlagBits( COMMAND_POOL_CREATE_TRANSIENT_BIT+-- No documentation found for Chapter "CommandPoolCreateFlagBits"+module Vulkan.Core10.Enums.CommandPoolCreateFlagBits  ( CommandPoolCreateFlags+                                                      , CommandPoolCreateFlagBits( COMMAND_POOL_CREATE_TRANSIENT_BIT                                                                                  , COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT                                                                                  , COMMAND_POOL_CREATE_PROTECTED_BIT                                                                                  , ..                                                                                  )-                                                      , CommandPoolCreateFlags                                                       ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type CommandPoolCreateFlags = CommandPoolCreateFlagBits+ -- | VkCommandPoolCreateFlagBits - Bitmask specifying usage behavior for a -- command pool --@@ -37,7 +35,7 @@ -- reset or freed in a relatively short timeframe. This flag /may/ be used -- by the implementation to control memory allocation behavior within the -- pool.-pattern COMMAND_POOL_CREATE_TRANSIENT_BIT = CommandPoolCreateFlagBits 0x00000001+pattern COMMAND_POOL_CREATE_TRANSIENT_BIT            = CommandPoolCreateFlagBits 0x00000001 -- | 'COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT' allows any command buffer -- allocated from a pool to be individually reset to the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>;@@ -49,24 +47,31 @@ pattern COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = CommandPoolCreateFlagBits 0x00000002 -- | 'COMMAND_POOL_CREATE_PROTECTED_BIT' specifies that command buffers -- allocated from the pool are protected command buffers.-pattern COMMAND_POOL_CREATE_PROTECTED_BIT = CommandPoolCreateFlagBits 0x00000004+pattern COMMAND_POOL_CREATE_PROTECTED_BIT            = CommandPoolCreateFlagBits 0x00000004 -type CommandPoolCreateFlags = CommandPoolCreateFlagBits+conNameCommandPoolCreateFlagBits :: String+conNameCommandPoolCreateFlagBits = "CommandPoolCreateFlagBits" +enumPrefixCommandPoolCreateFlagBits :: String+enumPrefixCommandPoolCreateFlagBits = "COMMAND_POOL_CREATE_"++showTableCommandPoolCreateFlagBits :: [(CommandPoolCreateFlagBits, String)]+showTableCommandPoolCreateFlagBits =+  [ (COMMAND_POOL_CREATE_TRANSIENT_BIT           , "TRANSIENT_BIT")+  , (COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, "RESET_COMMAND_BUFFER_BIT")+  , (COMMAND_POOL_CREATE_PROTECTED_BIT           , "PROTECTED_BIT")+  ]+ instance Show CommandPoolCreateFlagBits where-  showsPrec p = \case-    COMMAND_POOL_CREATE_TRANSIENT_BIT -> showString "COMMAND_POOL_CREATE_TRANSIENT_BIT"-    COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT -> showString "COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"-    COMMAND_POOL_CREATE_PROTECTED_BIT -> showString "COMMAND_POOL_CREATE_PROTECTED_BIT"-    CommandPoolCreateFlagBits x -> showParen (p >= 11) (showString "CommandPoolCreateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixCommandPoolCreateFlagBits+                            showTableCommandPoolCreateFlagBits+                            conNameCommandPoolCreateFlagBits+                            (\(CommandPoolCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read CommandPoolCreateFlagBits where-  readPrec = parens (choose [("COMMAND_POOL_CREATE_TRANSIENT_BIT", pure COMMAND_POOL_CREATE_TRANSIENT_BIT)-                            , ("COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT", pure COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT)-                            , ("COMMAND_POOL_CREATE_PROTECTED_BIT", pure COMMAND_POOL_CREATE_PROTECTED_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "CommandPoolCreateFlagBits")-                       v <- step readPrec-                       pure (CommandPoolCreateFlagBits v)))+  readPrec = enumReadPrec enumPrefixCommandPoolCreateFlagBits+                          showTableCommandPoolCreateFlagBits+                          conNameCommandPoolCreateFlagBits+                          CommandPoolCreateFlagBits 
src/Vulkan/Core10/Enums/CommandPoolResetFlagBits.hs view
@@ -1,26 +1,24 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.CommandPoolResetFlagBits  ( CommandPoolResetFlagBits( COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT+-- No documentation found for Chapter "CommandPoolResetFlagBits"+module Vulkan.Core10.Enums.CommandPoolResetFlagBits  ( CommandPoolResetFlags+                                                     , CommandPoolResetFlagBits( COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT                                                                                , ..                                                                                )-                                                     , CommandPoolResetFlags                                                      ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type CommandPoolResetFlags = CommandPoolResetFlagBits+ -- | VkCommandPoolResetFlagBits - Bitmask controlling behavior of a command -- pool reset --@@ -35,18 +33,25 @@ -- the system. pattern COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = CommandPoolResetFlagBits 0x00000001 -type CommandPoolResetFlags = CommandPoolResetFlagBits+conNameCommandPoolResetFlagBits :: String+conNameCommandPoolResetFlagBits = "CommandPoolResetFlagBits" +enumPrefixCommandPoolResetFlagBits :: String+enumPrefixCommandPoolResetFlagBits = "COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"++showTableCommandPoolResetFlagBits :: [(CommandPoolResetFlagBits, String)]+showTableCommandPoolResetFlagBits = [(COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT, "")]+ instance Show CommandPoolResetFlagBits where-  showsPrec p = \case-    COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT -> showString "COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"-    CommandPoolResetFlagBits x -> showParen (p >= 11) (showString "CommandPoolResetFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixCommandPoolResetFlagBits+                            showTableCommandPoolResetFlagBits+                            conNameCommandPoolResetFlagBits+                            (\(CommandPoolResetFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read CommandPoolResetFlagBits where-  readPrec = parens (choose [("COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT", pure COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "CommandPoolResetFlagBits")-                       v <- step readPrec-                       pure (CommandPoolResetFlagBits v)))+  readPrec = enumReadPrec enumPrefixCommandPoolResetFlagBits+                          showTableCommandPoolResetFlagBits+                          conNameCommandPoolResetFlagBits+                          CommandPoolResetFlagBits 
src/Vulkan/Core10/Enums/CommandPoolResetFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.CommandPoolResetFlagBits  ( CommandPoolResetFlagBits-                                                     , CommandPoolResetFlags+-- No documentation found for Chapter "CommandPoolResetFlagBits"+module Vulkan.Core10.Enums.CommandPoolResetFlagBits  ( CommandPoolResetFlags+                                                     , CommandPoolResetFlagBits                                                      ) where   -data CommandPoolResetFlagBits- type CommandPoolResetFlags = CommandPoolResetFlagBits++data CommandPoolResetFlagBits 
src/Vulkan/Core10/Enums/CompareOp.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "CompareOp" module Vulkan.Core10.Enums.CompareOp  (CompareOp( COMPARE_OP_NEVER                                                 , COMPARE_OP_LESS                                                 , COMPARE_OP_EQUAL@@ -10,19 +11,13 @@                                                 , ..                                                 )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkCompareOp - Stencil comparison function --@@ -37,21 +32,21 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- | 'COMPARE_OP_NEVER' specifies that the test evaluates to false.-pattern COMPARE_OP_NEVER = CompareOp 0+pattern COMPARE_OP_NEVER            = CompareOp 0 -- | 'COMPARE_OP_LESS' specifies that the test evaluates A \< B.-pattern COMPARE_OP_LESS = CompareOp 1+pattern COMPARE_OP_LESS             = CompareOp 1 -- | 'COMPARE_OP_EQUAL' specifies that the test evaluates A = B.-pattern COMPARE_OP_EQUAL = CompareOp 2+pattern COMPARE_OP_EQUAL            = CompareOp 2 -- | 'COMPARE_OP_LESS_OR_EQUAL' specifies that the test evaluates A ≤ B.-pattern COMPARE_OP_LESS_OR_EQUAL = CompareOp 3+pattern COMPARE_OP_LESS_OR_EQUAL    = CompareOp 3 -- | 'COMPARE_OP_GREATER' specifies that the test evaluates A > B.-pattern COMPARE_OP_GREATER = CompareOp 4+pattern COMPARE_OP_GREATER          = CompareOp 4 -- | 'COMPARE_OP_NOT_EQUAL' specifies that the test evaluates A ≠ B.-pattern COMPARE_OP_NOT_EQUAL = CompareOp 5+pattern COMPARE_OP_NOT_EQUAL        = CompareOp 5 -- | 'COMPARE_OP_GREATER_OR_EQUAL' specifies that the test evaluates A ≥ B. pattern COMPARE_OP_GREATER_OR_EQUAL = CompareOp 6 -- | 'COMPARE_OP_ALWAYS' specifies that the test evaluates to true.-pattern COMPARE_OP_ALWAYS = CompareOp 7+pattern COMPARE_OP_ALWAYS           = CompareOp 7 {-# complete COMPARE_OP_NEVER,              COMPARE_OP_LESS,              COMPARE_OP_EQUAL,@@ -61,30 +56,28 @@              COMPARE_OP_GREATER_OR_EQUAL,              COMPARE_OP_ALWAYS :: CompareOp #-} +conNameCompareOp :: String+conNameCompareOp = "CompareOp"++enumPrefixCompareOp :: String+enumPrefixCompareOp = "COMPARE_OP_"++showTableCompareOp :: [(CompareOp, String)]+showTableCompareOp =+  [ (COMPARE_OP_NEVER           , "NEVER")+  , (COMPARE_OP_LESS            , "LESS")+  , (COMPARE_OP_EQUAL           , "EQUAL")+  , (COMPARE_OP_LESS_OR_EQUAL   , "LESS_OR_EQUAL")+  , (COMPARE_OP_GREATER         , "GREATER")+  , (COMPARE_OP_NOT_EQUAL       , "NOT_EQUAL")+  , (COMPARE_OP_GREATER_OR_EQUAL, "GREATER_OR_EQUAL")+  , (COMPARE_OP_ALWAYS          , "ALWAYS")+  ]+ instance Show CompareOp where-  showsPrec p = \case-    COMPARE_OP_NEVER -> showString "COMPARE_OP_NEVER"-    COMPARE_OP_LESS -> showString "COMPARE_OP_LESS"-    COMPARE_OP_EQUAL -> showString "COMPARE_OP_EQUAL"-    COMPARE_OP_LESS_OR_EQUAL -> showString "COMPARE_OP_LESS_OR_EQUAL"-    COMPARE_OP_GREATER -> showString "COMPARE_OP_GREATER"-    COMPARE_OP_NOT_EQUAL -> showString "COMPARE_OP_NOT_EQUAL"-    COMPARE_OP_GREATER_OR_EQUAL -> showString "COMPARE_OP_GREATER_OR_EQUAL"-    COMPARE_OP_ALWAYS -> showString "COMPARE_OP_ALWAYS"-    CompareOp x -> showParen (p >= 11) (showString "CompareOp " . showsPrec 11 x)+  showsPrec =+    enumShowsPrec enumPrefixCompareOp showTableCompareOp conNameCompareOp (\(CompareOp x) -> x) (showsPrec 11)  instance Read CompareOp where-  readPrec = parens (choose [("COMPARE_OP_NEVER", pure COMPARE_OP_NEVER)-                            , ("COMPARE_OP_LESS", pure COMPARE_OP_LESS)-                            , ("COMPARE_OP_EQUAL", pure COMPARE_OP_EQUAL)-                            , ("COMPARE_OP_LESS_OR_EQUAL", pure COMPARE_OP_LESS_OR_EQUAL)-                            , ("COMPARE_OP_GREATER", pure COMPARE_OP_GREATER)-                            , ("COMPARE_OP_NOT_EQUAL", pure COMPARE_OP_NOT_EQUAL)-                            , ("COMPARE_OP_GREATER_OR_EQUAL", pure COMPARE_OP_GREATER_OR_EQUAL)-                            , ("COMPARE_OP_ALWAYS", pure COMPARE_OP_ALWAYS)]-                     +++-                     prec 10 (do-                       expectP (Ident "CompareOp")-                       v <- step readPrec-                       pure (CompareOp v)))+  readPrec = enumReadPrec enumPrefixCompareOp showTableCompareOp conNameCompareOp CompareOp 
src/Vulkan/Core10/Enums/CompareOp.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "CompareOp" module Vulkan.Core10.Enums.CompareOp  (CompareOp) where  
src/Vulkan/Core10/Enums/ComponentSwizzle.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "ComponentSwizzle" module Vulkan.Core10.Enums.ComponentSwizzle  (ComponentSwizzle( COMPONENT_SWIZZLE_IDENTITY                                                               , COMPONENT_SWIZZLE_ZERO                                                               , COMPONENT_SWIZZLE_ONE@@ -9,19 +10,13 @@                                                               , ..                                                               )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkComponentSwizzle - Specify how a component is swizzled --@@ -54,25 +49,25 @@ -- identity swizzle. pattern COMPONENT_SWIZZLE_IDENTITY = ComponentSwizzle 0 -- | 'COMPONENT_SWIZZLE_ZERO' specifies that the component is set to zero.-pattern COMPONENT_SWIZZLE_ZERO = ComponentSwizzle 1+pattern COMPONENT_SWIZZLE_ZERO     = ComponentSwizzle 1 -- | 'COMPONENT_SWIZZLE_ONE' specifies that the component is set to either 1 -- or 1.0, depending on whether the type of the image view format is -- integer or floating-point respectively, as determined by the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-definition Format Definition> -- section for each 'Vulkan.Core10.Enums.Format.Format'.-pattern COMPONENT_SWIZZLE_ONE = ComponentSwizzle 2+pattern COMPONENT_SWIZZLE_ONE      = ComponentSwizzle 2 -- | 'COMPONENT_SWIZZLE_R' specifies that the component is set to the value -- of the R component of the image.-pattern COMPONENT_SWIZZLE_R = ComponentSwizzle 3+pattern COMPONENT_SWIZZLE_R        = ComponentSwizzle 3 -- | 'COMPONENT_SWIZZLE_G' specifies that the component is set to the value -- of the G component of the image.-pattern COMPONENT_SWIZZLE_G = ComponentSwizzle 4+pattern COMPONENT_SWIZZLE_G        = ComponentSwizzle 4 -- | 'COMPONENT_SWIZZLE_B' specifies that the component is set to the value -- of the B component of the image.-pattern COMPONENT_SWIZZLE_B = ComponentSwizzle 5+pattern COMPONENT_SWIZZLE_B        = ComponentSwizzle 5 -- | 'COMPONENT_SWIZZLE_A' specifies that the component is set to the value -- of the A component of the image.-pattern COMPONENT_SWIZZLE_A = ComponentSwizzle 6+pattern COMPONENT_SWIZZLE_A        = ComponentSwizzle 6 {-# complete COMPONENT_SWIZZLE_IDENTITY,              COMPONENT_SWIZZLE_ZERO,              COMPONENT_SWIZZLE_ONE,@@ -81,28 +76,30 @@              COMPONENT_SWIZZLE_B,              COMPONENT_SWIZZLE_A :: ComponentSwizzle #-} +conNameComponentSwizzle :: String+conNameComponentSwizzle = "ComponentSwizzle"++enumPrefixComponentSwizzle :: String+enumPrefixComponentSwizzle = "COMPONENT_SWIZZLE_"++showTableComponentSwizzle :: [(ComponentSwizzle, String)]+showTableComponentSwizzle =+  [ (COMPONENT_SWIZZLE_IDENTITY, "IDENTITY")+  , (COMPONENT_SWIZZLE_ZERO    , "ZERO")+  , (COMPONENT_SWIZZLE_ONE     , "ONE")+  , (COMPONENT_SWIZZLE_R       , "R")+  , (COMPONENT_SWIZZLE_G       , "G")+  , (COMPONENT_SWIZZLE_B       , "B")+  , (COMPONENT_SWIZZLE_A       , "A")+  ]+ instance Show ComponentSwizzle where-  showsPrec p = \case-    COMPONENT_SWIZZLE_IDENTITY -> showString "COMPONENT_SWIZZLE_IDENTITY"-    COMPONENT_SWIZZLE_ZERO -> showString "COMPONENT_SWIZZLE_ZERO"-    COMPONENT_SWIZZLE_ONE -> showString "COMPONENT_SWIZZLE_ONE"-    COMPONENT_SWIZZLE_R -> showString "COMPONENT_SWIZZLE_R"-    COMPONENT_SWIZZLE_G -> showString "COMPONENT_SWIZZLE_G"-    COMPONENT_SWIZZLE_B -> showString "COMPONENT_SWIZZLE_B"-    COMPONENT_SWIZZLE_A -> showString "COMPONENT_SWIZZLE_A"-    ComponentSwizzle x -> showParen (p >= 11) (showString "ComponentSwizzle " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixComponentSwizzle+                            showTableComponentSwizzle+                            conNameComponentSwizzle+                            (\(ComponentSwizzle x) -> x)+                            (showsPrec 11)  instance Read ComponentSwizzle where-  readPrec = parens (choose [("COMPONENT_SWIZZLE_IDENTITY", pure COMPONENT_SWIZZLE_IDENTITY)-                            , ("COMPONENT_SWIZZLE_ZERO", pure COMPONENT_SWIZZLE_ZERO)-                            , ("COMPONENT_SWIZZLE_ONE", pure COMPONENT_SWIZZLE_ONE)-                            , ("COMPONENT_SWIZZLE_R", pure COMPONENT_SWIZZLE_R)-                            , ("COMPONENT_SWIZZLE_G", pure COMPONENT_SWIZZLE_G)-                            , ("COMPONENT_SWIZZLE_B", pure COMPONENT_SWIZZLE_B)-                            , ("COMPONENT_SWIZZLE_A", pure COMPONENT_SWIZZLE_A)]-                     +++-                     prec 10 (do-                       expectP (Ident "ComponentSwizzle")-                       v <- step readPrec-                       pure (ComponentSwizzle v)))+  readPrec = enumReadPrec enumPrefixComponentSwizzle showTableComponentSwizzle conNameComponentSwizzle ComponentSwizzle 
src/Vulkan/Core10/Enums/CullModeFlagBits.hs view
@@ -1,29 +1,27 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.CullModeFlagBits  ( CullModeFlagBits( CULL_MODE_NONE+-- No documentation found for Chapter "CullModeFlagBits"+module Vulkan.Core10.Enums.CullModeFlagBits  ( CullModeFlags+                                             , CullModeFlagBits( CULL_MODE_NONE                                                                , CULL_MODE_FRONT_BIT                                                                , CULL_MODE_BACK_BIT                                                                , CULL_MODE_FRONT_AND_BACK                                                                , ..                                                                )-                                             , CullModeFlags                                              ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type CullModeFlags = CullModeFlagBits+ -- | VkCullModeFlagBits - Bitmask controlling triangle culling -- -- = Description@@ -38,33 +36,36 @@   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)  -- | 'CULL_MODE_NONE' specifies that no triangles are discarded-pattern CULL_MODE_NONE = CullModeFlagBits 0x00000000+pattern CULL_MODE_NONE           = CullModeFlagBits 0x00000000 -- | 'CULL_MODE_FRONT_BIT' specifies that front-facing triangles are -- discarded-pattern CULL_MODE_FRONT_BIT = CullModeFlagBits 0x00000001+pattern CULL_MODE_FRONT_BIT      = CullModeFlagBits 0x00000001 -- | 'CULL_MODE_BACK_BIT' specifies that back-facing triangles are discarded-pattern CULL_MODE_BACK_BIT = CullModeFlagBits 0x00000002+pattern CULL_MODE_BACK_BIT       = CullModeFlagBits 0x00000002 -- | 'CULL_MODE_FRONT_AND_BACK' specifies that all triangles are discarded. pattern CULL_MODE_FRONT_AND_BACK = CullModeFlagBits 0x00000003 -type CullModeFlags = CullModeFlagBits+conNameCullModeFlagBits :: String+conNameCullModeFlagBits = "CullModeFlagBits" +enumPrefixCullModeFlagBits :: String+enumPrefixCullModeFlagBits = "CULL_MODE_"++showTableCullModeFlagBits :: [(CullModeFlagBits, String)]+showTableCullModeFlagBits =+  [ (CULL_MODE_NONE          , "NONE")+  , (CULL_MODE_FRONT_BIT     , "FRONT_BIT")+  , (CULL_MODE_BACK_BIT      , "BACK_BIT")+  , (CULL_MODE_FRONT_AND_BACK, "FRONT_AND_BACK")+  ]+ instance Show CullModeFlagBits where-  showsPrec p = \case-    CULL_MODE_NONE -> showString "CULL_MODE_NONE"-    CULL_MODE_FRONT_BIT -> showString "CULL_MODE_FRONT_BIT"-    CULL_MODE_BACK_BIT -> showString "CULL_MODE_BACK_BIT"-    CULL_MODE_FRONT_AND_BACK -> showString "CULL_MODE_FRONT_AND_BACK"-    CullModeFlagBits x -> showParen (p >= 11) (showString "CullModeFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixCullModeFlagBits+                            showTableCullModeFlagBits+                            conNameCullModeFlagBits+                            (\(CullModeFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read CullModeFlagBits where-  readPrec = parens (choose [("CULL_MODE_NONE", pure CULL_MODE_NONE)-                            , ("CULL_MODE_FRONT_BIT", pure CULL_MODE_FRONT_BIT)-                            , ("CULL_MODE_BACK_BIT", pure CULL_MODE_BACK_BIT)-                            , ("CULL_MODE_FRONT_AND_BACK", pure CULL_MODE_FRONT_AND_BACK)]-                     +++-                     prec 10 (do-                       expectP (Ident "CullModeFlagBits")-                       v <- step readPrec-                       pure (CullModeFlagBits v)))+  readPrec = enumReadPrec enumPrefixCullModeFlagBits showTableCullModeFlagBits conNameCullModeFlagBits CullModeFlagBits 
src/Vulkan/Core10/Enums/CullModeFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.CullModeFlagBits  ( CullModeFlagBits-                                             , CullModeFlags+-- No documentation found for Chapter "CullModeFlagBits"+module Vulkan.Core10.Enums.CullModeFlagBits  ( CullModeFlags+                                             , CullModeFlagBits                                              ) where   -data CullModeFlagBits- type CullModeFlags = CullModeFlagBits++data CullModeFlagBits 
src/Vulkan/Core10/Enums/DependencyFlagBits.hs view
@@ -1,28 +1,26 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.DependencyFlagBits  ( DependencyFlagBits( DEPENDENCY_BY_REGION_BIT+-- No documentation found for Chapter "DependencyFlagBits"+module Vulkan.Core10.Enums.DependencyFlagBits  ( DependencyFlags+                                               , DependencyFlagBits( DEPENDENCY_BY_REGION_BIT                                                                    , DEPENDENCY_VIEW_LOCAL_BIT                                                                    , DEPENDENCY_DEVICE_GROUP_BIT                                                                    , ..                                                                    )-                                               , DependencyFlags                                                ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type DependencyFlags = DependencyFlagBits+ -- | VkDependencyFlagBits - Bitmask specifying how execution and memory -- dependencies are formed --@@ -34,30 +32,35 @@  -- | 'DEPENDENCY_BY_REGION_BIT' specifies that dependencies will be -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-local>.-pattern DEPENDENCY_BY_REGION_BIT = DependencyFlagBits 0x00000001+pattern DEPENDENCY_BY_REGION_BIT    = DependencyFlagBits 0x00000001 -- | 'DEPENDENCY_VIEW_LOCAL_BIT' specifies that a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies subpass has more than one view>.-pattern DEPENDENCY_VIEW_LOCAL_BIT = DependencyFlagBits 0x00000002+pattern DEPENDENCY_VIEW_LOCAL_BIT   = DependencyFlagBits 0x00000002 -- | 'DEPENDENCY_DEVICE_GROUP_BIT' specifies that dependencies are -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-device-local-dependencies non-device-local dependency>. pattern DEPENDENCY_DEVICE_GROUP_BIT = DependencyFlagBits 0x00000004 -type DependencyFlags = DependencyFlagBits+conNameDependencyFlagBits :: String+conNameDependencyFlagBits = "DependencyFlagBits" +enumPrefixDependencyFlagBits :: String+enumPrefixDependencyFlagBits = "DEPENDENCY_"++showTableDependencyFlagBits :: [(DependencyFlagBits, String)]+showTableDependencyFlagBits =+  [ (DEPENDENCY_BY_REGION_BIT   , "BY_REGION_BIT")+  , (DEPENDENCY_VIEW_LOCAL_BIT  , "VIEW_LOCAL_BIT")+  , (DEPENDENCY_DEVICE_GROUP_BIT, "DEVICE_GROUP_BIT")+  ]+ instance Show DependencyFlagBits where-  showsPrec p = \case-    DEPENDENCY_BY_REGION_BIT -> showString "DEPENDENCY_BY_REGION_BIT"-    DEPENDENCY_VIEW_LOCAL_BIT -> showString "DEPENDENCY_VIEW_LOCAL_BIT"-    DEPENDENCY_DEVICE_GROUP_BIT -> showString "DEPENDENCY_DEVICE_GROUP_BIT"-    DependencyFlagBits x -> showParen (p >= 11) (showString "DependencyFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDependencyFlagBits+                            showTableDependencyFlagBits+                            conNameDependencyFlagBits+                            (\(DependencyFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DependencyFlagBits where-  readPrec = parens (choose [("DEPENDENCY_BY_REGION_BIT", pure DEPENDENCY_BY_REGION_BIT)-                            , ("DEPENDENCY_VIEW_LOCAL_BIT", pure DEPENDENCY_VIEW_LOCAL_BIT)-                            , ("DEPENDENCY_DEVICE_GROUP_BIT", pure DEPENDENCY_DEVICE_GROUP_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "DependencyFlagBits")-                       v <- step readPrec-                       pure (DependencyFlagBits v)))+  readPrec =+    enumReadPrec enumPrefixDependencyFlagBits showTableDependencyFlagBits conNameDependencyFlagBits DependencyFlagBits 
src/Vulkan/Core10/Enums/DependencyFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.DependencyFlagBits  ( DependencyFlagBits-                                               , DependencyFlags+-- No documentation found for Chapter "DependencyFlagBits"+module Vulkan.Core10.Enums.DependencyFlagBits  ( DependencyFlags+                                               , DependencyFlagBits                                                ) where   -data DependencyFlagBits- type DependencyFlags = DependencyFlagBits++data DependencyFlagBits 
src/Vulkan/Core10/Enums/DescriptorPoolCreateFlagBits.hs view
@@ -1,27 +1,25 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits  ( DescriptorPoolCreateFlagBits( DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT+-- No documentation found for Chapter "DescriptorPoolCreateFlagBits"+module Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits  ( DescriptorPoolCreateFlags+                                                         , DescriptorPoolCreateFlagBits( DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT                                                                                        , DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT                                                                                        , ..                                                                                        )-                                                         , DescriptorPoolCreateFlags                                                          ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type DescriptorPoolCreateFlags = DescriptorPoolCreateFlagBits+ -- | VkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported -- operations on a descriptor pool --@@ -49,22 +47,30 @@ -- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT' -- bit from a pool that has 'DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT' -- set.-pattern DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = DescriptorPoolCreateFlagBits 0x00000002+pattern DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT   = DescriptorPoolCreateFlagBits 0x00000002 -type DescriptorPoolCreateFlags = DescriptorPoolCreateFlagBits+conNameDescriptorPoolCreateFlagBits :: String+conNameDescriptorPoolCreateFlagBits = "DescriptorPoolCreateFlagBits" +enumPrefixDescriptorPoolCreateFlagBits :: String+enumPrefixDescriptorPoolCreateFlagBits = "DESCRIPTOR_POOL_CREATE_"++showTableDescriptorPoolCreateFlagBits :: [(DescriptorPoolCreateFlagBits, String)]+showTableDescriptorPoolCreateFlagBits =+  [ (DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, "FREE_DESCRIPTOR_SET_BIT")+  , (DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT  , "UPDATE_AFTER_BIND_BIT")+  ]+ instance Show DescriptorPoolCreateFlagBits where-  showsPrec p = \case-    DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT -> showString "DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"-    DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT -> showString "DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT"-    DescriptorPoolCreateFlagBits x -> showParen (p >= 11) (showString "DescriptorPoolCreateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDescriptorPoolCreateFlagBits+                            showTableDescriptorPoolCreateFlagBits+                            conNameDescriptorPoolCreateFlagBits+                            (\(DescriptorPoolCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DescriptorPoolCreateFlagBits where-  readPrec = parens (choose [("DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT", pure DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT)-                            , ("DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT", pure DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "DescriptorPoolCreateFlagBits")-                       v <- step readPrec-                       pure (DescriptorPoolCreateFlagBits v)))+  readPrec = enumReadPrec enumPrefixDescriptorPoolCreateFlagBits+                          showTableDescriptorPoolCreateFlagBits+                          conNameDescriptorPoolCreateFlagBits+                          DescriptorPoolCreateFlagBits 
src/Vulkan/Core10/Enums/DescriptorPoolResetFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "DescriptorPoolResetFlags" module Vulkan.Core10.Enums.DescriptorPoolResetFlags  (DescriptorPoolResetFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkDescriptorPoolResetFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNameDescriptorPoolResetFlags :: String+conNameDescriptorPoolResetFlags = "DescriptorPoolResetFlags"++enumPrefixDescriptorPoolResetFlags :: String+enumPrefixDescriptorPoolResetFlags = ""++showTableDescriptorPoolResetFlags :: [(DescriptorPoolResetFlags, String)]+showTableDescriptorPoolResetFlags = []+ instance Show DescriptorPoolResetFlags where-  showsPrec p = \case-    DescriptorPoolResetFlags x -> showParen (p >= 11) (showString "DescriptorPoolResetFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDescriptorPoolResetFlags+                            showTableDescriptorPoolResetFlags+                            conNameDescriptorPoolResetFlags+                            (\(DescriptorPoolResetFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DescriptorPoolResetFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "DescriptorPoolResetFlags")-                       v <- step readPrec-                       pure (DescriptorPoolResetFlags v)))+  readPrec = enumReadPrec enumPrefixDescriptorPoolResetFlags+                          showTableDescriptorPoolResetFlags+                          conNameDescriptorPoolResetFlags+                          DescriptorPoolResetFlags 
src/Vulkan/Core10/Enums/DescriptorPoolResetFlags.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "DescriptorPoolResetFlags" module Vulkan.Core10.Enums.DescriptorPoolResetFlags  (DescriptorPoolResetFlags) where  
src/Vulkan/Core10/Enums/DescriptorSetLayoutCreateFlagBits.hs view
@@ -1,27 +1,25 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits  ( DescriptorSetLayoutCreateFlagBits( DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR+-- No documentation found for Chapter "DescriptorSetLayoutCreateFlagBits"+module Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits  ( DescriptorSetLayoutCreateFlags+                                                              , DescriptorSetLayoutCreateFlagBits( DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR                                                                                                  , DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT                                                                                                  , ..                                                                                                  )-                                                              , DescriptorSetLayoutCreateFlags                                                               ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type DescriptorSetLayoutCreateFlags = DescriptorSetLayoutCreateFlagBits+ -- | VkDescriptorSetLayoutCreateFlagBits - Bitmask specifying descriptor set -- layout properties --@@ -35,7 +33,7 @@ -- descriptor sets /must/ not be allocated using this layout, and -- descriptors are instead pushed by -- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR'.-pattern DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = DescriptorSetLayoutCreateFlagBits 0x00000001+pattern DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR    = DescriptorSetLayoutCreateFlagBits 0x00000001 -- | 'DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT' specifies that -- descriptor sets using this layout /must/ be allocated from a descriptor -- pool created with the@@ -48,20 +46,28 @@ -- limits. pattern DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = DescriptorSetLayoutCreateFlagBits 0x00000002 -type DescriptorSetLayoutCreateFlags = DescriptorSetLayoutCreateFlagBits+conNameDescriptorSetLayoutCreateFlagBits :: String+conNameDescriptorSetLayoutCreateFlagBits = "DescriptorSetLayoutCreateFlagBits" +enumPrefixDescriptorSetLayoutCreateFlagBits :: String+enumPrefixDescriptorSetLayoutCreateFlagBits = "DESCRIPTOR_SET_LAYOUT_CREATE_"++showTableDescriptorSetLayoutCreateFlagBits :: [(DescriptorSetLayoutCreateFlagBits, String)]+showTableDescriptorSetLayoutCreateFlagBits =+  [ (DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR   , "PUSH_DESCRIPTOR_BIT_KHR")+  , (DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, "UPDATE_AFTER_BIND_POOL_BIT")+  ]+ instance Show DescriptorSetLayoutCreateFlagBits where-  showsPrec p = \case-    DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR -> showString "DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"-    DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT -> showString "DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT"-    DescriptorSetLayoutCreateFlagBits x -> showParen (p >= 11) (showString "DescriptorSetLayoutCreateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDescriptorSetLayoutCreateFlagBits+                            showTableDescriptorSetLayoutCreateFlagBits+                            conNameDescriptorSetLayoutCreateFlagBits+                            (\(DescriptorSetLayoutCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DescriptorSetLayoutCreateFlagBits where-  readPrec = parens (choose [("DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR", pure DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR)-                            , ("DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT", pure DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "DescriptorSetLayoutCreateFlagBits")-                       v <- step readPrec-                       pure (DescriptorSetLayoutCreateFlagBits v)))+  readPrec = enumReadPrec enumPrefixDescriptorSetLayoutCreateFlagBits+                          showTableDescriptorSetLayoutCreateFlagBits+                          conNameDescriptorSetLayoutCreateFlagBits+                          DescriptorSetLayoutCreateFlagBits 
src/Vulkan/Core10/Enums/DescriptorType.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "DescriptorType" module Vulkan.Core10.Enums.DescriptorType  (DescriptorType( DESCRIPTOR_TYPE_SAMPLER                                                           , DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER                                                           , DESCRIPTOR_TYPE_SAMPLED_IMAGE@@ -10,24 +11,19 @@                                                           , DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC                                                           , DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC                                                           , DESCRIPTOR_TYPE_INPUT_ATTACHMENT+                                                          , DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV                                                           , DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR                                                           , DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT                                                           , ..                                                           )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkDescriptorType - Specifies the type of a descriptor in a descriptor -- set@@ -118,8 +114,15 @@ -- 'DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR', none of the @pImageInfo@, -- @pBufferInfo@, or @pTexelBufferView@ members are accessed, instead the -- source data of the descriptor update operation is taken from the--- 'Vulkan.Extensions.VK_KHR_ray_tracing.WriteDescriptorSetAccelerationStructureKHR'+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR' -- structure in the @pNext@ chain of+-- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'. When updating+-- descriptors with a @descriptorType@ of+-- 'DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV', none of the @pImageInfo@,+-- @pBufferInfo@, or @pTexelBufferView@ members are accessed, instead the+-- source data of the descriptor update operation is taken from the+-- 'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'+-- structure in the @pNext@ chain of -- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'. -- -- = See Also@@ -133,31 +136,33 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_SAMPLER"-pattern DESCRIPTOR_TYPE_SAMPLER = DescriptorType 0+pattern DESCRIPTOR_TYPE_SAMPLER                    = DescriptorType 0 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER"-pattern DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = DescriptorType 1+pattern DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER     = DescriptorType 1 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE"-pattern DESCRIPTOR_TYPE_SAMPLED_IMAGE = DescriptorType 2+pattern DESCRIPTOR_TYPE_SAMPLED_IMAGE              = DescriptorType 2 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE"-pattern DESCRIPTOR_TYPE_STORAGE_IMAGE = DescriptorType 3+pattern DESCRIPTOR_TYPE_STORAGE_IMAGE              = DescriptorType 3 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER"-pattern DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = DescriptorType 4+pattern DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER       = DescriptorType 4 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER"-pattern DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = DescriptorType 5+pattern DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER       = DescriptorType 5 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER"-pattern DESCRIPTOR_TYPE_UNIFORM_BUFFER = DescriptorType 6+pattern DESCRIPTOR_TYPE_UNIFORM_BUFFER             = DescriptorType 6 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER"-pattern DESCRIPTOR_TYPE_STORAGE_BUFFER = DescriptorType 7+pattern DESCRIPTOR_TYPE_STORAGE_BUFFER             = DescriptorType 7 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC"-pattern DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = DescriptorType 8+pattern DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC     = DescriptorType 8 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"-pattern DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = DescriptorType 9+pattern DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC     = DescriptorType 9 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT"-pattern DESCRIPTOR_TYPE_INPUT_ATTACHMENT = DescriptorType 10+pattern DESCRIPTOR_TYPE_INPUT_ATTACHMENT           = DescriptorType 10+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV"+pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV  = DescriptorType 1000165000 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR"-pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = DescriptorType 1000165000+pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = DescriptorType 1000150000 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT"-pattern DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = DescriptorType 1000138000+pattern DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT   = DescriptorType 1000138000 {-# complete DESCRIPTOR_TYPE_SAMPLER,              DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,              DESCRIPTOR_TYPE_SAMPLED_IMAGE,@@ -169,43 +174,41 @@              DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,              DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,              DESCRIPTOR_TYPE_INPUT_ATTACHMENT,+             DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV,              DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR,              DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT :: DescriptorType #-} +conNameDescriptorType :: String+conNameDescriptorType = "DescriptorType"++enumPrefixDescriptorType :: String+enumPrefixDescriptorType = "DESCRIPTOR_TYPE_"++showTableDescriptorType :: [(DescriptorType, String)]+showTableDescriptorType =+  [ (DESCRIPTOR_TYPE_SAMPLER                   , "SAMPLER")+  , (DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER    , "COMBINED_IMAGE_SAMPLER")+  , (DESCRIPTOR_TYPE_SAMPLED_IMAGE             , "SAMPLED_IMAGE")+  , (DESCRIPTOR_TYPE_STORAGE_IMAGE             , "STORAGE_IMAGE")+  , (DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER      , "UNIFORM_TEXEL_BUFFER")+  , (DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER      , "STORAGE_TEXEL_BUFFER")+  , (DESCRIPTOR_TYPE_UNIFORM_BUFFER            , "UNIFORM_BUFFER")+  , (DESCRIPTOR_TYPE_STORAGE_BUFFER            , "STORAGE_BUFFER")+  , (DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC    , "UNIFORM_BUFFER_DYNAMIC")+  , (DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC    , "STORAGE_BUFFER_DYNAMIC")+  , (DESCRIPTOR_TYPE_INPUT_ATTACHMENT          , "INPUT_ATTACHMENT")+  , (DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV , "ACCELERATION_STRUCTURE_NV")+  , (DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, "ACCELERATION_STRUCTURE_KHR")+  , (DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT  , "INLINE_UNIFORM_BLOCK_EXT")+  ]+ instance Show DescriptorType where-  showsPrec p = \case-    DESCRIPTOR_TYPE_SAMPLER -> showString "DESCRIPTOR_TYPE_SAMPLER"-    DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER -> showString "DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER"-    DESCRIPTOR_TYPE_SAMPLED_IMAGE -> showString "DESCRIPTOR_TYPE_SAMPLED_IMAGE"-    DESCRIPTOR_TYPE_STORAGE_IMAGE -> showString "DESCRIPTOR_TYPE_STORAGE_IMAGE"-    DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER -> showString "DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER"-    DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER -> showString "DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER"-    DESCRIPTOR_TYPE_UNIFORM_BUFFER -> showString "DESCRIPTOR_TYPE_UNIFORM_BUFFER"-    DESCRIPTOR_TYPE_STORAGE_BUFFER -> showString "DESCRIPTOR_TYPE_STORAGE_BUFFER"-    DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC -> showString "DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC"-    DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC -> showString "DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"-    DESCRIPTOR_TYPE_INPUT_ATTACHMENT -> showString "DESCRIPTOR_TYPE_INPUT_ATTACHMENT"-    DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR -> showString "DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR"-    DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT -> showString "DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT"-    DescriptorType x -> showParen (p >= 11) (showString "DescriptorType " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixDescriptorType+                            showTableDescriptorType+                            conNameDescriptorType+                            (\(DescriptorType x) -> x)+                            (showsPrec 11)  instance Read DescriptorType where-  readPrec = parens (choose [("DESCRIPTOR_TYPE_SAMPLER", pure DESCRIPTOR_TYPE_SAMPLER)-                            , ("DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER", pure DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER)-                            , ("DESCRIPTOR_TYPE_SAMPLED_IMAGE", pure DESCRIPTOR_TYPE_SAMPLED_IMAGE)-                            , ("DESCRIPTOR_TYPE_STORAGE_IMAGE", pure DESCRIPTOR_TYPE_STORAGE_IMAGE)-                            , ("DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER", pure DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER)-                            , ("DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER", pure DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER)-                            , ("DESCRIPTOR_TYPE_UNIFORM_BUFFER", pure DESCRIPTOR_TYPE_UNIFORM_BUFFER)-                            , ("DESCRIPTOR_TYPE_STORAGE_BUFFER", pure DESCRIPTOR_TYPE_STORAGE_BUFFER)-                            , ("DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC", pure DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC)-                            , ("DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC", pure DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC)-                            , ("DESCRIPTOR_TYPE_INPUT_ATTACHMENT", pure DESCRIPTOR_TYPE_INPUT_ATTACHMENT)-                            , ("DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR", pure DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR)-                            , ("DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT", pure DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "DescriptorType")-                       v <- step readPrec-                       pure (DescriptorType v)))+  readPrec = enumReadPrec enumPrefixDescriptorType showTableDescriptorType conNameDescriptorType DescriptorType 
src/Vulkan/Core10/Enums/DeviceCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "DeviceCreateFlags" module Vulkan.Core10.Enums.DeviceCreateFlags  (DeviceCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkDeviceCreateFlags - Reserved for future use@@ -32,15 +28,23 @@   +conNameDeviceCreateFlags :: String+conNameDeviceCreateFlags = "DeviceCreateFlags"++enumPrefixDeviceCreateFlags :: String+enumPrefixDeviceCreateFlags = ""++showTableDeviceCreateFlags :: [(DeviceCreateFlags, String)]+showTableDeviceCreateFlags = []+ instance Show DeviceCreateFlags where-  showsPrec p = \case-    DeviceCreateFlags x -> showParen (p >= 11) (showString "DeviceCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDeviceCreateFlags+                            showTableDeviceCreateFlags+                            conNameDeviceCreateFlags+                            (\(DeviceCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DeviceCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "DeviceCreateFlags")-                       v <- step readPrec-                       pure (DeviceCreateFlags v)))+  readPrec =+    enumReadPrec enumPrefixDeviceCreateFlags showTableDeviceCreateFlags conNameDeviceCreateFlags DeviceCreateFlags 
src/Vulkan/Core10/Enums/DeviceQueueCreateFlagBits.hs view
@@ -1,26 +1,24 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.DeviceQueueCreateFlagBits  ( DeviceQueueCreateFlagBits( DEVICE_QUEUE_CREATE_PROTECTED_BIT+-- No documentation found for Chapter "DeviceQueueCreateFlagBits"+module Vulkan.Core10.Enums.DeviceQueueCreateFlagBits  ( DeviceQueueCreateFlags+                                                      , DeviceQueueCreateFlagBits( DEVICE_QUEUE_CREATE_PROTECTED_BIT                                                                                  , ..                                                                                  )-                                                      , DeviceQueueCreateFlags                                                       ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type DeviceQueueCreateFlags = DeviceQueueCreateFlagBits+ -- | VkDeviceQueueCreateFlagBits - Bitmask specifying behavior of the queue -- -- = See Also@@ -33,18 +31,25 @@ -- protected-capable queue. pattern DEVICE_QUEUE_CREATE_PROTECTED_BIT = DeviceQueueCreateFlagBits 0x00000001 -type DeviceQueueCreateFlags = DeviceQueueCreateFlagBits+conNameDeviceQueueCreateFlagBits :: String+conNameDeviceQueueCreateFlagBits = "DeviceQueueCreateFlagBits" +enumPrefixDeviceQueueCreateFlagBits :: String+enumPrefixDeviceQueueCreateFlagBits = "DEVICE_QUEUE_CREATE_PROTECTED_BIT"++showTableDeviceQueueCreateFlagBits :: [(DeviceQueueCreateFlagBits, String)]+showTableDeviceQueueCreateFlagBits = [(DEVICE_QUEUE_CREATE_PROTECTED_BIT, "")]+ instance Show DeviceQueueCreateFlagBits where-  showsPrec p = \case-    DEVICE_QUEUE_CREATE_PROTECTED_BIT -> showString "DEVICE_QUEUE_CREATE_PROTECTED_BIT"-    DeviceQueueCreateFlagBits x -> showParen (p >= 11) (showString "DeviceQueueCreateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDeviceQueueCreateFlagBits+                            showTableDeviceQueueCreateFlagBits+                            conNameDeviceQueueCreateFlagBits+                            (\(DeviceQueueCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DeviceQueueCreateFlagBits where-  readPrec = parens (choose [("DEVICE_QUEUE_CREATE_PROTECTED_BIT", pure DEVICE_QUEUE_CREATE_PROTECTED_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "DeviceQueueCreateFlagBits")-                       v <- step readPrec-                       pure (DeviceQueueCreateFlagBits v)))+  readPrec = enumReadPrec enumPrefixDeviceQueueCreateFlagBits+                          showTableDeviceQueueCreateFlagBits+                          conNameDeviceQueueCreateFlagBits+                          DeviceQueueCreateFlagBits 
src/Vulkan/Core10/Enums/DynamicState.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "DynamicState" module Vulkan.Core10.Enums.DynamicState  (DynamicState( DYNAMIC_STATE_VIEWPORT                                                       , DYNAMIC_STATE_SCISSOR                                                       , DYNAMIC_STATE_LINE_WIDTH@@ -25,25 +26,20 @@                                                       , DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV                                                       , DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV                                                       , DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV+                                                      , DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR                                                       , DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT                                                       , DYNAMIC_STATE_DISCARD_RECTANGLE_EXT                                                       , DYNAMIC_STATE_VIEWPORT_W_SCALING_NV                                                       , ..                                                       )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkDynamicState - Indicate which dynamic state is taken from dynamic -- state commands@@ -61,7 +57,7 @@ -- commands. The number of viewports used by a pipeline is still specified -- by the @viewportCount@ member of -- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'.-pattern DYNAMIC_STATE_VIEWPORT = DynamicState 0+pattern DYNAMIC_STATE_VIEWPORT                            = DynamicState 0 -- | 'DYNAMIC_STATE_SCISSOR' specifies that the @pScissors@ state in -- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo' will be ignored -- and /must/ be set dynamically with@@ -69,13 +65,13 @@ -- commands. The number of scissor rectangles used by a pipeline is still -- specified by the @scissorCount@ member of -- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'.-pattern DYNAMIC_STATE_SCISSOR = DynamicState 1+pattern DYNAMIC_STATE_SCISSOR                             = DynamicState 1 -- | 'DYNAMIC_STATE_LINE_WIDTH' specifies that the @lineWidth@ state in -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be -- ignored and /must/ be set dynamically with -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' before any draw -- commands that generate line primitives for the rasterizer.-pattern DYNAMIC_STATE_LINE_WIDTH = DynamicState 2+pattern DYNAMIC_STATE_LINE_WIDTH                          = DynamicState 2 -- | 'DYNAMIC_STATE_DEPTH_BIAS' specifies that the @depthBiasConstantFactor@, -- @depthBiasClamp@ and @depthBiasSlopeFactor@ states in -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be@@ -84,7 +80,7 @@ -- are performed with @depthBiasEnable@ in -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' set to -- 'Vulkan.Core10.FundamentalTypes.TRUE'.-pattern DYNAMIC_STATE_DEPTH_BIAS = DynamicState 3+pattern DYNAMIC_STATE_DEPTH_BIAS                          = DynamicState 3 -- | 'DYNAMIC_STATE_BLEND_CONSTANTS' specifies that the @blendConstants@ -- state in 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo' will -- be ignored and /must/ be set dynamically with@@ -93,7 +89,7 @@ -- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState' member -- @blendEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE' and any of -- the blend functions using a constant blend color.-pattern DYNAMIC_STATE_BLEND_CONSTANTS = DynamicState 4+pattern DYNAMIC_STATE_BLEND_CONSTANTS                     = DynamicState 4 -- | 'DYNAMIC_STATE_DEPTH_BOUNDS' specifies that the @minDepthBounds@ and -- @maxDepthBounds@ states of -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' will be@@ -102,7 +98,7 @@ -- are performed with a pipeline state with -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' member -- @depthBoundsTestEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'.-pattern DYNAMIC_STATE_DEPTH_BOUNDS = DynamicState 5+pattern DYNAMIC_STATE_DEPTH_BOUNDS                        = DynamicState 5 -- | 'DYNAMIC_STATE_STENCIL_COMPARE_MASK' specifies that the @compareMask@ -- state in 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' -- for both @front@ and @back@ will be ignored and /must/ be set@@ -111,7 +107,7 @@ -- any draws are performed with a pipeline state with -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' member -- @stencilTestEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'-pattern DYNAMIC_STATE_STENCIL_COMPARE_MASK = DynamicState 6+pattern DYNAMIC_STATE_STENCIL_COMPARE_MASK                = DynamicState 6 -- | 'DYNAMIC_STATE_STENCIL_WRITE_MASK' specifies that the @writeMask@ state -- in 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' for both -- @front@ and @back@ will be ignored and /must/ be set dynamically with@@ -119,7 +115,7 @@ -- draws are performed with a pipeline state with -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' member -- @stencilTestEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'-pattern DYNAMIC_STATE_STENCIL_WRITE_MASK = DynamicState 7+pattern DYNAMIC_STATE_STENCIL_WRITE_MASK                  = DynamicState 7 -- | 'DYNAMIC_STATE_STENCIL_REFERENCE' specifies that the @reference@ state -- in 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' for both -- @front@ and @back@ will be ignored and /must/ be set dynamically with@@ -127,7 +123,7 @@ -- draws are performed with a pipeline state with -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' member -- @stencilTestEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'-pattern DYNAMIC_STATE_STENCIL_REFERENCE = DynamicState 8+pattern DYNAMIC_STATE_STENCIL_REFERENCE                   = DynamicState 8 -- | 'DYNAMIC_STATE_STENCIL_OP_EXT' specifies that the @failOp@, @passOp@, -- @depthFailOp@, and @compareOp@ states in -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' for both@@ -136,61 +132,61 @@ -- before any draws are performed with a pipeline state with -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' member -- @stencilTestEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'-pattern DYNAMIC_STATE_STENCIL_OP_EXT = DynamicState 1000267011+pattern DYNAMIC_STATE_STENCIL_OP_EXT                      = DynamicState 1000267011 -- | 'DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT' specifies that the -- @stencilTestEnable@ state in -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' will be -- ignored and /must/ be set dynamically with -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetStencilTestEnableEXT' -- before any draw call.-pattern DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = DynamicState 1000267010+pattern DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT             = DynamicState 1000267010 -- | 'DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT' specifies that the -- @depthBoundsTestEnable@ state in -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' will be -- ignored and /must/ be set dynamically with -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnableEXT' -- before any draw call.-pattern DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = DynamicState 1000267009+pattern DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT        = DynamicState 1000267009 -- | 'DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT' specifies that the @depthCompareOp@ -- state in 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' -- will be ignored and /must/ be set dynamically with -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthCompareOpEXT' -- before any draw call.-pattern DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = DynamicState 1000267008+pattern DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT                = DynamicState 1000267008 -- | 'DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT' specifies that the -- @depthWriteEnable@ state in -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' will be -- ignored and /must/ be set dynamically with -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnableEXT' -- before any draw call.-pattern DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = DynamicState 1000267007+pattern DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT              = DynamicState 1000267007 -- | 'DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT' specifies that the -- @depthTestEnable@ state in -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' will be -- ignored and /must/ be set dynamically with -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthTestEnableEXT' -- before any draw call.-pattern DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = DynamicState 1000267006+pattern DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT               = DynamicState 1000267006 -- | 'DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT' specifies that the -- @stride@ state in 'Vulkan.Core10.Pipeline.VertexInputBindingDescription' -- will be ignored and /must/ be set dynamically with -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT' -- before any draw call.-pattern DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = DynamicState 1000267005+pattern DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT     = DynamicState 1000267005 -- | 'DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT' specifies that the @scissorCount@ -- and @pScissors@ state in -- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo' will be ignored -- and /must/ be set dynamically with -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT' -- before any draw call.-pattern DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = DynamicState 1000267004+pattern DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT              = DynamicState 1000267004 -- | 'DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT' specifies that the -- @viewportCount@ and @pViewports@ state in -- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo' will be ignored -- and /must/ be set dynamically with -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT' -- before any draw call.-pattern DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = DynamicState 1000267003+pattern DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT             = DynamicState 1000267003 -- | 'DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT' specifies that the @topology@ -- state in 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo' -- only specifies the@@ -199,19 +195,19 @@ -- with -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT' -- before any draw commands.-pattern DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = DynamicState 1000267002+pattern DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT              = DynamicState 1000267002 -- | 'DYNAMIC_STATE_FRONT_FACE_EXT' specifies that the @frontFace@ state in -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be -- ignored and /must/ be set dynamically with -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetFrontFaceEXT' -- before any draw commands.-pattern DYNAMIC_STATE_FRONT_FACE_EXT = DynamicState 1000267001+pattern DYNAMIC_STATE_FRONT_FACE_EXT                      = DynamicState 1000267001 -- | 'DYNAMIC_STATE_CULL_MODE_EXT' specifies that the @cullMode@ state in -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be -- ignored and /must/ be set dynamically with -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetCullModeEXT' -- before any draw commands.-pattern DYNAMIC_STATE_CULL_MODE_EXT = DynamicState 1000267000+pattern DYNAMIC_STATE_CULL_MODE_EXT                       = DynamicState 1000267000 -- | 'DYNAMIC_STATE_LINE_STIPPLE_EXT' specifies that the @lineStippleFactor@ -- and @lineStipplePattern@ state in -- 'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'@@ -221,7 +217,7 @@ -- 'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT' -- member @stippledLineEnable@ set to -- 'Vulkan.Core10.FundamentalTypes.TRUE'.-pattern DYNAMIC_STATE_LINE_STIPPLE_EXT = DynamicState 1000259000+pattern DYNAMIC_STATE_LINE_STIPPLE_EXT                    = DynamicState 1000259000 -- | 'DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR' specifies that state in -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR' -- and@@ -231,7 +227,7 @@ -- or -- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.cmdSetFragmentShadingRateEnumNV' -- before any draw commands.-pattern DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = DynamicState 1000226000+pattern DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR           = DynamicState 1000226000 -- | 'DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV' specifies that the -- @pExclusiveScissors@ state in -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'@@ -241,21 +237,27 @@ -- used by a pipeline is still specified by the @exclusiveScissorCount@ -- member of -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'.-pattern DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = DynamicState 1000205001+pattern DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV                = DynamicState 1000205001 -- | 'DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV' specifies that the -- coarse sample order state in -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportCoarseSampleOrderStateCreateInfoNV' -- will be ignored and /must/ be set dynamically with -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV' -- before any draw commands.-pattern DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = DynamicState 1000164006+pattern DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV     = DynamicState 1000164006 -- | 'DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' specifies that the -- @pShadingRatePalettes@ state in -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV' -- will be ignored and /must/ be set dynamically with -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV' -- before any draw commands.-pattern DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = DynamicState 1000164004+pattern DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV    = DynamicState 1000164004+-- | 'DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR' specifies that the+-- default stack size computation for the pipeline will be ignored and+-- /must/ be set dynamically with+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdSetRayTracingPipelineStackSizeKHR'+-- before any ray tracing calls are performed.+pattern DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = DynamicState 1000347000 -- | 'DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' specifies that the -- @sampleLocationsInfo@ state in -- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'@@ -264,7 +266,7 @@ -- before any draw or clear commands. Enabling custom sample locations is -- still indicated by the @sampleLocationsEnable@ member of -- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'.-pattern DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = DynamicState 1000143000+pattern DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT                = DynamicState 1000143000 -- | 'DYNAMIC_STATE_DISCARD_RECTANGLE_EXT' specifies that the -- @pDiscardRectangles@ state in -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'@@ -275,7 +277,7 @@ -- and the number of active discard rectangles is still specified by the -- @discardRectangleMode@ and @discardRectangleCount@ members of -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'.-pattern DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = DynamicState 1000099000+pattern DYNAMIC_STATE_DISCARD_RECTANGLE_EXT               = DynamicState 1000099000 -- | 'DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' specifies that the -- @pViewportScalings@ state in -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'@@ -285,7 +287,7 @@ -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV' -- member @viewportScalingEnable@ set to -- 'Vulkan.Core10.FundamentalTypes.TRUE'-pattern DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = DynamicState 1000087000+pattern DYNAMIC_STATE_VIEWPORT_W_SCALING_NV               = DynamicState 1000087000 {-# complete DYNAMIC_STATE_VIEWPORT,              DYNAMIC_STATE_SCISSOR,              DYNAMIC_STATE_LINE_WIDTH,@@ -312,76 +314,58 @@              DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV,              DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV,              DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV,+             DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR,              DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT,              DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,              DYNAMIC_STATE_VIEWPORT_W_SCALING_NV :: DynamicState #-} +conNameDynamicState :: String+conNameDynamicState = "DynamicState"++enumPrefixDynamicState :: String+enumPrefixDynamicState = "DYNAMIC_STATE_"++showTableDynamicState :: [(DynamicState, String)]+showTableDynamicState =+  [ (DYNAMIC_STATE_VIEWPORT                           , "VIEWPORT")+  , (DYNAMIC_STATE_SCISSOR                            , "SCISSOR")+  , (DYNAMIC_STATE_LINE_WIDTH                         , "LINE_WIDTH")+  , (DYNAMIC_STATE_DEPTH_BIAS                         , "DEPTH_BIAS")+  , (DYNAMIC_STATE_BLEND_CONSTANTS                    , "BLEND_CONSTANTS")+  , (DYNAMIC_STATE_DEPTH_BOUNDS                       , "DEPTH_BOUNDS")+  , (DYNAMIC_STATE_STENCIL_COMPARE_MASK               , "STENCIL_COMPARE_MASK")+  , (DYNAMIC_STATE_STENCIL_WRITE_MASK                 , "STENCIL_WRITE_MASK")+  , (DYNAMIC_STATE_STENCIL_REFERENCE                  , "STENCIL_REFERENCE")+  , (DYNAMIC_STATE_STENCIL_OP_EXT                     , "STENCIL_OP_EXT")+  , (DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT            , "STENCIL_TEST_ENABLE_EXT")+  , (DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT       , "DEPTH_BOUNDS_TEST_ENABLE_EXT")+  , (DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT               , "DEPTH_COMPARE_OP_EXT")+  , (DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT             , "DEPTH_WRITE_ENABLE_EXT")+  , (DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT              , "DEPTH_TEST_ENABLE_EXT")+  , (DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT    , "VERTEX_INPUT_BINDING_STRIDE_EXT")+  , (DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT             , "SCISSOR_WITH_COUNT_EXT")+  , (DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT            , "VIEWPORT_WITH_COUNT_EXT")+  , (DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT             , "PRIMITIVE_TOPOLOGY_EXT")+  , (DYNAMIC_STATE_FRONT_FACE_EXT                     , "FRONT_FACE_EXT")+  , (DYNAMIC_STATE_CULL_MODE_EXT                      , "CULL_MODE_EXT")+  , (DYNAMIC_STATE_LINE_STIPPLE_EXT                   , "LINE_STIPPLE_EXT")+  , (DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR          , "FRAGMENT_SHADING_RATE_KHR")+  , (DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV               , "EXCLUSIVE_SCISSOR_NV")+  , (DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV    , "VIEWPORT_COARSE_SAMPLE_ORDER_NV")+  , (DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV   , "VIEWPORT_SHADING_RATE_PALETTE_NV")+  , (DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR, "RAY_TRACING_PIPELINE_STACK_SIZE_KHR")+  , (DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT               , "SAMPLE_LOCATIONS_EXT")+  , (DYNAMIC_STATE_DISCARD_RECTANGLE_EXT              , "DISCARD_RECTANGLE_EXT")+  , (DYNAMIC_STATE_VIEWPORT_W_SCALING_NV              , "VIEWPORT_W_SCALING_NV")+  ]+ instance Show DynamicState where-  showsPrec p = \case-    DYNAMIC_STATE_VIEWPORT -> showString "DYNAMIC_STATE_VIEWPORT"-    DYNAMIC_STATE_SCISSOR -> showString "DYNAMIC_STATE_SCISSOR"-    DYNAMIC_STATE_LINE_WIDTH -> showString "DYNAMIC_STATE_LINE_WIDTH"-    DYNAMIC_STATE_DEPTH_BIAS -> showString "DYNAMIC_STATE_DEPTH_BIAS"-    DYNAMIC_STATE_BLEND_CONSTANTS -> showString "DYNAMIC_STATE_BLEND_CONSTANTS"-    DYNAMIC_STATE_DEPTH_BOUNDS -> showString "DYNAMIC_STATE_DEPTH_BOUNDS"-    DYNAMIC_STATE_STENCIL_COMPARE_MASK -> showString "DYNAMIC_STATE_STENCIL_COMPARE_MASK"-    DYNAMIC_STATE_STENCIL_WRITE_MASK -> showString "DYNAMIC_STATE_STENCIL_WRITE_MASK"-    DYNAMIC_STATE_STENCIL_REFERENCE -> showString "DYNAMIC_STATE_STENCIL_REFERENCE"-    DYNAMIC_STATE_STENCIL_OP_EXT -> showString "DYNAMIC_STATE_STENCIL_OP_EXT"-    DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT -> showString "DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT"-    DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT -> showString "DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT"-    DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT -> showString "DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT"-    DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT -> showString "DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT"-    DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT -> showString "DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT"-    DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT -> showString "DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT"-    DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT -> showString "DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT"-    DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT -> showString "DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT"-    DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT -> showString "DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT"-    DYNAMIC_STATE_FRONT_FACE_EXT -> showString "DYNAMIC_STATE_FRONT_FACE_EXT"-    DYNAMIC_STATE_CULL_MODE_EXT -> showString "DYNAMIC_STATE_CULL_MODE_EXT"-    DYNAMIC_STATE_LINE_STIPPLE_EXT -> showString "DYNAMIC_STATE_LINE_STIPPLE_EXT"-    DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR -> showString "DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR"-    DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV -> showString "DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV"-    DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV -> showString "DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV"-    DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV -> showString "DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV"-    DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT -> showString "DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"-    DYNAMIC_STATE_DISCARD_RECTANGLE_EXT -> showString "DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"-    DYNAMIC_STATE_VIEWPORT_W_SCALING_NV -> showString "DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"-    DynamicState x -> showParen (p >= 11) (showString "DynamicState " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixDynamicState+                            showTableDynamicState+                            conNameDynamicState+                            (\(DynamicState x) -> x)+                            (showsPrec 11)  instance Read DynamicState where-  readPrec = parens (choose [("DYNAMIC_STATE_VIEWPORT", pure DYNAMIC_STATE_VIEWPORT)-                            , ("DYNAMIC_STATE_SCISSOR", pure DYNAMIC_STATE_SCISSOR)-                            , ("DYNAMIC_STATE_LINE_WIDTH", pure DYNAMIC_STATE_LINE_WIDTH)-                            , ("DYNAMIC_STATE_DEPTH_BIAS", pure DYNAMIC_STATE_DEPTH_BIAS)-                            , ("DYNAMIC_STATE_BLEND_CONSTANTS", pure DYNAMIC_STATE_BLEND_CONSTANTS)-                            , ("DYNAMIC_STATE_DEPTH_BOUNDS", pure DYNAMIC_STATE_DEPTH_BOUNDS)-                            , ("DYNAMIC_STATE_STENCIL_COMPARE_MASK", pure DYNAMIC_STATE_STENCIL_COMPARE_MASK)-                            , ("DYNAMIC_STATE_STENCIL_WRITE_MASK", pure DYNAMIC_STATE_STENCIL_WRITE_MASK)-                            , ("DYNAMIC_STATE_STENCIL_REFERENCE", pure DYNAMIC_STATE_STENCIL_REFERENCE)-                            , ("DYNAMIC_STATE_STENCIL_OP_EXT", pure DYNAMIC_STATE_STENCIL_OP_EXT)-                            , ("DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT", pure DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT)-                            , ("DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT", pure DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT)-                            , ("DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT", pure DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT)-                            , ("DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT", pure DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT)-                            , ("DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT", pure DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT)-                            , ("DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT", pure DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT)-                            , ("DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT", pure DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT)-                            , ("DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT", pure DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT)-                            , ("DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT", pure DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT)-                            , ("DYNAMIC_STATE_FRONT_FACE_EXT", pure DYNAMIC_STATE_FRONT_FACE_EXT)-                            , ("DYNAMIC_STATE_CULL_MODE_EXT", pure DYNAMIC_STATE_CULL_MODE_EXT)-                            , ("DYNAMIC_STATE_LINE_STIPPLE_EXT", pure DYNAMIC_STATE_LINE_STIPPLE_EXT)-                            , ("DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR", pure DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR)-                            , ("DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV", pure DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV)-                            , ("DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV", pure DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV)-                            , ("DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV", pure DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV)-                            , ("DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT", pure DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT)-                            , ("DYNAMIC_STATE_DISCARD_RECTANGLE_EXT", pure DYNAMIC_STATE_DISCARD_RECTANGLE_EXT)-                            , ("DYNAMIC_STATE_VIEWPORT_W_SCALING_NV", pure DYNAMIC_STATE_VIEWPORT_W_SCALING_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "DynamicState")-                       v <- step readPrec-                       pure (DynamicState v)))+  readPrec = enumReadPrec enumPrefixDynamicState showTableDynamicState conNameDynamicState DynamicState 
src/Vulkan/Core10/Enums/EventCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "EventCreateFlags" module Vulkan.Core10.Enums.EventCreateFlags  (EventCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkEventCreateFlags - Reserved for future use@@ -32,15 +28,22 @@   +conNameEventCreateFlags :: String+conNameEventCreateFlags = "EventCreateFlags"++enumPrefixEventCreateFlags :: String+enumPrefixEventCreateFlags = ""++showTableEventCreateFlags :: [(EventCreateFlags, String)]+showTableEventCreateFlags = []+ instance Show EventCreateFlags where-  showsPrec p = \case-    EventCreateFlags x -> showParen (p >= 11) (showString "EventCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixEventCreateFlags+                            showTableEventCreateFlags+                            conNameEventCreateFlags+                            (\(EventCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read EventCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "EventCreateFlags")-                       v <- step readPrec-                       pure (EventCreateFlags v)))+  readPrec = enumReadPrec enumPrefixEventCreateFlags showTableEventCreateFlags conNameEventCreateFlags EventCreateFlags 
src/Vulkan/Core10/Enums/FenceCreateFlagBits.hs view
@@ -1,26 +1,24 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.FenceCreateFlagBits  ( FenceCreateFlagBits( FENCE_CREATE_SIGNALED_BIT+-- No documentation found for Chapter "FenceCreateFlagBits"+module Vulkan.Core10.Enums.FenceCreateFlagBits  ( FenceCreateFlags+                                                , FenceCreateFlagBits( FENCE_CREATE_SIGNALED_BIT                                                                      , ..                                                                      )-                                                , FenceCreateFlags                                                 ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type FenceCreateFlags = FenceCreateFlagBits+ -- | VkFenceCreateFlagBits - Bitmask specifying initial state and behavior of -- a fence --@@ -34,18 +32,25 @@ -- in the signaled state. Otherwise, it is created in the unsignaled state. pattern FENCE_CREATE_SIGNALED_BIT = FenceCreateFlagBits 0x00000001 -type FenceCreateFlags = FenceCreateFlagBits+conNameFenceCreateFlagBits :: String+conNameFenceCreateFlagBits = "FenceCreateFlagBits" +enumPrefixFenceCreateFlagBits :: String+enumPrefixFenceCreateFlagBits = "FENCE_CREATE_SIGNALED_BIT"++showTableFenceCreateFlagBits :: [(FenceCreateFlagBits, String)]+showTableFenceCreateFlagBits = [(FENCE_CREATE_SIGNALED_BIT, "")]+ instance Show FenceCreateFlagBits where-  showsPrec p = \case-    FENCE_CREATE_SIGNALED_BIT -> showString "FENCE_CREATE_SIGNALED_BIT"-    FenceCreateFlagBits x -> showParen (p >= 11) (showString "FenceCreateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixFenceCreateFlagBits+                            showTableFenceCreateFlagBits+                            conNameFenceCreateFlagBits+                            (\(FenceCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read FenceCreateFlagBits where-  readPrec = parens (choose [("FENCE_CREATE_SIGNALED_BIT", pure FENCE_CREATE_SIGNALED_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "FenceCreateFlagBits")-                       v <- step readPrec-                       pure (FenceCreateFlagBits v)))+  readPrec = enumReadPrec enumPrefixFenceCreateFlagBits+                          showTableFenceCreateFlagBits+                          conNameFenceCreateFlagBits+                          FenceCreateFlagBits 
src/Vulkan/Core10/Enums/Filter.hs view
@@ -1,23 +1,18 @@ {-# language CPP #-}+-- No documentation found for Chapter "Filter" module Vulkan.Core10.Enums.Filter  (Filter( FILTER_NEAREST                                           , FILTER_LINEAR                                           , FILTER_CUBIC_IMG                                           , ..                                           )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkFilter - Specify filters used for texture lookups --@@ -36,29 +31,27 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- | 'FILTER_NEAREST' specifies nearest filtering.-pattern FILTER_NEAREST = Filter 0+pattern FILTER_NEAREST   = Filter 0 -- | 'FILTER_LINEAR' specifies linear filtering.-pattern FILTER_LINEAR = Filter 1+pattern FILTER_LINEAR    = Filter 1 -- No documentation found for Nested "VkFilter" "VK_FILTER_CUBIC_IMG" pattern FILTER_CUBIC_IMG = Filter 1000015000 {-# complete FILTER_NEAREST,              FILTER_LINEAR,              FILTER_CUBIC_IMG :: Filter #-} +conNameFilter :: String+conNameFilter = "Filter"++enumPrefixFilter :: String+enumPrefixFilter = "FILTER_"++showTableFilter :: [(Filter, String)]+showTableFilter = [(FILTER_NEAREST, "NEAREST"), (FILTER_LINEAR, "LINEAR"), (FILTER_CUBIC_IMG, "CUBIC_IMG")]+ instance Show Filter where-  showsPrec p = \case-    FILTER_NEAREST -> showString "FILTER_NEAREST"-    FILTER_LINEAR -> showString "FILTER_LINEAR"-    FILTER_CUBIC_IMG -> showString "FILTER_CUBIC_IMG"-    Filter x -> showParen (p >= 11) (showString "Filter " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixFilter showTableFilter conNameFilter (\(Filter x) -> x) (showsPrec 11)  instance Read Filter where-  readPrec = parens (choose [("FILTER_NEAREST", pure FILTER_NEAREST)-                            , ("FILTER_LINEAR", pure FILTER_LINEAR)-                            , ("FILTER_CUBIC_IMG", pure FILTER_CUBIC_IMG)]-                     +++-                     prec 10 (do-                       expectP (Ident "Filter")-                       v <- step readPrec-                       pure (Filter v)))+  readPrec = enumReadPrec enumPrefixFilter showTableFilter conNameFilter Filter 
src/Vulkan/Core10/Enums/Filter.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Filter" module Vulkan.Core10.Enums.Filter  (Filter) where  
src/Vulkan/Core10/Enums/Format.hs view
@@ -1,2461 +1,2217 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.Format  (Format( FORMAT_UNDEFINED-                                          , FORMAT_R4G4_UNORM_PACK8-                                          , FORMAT_R4G4B4A4_UNORM_PACK16-                                          , FORMAT_B4G4R4A4_UNORM_PACK16-                                          , FORMAT_R5G6B5_UNORM_PACK16-                                          , FORMAT_B5G6R5_UNORM_PACK16-                                          , FORMAT_R5G5B5A1_UNORM_PACK16-                                          , FORMAT_B5G5R5A1_UNORM_PACK16-                                          , FORMAT_A1R5G5B5_UNORM_PACK16-                                          , FORMAT_R8_UNORM-                                          , FORMAT_R8_SNORM-                                          , FORMAT_R8_USCALED-                                          , FORMAT_R8_SSCALED-                                          , FORMAT_R8_UINT-                                          , FORMAT_R8_SINT-                                          , FORMAT_R8_SRGB-                                          , FORMAT_R8G8_UNORM-                                          , FORMAT_R8G8_SNORM-                                          , FORMAT_R8G8_USCALED-                                          , FORMAT_R8G8_SSCALED-                                          , FORMAT_R8G8_UINT-                                          , FORMAT_R8G8_SINT-                                          , FORMAT_R8G8_SRGB-                                          , FORMAT_R8G8B8_UNORM-                                          , FORMAT_R8G8B8_SNORM-                                          , FORMAT_R8G8B8_USCALED-                                          , FORMAT_R8G8B8_SSCALED-                                          , FORMAT_R8G8B8_UINT-                                          , FORMAT_R8G8B8_SINT-                                          , FORMAT_R8G8B8_SRGB-                                          , FORMAT_B8G8R8_UNORM-                                          , FORMAT_B8G8R8_SNORM-                                          , FORMAT_B8G8R8_USCALED-                                          , FORMAT_B8G8R8_SSCALED-                                          , FORMAT_B8G8R8_UINT-                                          , FORMAT_B8G8R8_SINT-                                          , FORMAT_B8G8R8_SRGB-                                          , FORMAT_R8G8B8A8_UNORM-                                          , FORMAT_R8G8B8A8_SNORM-                                          , FORMAT_R8G8B8A8_USCALED-                                          , FORMAT_R8G8B8A8_SSCALED-                                          , FORMAT_R8G8B8A8_UINT-                                          , FORMAT_R8G8B8A8_SINT-                                          , FORMAT_R8G8B8A8_SRGB-                                          , FORMAT_B8G8R8A8_UNORM-                                          , FORMAT_B8G8R8A8_SNORM-                                          , FORMAT_B8G8R8A8_USCALED-                                          , FORMAT_B8G8R8A8_SSCALED-                                          , FORMAT_B8G8R8A8_UINT-                                          , FORMAT_B8G8R8A8_SINT-                                          , FORMAT_B8G8R8A8_SRGB-                                          , FORMAT_A8B8G8R8_UNORM_PACK32-                                          , FORMAT_A8B8G8R8_SNORM_PACK32-                                          , FORMAT_A8B8G8R8_USCALED_PACK32-                                          , FORMAT_A8B8G8R8_SSCALED_PACK32-                                          , FORMAT_A8B8G8R8_UINT_PACK32-                                          , FORMAT_A8B8G8R8_SINT_PACK32-                                          , FORMAT_A8B8G8R8_SRGB_PACK32-                                          , FORMAT_A2R10G10B10_UNORM_PACK32-                                          , FORMAT_A2R10G10B10_SNORM_PACK32-                                          , FORMAT_A2R10G10B10_USCALED_PACK32-                                          , FORMAT_A2R10G10B10_SSCALED_PACK32-                                          , FORMAT_A2R10G10B10_UINT_PACK32-                                          , FORMAT_A2R10G10B10_SINT_PACK32-                                          , FORMAT_A2B10G10R10_UNORM_PACK32-                                          , FORMAT_A2B10G10R10_SNORM_PACK32-                                          , FORMAT_A2B10G10R10_USCALED_PACK32-                                          , FORMAT_A2B10G10R10_SSCALED_PACK32-                                          , FORMAT_A2B10G10R10_UINT_PACK32-                                          , FORMAT_A2B10G10R10_SINT_PACK32-                                          , FORMAT_R16_UNORM-                                          , FORMAT_R16_SNORM-                                          , FORMAT_R16_USCALED-                                          , FORMAT_R16_SSCALED-                                          , FORMAT_R16_UINT-                                          , FORMAT_R16_SINT-                                          , FORMAT_R16_SFLOAT-                                          , FORMAT_R16G16_UNORM-                                          , FORMAT_R16G16_SNORM-                                          , FORMAT_R16G16_USCALED-                                          , FORMAT_R16G16_SSCALED-                                          , FORMAT_R16G16_UINT-                                          , FORMAT_R16G16_SINT-                                          , FORMAT_R16G16_SFLOAT-                                          , FORMAT_R16G16B16_UNORM-                                          , FORMAT_R16G16B16_SNORM-                                          , FORMAT_R16G16B16_USCALED-                                          , FORMAT_R16G16B16_SSCALED-                                          , FORMAT_R16G16B16_UINT-                                          , FORMAT_R16G16B16_SINT-                                          , FORMAT_R16G16B16_SFLOAT-                                          , FORMAT_R16G16B16A16_UNORM-                                          , FORMAT_R16G16B16A16_SNORM-                                          , FORMAT_R16G16B16A16_USCALED-                                          , FORMAT_R16G16B16A16_SSCALED-                                          , FORMAT_R16G16B16A16_UINT-                                          , FORMAT_R16G16B16A16_SINT-                                          , FORMAT_R16G16B16A16_SFLOAT-                                          , FORMAT_R32_UINT-                                          , FORMAT_R32_SINT-                                          , FORMAT_R32_SFLOAT-                                          , FORMAT_R32G32_UINT-                                          , FORMAT_R32G32_SINT-                                          , FORMAT_R32G32_SFLOAT-                                          , FORMAT_R32G32B32_UINT-                                          , FORMAT_R32G32B32_SINT-                                          , FORMAT_R32G32B32_SFLOAT-                                          , FORMAT_R32G32B32A32_UINT-                                          , FORMAT_R32G32B32A32_SINT-                                          , FORMAT_R32G32B32A32_SFLOAT-                                          , FORMAT_R64_UINT-                                          , FORMAT_R64_SINT-                                          , FORMAT_R64_SFLOAT-                                          , FORMAT_R64G64_UINT-                                          , FORMAT_R64G64_SINT-                                          , FORMAT_R64G64_SFLOAT-                                          , FORMAT_R64G64B64_UINT-                                          , FORMAT_R64G64B64_SINT-                                          , FORMAT_R64G64B64_SFLOAT-                                          , FORMAT_R64G64B64A64_UINT-                                          , FORMAT_R64G64B64A64_SINT-                                          , FORMAT_R64G64B64A64_SFLOAT-                                          , FORMAT_B10G11R11_UFLOAT_PACK32-                                          , FORMAT_E5B9G9R9_UFLOAT_PACK32-                                          , FORMAT_D16_UNORM-                                          , FORMAT_X8_D24_UNORM_PACK32-                                          , FORMAT_D32_SFLOAT-                                          , FORMAT_S8_UINT-                                          , FORMAT_D16_UNORM_S8_UINT-                                          , FORMAT_D24_UNORM_S8_UINT-                                          , FORMAT_D32_SFLOAT_S8_UINT-                                          , FORMAT_BC1_RGB_UNORM_BLOCK-                                          , FORMAT_BC1_RGB_SRGB_BLOCK-                                          , FORMAT_BC1_RGBA_UNORM_BLOCK-                                          , FORMAT_BC1_RGBA_SRGB_BLOCK-                                          , FORMAT_BC2_UNORM_BLOCK-                                          , FORMAT_BC2_SRGB_BLOCK-                                          , FORMAT_BC3_UNORM_BLOCK-                                          , FORMAT_BC3_SRGB_BLOCK-                                          , FORMAT_BC4_UNORM_BLOCK-                                          , FORMAT_BC4_SNORM_BLOCK-                                          , FORMAT_BC5_UNORM_BLOCK-                                          , FORMAT_BC5_SNORM_BLOCK-                                          , FORMAT_BC6H_UFLOAT_BLOCK-                                          , FORMAT_BC6H_SFLOAT_BLOCK-                                          , FORMAT_BC7_UNORM_BLOCK-                                          , FORMAT_BC7_SRGB_BLOCK-                                          , FORMAT_ETC2_R8G8B8_UNORM_BLOCK-                                          , FORMAT_ETC2_R8G8B8_SRGB_BLOCK-                                          , FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK-                                          , FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK-                                          , FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK-                                          , FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK-                                          , FORMAT_EAC_R11_UNORM_BLOCK-                                          , FORMAT_EAC_R11_SNORM_BLOCK-                                          , FORMAT_EAC_R11G11_UNORM_BLOCK-                                          , FORMAT_EAC_R11G11_SNORM_BLOCK-                                          , FORMAT_ASTC_4x4_UNORM_BLOCK-                                          , FORMAT_ASTC_4x4_SRGB_BLOCK-                                          , FORMAT_ASTC_5x4_UNORM_BLOCK-                                          , FORMAT_ASTC_5x4_SRGB_BLOCK-                                          , FORMAT_ASTC_5x5_UNORM_BLOCK-                                          , FORMAT_ASTC_5x5_SRGB_BLOCK-                                          , FORMAT_ASTC_6x5_UNORM_BLOCK-                                          , FORMAT_ASTC_6x5_SRGB_BLOCK-                                          , FORMAT_ASTC_6x6_UNORM_BLOCK-                                          , FORMAT_ASTC_6x6_SRGB_BLOCK-                                          , FORMAT_ASTC_8x5_UNORM_BLOCK-                                          , FORMAT_ASTC_8x5_SRGB_BLOCK-                                          , FORMAT_ASTC_8x6_UNORM_BLOCK-                                          , FORMAT_ASTC_8x6_SRGB_BLOCK-                                          , FORMAT_ASTC_8x8_UNORM_BLOCK-                                          , FORMAT_ASTC_8x8_SRGB_BLOCK-                                          , FORMAT_ASTC_10x5_UNORM_BLOCK-                                          , FORMAT_ASTC_10x5_SRGB_BLOCK-                                          , FORMAT_ASTC_10x6_UNORM_BLOCK-                                          , FORMAT_ASTC_10x6_SRGB_BLOCK-                                          , FORMAT_ASTC_10x8_UNORM_BLOCK-                                          , FORMAT_ASTC_10x8_SRGB_BLOCK-                                          , FORMAT_ASTC_10x10_UNORM_BLOCK-                                          , FORMAT_ASTC_10x10_SRGB_BLOCK-                                          , FORMAT_ASTC_12x10_UNORM_BLOCK-                                          , FORMAT_ASTC_12x10_SRGB_BLOCK-                                          , FORMAT_ASTC_12x12_UNORM_BLOCK-                                          , FORMAT_ASTC_12x12_SRGB_BLOCK-                                          , FORMAT_A4B4G4R4_UNORM_PACK16_EXT-                                          , FORMAT_A4R4G4B4_UNORM_PACK16_EXT-                                          , FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT-                                          , FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT-                                          , FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT-                                          , FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT-                                          , FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT-                                          , FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT-                                          , FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT-                                          , FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT-                                          , FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT-                                          , FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT-                                          , FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT-                                          , FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT-                                          , FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT-                                          , FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT-                                          , FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG-                                          , FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG-                                          , FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG-                                          , FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG-                                          , FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG-                                          , FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG-                                          , FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG-                                          , FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG-                                          , FORMAT_G16_B16_R16_3PLANE_444_UNORM-                                          , FORMAT_G16_B16R16_2PLANE_422_UNORM-                                          , FORMAT_G16_B16_R16_3PLANE_422_UNORM-                                          , FORMAT_G16_B16R16_2PLANE_420_UNORM-                                          , FORMAT_G16_B16_R16_3PLANE_420_UNORM-                                          , FORMAT_B16G16R16G16_422_UNORM-                                          , FORMAT_G16B16G16R16_422_UNORM-                                          , FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16-                                          , FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16-                                          , FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16-                                          , FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16-                                          , FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16-                                          , FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16-                                          , FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16-                                          , FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16-                                          , FORMAT_R12X4G12X4_UNORM_2PACK16-                                          , FORMAT_R12X4_UNORM_PACK16-                                          , FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16-                                          , FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16-                                          , FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16-                                          , FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16-                                          , FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16-                                          , FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16-                                          , FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16-                                          , FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16-                                          , FORMAT_R10X6G10X6_UNORM_2PACK16-                                          , FORMAT_R10X6_UNORM_PACK16-                                          , FORMAT_G8_B8_R8_3PLANE_444_UNORM-                                          , FORMAT_G8_B8R8_2PLANE_422_UNORM-                                          , FORMAT_G8_B8_R8_3PLANE_422_UNORM-                                          , FORMAT_G8_B8R8_2PLANE_420_UNORM-                                          , FORMAT_G8_B8_R8_3PLANE_420_UNORM-                                          , FORMAT_B8G8R8G8_422_UNORM-                                          , FORMAT_G8B8G8R8_422_UNORM-                                          , ..-                                          )) where--import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)-import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step)-import Foreign.Storable (Storable)-import Data.Int (Int32)-import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))-import Vulkan.Zero (Zero)--- | VkFormat - Available image formats------ = See Also------ 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateGeometryTypeInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryTrianglesDataKHR',--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',--- 'Vulkan.Core10.Pass.AttachmentDescription',--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',--- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',--- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo',--- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',--- 'Vulkan.Core10.Image.ImageCreateInfo',--- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',--- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.ImageViewASTCDecodeModeEXT',--- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',--- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT',--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',--- 'Vulkan.Extensions.VK_KHR_surface.SurfaceFormatKHR',--- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',--- 'Vulkan.Core10.Pipeline.VertexInputAttributeDescription',--- 'Vulkan.Extensions.VK_NV_external_memory_capabilities.getPhysicalDeviceExternalImageFormatPropertiesNV',--- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2',--- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2KHR',--- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties',--- 'Vulkan.Core10.SparseResourceMemoryManagement.getPhysicalDeviceSparseImageFormatProperties'-newtype Format = Format Int32-  deriving newtype (Eq, Ord, Storable, Zero)---- | 'FORMAT_UNDEFINED' specifies that the format is not specified.-pattern FORMAT_UNDEFINED = Format 0--- | 'FORMAT_R4G4_UNORM_PACK8' specifies a two-component, 8-bit packed--- unsigned normalized format that has a 4-bit R component in bits 4..7,--- and a 4-bit G component in bits 0..3.-pattern FORMAT_R4G4_UNORM_PACK8 = Format 1--- | 'FORMAT_R4G4B4A4_UNORM_PACK16' specifies a four-component, 16-bit packed--- unsigned normalized format that has a 4-bit R component in bits 12..15,--- a 4-bit G component in bits 8..11, a 4-bit B component in bits 4..7, and--- a 4-bit A component in bits 0..3.-pattern FORMAT_R4G4B4A4_UNORM_PACK16 = Format 2--- | 'FORMAT_B4G4R4A4_UNORM_PACK16' specifies a four-component, 16-bit packed--- unsigned normalized format that has a 4-bit B component in bits 12..15,--- a 4-bit G component in bits 8..11, a 4-bit R component in bits 4..7, and--- a 4-bit A component in bits 0..3.-pattern FORMAT_B4G4R4A4_UNORM_PACK16 = Format 3--- | 'FORMAT_R5G6B5_UNORM_PACK16' specifies a three-component, 16-bit packed--- unsigned normalized format that has a 5-bit R component in bits 11..15,--- a 6-bit G component in bits 5..10, and a 5-bit B component in bits 0..4.-pattern FORMAT_R5G6B5_UNORM_PACK16 = Format 4--- | 'FORMAT_B5G6R5_UNORM_PACK16' specifies a three-component, 16-bit packed--- unsigned normalized format that has a 5-bit B component in bits 11..15,--- a 6-bit G component in bits 5..10, and a 5-bit R component in bits 0..4.-pattern FORMAT_B5G6R5_UNORM_PACK16 = Format 5--- | 'FORMAT_R5G5B5A1_UNORM_PACK16' specifies a four-component, 16-bit packed--- unsigned normalized format that has a 5-bit R component in bits 11..15,--- a 5-bit G component in bits 6..10, a 5-bit B component in bits 1..5, and--- a 1-bit A component in bit 0.-pattern FORMAT_R5G5B5A1_UNORM_PACK16 = Format 6--- | 'FORMAT_B5G5R5A1_UNORM_PACK16' specifies a four-component, 16-bit packed--- unsigned normalized format that has a 5-bit B component in bits 11..15,--- a 5-bit G component in bits 6..10, a 5-bit R component in bits 1..5, and--- a 1-bit A component in bit 0.-pattern FORMAT_B5G5R5A1_UNORM_PACK16 = Format 7--- | 'FORMAT_A1R5G5B5_UNORM_PACK16' specifies a four-component, 16-bit packed--- unsigned normalized format that has a 1-bit A component in bit 15, a--- 5-bit R component in bits 10..14, a 5-bit G component in bits 5..9, and--- a 5-bit B component in bits 0..4.-pattern FORMAT_A1R5G5B5_UNORM_PACK16 = Format 8--- | 'FORMAT_R8_UNORM' specifies a one-component, 8-bit unsigned normalized--- format that has a single 8-bit R component.-pattern FORMAT_R8_UNORM = Format 9--- | 'FORMAT_R8_SNORM' specifies a one-component, 8-bit signed normalized--- format that has a single 8-bit R component.-pattern FORMAT_R8_SNORM = Format 10--- | 'FORMAT_R8_USCALED' specifies a one-component, 8-bit unsigned scaled--- integer format that has a single 8-bit R component.-pattern FORMAT_R8_USCALED = Format 11--- | 'FORMAT_R8_SSCALED' specifies a one-component, 8-bit signed scaled--- integer format that has a single 8-bit R component.-pattern FORMAT_R8_SSCALED = Format 12--- | 'FORMAT_R8_UINT' specifies a one-component, 8-bit unsigned integer--- format that has a single 8-bit R component.-pattern FORMAT_R8_UINT = Format 13--- | 'FORMAT_R8_SINT' specifies a one-component, 8-bit signed integer format--- that has a single 8-bit R component.-pattern FORMAT_R8_SINT = Format 14--- | 'FORMAT_R8_SRGB' specifies a one-component, 8-bit unsigned normalized--- format that has a single 8-bit R component stored with sRGB nonlinear--- encoding.-pattern FORMAT_R8_SRGB = Format 15--- | 'FORMAT_R8G8_UNORM' specifies a two-component, 16-bit unsigned--- normalized format that has an 8-bit R component in byte 0, and an 8-bit--- G component in byte 1.-pattern FORMAT_R8G8_UNORM = Format 16--- | 'FORMAT_R8G8_SNORM' specifies a two-component, 16-bit signed normalized--- format that has an 8-bit R component in byte 0, and an 8-bit G component--- in byte 1.-pattern FORMAT_R8G8_SNORM = Format 17--- | 'FORMAT_R8G8_USCALED' specifies a two-component, 16-bit unsigned scaled--- integer format that has an 8-bit R component in byte 0, and an 8-bit G--- component in byte 1.-pattern FORMAT_R8G8_USCALED = Format 18--- | 'FORMAT_R8G8_SSCALED' specifies a two-component, 16-bit signed scaled--- integer format that has an 8-bit R component in byte 0, and an 8-bit G--- component in byte 1.-pattern FORMAT_R8G8_SSCALED = Format 19--- | 'FORMAT_R8G8_UINT' specifies a two-component, 16-bit unsigned integer--- format that has an 8-bit R component in byte 0, and an 8-bit G component--- in byte 1.-pattern FORMAT_R8G8_UINT = Format 20--- | 'FORMAT_R8G8_SINT' specifies a two-component, 16-bit signed integer--- format that has an 8-bit R component in byte 0, and an 8-bit G component--- in byte 1.-pattern FORMAT_R8G8_SINT = Format 21--- | 'FORMAT_R8G8_SRGB' specifies a two-component, 16-bit unsigned normalized--- format that has an 8-bit R component stored with sRGB nonlinear encoding--- in byte 0, and an 8-bit G component stored with sRGB nonlinear encoding--- in byte 1.-pattern FORMAT_R8G8_SRGB = Format 22--- | 'FORMAT_R8G8B8_UNORM' specifies a three-component, 24-bit unsigned--- normalized format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit B component in byte 2.-pattern FORMAT_R8G8B8_UNORM = Format 23--- | 'FORMAT_R8G8B8_SNORM' specifies a three-component, 24-bit signed--- normalized format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit B component in byte 2.-pattern FORMAT_R8G8B8_SNORM = Format 24--- | 'FORMAT_R8G8B8_USCALED' specifies a three-component, 24-bit unsigned--- scaled format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit B component in byte 2.-pattern FORMAT_R8G8B8_USCALED = Format 25--- | 'FORMAT_R8G8B8_SSCALED' specifies a three-component, 24-bit signed--- scaled format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit B component in byte 2.-pattern FORMAT_R8G8B8_SSCALED = Format 26--- | 'FORMAT_R8G8B8_UINT' specifies a three-component, 24-bit unsigned--- integer format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit B component in byte 2.-pattern FORMAT_R8G8B8_UINT = Format 27--- | 'FORMAT_R8G8B8_SINT' specifies a three-component, 24-bit signed integer--- format that has an 8-bit R component in byte 0, an 8-bit G component in--- byte 1, and an 8-bit B component in byte 2.-pattern FORMAT_R8G8B8_SINT = Format 28--- | 'FORMAT_R8G8B8_SRGB' specifies a three-component, 24-bit unsigned--- normalized format that has an 8-bit R component stored with sRGB--- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB--- nonlinear encoding in byte 1, and an 8-bit B component stored with sRGB--- nonlinear encoding in byte 2.-pattern FORMAT_R8G8B8_SRGB = Format 29--- | 'FORMAT_B8G8R8_UNORM' specifies a three-component, 24-bit unsigned--- normalized format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit R component in byte 2.-pattern FORMAT_B8G8R8_UNORM = Format 30--- | 'FORMAT_B8G8R8_SNORM' specifies a three-component, 24-bit signed--- normalized format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit R component in byte 2.-pattern FORMAT_B8G8R8_SNORM = Format 31--- | 'FORMAT_B8G8R8_USCALED' specifies a three-component, 24-bit unsigned--- scaled format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit R component in byte 2.-pattern FORMAT_B8G8R8_USCALED = Format 32--- | 'FORMAT_B8G8R8_SSCALED' specifies a three-component, 24-bit signed--- scaled format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit R component in byte 2.-pattern FORMAT_B8G8R8_SSCALED = Format 33--- | 'FORMAT_B8G8R8_UINT' specifies a three-component, 24-bit unsigned--- integer format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit R component in byte 2.-pattern FORMAT_B8G8R8_UINT = Format 34--- | 'FORMAT_B8G8R8_SINT' specifies a three-component, 24-bit signed integer--- format that has an 8-bit B component in byte 0, an 8-bit G component in--- byte 1, and an 8-bit R component in byte 2.-pattern FORMAT_B8G8R8_SINT = Format 35--- | 'FORMAT_B8G8R8_SRGB' specifies a three-component, 24-bit unsigned--- normalized format that has an 8-bit B component stored with sRGB--- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB--- nonlinear encoding in byte 1, and an 8-bit R component stored with sRGB--- nonlinear encoding in byte 2.-pattern FORMAT_B8G8R8_SRGB = Format 36--- | 'FORMAT_R8G8B8A8_UNORM' specifies a four-component, 32-bit unsigned--- normalized format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A--- component in byte 3.-pattern FORMAT_R8G8B8A8_UNORM = Format 37--- | 'FORMAT_R8G8B8A8_SNORM' specifies a four-component, 32-bit signed--- normalized format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A--- component in byte 3.-pattern FORMAT_R8G8B8A8_SNORM = Format 38--- | 'FORMAT_R8G8B8A8_USCALED' specifies a four-component, 32-bit unsigned--- scaled format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A--- component in byte 3.-pattern FORMAT_R8G8B8A8_USCALED = Format 39--- | 'FORMAT_R8G8B8A8_SSCALED' specifies a four-component, 32-bit signed--- scaled format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A--- component in byte 3.-pattern FORMAT_R8G8B8A8_SSCALED = Format 40--- | 'FORMAT_R8G8B8A8_UINT' specifies a four-component, 32-bit unsigned--- integer format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A--- component in byte 3.-pattern FORMAT_R8G8B8A8_UINT = Format 41--- | 'FORMAT_R8G8B8A8_SINT' specifies a four-component, 32-bit signed integer--- format that has an 8-bit R component in byte 0, an 8-bit G component in--- byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte--- 3.-pattern FORMAT_R8G8B8A8_SINT = Format 42--- | 'FORMAT_R8G8B8A8_SRGB' specifies a four-component, 32-bit unsigned--- normalized format that has an 8-bit R component stored with sRGB--- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB--- nonlinear encoding in byte 1, an 8-bit B component stored with sRGB--- nonlinear encoding in byte 2, and an 8-bit A component in byte 3.-pattern FORMAT_R8G8B8A8_SRGB = Format 43--- | 'FORMAT_B8G8R8A8_UNORM' specifies a four-component, 32-bit unsigned--- normalized format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A--- component in byte 3.-pattern FORMAT_B8G8R8A8_UNORM = Format 44--- | 'FORMAT_B8G8R8A8_SNORM' specifies a four-component, 32-bit signed--- normalized format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A--- component in byte 3.-pattern FORMAT_B8G8R8A8_SNORM = Format 45--- | 'FORMAT_B8G8R8A8_USCALED' specifies a four-component, 32-bit unsigned--- scaled format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A--- component in byte 3.-pattern FORMAT_B8G8R8A8_USCALED = Format 46--- | 'FORMAT_B8G8R8A8_SSCALED' specifies a four-component, 32-bit signed--- scaled format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A--- component in byte 3.-pattern FORMAT_B8G8R8A8_SSCALED = Format 47--- | 'FORMAT_B8G8R8A8_UINT' specifies a four-component, 32-bit unsigned--- integer format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A--- component in byte 3.-pattern FORMAT_B8G8R8A8_UINT = Format 48--- | 'FORMAT_B8G8R8A8_SINT' specifies a four-component, 32-bit signed integer--- format that has an 8-bit B component in byte 0, an 8-bit G component in--- byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte--- 3.-pattern FORMAT_B8G8R8A8_SINT = Format 49--- | 'FORMAT_B8G8R8A8_SRGB' specifies a four-component, 32-bit unsigned--- normalized format that has an 8-bit B component stored with sRGB--- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB--- nonlinear encoding in byte 1, an 8-bit R component stored with sRGB--- nonlinear encoding in byte 2, and an 8-bit A component in byte 3.-pattern FORMAT_B8G8R8A8_SRGB = Format 50--- | 'FORMAT_A8B8G8R8_UNORM_PACK32' specifies a four-component, 32-bit packed--- unsigned normalized format that has an 8-bit A component in bits 24..31,--- an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,--- and an 8-bit R component in bits 0..7.-pattern FORMAT_A8B8G8R8_UNORM_PACK32 = Format 51--- | 'FORMAT_A8B8G8R8_SNORM_PACK32' specifies a four-component, 32-bit packed--- signed normalized format that has an 8-bit A component in bits 24..31,--- an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,--- and an 8-bit R component in bits 0..7.-pattern FORMAT_A8B8G8R8_SNORM_PACK32 = Format 52--- | 'FORMAT_A8B8G8R8_USCALED_PACK32' specifies a four-component, 32-bit--- packed unsigned scaled integer format that has an 8-bit A component in--- bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component--- in bits 8..15, and an 8-bit R component in bits 0..7.-pattern FORMAT_A8B8G8R8_USCALED_PACK32 = Format 53--- | 'FORMAT_A8B8G8R8_SSCALED_PACK32' specifies a four-component, 32-bit--- packed signed scaled integer format that has an 8-bit A component in--- bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component--- in bits 8..15, and an 8-bit R component in bits 0..7.-pattern FORMAT_A8B8G8R8_SSCALED_PACK32 = Format 54--- | 'FORMAT_A8B8G8R8_UINT_PACK32' specifies a four-component, 32-bit packed--- unsigned integer format that has an 8-bit A component in bits 24..31, an--- 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,--- and an 8-bit R component in bits 0..7.-pattern FORMAT_A8B8G8R8_UINT_PACK32 = Format 55--- | 'FORMAT_A8B8G8R8_SINT_PACK32' specifies a four-component, 32-bit packed--- signed integer format that has an 8-bit A component in bits 24..31, an--- 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,--- and an 8-bit R component in bits 0..7.-pattern FORMAT_A8B8G8R8_SINT_PACK32 = Format 56--- | 'FORMAT_A8B8G8R8_SRGB_PACK32' specifies a four-component, 32-bit packed--- unsigned normalized format that has an 8-bit A component in bits 24..31,--- an 8-bit B component stored with sRGB nonlinear encoding in bits 16..23,--- an 8-bit G component stored with sRGB nonlinear encoding in bits 8..15,--- and an 8-bit R component stored with sRGB nonlinear encoding in bits--- 0..7.-pattern FORMAT_A8B8G8R8_SRGB_PACK32 = Format 57--- | 'FORMAT_A2R10G10B10_UNORM_PACK32' specifies a four-component, 32-bit--- packed unsigned normalized format that has a 2-bit A component in bits--- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit B component in bits 0..9.-pattern FORMAT_A2R10G10B10_UNORM_PACK32 = Format 58--- | 'FORMAT_A2R10G10B10_SNORM_PACK32' specifies a four-component, 32-bit--- packed signed normalized format that has a 2-bit A component in bits--- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit B component in bits 0..9.-pattern FORMAT_A2R10G10B10_SNORM_PACK32 = Format 59--- | 'FORMAT_A2R10G10B10_USCALED_PACK32' specifies a four-component, 32-bit--- packed unsigned scaled integer format that has a 2-bit A component in--- bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component--- in bits 10..19, and a 10-bit B component in bits 0..9.-pattern FORMAT_A2R10G10B10_USCALED_PACK32 = Format 60--- | 'FORMAT_A2R10G10B10_SSCALED_PACK32' specifies a four-component, 32-bit--- packed signed scaled integer format that has a 2-bit A component in bits--- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit B component in bits 0..9.-pattern FORMAT_A2R10G10B10_SSCALED_PACK32 = Format 61--- | 'FORMAT_A2R10G10B10_UINT_PACK32' specifies a four-component, 32-bit--- packed unsigned integer format that has a 2-bit A component in bits--- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit B component in bits 0..9.-pattern FORMAT_A2R10G10B10_UINT_PACK32 = Format 62--- | 'FORMAT_A2R10G10B10_SINT_PACK32' specifies a four-component, 32-bit--- packed signed integer format that has a 2-bit A component in bits--- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit B component in bits 0..9.-pattern FORMAT_A2R10G10B10_SINT_PACK32 = Format 63--- | 'FORMAT_A2B10G10R10_UNORM_PACK32' specifies a four-component, 32-bit--- packed unsigned normalized format that has a 2-bit A component in bits--- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit R component in bits 0..9.-pattern FORMAT_A2B10G10R10_UNORM_PACK32 = Format 64--- | 'FORMAT_A2B10G10R10_SNORM_PACK32' specifies a four-component, 32-bit--- packed signed normalized format that has a 2-bit A component in bits--- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit R component in bits 0..9.-pattern FORMAT_A2B10G10R10_SNORM_PACK32 = Format 65--- | 'FORMAT_A2B10G10R10_USCALED_PACK32' specifies a four-component, 32-bit--- packed unsigned scaled integer format that has a 2-bit A component in--- bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component--- in bits 10..19, and a 10-bit R component in bits 0..9.-pattern FORMAT_A2B10G10R10_USCALED_PACK32 = Format 66--- | 'FORMAT_A2B10G10R10_SSCALED_PACK32' specifies a four-component, 32-bit--- packed signed scaled integer format that has a 2-bit A component in bits--- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit R component in bits 0..9.-pattern FORMAT_A2B10G10R10_SSCALED_PACK32 = Format 67--- | 'FORMAT_A2B10G10R10_UINT_PACK32' specifies a four-component, 32-bit--- packed unsigned integer format that has a 2-bit A component in bits--- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit R component in bits 0..9.-pattern FORMAT_A2B10G10R10_UINT_PACK32 = Format 68--- | 'FORMAT_A2B10G10R10_SINT_PACK32' specifies a four-component, 32-bit--- packed signed integer format that has a 2-bit A component in bits--- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit R component in bits 0..9.-pattern FORMAT_A2B10G10R10_SINT_PACK32 = Format 69--- | 'FORMAT_R16_UNORM' specifies a one-component, 16-bit unsigned normalized--- format that has a single 16-bit R component.-pattern FORMAT_R16_UNORM = Format 70--- | 'FORMAT_R16_SNORM' specifies a one-component, 16-bit signed normalized--- format that has a single 16-bit R component.-pattern FORMAT_R16_SNORM = Format 71--- | 'FORMAT_R16_USCALED' specifies a one-component, 16-bit unsigned scaled--- integer format that has a single 16-bit R component.-pattern FORMAT_R16_USCALED = Format 72--- | 'FORMAT_R16_SSCALED' specifies a one-component, 16-bit signed scaled--- integer format that has a single 16-bit R component.-pattern FORMAT_R16_SSCALED = Format 73--- | 'FORMAT_R16_UINT' specifies a one-component, 16-bit unsigned integer--- format that has a single 16-bit R component.-pattern FORMAT_R16_UINT = Format 74--- | 'FORMAT_R16_SINT' specifies a one-component, 16-bit signed integer--- format that has a single 16-bit R component.-pattern FORMAT_R16_SINT = Format 75--- | 'FORMAT_R16_SFLOAT' specifies a one-component, 16-bit signed--- floating-point format that has a single 16-bit R component.-pattern FORMAT_R16_SFLOAT = Format 76--- | 'FORMAT_R16G16_UNORM' specifies a two-component, 32-bit unsigned--- normalized format that has a 16-bit R component in bytes 0..1, and a--- 16-bit G component in bytes 2..3.-pattern FORMAT_R16G16_UNORM = Format 77--- | 'FORMAT_R16G16_SNORM' specifies a two-component, 32-bit signed--- normalized format that has a 16-bit R component in bytes 0..1, and a--- 16-bit G component in bytes 2..3.-pattern FORMAT_R16G16_SNORM = Format 78--- | 'FORMAT_R16G16_USCALED' specifies a two-component, 32-bit unsigned--- scaled integer format that has a 16-bit R component in bytes 0..1, and a--- 16-bit G component in bytes 2..3.-pattern FORMAT_R16G16_USCALED = Format 79--- | 'FORMAT_R16G16_SSCALED' specifies a two-component, 32-bit signed scaled--- integer format that has a 16-bit R component in bytes 0..1, and a 16-bit--- G component in bytes 2..3.-pattern FORMAT_R16G16_SSCALED = Format 80--- | 'FORMAT_R16G16_UINT' specifies a two-component, 32-bit unsigned integer--- format that has a 16-bit R component in bytes 0..1, and a 16-bit G--- component in bytes 2..3.-pattern FORMAT_R16G16_UINT = Format 81--- | 'FORMAT_R16G16_SINT' specifies a two-component, 32-bit signed integer--- format that has a 16-bit R component in bytes 0..1, and a 16-bit G--- component in bytes 2..3.-pattern FORMAT_R16G16_SINT = Format 82--- | 'FORMAT_R16G16_SFLOAT' specifies a two-component, 32-bit signed--- floating-point format that has a 16-bit R component in bytes 0..1, and a--- 16-bit G component in bytes 2..3.-pattern FORMAT_R16G16_SFLOAT = Format 83--- | 'FORMAT_R16G16B16_UNORM' specifies a three-component, 48-bit unsigned--- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit--- G component in bytes 2..3, and a 16-bit B component in bytes 4..5.-pattern FORMAT_R16G16B16_UNORM = Format 84--- | 'FORMAT_R16G16B16_SNORM' specifies a three-component, 48-bit signed--- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit--- G component in bytes 2..3, and a 16-bit B component in bytes 4..5.-pattern FORMAT_R16G16B16_SNORM = Format 85--- | 'FORMAT_R16G16B16_USCALED' specifies a three-component, 48-bit unsigned--- scaled integer format that has a 16-bit R component in bytes 0..1, a--- 16-bit G component in bytes 2..3, and a 16-bit B component in bytes--- 4..5.-pattern FORMAT_R16G16B16_USCALED = Format 86--- | 'FORMAT_R16G16B16_SSCALED' specifies a three-component, 48-bit signed--- scaled integer format that has a 16-bit R component in bytes 0..1, a--- 16-bit G component in bytes 2..3, and a 16-bit B component in bytes--- 4..5.-pattern FORMAT_R16G16B16_SSCALED = Format 87--- | 'FORMAT_R16G16B16_UINT' specifies a three-component, 48-bit unsigned--- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G--- component in bytes 2..3, and a 16-bit B component in bytes 4..5.-pattern FORMAT_R16G16B16_UINT = Format 88--- | 'FORMAT_R16G16B16_SINT' specifies a three-component, 48-bit signed--- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G--- component in bytes 2..3, and a 16-bit B component in bytes 4..5.-pattern FORMAT_R16G16B16_SINT = Format 89--- | 'FORMAT_R16G16B16_SFLOAT' specifies a three-component, 48-bit signed--- floating-point format that has a 16-bit R component in bytes 0..1, a--- 16-bit G component in bytes 2..3, and a 16-bit B component in bytes--- 4..5.-pattern FORMAT_R16G16B16_SFLOAT = Format 90--- | 'FORMAT_R16G16B16A16_UNORM' specifies a four-component, 64-bit unsigned--- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit--- G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a--- 16-bit A component in bytes 6..7.-pattern FORMAT_R16G16B16A16_UNORM = Format 91--- | 'FORMAT_R16G16B16A16_SNORM' specifies a four-component, 64-bit signed--- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit--- G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a--- 16-bit A component in bytes 6..7.-pattern FORMAT_R16G16B16A16_SNORM = Format 92--- | 'FORMAT_R16G16B16A16_USCALED' specifies a four-component, 64-bit--- unsigned scaled integer format that has a 16-bit R component in bytes--- 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes--- 4..5, and a 16-bit A component in bytes 6..7.-pattern FORMAT_R16G16B16A16_USCALED = Format 93--- | 'FORMAT_R16G16B16A16_SSCALED' specifies a four-component, 64-bit signed--- scaled integer format that has a 16-bit R component in bytes 0..1, a--- 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5,--- and a 16-bit A component in bytes 6..7.-pattern FORMAT_R16G16B16A16_SSCALED = Format 94--- | 'FORMAT_R16G16B16A16_UINT' specifies a four-component, 64-bit unsigned--- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G--- component in bytes 2..3, a 16-bit B component in bytes 4..5, and a--- 16-bit A component in bytes 6..7.-pattern FORMAT_R16G16B16A16_UINT = Format 95--- | 'FORMAT_R16G16B16A16_SINT' specifies a four-component, 64-bit signed--- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G--- component in bytes 2..3, a 16-bit B component in bytes 4..5, and a--- 16-bit A component in bytes 6..7.-pattern FORMAT_R16G16B16A16_SINT = Format 96--- | 'FORMAT_R16G16B16A16_SFLOAT' specifies a four-component, 64-bit signed--- floating-point format that has a 16-bit R component in bytes 0..1, a--- 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5,--- and a 16-bit A component in bytes 6..7.-pattern FORMAT_R16G16B16A16_SFLOAT = Format 97--- | 'FORMAT_R32_UINT' specifies a one-component, 32-bit unsigned integer--- format that has a single 32-bit R component.-pattern FORMAT_R32_UINT = Format 98--- | 'FORMAT_R32_SINT' specifies a one-component, 32-bit signed integer--- format that has a single 32-bit R component.-pattern FORMAT_R32_SINT = Format 99--- | 'FORMAT_R32_SFLOAT' specifies a one-component, 32-bit signed--- floating-point format that has a single 32-bit R component.-pattern FORMAT_R32_SFLOAT = Format 100--- | 'FORMAT_R32G32_UINT' specifies a two-component, 64-bit unsigned integer--- format that has a 32-bit R component in bytes 0..3, and a 32-bit G--- component in bytes 4..7.-pattern FORMAT_R32G32_UINT = Format 101--- | 'FORMAT_R32G32_SINT' specifies a two-component, 64-bit signed integer--- format that has a 32-bit R component in bytes 0..3, and a 32-bit G--- component in bytes 4..7.-pattern FORMAT_R32G32_SINT = Format 102--- | 'FORMAT_R32G32_SFLOAT' specifies a two-component, 64-bit signed--- floating-point format that has a 32-bit R component in bytes 0..3, and a--- 32-bit G component in bytes 4..7.-pattern FORMAT_R32G32_SFLOAT = Format 103--- | 'FORMAT_R32G32B32_UINT' specifies a three-component, 96-bit unsigned--- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G--- component in bytes 4..7, and a 32-bit B component in bytes 8..11.-pattern FORMAT_R32G32B32_UINT = Format 104--- | 'FORMAT_R32G32B32_SINT' specifies a three-component, 96-bit signed--- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G--- component in bytes 4..7, and a 32-bit B component in bytes 8..11.-pattern FORMAT_R32G32B32_SINT = Format 105--- | 'FORMAT_R32G32B32_SFLOAT' specifies a three-component, 96-bit signed--- floating-point format that has a 32-bit R component in bytes 0..3, a--- 32-bit G component in bytes 4..7, and a 32-bit B component in bytes--- 8..11.-pattern FORMAT_R32G32B32_SFLOAT = Format 106--- | 'FORMAT_R32G32B32A32_UINT' specifies a four-component, 128-bit unsigned--- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G--- component in bytes 4..7, a 32-bit B component in bytes 8..11, and a--- 32-bit A component in bytes 12..15.-pattern FORMAT_R32G32B32A32_UINT = Format 107--- | 'FORMAT_R32G32B32A32_SINT' specifies a four-component, 128-bit signed--- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G--- component in bytes 4..7, a 32-bit B component in bytes 8..11, and a--- 32-bit A component in bytes 12..15.-pattern FORMAT_R32G32B32A32_SINT = Format 108--- | 'FORMAT_R32G32B32A32_SFLOAT' specifies a four-component, 128-bit signed--- floating-point format that has a 32-bit R component in bytes 0..3, a--- 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11,--- and a 32-bit A component in bytes 12..15.-pattern FORMAT_R32G32B32A32_SFLOAT = Format 109--- | 'FORMAT_R64_UINT' specifies a one-component, 64-bit unsigned integer--- format that has a single 64-bit R component.-pattern FORMAT_R64_UINT = Format 110--- | 'FORMAT_R64_SINT' specifies a one-component, 64-bit signed integer--- format that has a single 64-bit R component.-pattern FORMAT_R64_SINT = Format 111--- | 'FORMAT_R64_SFLOAT' specifies a one-component, 64-bit signed--- floating-point format that has a single 64-bit R component.-pattern FORMAT_R64_SFLOAT = Format 112--- | 'FORMAT_R64G64_UINT' specifies a two-component, 128-bit unsigned integer--- format that has a 64-bit R component in bytes 0..7, and a 64-bit G--- component in bytes 8..15.-pattern FORMAT_R64G64_UINT = Format 113--- | 'FORMAT_R64G64_SINT' specifies a two-component, 128-bit signed integer--- format that has a 64-bit R component in bytes 0..7, and a 64-bit G--- component in bytes 8..15.-pattern FORMAT_R64G64_SINT = Format 114--- | 'FORMAT_R64G64_SFLOAT' specifies a two-component, 128-bit signed--- floating-point format that has a 64-bit R component in bytes 0..7, and a--- 64-bit G component in bytes 8..15.-pattern FORMAT_R64G64_SFLOAT = Format 115--- | 'FORMAT_R64G64B64_UINT' specifies a three-component, 192-bit unsigned--- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G--- component in bytes 8..15, and a 64-bit B component in bytes 16..23.-pattern FORMAT_R64G64B64_UINT = Format 116--- | 'FORMAT_R64G64B64_SINT' specifies a three-component, 192-bit signed--- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G--- component in bytes 8..15, and a 64-bit B component in bytes 16..23.-pattern FORMAT_R64G64B64_SINT = Format 117--- | 'FORMAT_R64G64B64_SFLOAT' specifies a three-component, 192-bit signed--- floating-point format that has a 64-bit R component in bytes 0..7, a--- 64-bit G component in bytes 8..15, and a 64-bit B component in bytes--- 16..23.-pattern FORMAT_R64G64B64_SFLOAT = Format 118--- | 'FORMAT_R64G64B64A64_UINT' specifies a four-component, 256-bit unsigned--- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G--- component in bytes 8..15, a 64-bit B component in bytes 16..23, and a--- 64-bit A component in bytes 24..31.-pattern FORMAT_R64G64B64A64_UINT = Format 119--- | 'FORMAT_R64G64B64A64_SINT' specifies a four-component, 256-bit signed--- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G--- component in bytes 8..15, a 64-bit B component in bytes 16..23, and a--- 64-bit A component in bytes 24..31.-pattern FORMAT_R64G64B64A64_SINT = Format 120--- | 'FORMAT_R64G64B64A64_SFLOAT' specifies a four-component, 256-bit signed--- floating-point format that has a 64-bit R component in bytes 0..7, a--- 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23,--- and a 64-bit A component in bytes 24..31.-pattern FORMAT_R64G64B64A64_SFLOAT = Format 121--- | 'FORMAT_B10G11R11_UFLOAT_PACK32' specifies a three-component, 32-bit--- packed unsigned floating-point format that has a 10-bit B component in--- bits 22..31, an 11-bit G component in bits 11..21, an 11-bit R component--- in bits 0..10. See--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fp10>--- and--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fp11>.-pattern FORMAT_B10G11R11_UFLOAT_PACK32 = Format 122--- | 'FORMAT_E5B9G9R9_UFLOAT_PACK32' specifies a three-component, 32-bit--- packed unsigned floating-point format that has a 5-bit shared exponent--- in bits 27..31, a 9-bit B component mantissa in bits 18..26, a 9-bit G--- component mantissa in bits 9..17, and a 9-bit R component mantissa in--- bits 0..8.-pattern FORMAT_E5B9G9R9_UFLOAT_PACK32 = Format 123--- | 'FORMAT_D16_UNORM' specifies a one-component, 16-bit unsigned normalized--- format that has a single 16-bit depth component.-pattern FORMAT_D16_UNORM = Format 124--- | 'FORMAT_X8_D24_UNORM_PACK32' specifies a two-component, 32-bit format--- that has 24 unsigned normalized bits in the depth component and,--- optionally:, 8 bits that are unused.-pattern FORMAT_X8_D24_UNORM_PACK32 = Format 125--- | 'FORMAT_D32_SFLOAT' specifies a one-component, 32-bit signed--- floating-point format that has 32-bits in the depth component.-pattern FORMAT_D32_SFLOAT = Format 126--- | 'FORMAT_S8_UINT' specifies a one-component, 8-bit unsigned integer--- format that has 8-bits in the stencil component.-pattern FORMAT_S8_UINT = Format 127--- | 'FORMAT_D16_UNORM_S8_UINT' specifies a two-component, 24-bit format that--- has 16 unsigned normalized bits in the depth component and 8 unsigned--- integer bits in the stencil component.-pattern FORMAT_D16_UNORM_S8_UINT = Format 128--- | 'FORMAT_D24_UNORM_S8_UINT' specifies a two-component, 32-bit packed--- format that has 8 unsigned integer bits in the stencil component, and 24--- unsigned normalized bits in the depth component.-pattern FORMAT_D24_UNORM_S8_UINT = Format 129--- | 'FORMAT_D32_SFLOAT_S8_UINT' specifies a two-component format that has 32--- signed float bits in the depth component and 8 unsigned integer bits in--- the stencil component. There are optionally: 24-bits that are unused.-pattern FORMAT_D32_SFLOAT_S8_UINT = Format 130--- | 'FORMAT_BC1_RGB_UNORM_BLOCK' specifies a three-component,--- block-compressed format where each 64-bit compressed texel block encodes--- a 4×4 rectangle of unsigned normalized RGB texel data. This format has--- no alpha and is considered opaque.-pattern FORMAT_BC1_RGB_UNORM_BLOCK = Format 131--- | 'FORMAT_BC1_RGB_SRGB_BLOCK' specifies a three-component,--- block-compressed format where each 64-bit compressed texel block encodes--- a 4×4 rectangle of unsigned normalized RGB texel data with sRGB--- nonlinear encoding. This format has no alpha and is considered opaque.-pattern FORMAT_BC1_RGB_SRGB_BLOCK = Format 132--- | 'FORMAT_BC1_RGBA_UNORM_BLOCK' specifies a four-component,--- block-compressed format where each 64-bit compressed texel block encodes--- a 4×4 rectangle of unsigned normalized RGB texel data, and provides 1--- bit of alpha.-pattern FORMAT_BC1_RGBA_UNORM_BLOCK = Format 133--- | 'FORMAT_BC1_RGBA_SRGB_BLOCK' specifies a four-component,--- block-compressed format where each 64-bit compressed texel block encodes--- a 4×4 rectangle of unsigned normalized RGB texel data with sRGB--- nonlinear encoding, and provides 1 bit of alpha.-pattern FORMAT_BC1_RGBA_SRGB_BLOCK = Format 134--- | 'FORMAT_BC2_UNORM_BLOCK' specifies a four-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized RGBA texel data with the first 64 bits encoding--- alpha values followed by 64 bits encoding RGB values.-pattern FORMAT_BC2_UNORM_BLOCK = Format 135--- | 'FORMAT_BC2_SRGB_BLOCK' specifies a four-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized RGBA texel data with the first 64 bits encoding--- alpha values followed by 64 bits encoding RGB values with sRGB nonlinear--- encoding.-pattern FORMAT_BC2_SRGB_BLOCK = Format 136--- | 'FORMAT_BC3_UNORM_BLOCK' specifies a four-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized RGBA texel data with the first 64 bits encoding--- alpha values followed by 64 bits encoding RGB values.-pattern FORMAT_BC3_UNORM_BLOCK = Format 137--- | 'FORMAT_BC3_SRGB_BLOCK' specifies a four-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized RGBA texel data with the first 64 bits encoding--- alpha values followed by 64 bits encoding RGB values with sRGB nonlinear--- encoding.-pattern FORMAT_BC3_SRGB_BLOCK = Format 138--- | 'FORMAT_BC4_UNORM_BLOCK' specifies a one-component, block-compressed--- format where each 64-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized red texel data.-pattern FORMAT_BC4_UNORM_BLOCK = Format 139--- | 'FORMAT_BC4_SNORM_BLOCK' specifies a one-component, block-compressed--- format where each 64-bit compressed texel block encodes a 4×4 rectangle--- of signed normalized red texel data.-pattern FORMAT_BC4_SNORM_BLOCK = Format 140--- | 'FORMAT_BC5_UNORM_BLOCK' specifies a two-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized RG texel data with the first 64 bits encoding red--- values followed by 64 bits encoding green values.-pattern FORMAT_BC5_UNORM_BLOCK = Format 141--- | 'FORMAT_BC5_SNORM_BLOCK' specifies a two-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of signed normalized RG texel data with the first 64 bits encoding red--- values followed by 64 bits encoding green values.-pattern FORMAT_BC5_SNORM_BLOCK = Format 142--- | 'FORMAT_BC6H_UFLOAT_BLOCK' specifies a three-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned floating-point RGB texel data.-pattern FORMAT_BC6H_UFLOAT_BLOCK = Format 143--- | 'FORMAT_BC6H_SFLOAT_BLOCK' specifies a three-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of signed floating-point RGB texel data.-pattern FORMAT_BC6H_SFLOAT_BLOCK = Format 144--- | 'FORMAT_BC7_UNORM_BLOCK' specifies a four-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized RGBA texel data.-pattern FORMAT_BC7_UNORM_BLOCK = Format 145--- | 'FORMAT_BC7_SRGB_BLOCK' specifies a four-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized RGBA texel data with sRGB nonlinear encoding--- applied to the RGB components.-pattern FORMAT_BC7_SRGB_BLOCK = Format 146--- | 'FORMAT_ETC2_R8G8B8_UNORM_BLOCK' specifies a three-component, ETC2--- compressed format where each 64-bit compressed texel block encodes a 4×4--- rectangle of unsigned normalized RGB texel data. This format has no--- alpha and is considered opaque.-pattern FORMAT_ETC2_R8G8B8_UNORM_BLOCK = Format 147--- | 'FORMAT_ETC2_R8G8B8_SRGB_BLOCK' specifies a three-component, ETC2--- compressed format where each 64-bit compressed texel block encodes a 4×4--- rectangle of unsigned normalized RGB texel data with sRGB nonlinear--- encoding. This format has no alpha and is considered opaque.-pattern FORMAT_ETC2_R8G8B8_SRGB_BLOCK = Format 148--- | 'FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK' specifies a four-component, ETC2--- compressed format where each 64-bit compressed texel block encodes a 4×4--- rectangle of unsigned normalized RGB texel data, and provides 1 bit of--- alpha.-pattern FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = Format 149--- | 'FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK' specifies a four-component, ETC2--- compressed format where each 64-bit compressed texel block encodes a 4×4--- rectangle of unsigned normalized RGB texel data with sRGB nonlinear--- encoding, and provides 1 bit of alpha.-pattern FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = Format 150--- | 'FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK' specifies a four-component, ETC2--- compressed format where each 128-bit compressed texel block encodes a--- 4×4 rectangle of unsigned normalized RGBA texel data with the first 64--- bits encoding alpha values followed by 64 bits encoding RGB values.-pattern FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = Format 151--- | 'FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK' specifies a four-component, ETC2--- compressed format where each 128-bit compressed texel block encodes a--- 4×4 rectangle of unsigned normalized RGBA texel data with the first 64--- bits encoding alpha values followed by 64 bits encoding RGB values with--- sRGB nonlinear encoding applied.-pattern FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = Format 152--- | 'FORMAT_EAC_R11_UNORM_BLOCK' specifies a one-component, ETC2 compressed--- format where each 64-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized red texel data.-pattern FORMAT_EAC_R11_UNORM_BLOCK = Format 153--- | 'FORMAT_EAC_R11_SNORM_BLOCK' specifies a one-component, ETC2 compressed--- format where each 64-bit compressed texel block encodes a 4×4 rectangle--- of signed normalized red texel data.-pattern FORMAT_EAC_R11_SNORM_BLOCK = Format 154--- | 'FORMAT_EAC_R11G11_UNORM_BLOCK' specifies a two-component, ETC2--- compressed format where each 128-bit compressed texel block encodes a--- 4×4 rectangle of unsigned normalized RG texel data with the first 64--- bits encoding red values followed by 64 bits encoding green values.-pattern FORMAT_EAC_R11G11_UNORM_BLOCK = Format 155--- | 'FORMAT_EAC_R11G11_SNORM_BLOCK' specifies a two-component, ETC2--- compressed format where each 128-bit compressed texel block encodes a--- 4×4 rectangle of signed normalized RG texel data with the first 64 bits--- encoding red values followed by 64 bits encoding green values.-pattern FORMAT_EAC_R11G11_SNORM_BLOCK = Format 156--- | 'FORMAT_ASTC_4x4_UNORM_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 4×4 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_ASTC_4x4_UNORM_BLOCK = Format 157--- | 'FORMAT_ASTC_4x4_SRGB_BLOCK' specifies a four-component, ASTC compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized RGBA texel data with sRGB nonlinear encoding--- applied to the RGB components.-pattern FORMAT_ASTC_4x4_SRGB_BLOCK = Format 158--- | 'FORMAT_ASTC_5x4_UNORM_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 5×4 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_ASTC_5x4_UNORM_BLOCK = Format 159--- | 'FORMAT_ASTC_5x4_SRGB_BLOCK' specifies a four-component, ASTC compressed--- format where each 128-bit compressed texel block encodes a 5×4 rectangle--- of unsigned normalized RGBA texel data with sRGB nonlinear encoding--- applied to the RGB components.-pattern FORMAT_ASTC_5x4_SRGB_BLOCK = Format 160--- | 'FORMAT_ASTC_5x5_UNORM_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 5×5 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_ASTC_5x5_UNORM_BLOCK = Format 161--- | 'FORMAT_ASTC_5x5_SRGB_BLOCK' specifies a four-component, ASTC compressed--- format where each 128-bit compressed texel block encodes a 5×5 rectangle--- of unsigned normalized RGBA texel data with sRGB nonlinear encoding--- applied to the RGB components.-pattern FORMAT_ASTC_5x5_SRGB_BLOCK = Format 162--- | 'FORMAT_ASTC_6x5_UNORM_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 6×5 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_ASTC_6x5_UNORM_BLOCK = Format 163--- | 'FORMAT_ASTC_6x5_SRGB_BLOCK' specifies a four-component, ASTC compressed--- format where each 128-bit compressed texel block encodes a 6×5 rectangle--- of unsigned normalized RGBA texel data with sRGB nonlinear encoding--- applied to the RGB components.-pattern FORMAT_ASTC_6x5_SRGB_BLOCK = Format 164--- | 'FORMAT_ASTC_6x6_UNORM_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 6×6 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_ASTC_6x6_UNORM_BLOCK = Format 165--- | 'FORMAT_ASTC_6x6_SRGB_BLOCK' specifies a four-component, ASTC compressed--- format where each 128-bit compressed texel block encodes a 6×6 rectangle--- of unsigned normalized RGBA texel data with sRGB nonlinear encoding--- applied to the RGB components.-pattern FORMAT_ASTC_6x6_SRGB_BLOCK = Format 166--- | 'FORMAT_ASTC_8x5_UNORM_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes an--- 8×5 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_ASTC_8x5_UNORM_BLOCK = Format 167--- | 'FORMAT_ASTC_8x5_SRGB_BLOCK' specifies a four-component, ASTC compressed--- format where each 128-bit compressed texel block encodes an 8×5--- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear--- encoding applied to the RGB components.-pattern FORMAT_ASTC_8x5_SRGB_BLOCK = Format 168--- | 'FORMAT_ASTC_8x6_UNORM_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes an--- 8×6 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_ASTC_8x6_UNORM_BLOCK = Format 169--- | 'FORMAT_ASTC_8x6_SRGB_BLOCK' specifies a four-component, ASTC compressed--- format where each 128-bit compressed texel block encodes an 8×6--- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear--- encoding applied to the RGB components.-pattern FORMAT_ASTC_8x6_SRGB_BLOCK = Format 170--- | 'FORMAT_ASTC_8x8_UNORM_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes an--- 8×8 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_ASTC_8x8_UNORM_BLOCK = Format 171--- | 'FORMAT_ASTC_8x8_SRGB_BLOCK' specifies a four-component, ASTC compressed--- format where each 128-bit compressed texel block encodes an 8×8--- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear--- encoding applied to the RGB components.-pattern FORMAT_ASTC_8x8_SRGB_BLOCK = Format 172--- | 'FORMAT_ASTC_10x5_UNORM_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×5 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_ASTC_10x5_UNORM_BLOCK = Format 173--- | 'FORMAT_ASTC_10x5_SRGB_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×5 rectangle of unsigned normalized RGBA texel data with sRGB--- nonlinear encoding applied to the RGB components.-pattern FORMAT_ASTC_10x5_SRGB_BLOCK = Format 174--- | 'FORMAT_ASTC_10x6_UNORM_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×6 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_ASTC_10x6_UNORM_BLOCK = Format 175--- | 'FORMAT_ASTC_10x6_SRGB_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×6 rectangle of unsigned normalized RGBA texel data with sRGB--- nonlinear encoding applied to the RGB components.-pattern FORMAT_ASTC_10x6_SRGB_BLOCK = Format 176--- | 'FORMAT_ASTC_10x8_UNORM_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×8 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_ASTC_10x8_UNORM_BLOCK = Format 177--- | 'FORMAT_ASTC_10x8_SRGB_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×8 rectangle of unsigned normalized RGBA texel data with sRGB--- nonlinear encoding applied to the RGB components.-pattern FORMAT_ASTC_10x8_SRGB_BLOCK = Format 178--- | 'FORMAT_ASTC_10x10_UNORM_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×10 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_ASTC_10x10_UNORM_BLOCK = Format 179--- | 'FORMAT_ASTC_10x10_SRGB_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×10 rectangle of unsigned normalized RGBA texel data with sRGB--- nonlinear encoding applied to the RGB components.-pattern FORMAT_ASTC_10x10_SRGB_BLOCK = Format 180--- | 'FORMAT_ASTC_12x10_UNORM_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 12×10 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_ASTC_12x10_UNORM_BLOCK = Format 181--- | 'FORMAT_ASTC_12x10_SRGB_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 12×10 rectangle of unsigned normalized RGBA texel data with sRGB--- nonlinear encoding applied to the RGB components.-pattern FORMAT_ASTC_12x10_SRGB_BLOCK = Format 182--- | 'FORMAT_ASTC_12x12_UNORM_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 12×12 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_ASTC_12x12_UNORM_BLOCK = Format 183--- | 'FORMAT_ASTC_12x12_SRGB_BLOCK' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 12×12 rectangle of unsigned normalized RGBA texel data with sRGB--- nonlinear encoding applied to the RGB components.-pattern FORMAT_ASTC_12x12_SRGB_BLOCK = Format 184--- | 'FORMAT_A4B4G4R4_UNORM_PACK16_EXT' specifies a four-component, 16-bit--- packed unsigned normalized format that has a 4-bit A component in bits--- 12..15, a 4-bit B component in bits 8..11, a 4-bit G component in bits--- 4..7, and a 4-bit R component in bits 0..3.-pattern FORMAT_A4B4G4R4_UNORM_PACK16_EXT = Format 1000340001--- | 'FORMAT_A4R4G4B4_UNORM_PACK16_EXT' specifies a four-component, 16-bit--- packed unsigned normalized format that has a 4-bit A component in bits--- 12..15, a 4-bit R component in bits 8..11, a 4-bit G component in bits--- 4..7, and a 4-bit B component in bits 0..3.-pattern FORMAT_A4R4G4B4_UNORM_PACK16_EXT = Format 1000340000--- | 'FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 12×12 rectangle of signed floating-point RGBA texel data.-pattern FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = Format 1000066013--- | 'FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 12×10 rectangle of signed floating-point RGBA texel data.-pattern FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = Format 1000066012--- | 'FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×10 rectangle of signed floating-point RGBA texel data.-pattern FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = Format 1000066011--- | 'FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×8 rectangle of signed floating-point RGBA texel data.-pattern FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = Format 1000066010--- | 'FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×6 rectangle of signed floating-point RGBA texel data.-pattern FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = Format 1000066009--- | 'FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×5 rectangle of signed floating-point RGBA texel data.-pattern FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = Format 1000066008--- | 'FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 8×8 rectangle of signed floating-point RGBA texel data.-pattern FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = Format 1000066007--- | 'FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 8×6 rectangle of signed floating-point RGBA texel data.-pattern FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = Format 1000066006--- | 'FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 8×5 rectangle of signed floating-point RGBA texel data.-pattern FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = Format 1000066005--- | 'FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 6×6 rectangle of signed floating-point RGBA texel data.-pattern FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = Format 1000066004--- | 'FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 6×5 rectangle of signed floating-point RGBA texel data.-pattern FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = Format 1000066003--- | 'FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 5×5 rectangle of signed floating-point RGBA texel data.-pattern FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = Format 1000066002--- | 'FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 5×4 rectangle of signed floating-point RGBA texel data.-pattern FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = Format 1000066001--- | 'FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 4×4 rectangle of signed floating-point RGBA texel data.-pattern FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = Format 1000066000--- | 'FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG' specifies a four-component, PVRTC--- compressed format where each 64-bit compressed texel block encodes a 4×4--- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear--- encoding applied to the RGB components.-pattern FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = Format 1000054007--- | 'FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG' specifies a four-component, PVRTC--- compressed format where each 64-bit compressed texel block encodes an--- 8×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear--- encoding applied to the RGB components.-pattern FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = Format 1000054006--- | 'FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG' specifies a four-component, PVRTC--- compressed format where each 64-bit compressed texel block encodes a 4×4--- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear--- encoding applied to the RGB components.-pattern FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = Format 1000054005--- | 'FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG' specifies a four-component, PVRTC--- compressed format where each 64-bit compressed texel block encodes an--- 8×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear--- encoding applied to the RGB components.-pattern FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = Format 1000054004--- | 'FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG' specifies a four-component, PVRTC--- compressed format where each 64-bit compressed texel block encodes a 4×4--- rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = Format 1000054003--- | 'FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG' specifies a four-component, PVRTC--- compressed format where each 64-bit compressed texel block encodes an--- 8×4 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = Format 1000054002--- | 'FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG' specifies a four-component, PVRTC--- compressed format where each 64-bit compressed texel block encodes a 4×4--- rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = Format 1000054001--- | 'FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG' specifies a four-component, PVRTC--- compressed format where each 64-bit compressed texel block encodes an--- 8×4 rectangle of unsigned normalized RGBA texel data.-pattern FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = Format 1000054000--- | 'FORMAT_G16_B16_R16_3PLANE_444_UNORM' specifies an unsigned normalized--- /multi-planar format/ that has a 16-bit G component in each 16-bit word--- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a--- 16-bit R component in each 16-bit word of plane 2. Each plane has the--- same dimensions and each R, G and B component contributes to a single--- texel. The location of each plane when this image is in linear layout--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'--- for the G plane,--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the B plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for--- the R plane.-pattern FORMAT_G16_B16_R16_3PLANE_444_UNORM = Format 1000156033--- | 'FORMAT_G16_B16R16_2PLANE_422_UNORM' specifies an unsigned normalized--- /multi-planar format/ that has a 16-bit G component in each 16-bit word--- of plane 0, and a two-component, 32-bit BR plane 1 consisting of a--- 16-bit B component in the word in bytes 0..1, and a 16-bit R component--- in the word in bytes 2..3. The horizontal dimensions of the BR plane is--- halved relative to the image dimensions, and each R and B value is--- shared with the G components for which--- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =--- i_R\). The location of each plane when this image is in linear layout--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'--- for the G plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the BR plane. Images in this format /must/ be defined with a width that--- is a multiple of two.-pattern FORMAT_G16_B16R16_2PLANE_422_UNORM = Format 1000156032--- | 'FORMAT_G16_B16_R16_3PLANE_422_UNORM' specifies an unsigned normalized--- /multi-planar format/ that has a 16-bit G component in each 16-bit word--- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a--- 16-bit R component in each 16-bit word of plane 2. The horizontal--- dimension of the R and B plane is halved relative to the image--- dimensions, and each R and B value is shared with the G components for--- which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =--- i_R\). The location of each plane when this image is in linear layout--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'--- for the G plane,--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the B plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for--- the R plane. Images in this format /must/ be defined with a width that--- is a multiple of two.-pattern FORMAT_G16_B16_R16_3PLANE_422_UNORM = Format 1000156031--- | 'FORMAT_G16_B16R16_2PLANE_420_UNORM' specifies an unsigned normalized--- /multi-planar format/ that has a 16-bit G component in each 16-bit word--- of plane 0, and a two-component, 32-bit BR plane 1 consisting of a--- 16-bit B component in the word in bytes 0..1, and a 16-bit R component--- in the word in bytes 2..3. The horizontal and vertical dimensions of the--- BR plane is halved relative to the image dimensions, and each R and B--- value is shared with the G components for which--- \(\left\lfloor i_G \times 0.5--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5--- \right\rfloor = j_B = j_R\). The location of each plane when this image--- is in linear layout can be determined via--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for--- the G plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the BR plane. Images in this format /must/ be defined with a width and--- height that is a multiple of two.-pattern FORMAT_G16_B16R16_2PLANE_420_UNORM = Format 1000156030--- | 'FORMAT_G16_B16_R16_3PLANE_420_UNORM' specifies an unsigned normalized--- /multi-planar format/ that has a 16-bit G component in each 16-bit word--- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a--- 16-bit R component in each 16-bit word of plane 2. The horizontal and--- vertical dimensions of the R and B planes are halved relative to the--- image dimensions, and each R and B component is shared with the G--- components for which \(\left\lfloor i_G \times 0.5--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5--- \right\rfloor = j_B = j_R\). The location of each plane when this image--- is in linear layout can be determined via--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for--- the G plane,--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the B plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for--- the R plane. Images in this format /must/ be defined with a width and--- height that is a multiple of two.-pattern FORMAT_G16_B16_R16_3PLANE_420_UNORM = Format 1000156029--- | 'FORMAT_B16G16R16G16_422_UNORM' specifies a four-component, 64-bit--- format containing a pair of G components, an R component, and a B--- component, collectively encoding a 2×1 rectangle of unsigned normalized--- RGB texel data. One G value is present at each /i/ coordinate, with the--- B and R values shared across both G values and thus recorded at half the--- horizontal resolution of the image. This format has a 16-bit B component--- in the word in bytes 0..1, a 16-bit G component for the even /i/--- coordinate in the word in bytes 2..3, a 16-bit R component in the word--- in bytes 4..5, and a 16-bit G component for the odd /i/ coordinate in--- the word in bytes 6..7. Images in this format /must/ be defined with a--- width that is a multiple of two. For the purposes of the constraints on--- copy extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern FORMAT_B16G16R16G16_422_UNORM = Format 1000156028--- | 'FORMAT_G16B16G16R16_422_UNORM' specifies a four-component, 64-bit--- format containing a pair of G components, an R component, and a B--- component, collectively encoding a 2×1 rectangle of unsigned normalized--- RGB texel data. One G value is present at each /i/ coordinate, with the--- B and R values shared across both G values and thus recorded at half the--- horizontal resolution of the image. This format has a 16-bit G component--- for the even /i/ coordinate in the word in bytes 0..1, a 16-bit B--- component in the word in bytes 2..3, a 16-bit G component for the odd--- /i/ coordinate in the word in bytes 4..5, and a 16-bit R component in--- the word in bytes 6..7. Images in this format /must/ be defined with a--- width that is a multiple of two. For the purposes of the constraints on--- copy extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern FORMAT_G16B16G16R16_422_UNORM = Format 1000156027--- | 'FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16' specifies an--- unsigned normalized /multi-planar format/ that has a 12-bit G component--- in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component--- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R--- component in the top 12 bits of each 16-bit word of plane 2, with the--- bottom 4 bits of each word unused. Each plane has the same dimensions--- and each R, G and B component contributes to a single texel. The--- location of each plane when this image is in linear layout can be--- determined via 'Vulkan.Core10.Image.getImageSubresourceLayout', using--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for--- the G plane,--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the B plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for--- the R plane.-pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = Format 1000156026--- | 'FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16' specifies an unsigned--- normalized /multi-planar format/ that has a 12-bit G component in the--- top 12 bits of each 16-bit word of plane 0, and a two-component, 32-bit--- BR plane 1 consisting of a 12-bit B component in the top 12 bits of the--- word in bytes 0..1, and a 12-bit R component in the top 12 bits of the--- word in bytes 2..3, the bottom 4 bits of each word unused. The--- horizontal dimensions of the BR plane is halved relative to the image--- dimensions, and each R and B value is shared with the G components for--- which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =--- i_R\). The location of each plane when this image is in linear layout--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'--- for the G plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the BR plane. Images in this format /must/ be defined with a width that--- is a multiple of two.-pattern FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = Format 1000156025--- | 'FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16' specifies an--- unsigned normalized /multi-planar format/ that has a 12-bit G component--- in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component--- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R--- component in the top 12 bits of each 16-bit word of plane 2, with the--- bottom 4 bits of each word unused. The horizontal dimension of the R and--- B plane is halved relative to the image dimensions, and each R and B--- value is shared with the G components for which--- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =--- i_R\). The location of each plane when this image is in linear layout--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'--- for the G plane,--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the B plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for--- the R plane. Images in this format /must/ be defined with a width that--- is a multiple of two.-pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = Format 1000156024--- | 'FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16' specifies an unsigned--- normalized /multi-planar format/ that has a 12-bit G component in the--- top 12 bits of each 16-bit word of plane 0, and a two-component, 32-bit--- BR plane 1 consisting of a 12-bit B component in the top 12 bits of the--- word in bytes 0..1, and a 12-bit R component in the top 12 bits of the--- word in bytes 2..3, the bottom 4 bits of each word unused. The--- horizontal and vertical dimensions of the BR plane is halved relative to--- the image dimensions, and each R and B value is shared with the G--- components for which \(\left\lfloor i_G \times 0.5--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5--- \right\rfloor = j_B = j_R\). The location of each plane when this image--- is in linear layout can be determined via--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for--- the G plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the BR plane. Images in this format /must/ be defined with a width and--- height that is a multiple of two.-pattern FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = Format 1000156023--- | 'FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16' specifies an--- unsigned normalized /multi-planar format/ that has a 12-bit G component--- in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component--- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R--- component in the top 12 bits of each 16-bit word of plane 2, with the--- bottom 4 bits of each word unused. The horizontal and vertical--- dimensions of the R and B planes are halved relative to the image--- dimensions, and each R and B component is shared with the G components--- for which \(\left\lfloor i_G \times 0.5--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5--- \right\rfloor = j_B = j_R\). The location of each plane when this image--- is in linear layout can be determined via--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for--- the G plane,--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the B plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for--- the R plane. Images in this format /must/ be defined with a width and--- height that is a multiple of two.-pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = Format 1000156022--- | 'FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16' specifies a--- four-component, 64-bit format containing a pair of G components, an R--- component, and a B component, collectively encoding a 2×1 rectangle of--- unsigned normalized RGB texel data. One G value is present at each /i/--- coordinate, with the B and R values shared across both G values and thus--- recorded at half the horizontal resolution of the image. This format has--- a 12-bit B component in the top 12 bits of the word in bytes 0..1, a--- 12-bit G component for the even /i/ coordinate in the top 12 bits of the--- word in bytes 2..3, a 12-bit R component in the top 12 bits of the word--- in bytes 4..5, and a 12-bit G component for the odd /i/ coordinate in--- the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of--- each word unused. Images in this format /must/ be defined with a width--- that is a multiple of two. For the purposes of the constraints on copy--- extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = Format 1000156021--- | 'FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16' specifies a--- four-component, 64-bit format containing a pair of G components, an R--- component, and a B component, collectively encoding a 2×1 rectangle of--- unsigned normalized RGB texel data. One G value is present at each /i/--- coordinate, with the B and R values shared across both G values and thus--- recorded at half the horizontal resolution of the image. This format has--- a 12-bit G component for the even /i/ coordinate in the top 12 bits of--- the word in bytes 0..1, a 12-bit B component in the top 12 bits of the--- word in bytes 2..3, a 12-bit G component for the odd /i/ coordinate in--- the top 12 bits of the word in bytes 4..5, and a 12-bit R component in--- the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of--- each word unused. Images in this format /must/ be defined with a width--- that is a multiple of two. For the purposes of the constraints on copy--- extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = Format 1000156020--- | 'FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16' specifies a four-component,--- 64-bit unsigned normalized format that has a 12-bit R component in the--- top 12 bits of the word in bytes 0..1, a 12-bit G component in the top--- 12 bits of the word in bytes 2..3, a 12-bit B component in the top 12--- bits of the word in bytes 4..5, and a 12-bit A component in the top 12--- bits of the word in bytes 6..7, with the bottom 4 bits of each word--- unused.-pattern FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = Format 1000156019--- | 'FORMAT_R12X4G12X4_UNORM_2PACK16' specifies a two-component, 32-bit--- unsigned normalized format that has a 12-bit R component in the top 12--- bits of the word in bytes 0..1, and a 12-bit G component in the top 12--- bits of the word in bytes 2..3, with the bottom 4 bits of each word--- unused.-pattern FORMAT_R12X4G12X4_UNORM_2PACK16 = Format 1000156018--- | 'FORMAT_R12X4_UNORM_PACK16' specifies a one-component, 16-bit unsigned--- normalized format that has a single 12-bit R component in the top 12--- bits of a 16-bit word, with the bottom 4 bits unused.-pattern FORMAT_R12X4_UNORM_PACK16 = Format 1000156017--- | 'FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16' specifies an--- unsigned normalized /multi-planar format/ that has a 10-bit G component--- in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component--- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R--- component in the top 10 bits of each 16-bit word of plane 2, with the--- bottom 6 bits of each word unused. Each plane has the same dimensions--- and each R, G and B component contributes to a single texel. The--- location of each plane when this image is in linear layout can be--- determined via 'Vulkan.Core10.Image.getImageSubresourceLayout', using--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for--- the G plane,--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the B plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for--- the R plane.-pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = Format 1000156016--- | 'FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16' specifies an unsigned--- normalized /multi-planar format/ that has a 10-bit G component in the--- top 10 bits of each 16-bit word of plane 0, and a two-component, 32-bit--- BR plane 1 consisting of a 10-bit B component in the top 10 bits of the--- word in bytes 0..1, and a 10-bit R component in the top 10 bits of the--- word in bytes 2..3, the bottom 6 bits of each word unused. The--- horizontal dimensions of the BR plane is halved relative to the image--- dimensions, and each R and B value is shared with the G components for--- which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =--- i_R\). The location of each plane when this image is in linear layout--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'--- for the G plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the BR plane. Images in this format /must/ be defined with a width that--- is a multiple of two.-pattern FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = Format 1000156015--- | 'FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16' specifies an--- unsigned normalized /multi-planar format/ that has a 10-bit G component--- in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component--- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R--- component in the top 10 bits of each 16-bit word of plane 2, with the--- bottom 6 bits of each word unused. The horizontal dimension of the R and--- B plane is halved relative to the image dimensions, and each R and B--- value is shared with the G components for which--- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =--- i_R\). The location of each plane when this image is in linear layout--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'--- for the G plane,--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the B plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for--- the R plane. Images in this format /must/ be defined with a width that--- is a multiple of two.-pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = Format 1000156014--- | 'FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16' specifies an unsigned--- normalized /multi-planar format/ that has a 10-bit G component in the--- top 10 bits of each 16-bit word of plane 0, and a two-component, 32-bit--- BR plane 1 consisting of a 10-bit B component in the top 10 bits of the--- word in bytes 0..1, and a 10-bit R component in the top 10 bits of the--- word in bytes 2..3, the bottom 6 bits of each word unused. The--- horizontal and vertical dimensions of the BR plane is halved relative to--- the image dimensions, and each R and B value is shared with the G--- components for which \(\left\lfloor i_G \times 0.5--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5--- \right\rfloor = j_B = j_R\). The location of each plane when this image--- is in linear layout can be determined via--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for--- the G plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the BR plane. Images in this format /must/ be defined with a width and--- height that is a multiple of two.-pattern FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = Format 1000156013--- | 'FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16' specifies an--- unsigned normalized /multi-planar format/ that has a 10-bit G component--- in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component--- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R--- component in the top 10 bits of each 16-bit word of plane 2, with the--- bottom 6 bits of each word unused. The horizontal and vertical--- dimensions of the R and B planes are halved relative to the image--- dimensions, and each R and B component is shared with the G components--- for which \(\left\lfloor i_G \times 0.5--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5--- \right\rfloor = j_B = j_R\). The location of each plane when this image--- is in linear layout can be determined via--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for--- the G plane,--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the B plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for--- the R plane. Images in this format /must/ be defined with a width and--- height that is a multiple of two.-pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = Format 1000156012--- | 'FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16' specifies a--- four-component, 64-bit format containing a pair of G components, an R--- component, and a B component, collectively encoding a 2×1 rectangle of--- unsigned normalized RGB texel data. One G value is present at each /i/--- coordinate, with the B and R values shared across both G values and thus--- recorded at half the horizontal resolution of the image. This format has--- a 10-bit B component in the top 10 bits of the word in bytes 0..1, a--- 10-bit G component for the even /i/ coordinate in the top 10 bits of the--- word in bytes 2..3, a 10-bit R component in the top 10 bits of the word--- in bytes 4..5, and a 10-bit G component for the odd /i/ coordinate in--- the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of--- each word unused. Images in this format /must/ be defined with a width--- that is a multiple of two. For the purposes of the constraints on copy--- extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = Format 1000156011--- | 'FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16' specifies a--- four-component, 64-bit format containing a pair of G components, an R--- component, and a B component, collectively encoding a 2×1 rectangle of--- unsigned normalized RGB texel data. One G value is present at each /i/--- coordinate, with the B and R values shared across both G values and thus--- recorded at half the horizontal resolution of the image. This format has--- a 10-bit G component for the even /i/ coordinate in the top 10 bits of--- the word in bytes 0..1, a 10-bit B component in the top 10 bits of the--- word in bytes 2..3, a 10-bit G component for the odd /i/ coordinate in--- the top 10 bits of the word in bytes 4..5, and a 10-bit R component in--- the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of--- each word unused. Images in this format /must/ be defined with a width--- that is a multiple of two. For the purposes of the constraints on copy--- extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = Format 1000156010--- | 'FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16' specifies a four-component,--- 64-bit unsigned normalized format that has a 10-bit R component in the--- top 10 bits of the word in bytes 0..1, a 10-bit G component in the top--- 10 bits of the word in bytes 2..3, a 10-bit B component in the top 10--- bits of the word in bytes 4..5, and a 10-bit A component in the top 10--- bits of the word in bytes 6..7, with the bottom 6 bits of each word--- unused.-pattern FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = Format 1000156009--- | 'FORMAT_R10X6G10X6_UNORM_2PACK16' specifies a two-component, 32-bit--- unsigned normalized format that has a 10-bit R component in the top 10--- bits of the word in bytes 0..1, and a 10-bit G component in the top 10--- bits of the word in bytes 2..3, with the bottom 6 bits of each word--- unused.-pattern FORMAT_R10X6G10X6_UNORM_2PACK16 = Format 1000156008--- | 'FORMAT_R10X6_UNORM_PACK16' specifies a one-component, 16-bit unsigned--- normalized format that has a single 10-bit R component in the top 10--- bits of a 16-bit word, with the bottom 6 bits unused.-pattern FORMAT_R10X6_UNORM_PACK16 = Format 1000156007--- | 'FORMAT_G8_B8_R8_3PLANE_444_UNORM' specifies an unsigned normalized--- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit--- B component in plane 1, and an 8-bit R component in plane 2. Each plane--- has the same dimensions and each R, G and B component contributes to a--- single texel. The location of each plane when this image is in linear--- layout can be determined via--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for--- the G plane,--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the B plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for--- the R plane.-pattern FORMAT_G8_B8_R8_3PLANE_444_UNORM = Format 1000156006--- | 'FORMAT_G8_B8R8_2PLANE_422_UNORM' specifies an unsigned normalized--- /multi-planar format/ that has an 8-bit G component in plane 0, and a--- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in--- byte 0 and an 8-bit R component in byte 1. The horizontal dimensions of--- the BR plane is halved relative to the image dimensions, and each R and--- B value is shared with the G components for which--- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =--- i_R\). The location of each plane when this image is in linear layout--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'--- for the G plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the BR plane. Images in this format /must/ be defined with a width that--- is a multiple of two.-pattern FORMAT_G8_B8R8_2PLANE_422_UNORM = Format 1000156005--- | 'FORMAT_G8_B8_R8_3PLANE_422_UNORM' specifies an unsigned normalized--- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit--- B component in plane 1, and an 8-bit R component in plane 2. The--- horizontal dimension of the R and B plane is halved relative to the--- image dimensions, and each R and B value is shared with the G components--- for which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =--- i_R\). The location of each plane when this image is in linear layout--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'--- for the G plane,--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the B plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for--- the R plane. Images in this format /must/ be defined with a width that--- is a multiple of two.-pattern FORMAT_G8_B8_R8_3PLANE_422_UNORM = Format 1000156004--- | 'FORMAT_G8_B8R8_2PLANE_420_UNORM' specifies an unsigned normalized--- /multi-planar format/ that has an 8-bit G component in plane 0, and a--- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in--- byte 0 and an 8-bit R component in byte 1. The horizontal and vertical--- dimensions of the BR plane is halved relative to the image dimensions,--- and each R and B value is shared with the G components for which--- \(\left\lfloor i_G \times 0.5--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5--- \right\rfloor = j_B = j_R\). The location of each plane when this image--- is in linear layout can be determined via--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for--- the G plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the BR plane. Images in this format /must/ be defined with a width and--- height that is a multiple of two.-pattern FORMAT_G8_B8R8_2PLANE_420_UNORM = Format 1000156003--- | 'FORMAT_G8_B8_R8_3PLANE_420_UNORM' specifies an unsigned normalized--- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit--- B component in plane 1, and an 8-bit R component in plane 2. The--- horizontal and vertical dimensions of the R and B planes are halved--- relative to the image dimensions, and each R and B component is shared--- with the G components for which \(\left\lfloor i_G \times 0.5--- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5--- \right\rfloor = j_B = j_R\). The location of each plane when this image--- is in linear layout can be determined via--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for--- the G plane,--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for--- the B plane, and--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for--- the R plane. Images in this format /must/ be defined with a width and--- height that is a multiple of two.-pattern FORMAT_G8_B8_R8_3PLANE_420_UNORM = Format 1000156002--- | 'FORMAT_B8G8R8G8_422_UNORM' specifies a four-component, 32-bit format--- containing a pair of G components, an R component, and a B component,--- collectively encoding a 2×1 rectangle of unsigned normalized RGB texel--- data. One G value is present at each /i/ coordinate, with the B and R--- values shared across both G values and thus recorded at half the--- horizontal resolution of the image. This format has an 8-bit B component--- in byte 0, an 8-bit G component for the even /i/ coordinate in byte 1,--- an 8-bit R component in byte 2, and an 8-bit G component for the odd /i/--- coordinate in byte 3. Images in this format /must/ be defined with a--- width that is a multiple of two. For the purposes of the constraints on--- copy extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern FORMAT_B8G8R8G8_422_UNORM = Format 1000156001--- | 'FORMAT_G8B8G8R8_422_UNORM' specifies a four-component, 32-bit format--- containing a pair of G components, an R component, and a B component,--- collectively encoding a 2×1 rectangle of unsigned normalized RGB texel--- data. One G value is present at each /i/ coordinate, with the B and R--- values shared across both G values and thus recorded at half the--- horizontal resolution of the image. This format has an 8-bit G component--- for the even /i/ coordinate in byte 0, an 8-bit B component in byte 1,--- an 8-bit G component for the odd /i/ coordinate in byte 2, and an 8-bit--- R component in byte 3. Images in this format /must/ be defined with a--- width that is a multiple of two. For the purposes of the constraints on--- copy extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern FORMAT_G8B8G8R8_422_UNORM = Format 1000156000-{-# complete FORMAT_UNDEFINED,-             FORMAT_R4G4_UNORM_PACK8,-             FORMAT_R4G4B4A4_UNORM_PACK16,-             FORMAT_B4G4R4A4_UNORM_PACK16,-             FORMAT_R5G6B5_UNORM_PACK16,-             FORMAT_B5G6R5_UNORM_PACK16,-             FORMAT_R5G5B5A1_UNORM_PACK16,-             FORMAT_B5G5R5A1_UNORM_PACK16,-             FORMAT_A1R5G5B5_UNORM_PACK16,-             FORMAT_R8_UNORM,-             FORMAT_R8_SNORM,-             FORMAT_R8_USCALED,-             FORMAT_R8_SSCALED,-             FORMAT_R8_UINT,-             FORMAT_R8_SINT,-             FORMAT_R8_SRGB,-             FORMAT_R8G8_UNORM,-             FORMAT_R8G8_SNORM,-             FORMAT_R8G8_USCALED,-             FORMAT_R8G8_SSCALED,-             FORMAT_R8G8_UINT,-             FORMAT_R8G8_SINT,-             FORMAT_R8G8_SRGB,-             FORMAT_R8G8B8_UNORM,-             FORMAT_R8G8B8_SNORM,-             FORMAT_R8G8B8_USCALED,-             FORMAT_R8G8B8_SSCALED,-             FORMAT_R8G8B8_UINT,-             FORMAT_R8G8B8_SINT,-             FORMAT_R8G8B8_SRGB,-             FORMAT_B8G8R8_UNORM,-             FORMAT_B8G8R8_SNORM,-             FORMAT_B8G8R8_USCALED,-             FORMAT_B8G8R8_SSCALED,-             FORMAT_B8G8R8_UINT,-             FORMAT_B8G8R8_SINT,-             FORMAT_B8G8R8_SRGB,-             FORMAT_R8G8B8A8_UNORM,-             FORMAT_R8G8B8A8_SNORM,-             FORMAT_R8G8B8A8_USCALED,-             FORMAT_R8G8B8A8_SSCALED,-             FORMAT_R8G8B8A8_UINT,-             FORMAT_R8G8B8A8_SINT,-             FORMAT_R8G8B8A8_SRGB,-             FORMAT_B8G8R8A8_UNORM,-             FORMAT_B8G8R8A8_SNORM,-             FORMAT_B8G8R8A8_USCALED,-             FORMAT_B8G8R8A8_SSCALED,-             FORMAT_B8G8R8A8_UINT,-             FORMAT_B8G8R8A8_SINT,-             FORMAT_B8G8R8A8_SRGB,-             FORMAT_A8B8G8R8_UNORM_PACK32,-             FORMAT_A8B8G8R8_SNORM_PACK32,-             FORMAT_A8B8G8R8_USCALED_PACK32,-             FORMAT_A8B8G8R8_SSCALED_PACK32,-             FORMAT_A8B8G8R8_UINT_PACK32,-             FORMAT_A8B8G8R8_SINT_PACK32,-             FORMAT_A8B8G8R8_SRGB_PACK32,-             FORMAT_A2R10G10B10_UNORM_PACK32,-             FORMAT_A2R10G10B10_SNORM_PACK32,-             FORMAT_A2R10G10B10_USCALED_PACK32,-             FORMAT_A2R10G10B10_SSCALED_PACK32,-             FORMAT_A2R10G10B10_UINT_PACK32,-             FORMAT_A2R10G10B10_SINT_PACK32,-             FORMAT_A2B10G10R10_UNORM_PACK32,-             FORMAT_A2B10G10R10_SNORM_PACK32,-             FORMAT_A2B10G10R10_USCALED_PACK32,-             FORMAT_A2B10G10R10_SSCALED_PACK32,-             FORMAT_A2B10G10R10_UINT_PACK32,-             FORMAT_A2B10G10R10_SINT_PACK32,-             FORMAT_R16_UNORM,-             FORMAT_R16_SNORM,-             FORMAT_R16_USCALED,-             FORMAT_R16_SSCALED,-             FORMAT_R16_UINT,-             FORMAT_R16_SINT,-             FORMAT_R16_SFLOAT,-             FORMAT_R16G16_UNORM,-             FORMAT_R16G16_SNORM,-             FORMAT_R16G16_USCALED,-             FORMAT_R16G16_SSCALED,-             FORMAT_R16G16_UINT,-             FORMAT_R16G16_SINT,-             FORMAT_R16G16_SFLOAT,-             FORMAT_R16G16B16_UNORM,-             FORMAT_R16G16B16_SNORM,-             FORMAT_R16G16B16_USCALED,-             FORMAT_R16G16B16_SSCALED,-             FORMAT_R16G16B16_UINT,-             FORMAT_R16G16B16_SINT,-             FORMAT_R16G16B16_SFLOAT,-             FORMAT_R16G16B16A16_UNORM,-             FORMAT_R16G16B16A16_SNORM,-             FORMAT_R16G16B16A16_USCALED,-             FORMAT_R16G16B16A16_SSCALED,-             FORMAT_R16G16B16A16_UINT,-             FORMAT_R16G16B16A16_SINT,-             FORMAT_R16G16B16A16_SFLOAT,-             FORMAT_R32_UINT,-             FORMAT_R32_SINT,-             FORMAT_R32_SFLOAT,-             FORMAT_R32G32_UINT,-             FORMAT_R32G32_SINT,-             FORMAT_R32G32_SFLOAT,-             FORMAT_R32G32B32_UINT,-             FORMAT_R32G32B32_SINT,-             FORMAT_R32G32B32_SFLOAT,-             FORMAT_R32G32B32A32_UINT,-             FORMAT_R32G32B32A32_SINT,-             FORMAT_R32G32B32A32_SFLOAT,-             FORMAT_R64_UINT,-             FORMAT_R64_SINT,-             FORMAT_R64_SFLOAT,-             FORMAT_R64G64_UINT,-             FORMAT_R64G64_SINT,-             FORMAT_R64G64_SFLOAT,-             FORMAT_R64G64B64_UINT,-             FORMAT_R64G64B64_SINT,-             FORMAT_R64G64B64_SFLOAT,-             FORMAT_R64G64B64A64_UINT,-             FORMAT_R64G64B64A64_SINT,-             FORMAT_R64G64B64A64_SFLOAT,-             FORMAT_B10G11R11_UFLOAT_PACK32,-             FORMAT_E5B9G9R9_UFLOAT_PACK32,-             FORMAT_D16_UNORM,-             FORMAT_X8_D24_UNORM_PACK32,-             FORMAT_D32_SFLOAT,-             FORMAT_S8_UINT,-             FORMAT_D16_UNORM_S8_UINT,-             FORMAT_D24_UNORM_S8_UINT,-             FORMAT_D32_SFLOAT_S8_UINT,-             FORMAT_BC1_RGB_UNORM_BLOCK,-             FORMAT_BC1_RGB_SRGB_BLOCK,-             FORMAT_BC1_RGBA_UNORM_BLOCK,-             FORMAT_BC1_RGBA_SRGB_BLOCK,-             FORMAT_BC2_UNORM_BLOCK,-             FORMAT_BC2_SRGB_BLOCK,-             FORMAT_BC3_UNORM_BLOCK,-             FORMAT_BC3_SRGB_BLOCK,-             FORMAT_BC4_UNORM_BLOCK,-             FORMAT_BC4_SNORM_BLOCK,-             FORMAT_BC5_UNORM_BLOCK,-             FORMAT_BC5_SNORM_BLOCK,-             FORMAT_BC6H_UFLOAT_BLOCK,-             FORMAT_BC6H_SFLOAT_BLOCK,-             FORMAT_BC7_UNORM_BLOCK,-             FORMAT_BC7_SRGB_BLOCK,-             FORMAT_ETC2_R8G8B8_UNORM_BLOCK,-             FORMAT_ETC2_R8G8B8_SRGB_BLOCK,-             FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,-             FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,-             FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,-             FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,-             FORMAT_EAC_R11_UNORM_BLOCK,-             FORMAT_EAC_R11_SNORM_BLOCK,-             FORMAT_EAC_R11G11_UNORM_BLOCK,-             FORMAT_EAC_R11G11_SNORM_BLOCK,-             FORMAT_ASTC_4x4_UNORM_BLOCK,-             FORMAT_ASTC_4x4_SRGB_BLOCK,-             FORMAT_ASTC_5x4_UNORM_BLOCK,-             FORMAT_ASTC_5x4_SRGB_BLOCK,-             FORMAT_ASTC_5x5_UNORM_BLOCK,-             FORMAT_ASTC_5x5_SRGB_BLOCK,-             FORMAT_ASTC_6x5_UNORM_BLOCK,-             FORMAT_ASTC_6x5_SRGB_BLOCK,-             FORMAT_ASTC_6x6_UNORM_BLOCK,-             FORMAT_ASTC_6x6_SRGB_BLOCK,-             FORMAT_ASTC_8x5_UNORM_BLOCK,-             FORMAT_ASTC_8x5_SRGB_BLOCK,-             FORMAT_ASTC_8x6_UNORM_BLOCK,-             FORMAT_ASTC_8x6_SRGB_BLOCK,-             FORMAT_ASTC_8x8_UNORM_BLOCK,-             FORMAT_ASTC_8x8_SRGB_BLOCK,-             FORMAT_ASTC_10x5_UNORM_BLOCK,-             FORMAT_ASTC_10x5_SRGB_BLOCK,-             FORMAT_ASTC_10x6_UNORM_BLOCK,-             FORMAT_ASTC_10x6_SRGB_BLOCK,-             FORMAT_ASTC_10x8_UNORM_BLOCK,-             FORMAT_ASTC_10x8_SRGB_BLOCK,-             FORMAT_ASTC_10x10_UNORM_BLOCK,-             FORMAT_ASTC_10x10_SRGB_BLOCK,-             FORMAT_ASTC_12x10_UNORM_BLOCK,-             FORMAT_ASTC_12x10_SRGB_BLOCK,-             FORMAT_ASTC_12x12_UNORM_BLOCK,-             FORMAT_ASTC_12x12_SRGB_BLOCK,-             FORMAT_A4B4G4R4_UNORM_PACK16_EXT,-             FORMAT_A4R4G4B4_UNORM_PACK16_EXT,-             FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT,-             FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT,-             FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT,-             FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT,-             FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT,-             FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT,-             FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT,-             FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT,-             FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT,-             FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT,-             FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT,-             FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT,-             FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT,-             FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT,-             FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG,-             FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,-             FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,-             FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,-             FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,-             FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,-             FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,-             FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,-             FORMAT_G16_B16_R16_3PLANE_444_UNORM,-             FORMAT_G16_B16R16_2PLANE_422_UNORM,-             FORMAT_G16_B16_R16_3PLANE_422_UNORM,-             FORMAT_G16_B16R16_2PLANE_420_UNORM,-             FORMAT_G16_B16_R16_3PLANE_420_UNORM,-             FORMAT_B16G16R16G16_422_UNORM,-             FORMAT_G16B16G16R16_422_UNORM,-             FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,-             FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,-             FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,-             FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,-             FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,-             FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,-             FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,-             FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,-             FORMAT_R12X4G12X4_UNORM_2PACK16,-             FORMAT_R12X4_UNORM_PACK16,-             FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,-             FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,-             FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,-             FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,-             FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,-             FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,-             FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,-             FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,-             FORMAT_R10X6G10X6_UNORM_2PACK16,-             FORMAT_R10X6_UNORM_PACK16,-             FORMAT_G8_B8_R8_3PLANE_444_UNORM,-             FORMAT_G8_B8R8_2PLANE_422_UNORM,-             FORMAT_G8_B8_R8_3PLANE_422_UNORM,-             FORMAT_G8_B8R8_2PLANE_420_UNORM,-             FORMAT_G8_B8_R8_3PLANE_420_UNORM,-             FORMAT_B8G8R8G8_422_UNORM,-             FORMAT_G8B8G8R8_422_UNORM :: Format #-}--instance Show Format where-  showsPrec p = \case-    FORMAT_UNDEFINED -> showString "FORMAT_UNDEFINED"-    FORMAT_R4G4_UNORM_PACK8 -> showString "FORMAT_R4G4_UNORM_PACK8"-    FORMAT_R4G4B4A4_UNORM_PACK16 -> showString "FORMAT_R4G4B4A4_UNORM_PACK16"-    FORMAT_B4G4R4A4_UNORM_PACK16 -> showString "FORMAT_B4G4R4A4_UNORM_PACK16"-    FORMAT_R5G6B5_UNORM_PACK16 -> showString "FORMAT_R5G6B5_UNORM_PACK16"-    FORMAT_B5G6R5_UNORM_PACK16 -> showString "FORMAT_B5G6R5_UNORM_PACK16"-    FORMAT_R5G5B5A1_UNORM_PACK16 -> showString "FORMAT_R5G5B5A1_UNORM_PACK16"-    FORMAT_B5G5R5A1_UNORM_PACK16 -> showString "FORMAT_B5G5R5A1_UNORM_PACK16"-    FORMAT_A1R5G5B5_UNORM_PACK16 -> showString "FORMAT_A1R5G5B5_UNORM_PACK16"-    FORMAT_R8_UNORM -> showString "FORMAT_R8_UNORM"-    FORMAT_R8_SNORM -> showString "FORMAT_R8_SNORM"-    FORMAT_R8_USCALED -> showString "FORMAT_R8_USCALED"-    FORMAT_R8_SSCALED -> showString "FORMAT_R8_SSCALED"-    FORMAT_R8_UINT -> showString "FORMAT_R8_UINT"-    FORMAT_R8_SINT -> showString "FORMAT_R8_SINT"-    FORMAT_R8_SRGB -> showString "FORMAT_R8_SRGB"-    FORMAT_R8G8_UNORM -> showString "FORMAT_R8G8_UNORM"-    FORMAT_R8G8_SNORM -> showString "FORMAT_R8G8_SNORM"-    FORMAT_R8G8_USCALED -> showString "FORMAT_R8G8_USCALED"-    FORMAT_R8G8_SSCALED -> showString "FORMAT_R8G8_SSCALED"-    FORMAT_R8G8_UINT -> showString "FORMAT_R8G8_UINT"-    FORMAT_R8G8_SINT -> showString "FORMAT_R8G8_SINT"-    FORMAT_R8G8_SRGB -> showString "FORMAT_R8G8_SRGB"-    FORMAT_R8G8B8_UNORM -> showString "FORMAT_R8G8B8_UNORM"-    FORMAT_R8G8B8_SNORM -> showString "FORMAT_R8G8B8_SNORM"-    FORMAT_R8G8B8_USCALED -> showString "FORMAT_R8G8B8_USCALED"-    FORMAT_R8G8B8_SSCALED -> showString "FORMAT_R8G8B8_SSCALED"-    FORMAT_R8G8B8_UINT -> showString "FORMAT_R8G8B8_UINT"-    FORMAT_R8G8B8_SINT -> showString "FORMAT_R8G8B8_SINT"-    FORMAT_R8G8B8_SRGB -> showString "FORMAT_R8G8B8_SRGB"-    FORMAT_B8G8R8_UNORM -> showString "FORMAT_B8G8R8_UNORM"-    FORMAT_B8G8R8_SNORM -> showString "FORMAT_B8G8R8_SNORM"-    FORMAT_B8G8R8_USCALED -> showString "FORMAT_B8G8R8_USCALED"-    FORMAT_B8G8R8_SSCALED -> showString "FORMAT_B8G8R8_SSCALED"-    FORMAT_B8G8R8_UINT -> showString "FORMAT_B8G8R8_UINT"-    FORMAT_B8G8R8_SINT -> showString "FORMAT_B8G8R8_SINT"-    FORMAT_B8G8R8_SRGB -> showString "FORMAT_B8G8R8_SRGB"-    FORMAT_R8G8B8A8_UNORM -> showString "FORMAT_R8G8B8A8_UNORM"-    FORMAT_R8G8B8A8_SNORM -> showString "FORMAT_R8G8B8A8_SNORM"-    FORMAT_R8G8B8A8_USCALED -> showString "FORMAT_R8G8B8A8_USCALED"-    FORMAT_R8G8B8A8_SSCALED -> showString "FORMAT_R8G8B8A8_SSCALED"-    FORMAT_R8G8B8A8_UINT -> showString "FORMAT_R8G8B8A8_UINT"-    FORMAT_R8G8B8A8_SINT -> showString "FORMAT_R8G8B8A8_SINT"-    FORMAT_R8G8B8A8_SRGB -> showString "FORMAT_R8G8B8A8_SRGB"-    FORMAT_B8G8R8A8_UNORM -> showString "FORMAT_B8G8R8A8_UNORM"-    FORMAT_B8G8R8A8_SNORM -> showString "FORMAT_B8G8R8A8_SNORM"-    FORMAT_B8G8R8A8_USCALED -> showString "FORMAT_B8G8R8A8_USCALED"-    FORMAT_B8G8R8A8_SSCALED -> showString "FORMAT_B8G8R8A8_SSCALED"-    FORMAT_B8G8R8A8_UINT -> showString "FORMAT_B8G8R8A8_UINT"-    FORMAT_B8G8R8A8_SINT -> showString "FORMAT_B8G8R8A8_SINT"-    FORMAT_B8G8R8A8_SRGB -> showString "FORMAT_B8G8R8A8_SRGB"-    FORMAT_A8B8G8R8_UNORM_PACK32 -> showString "FORMAT_A8B8G8R8_UNORM_PACK32"-    FORMAT_A8B8G8R8_SNORM_PACK32 -> showString "FORMAT_A8B8G8R8_SNORM_PACK32"-    FORMAT_A8B8G8R8_USCALED_PACK32 -> showString "FORMAT_A8B8G8R8_USCALED_PACK32"-    FORMAT_A8B8G8R8_SSCALED_PACK32 -> showString "FORMAT_A8B8G8R8_SSCALED_PACK32"-    FORMAT_A8B8G8R8_UINT_PACK32 -> showString "FORMAT_A8B8G8R8_UINT_PACK32"-    FORMAT_A8B8G8R8_SINT_PACK32 -> showString "FORMAT_A8B8G8R8_SINT_PACK32"-    FORMAT_A8B8G8R8_SRGB_PACK32 -> showString "FORMAT_A8B8G8R8_SRGB_PACK32"-    FORMAT_A2R10G10B10_UNORM_PACK32 -> showString "FORMAT_A2R10G10B10_UNORM_PACK32"-    FORMAT_A2R10G10B10_SNORM_PACK32 -> showString "FORMAT_A2R10G10B10_SNORM_PACK32"-    FORMAT_A2R10G10B10_USCALED_PACK32 -> showString "FORMAT_A2R10G10B10_USCALED_PACK32"-    FORMAT_A2R10G10B10_SSCALED_PACK32 -> showString "FORMAT_A2R10G10B10_SSCALED_PACK32"-    FORMAT_A2R10G10B10_UINT_PACK32 -> showString "FORMAT_A2R10G10B10_UINT_PACK32"-    FORMAT_A2R10G10B10_SINT_PACK32 -> showString "FORMAT_A2R10G10B10_SINT_PACK32"-    FORMAT_A2B10G10R10_UNORM_PACK32 -> showString "FORMAT_A2B10G10R10_UNORM_PACK32"-    FORMAT_A2B10G10R10_SNORM_PACK32 -> showString "FORMAT_A2B10G10R10_SNORM_PACK32"-    FORMAT_A2B10G10R10_USCALED_PACK32 -> showString "FORMAT_A2B10G10R10_USCALED_PACK32"-    FORMAT_A2B10G10R10_SSCALED_PACK32 -> showString "FORMAT_A2B10G10R10_SSCALED_PACK32"-    FORMAT_A2B10G10R10_UINT_PACK32 -> showString "FORMAT_A2B10G10R10_UINT_PACK32"-    FORMAT_A2B10G10R10_SINT_PACK32 -> showString "FORMAT_A2B10G10R10_SINT_PACK32"-    FORMAT_R16_UNORM -> showString "FORMAT_R16_UNORM"-    FORMAT_R16_SNORM -> showString "FORMAT_R16_SNORM"-    FORMAT_R16_USCALED -> showString "FORMAT_R16_USCALED"-    FORMAT_R16_SSCALED -> showString "FORMAT_R16_SSCALED"-    FORMAT_R16_UINT -> showString "FORMAT_R16_UINT"-    FORMAT_R16_SINT -> showString "FORMAT_R16_SINT"-    FORMAT_R16_SFLOAT -> showString "FORMAT_R16_SFLOAT"-    FORMAT_R16G16_UNORM -> showString "FORMAT_R16G16_UNORM"-    FORMAT_R16G16_SNORM -> showString "FORMAT_R16G16_SNORM"-    FORMAT_R16G16_USCALED -> showString "FORMAT_R16G16_USCALED"-    FORMAT_R16G16_SSCALED -> showString "FORMAT_R16G16_SSCALED"-    FORMAT_R16G16_UINT -> showString "FORMAT_R16G16_UINT"-    FORMAT_R16G16_SINT -> showString "FORMAT_R16G16_SINT"-    FORMAT_R16G16_SFLOAT -> showString "FORMAT_R16G16_SFLOAT"-    FORMAT_R16G16B16_UNORM -> showString "FORMAT_R16G16B16_UNORM"-    FORMAT_R16G16B16_SNORM -> showString "FORMAT_R16G16B16_SNORM"-    FORMAT_R16G16B16_USCALED -> showString "FORMAT_R16G16B16_USCALED"-    FORMAT_R16G16B16_SSCALED -> showString "FORMAT_R16G16B16_SSCALED"-    FORMAT_R16G16B16_UINT -> showString "FORMAT_R16G16B16_UINT"-    FORMAT_R16G16B16_SINT -> showString "FORMAT_R16G16B16_SINT"-    FORMAT_R16G16B16_SFLOAT -> showString "FORMAT_R16G16B16_SFLOAT"-    FORMAT_R16G16B16A16_UNORM -> showString "FORMAT_R16G16B16A16_UNORM"-    FORMAT_R16G16B16A16_SNORM -> showString "FORMAT_R16G16B16A16_SNORM"-    FORMAT_R16G16B16A16_USCALED -> showString "FORMAT_R16G16B16A16_USCALED"-    FORMAT_R16G16B16A16_SSCALED -> showString "FORMAT_R16G16B16A16_SSCALED"-    FORMAT_R16G16B16A16_UINT -> showString "FORMAT_R16G16B16A16_UINT"-    FORMAT_R16G16B16A16_SINT -> showString "FORMAT_R16G16B16A16_SINT"-    FORMAT_R16G16B16A16_SFLOAT -> showString "FORMAT_R16G16B16A16_SFLOAT"-    FORMAT_R32_UINT -> showString "FORMAT_R32_UINT"-    FORMAT_R32_SINT -> showString "FORMAT_R32_SINT"-    FORMAT_R32_SFLOAT -> showString "FORMAT_R32_SFLOAT"-    FORMAT_R32G32_UINT -> showString "FORMAT_R32G32_UINT"-    FORMAT_R32G32_SINT -> showString "FORMAT_R32G32_SINT"-    FORMAT_R32G32_SFLOAT -> showString "FORMAT_R32G32_SFLOAT"-    FORMAT_R32G32B32_UINT -> showString "FORMAT_R32G32B32_UINT"-    FORMAT_R32G32B32_SINT -> showString "FORMAT_R32G32B32_SINT"-    FORMAT_R32G32B32_SFLOAT -> showString "FORMAT_R32G32B32_SFLOAT"-    FORMAT_R32G32B32A32_UINT -> showString "FORMAT_R32G32B32A32_UINT"-    FORMAT_R32G32B32A32_SINT -> showString "FORMAT_R32G32B32A32_SINT"-    FORMAT_R32G32B32A32_SFLOAT -> showString "FORMAT_R32G32B32A32_SFLOAT"-    FORMAT_R64_UINT -> showString "FORMAT_R64_UINT"-    FORMAT_R64_SINT -> showString "FORMAT_R64_SINT"-    FORMAT_R64_SFLOAT -> showString "FORMAT_R64_SFLOAT"-    FORMAT_R64G64_UINT -> showString "FORMAT_R64G64_UINT"-    FORMAT_R64G64_SINT -> showString "FORMAT_R64G64_SINT"-    FORMAT_R64G64_SFLOAT -> showString "FORMAT_R64G64_SFLOAT"-    FORMAT_R64G64B64_UINT -> showString "FORMAT_R64G64B64_UINT"-    FORMAT_R64G64B64_SINT -> showString "FORMAT_R64G64B64_SINT"-    FORMAT_R64G64B64_SFLOAT -> showString "FORMAT_R64G64B64_SFLOAT"-    FORMAT_R64G64B64A64_UINT -> showString "FORMAT_R64G64B64A64_UINT"-    FORMAT_R64G64B64A64_SINT -> showString "FORMAT_R64G64B64A64_SINT"-    FORMAT_R64G64B64A64_SFLOAT -> showString "FORMAT_R64G64B64A64_SFLOAT"-    FORMAT_B10G11R11_UFLOAT_PACK32 -> showString "FORMAT_B10G11R11_UFLOAT_PACK32"-    FORMAT_E5B9G9R9_UFLOAT_PACK32 -> showString "FORMAT_E5B9G9R9_UFLOAT_PACK32"-    FORMAT_D16_UNORM -> showString "FORMAT_D16_UNORM"-    FORMAT_X8_D24_UNORM_PACK32 -> showString "FORMAT_X8_D24_UNORM_PACK32"-    FORMAT_D32_SFLOAT -> showString "FORMAT_D32_SFLOAT"-    FORMAT_S8_UINT -> showString "FORMAT_S8_UINT"-    FORMAT_D16_UNORM_S8_UINT -> showString "FORMAT_D16_UNORM_S8_UINT"-    FORMAT_D24_UNORM_S8_UINT -> showString "FORMAT_D24_UNORM_S8_UINT"-    FORMAT_D32_SFLOAT_S8_UINT -> showString "FORMAT_D32_SFLOAT_S8_UINT"-    FORMAT_BC1_RGB_UNORM_BLOCK -> showString "FORMAT_BC1_RGB_UNORM_BLOCK"-    FORMAT_BC1_RGB_SRGB_BLOCK -> showString "FORMAT_BC1_RGB_SRGB_BLOCK"-    FORMAT_BC1_RGBA_UNORM_BLOCK -> showString "FORMAT_BC1_RGBA_UNORM_BLOCK"-    FORMAT_BC1_RGBA_SRGB_BLOCK -> showString "FORMAT_BC1_RGBA_SRGB_BLOCK"-    FORMAT_BC2_UNORM_BLOCK -> showString "FORMAT_BC2_UNORM_BLOCK"-    FORMAT_BC2_SRGB_BLOCK -> showString "FORMAT_BC2_SRGB_BLOCK"-    FORMAT_BC3_UNORM_BLOCK -> showString "FORMAT_BC3_UNORM_BLOCK"-    FORMAT_BC3_SRGB_BLOCK -> showString "FORMAT_BC3_SRGB_BLOCK"-    FORMAT_BC4_UNORM_BLOCK -> showString "FORMAT_BC4_UNORM_BLOCK"-    FORMAT_BC4_SNORM_BLOCK -> showString "FORMAT_BC4_SNORM_BLOCK"-    FORMAT_BC5_UNORM_BLOCK -> showString "FORMAT_BC5_UNORM_BLOCK"-    FORMAT_BC5_SNORM_BLOCK -> showString "FORMAT_BC5_SNORM_BLOCK"-    FORMAT_BC6H_UFLOAT_BLOCK -> showString "FORMAT_BC6H_UFLOAT_BLOCK"-    FORMAT_BC6H_SFLOAT_BLOCK -> showString "FORMAT_BC6H_SFLOAT_BLOCK"-    FORMAT_BC7_UNORM_BLOCK -> showString "FORMAT_BC7_UNORM_BLOCK"-    FORMAT_BC7_SRGB_BLOCK -> showString "FORMAT_BC7_SRGB_BLOCK"-    FORMAT_ETC2_R8G8B8_UNORM_BLOCK -> showString "FORMAT_ETC2_R8G8B8_UNORM_BLOCK"-    FORMAT_ETC2_R8G8B8_SRGB_BLOCK -> showString "FORMAT_ETC2_R8G8B8_SRGB_BLOCK"-    FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK -> showString "FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK"-    FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK -> showString "FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK"-    FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK -> showString "FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK"-    FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK -> showString "FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK"-    FORMAT_EAC_R11_UNORM_BLOCK -> showString "FORMAT_EAC_R11_UNORM_BLOCK"-    FORMAT_EAC_R11_SNORM_BLOCK -> showString "FORMAT_EAC_R11_SNORM_BLOCK"-    FORMAT_EAC_R11G11_UNORM_BLOCK -> showString "FORMAT_EAC_R11G11_UNORM_BLOCK"-    FORMAT_EAC_R11G11_SNORM_BLOCK -> showString "FORMAT_EAC_R11G11_SNORM_BLOCK"-    FORMAT_ASTC_4x4_UNORM_BLOCK -> showString "FORMAT_ASTC_4x4_UNORM_BLOCK"-    FORMAT_ASTC_4x4_SRGB_BLOCK -> showString "FORMAT_ASTC_4x4_SRGB_BLOCK"-    FORMAT_ASTC_5x4_UNORM_BLOCK -> showString "FORMAT_ASTC_5x4_UNORM_BLOCK"-    FORMAT_ASTC_5x4_SRGB_BLOCK -> showString "FORMAT_ASTC_5x4_SRGB_BLOCK"-    FORMAT_ASTC_5x5_UNORM_BLOCK -> showString "FORMAT_ASTC_5x5_UNORM_BLOCK"-    FORMAT_ASTC_5x5_SRGB_BLOCK -> showString "FORMAT_ASTC_5x5_SRGB_BLOCK"-    FORMAT_ASTC_6x5_UNORM_BLOCK -> showString "FORMAT_ASTC_6x5_UNORM_BLOCK"-    FORMAT_ASTC_6x5_SRGB_BLOCK -> showString "FORMAT_ASTC_6x5_SRGB_BLOCK"-    FORMAT_ASTC_6x6_UNORM_BLOCK -> showString "FORMAT_ASTC_6x6_UNORM_BLOCK"-    FORMAT_ASTC_6x6_SRGB_BLOCK -> showString "FORMAT_ASTC_6x6_SRGB_BLOCK"-    FORMAT_ASTC_8x5_UNORM_BLOCK -> showString "FORMAT_ASTC_8x5_UNORM_BLOCK"-    FORMAT_ASTC_8x5_SRGB_BLOCK -> showString "FORMAT_ASTC_8x5_SRGB_BLOCK"-    FORMAT_ASTC_8x6_UNORM_BLOCK -> showString "FORMAT_ASTC_8x6_UNORM_BLOCK"-    FORMAT_ASTC_8x6_SRGB_BLOCK -> showString "FORMAT_ASTC_8x6_SRGB_BLOCK"-    FORMAT_ASTC_8x8_UNORM_BLOCK -> showString "FORMAT_ASTC_8x8_UNORM_BLOCK"-    FORMAT_ASTC_8x8_SRGB_BLOCK -> showString "FORMAT_ASTC_8x8_SRGB_BLOCK"-    FORMAT_ASTC_10x5_UNORM_BLOCK -> showString "FORMAT_ASTC_10x5_UNORM_BLOCK"-    FORMAT_ASTC_10x5_SRGB_BLOCK -> showString "FORMAT_ASTC_10x5_SRGB_BLOCK"-    FORMAT_ASTC_10x6_UNORM_BLOCK -> showString "FORMAT_ASTC_10x6_UNORM_BLOCK"-    FORMAT_ASTC_10x6_SRGB_BLOCK -> showString "FORMAT_ASTC_10x6_SRGB_BLOCK"-    FORMAT_ASTC_10x8_UNORM_BLOCK -> showString "FORMAT_ASTC_10x8_UNORM_BLOCK"-    FORMAT_ASTC_10x8_SRGB_BLOCK -> showString "FORMAT_ASTC_10x8_SRGB_BLOCK"-    FORMAT_ASTC_10x10_UNORM_BLOCK -> showString "FORMAT_ASTC_10x10_UNORM_BLOCK"-    FORMAT_ASTC_10x10_SRGB_BLOCK -> showString "FORMAT_ASTC_10x10_SRGB_BLOCK"-    FORMAT_ASTC_12x10_UNORM_BLOCK -> showString "FORMAT_ASTC_12x10_UNORM_BLOCK"-    FORMAT_ASTC_12x10_SRGB_BLOCK -> showString "FORMAT_ASTC_12x10_SRGB_BLOCK"-    FORMAT_ASTC_12x12_UNORM_BLOCK -> showString "FORMAT_ASTC_12x12_UNORM_BLOCK"-    FORMAT_ASTC_12x12_SRGB_BLOCK -> showString "FORMAT_ASTC_12x12_SRGB_BLOCK"-    FORMAT_A4B4G4R4_UNORM_PACK16_EXT -> showString "FORMAT_A4B4G4R4_UNORM_PACK16_EXT"-    FORMAT_A4R4G4B4_UNORM_PACK16_EXT -> showString "FORMAT_A4R4G4B4_UNORM_PACK16_EXT"-    FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT"-    FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT"-    FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT"-    FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT"-    FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT"-    FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT"-    FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT"-    FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT"-    FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT"-    FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT"-    FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT"-    FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT"-    FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT"-    FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT"-    FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG -> showString "FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG"-    FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG -> showString "FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG"-    FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG -> showString "FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG"-    FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG -> showString "FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG"-    FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG -> showString "FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG"-    FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG -> showString "FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG"-    FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG -> showString "FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG"-    FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG -> showString "FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG"-    FORMAT_G16_B16_R16_3PLANE_444_UNORM -> showString "FORMAT_G16_B16_R16_3PLANE_444_UNORM"-    FORMAT_G16_B16R16_2PLANE_422_UNORM -> showString "FORMAT_G16_B16R16_2PLANE_422_UNORM"-    FORMAT_G16_B16_R16_3PLANE_422_UNORM -> showString "FORMAT_G16_B16_R16_3PLANE_422_UNORM"-    FORMAT_G16_B16R16_2PLANE_420_UNORM -> showString "FORMAT_G16_B16R16_2PLANE_420_UNORM"-    FORMAT_G16_B16_R16_3PLANE_420_UNORM -> showString "FORMAT_G16_B16_R16_3PLANE_420_UNORM"-    FORMAT_B16G16R16G16_422_UNORM -> showString "FORMAT_B16G16R16G16_422_UNORM"-    FORMAT_G16B16G16R16_422_UNORM -> showString "FORMAT_G16B16G16R16_422_UNORM"-    FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 -> showString "FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16"-    FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 -> showString "FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16"-    FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 -> showString "FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16"-    FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 -> showString "FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16"-    FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 -> showString "FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16"-    FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 -> showString "FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16"-    FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 -> showString "FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16"-    FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 -> showString "FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16"-    FORMAT_R12X4G12X4_UNORM_2PACK16 -> showString "FORMAT_R12X4G12X4_UNORM_2PACK16"-    FORMAT_R12X4_UNORM_PACK16 -> showString "FORMAT_R12X4_UNORM_PACK16"-    FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 -> showString "FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16"-    FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 -> showString "FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16"-    FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 -> showString "FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16"-    FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 -> showString "FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16"-    FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 -> showString "FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16"-    FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 -> showString "FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16"-    FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 -> showString "FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16"-    FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 -> showString "FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16"-    FORMAT_R10X6G10X6_UNORM_2PACK16 -> showString "FORMAT_R10X6G10X6_UNORM_2PACK16"-    FORMAT_R10X6_UNORM_PACK16 -> showString "FORMAT_R10X6_UNORM_PACK16"-    FORMAT_G8_B8_R8_3PLANE_444_UNORM -> showString "FORMAT_G8_B8_R8_3PLANE_444_UNORM"-    FORMAT_G8_B8R8_2PLANE_422_UNORM -> showString "FORMAT_G8_B8R8_2PLANE_422_UNORM"-    FORMAT_G8_B8_R8_3PLANE_422_UNORM -> showString "FORMAT_G8_B8_R8_3PLANE_422_UNORM"-    FORMAT_G8_B8R8_2PLANE_420_UNORM -> showString "FORMAT_G8_B8R8_2PLANE_420_UNORM"-    FORMAT_G8_B8_R8_3PLANE_420_UNORM -> showString "FORMAT_G8_B8_R8_3PLANE_420_UNORM"-    FORMAT_B8G8R8G8_422_UNORM -> showString "FORMAT_B8G8R8G8_422_UNORM"-    FORMAT_G8B8G8R8_422_UNORM -> showString "FORMAT_G8B8G8R8_422_UNORM"-    Format x -> showParen (p >= 11) (showString "Format " . showsPrec 11 x)--instance Read Format where-  readPrec = parens (choose [("FORMAT_UNDEFINED", pure FORMAT_UNDEFINED)-                            , ("FORMAT_R4G4_UNORM_PACK8", pure FORMAT_R4G4_UNORM_PACK8)-                            , ("FORMAT_R4G4B4A4_UNORM_PACK16", pure FORMAT_R4G4B4A4_UNORM_PACK16)-                            , ("FORMAT_B4G4R4A4_UNORM_PACK16", pure FORMAT_B4G4R4A4_UNORM_PACK16)-                            , ("FORMAT_R5G6B5_UNORM_PACK16", pure FORMAT_R5G6B5_UNORM_PACK16)-                            , ("FORMAT_B5G6R5_UNORM_PACK16", pure FORMAT_B5G6R5_UNORM_PACK16)-                            , ("FORMAT_R5G5B5A1_UNORM_PACK16", pure FORMAT_R5G5B5A1_UNORM_PACK16)-                            , ("FORMAT_B5G5R5A1_UNORM_PACK16", pure FORMAT_B5G5R5A1_UNORM_PACK16)-                            , ("FORMAT_A1R5G5B5_UNORM_PACK16", pure FORMAT_A1R5G5B5_UNORM_PACK16)-                            , ("FORMAT_R8_UNORM", pure FORMAT_R8_UNORM)-                            , ("FORMAT_R8_SNORM", pure FORMAT_R8_SNORM)-                            , ("FORMAT_R8_USCALED", pure FORMAT_R8_USCALED)-                            , ("FORMAT_R8_SSCALED", pure FORMAT_R8_SSCALED)-                            , ("FORMAT_R8_UINT", pure FORMAT_R8_UINT)-                            , ("FORMAT_R8_SINT", pure FORMAT_R8_SINT)-                            , ("FORMAT_R8_SRGB", pure FORMAT_R8_SRGB)-                            , ("FORMAT_R8G8_UNORM", pure FORMAT_R8G8_UNORM)-                            , ("FORMAT_R8G8_SNORM", pure FORMAT_R8G8_SNORM)-                            , ("FORMAT_R8G8_USCALED", pure FORMAT_R8G8_USCALED)-                            , ("FORMAT_R8G8_SSCALED", pure FORMAT_R8G8_SSCALED)-                            , ("FORMAT_R8G8_UINT", pure FORMAT_R8G8_UINT)-                            , ("FORMAT_R8G8_SINT", pure FORMAT_R8G8_SINT)-                            , ("FORMAT_R8G8_SRGB", pure FORMAT_R8G8_SRGB)-                            , ("FORMAT_R8G8B8_UNORM", pure FORMAT_R8G8B8_UNORM)-                            , ("FORMAT_R8G8B8_SNORM", pure FORMAT_R8G8B8_SNORM)-                            , ("FORMAT_R8G8B8_USCALED", pure FORMAT_R8G8B8_USCALED)-                            , ("FORMAT_R8G8B8_SSCALED", pure FORMAT_R8G8B8_SSCALED)-                            , ("FORMAT_R8G8B8_UINT", pure FORMAT_R8G8B8_UINT)-                            , ("FORMAT_R8G8B8_SINT", pure FORMAT_R8G8B8_SINT)-                            , ("FORMAT_R8G8B8_SRGB", pure FORMAT_R8G8B8_SRGB)-                            , ("FORMAT_B8G8R8_UNORM", pure FORMAT_B8G8R8_UNORM)-                            , ("FORMAT_B8G8R8_SNORM", pure FORMAT_B8G8R8_SNORM)-                            , ("FORMAT_B8G8R8_USCALED", pure FORMAT_B8G8R8_USCALED)-                            , ("FORMAT_B8G8R8_SSCALED", pure FORMAT_B8G8R8_SSCALED)-                            , ("FORMAT_B8G8R8_UINT", pure FORMAT_B8G8R8_UINT)-                            , ("FORMAT_B8G8R8_SINT", pure FORMAT_B8G8R8_SINT)-                            , ("FORMAT_B8G8R8_SRGB", pure FORMAT_B8G8R8_SRGB)-                            , ("FORMAT_R8G8B8A8_UNORM", pure FORMAT_R8G8B8A8_UNORM)-                            , ("FORMAT_R8G8B8A8_SNORM", pure FORMAT_R8G8B8A8_SNORM)-                            , ("FORMAT_R8G8B8A8_USCALED", pure FORMAT_R8G8B8A8_USCALED)-                            , ("FORMAT_R8G8B8A8_SSCALED", pure FORMAT_R8G8B8A8_SSCALED)-                            , ("FORMAT_R8G8B8A8_UINT", pure FORMAT_R8G8B8A8_UINT)-                            , ("FORMAT_R8G8B8A8_SINT", pure FORMAT_R8G8B8A8_SINT)-                            , ("FORMAT_R8G8B8A8_SRGB", pure FORMAT_R8G8B8A8_SRGB)-                            , ("FORMAT_B8G8R8A8_UNORM", pure FORMAT_B8G8R8A8_UNORM)-                            , ("FORMAT_B8G8R8A8_SNORM", pure FORMAT_B8G8R8A8_SNORM)-                            , ("FORMAT_B8G8R8A8_USCALED", pure FORMAT_B8G8R8A8_USCALED)-                            , ("FORMAT_B8G8R8A8_SSCALED", pure FORMAT_B8G8R8A8_SSCALED)-                            , ("FORMAT_B8G8R8A8_UINT", pure FORMAT_B8G8R8A8_UINT)-                            , ("FORMAT_B8G8R8A8_SINT", pure FORMAT_B8G8R8A8_SINT)-                            , ("FORMAT_B8G8R8A8_SRGB", pure FORMAT_B8G8R8A8_SRGB)-                            , ("FORMAT_A8B8G8R8_UNORM_PACK32", pure FORMAT_A8B8G8R8_UNORM_PACK32)-                            , ("FORMAT_A8B8G8R8_SNORM_PACK32", pure FORMAT_A8B8G8R8_SNORM_PACK32)-                            , ("FORMAT_A8B8G8R8_USCALED_PACK32", pure FORMAT_A8B8G8R8_USCALED_PACK32)-                            , ("FORMAT_A8B8G8R8_SSCALED_PACK32", pure FORMAT_A8B8G8R8_SSCALED_PACK32)-                            , ("FORMAT_A8B8G8R8_UINT_PACK32", pure FORMAT_A8B8G8R8_UINT_PACK32)-                            , ("FORMAT_A8B8G8R8_SINT_PACK32", pure FORMAT_A8B8G8R8_SINT_PACK32)-                            , ("FORMAT_A8B8G8R8_SRGB_PACK32", pure FORMAT_A8B8G8R8_SRGB_PACK32)-                            , ("FORMAT_A2R10G10B10_UNORM_PACK32", pure FORMAT_A2R10G10B10_UNORM_PACK32)-                            , ("FORMAT_A2R10G10B10_SNORM_PACK32", pure FORMAT_A2R10G10B10_SNORM_PACK32)-                            , ("FORMAT_A2R10G10B10_USCALED_PACK32", pure FORMAT_A2R10G10B10_USCALED_PACK32)-                            , ("FORMAT_A2R10G10B10_SSCALED_PACK32", pure FORMAT_A2R10G10B10_SSCALED_PACK32)-                            , ("FORMAT_A2R10G10B10_UINT_PACK32", pure FORMAT_A2R10G10B10_UINT_PACK32)-                            , ("FORMAT_A2R10G10B10_SINT_PACK32", pure FORMAT_A2R10G10B10_SINT_PACK32)-                            , ("FORMAT_A2B10G10R10_UNORM_PACK32", pure FORMAT_A2B10G10R10_UNORM_PACK32)-                            , ("FORMAT_A2B10G10R10_SNORM_PACK32", pure FORMAT_A2B10G10R10_SNORM_PACK32)-                            , ("FORMAT_A2B10G10R10_USCALED_PACK32", pure FORMAT_A2B10G10R10_USCALED_PACK32)-                            , ("FORMAT_A2B10G10R10_SSCALED_PACK32", pure FORMAT_A2B10G10R10_SSCALED_PACK32)-                            , ("FORMAT_A2B10G10R10_UINT_PACK32", pure FORMAT_A2B10G10R10_UINT_PACK32)-                            , ("FORMAT_A2B10G10R10_SINT_PACK32", pure FORMAT_A2B10G10R10_SINT_PACK32)-                            , ("FORMAT_R16_UNORM", pure FORMAT_R16_UNORM)-                            , ("FORMAT_R16_SNORM", pure FORMAT_R16_SNORM)-                            , ("FORMAT_R16_USCALED", pure FORMAT_R16_USCALED)-                            , ("FORMAT_R16_SSCALED", pure FORMAT_R16_SSCALED)-                            , ("FORMAT_R16_UINT", pure FORMAT_R16_UINT)-                            , ("FORMAT_R16_SINT", pure FORMAT_R16_SINT)-                            , ("FORMAT_R16_SFLOAT", pure FORMAT_R16_SFLOAT)-                            , ("FORMAT_R16G16_UNORM", pure FORMAT_R16G16_UNORM)-                            , ("FORMAT_R16G16_SNORM", pure FORMAT_R16G16_SNORM)-                            , ("FORMAT_R16G16_USCALED", pure FORMAT_R16G16_USCALED)-                            , ("FORMAT_R16G16_SSCALED", pure FORMAT_R16G16_SSCALED)-                            , ("FORMAT_R16G16_UINT", pure FORMAT_R16G16_UINT)-                            , ("FORMAT_R16G16_SINT", pure FORMAT_R16G16_SINT)-                            , ("FORMAT_R16G16_SFLOAT", pure FORMAT_R16G16_SFLOAT)-                            , ("FORMAT_R16G16B16_UNORM", pure FORMAT_R16G16B16_UNORM)-                            , ("FORMAT_R16G16B16_SNORM", pure FORMAT_R16G16B16_SNORM)-                            , ("FORMAT_R16G16B16_USCALED", pure FORMAT_R16G16B16_USCALED)-                            , ("FORMAT_R16G16B16_SSCALED", pure FORMAT_R16G16B16_SSCALED)-                            , ("FORMAT_R16G16B16_UINT", pure FORMAT_R16G16B16_UINT)-                            , ("FORMAT_R16G16B16_SINT", pure FORMAT_R16G16B16_SINT)-                            , ("FORMAT_R16G16B16_SFLOAT", pure FORMAT_R16G16B16_SFLOAT)-                            , ("FORMAT_R16G16B16A16_UNORM", pure FORMAT_R16G16B16A16_UNORM)-                            , ("FORMAT_R16G16B16A16_SNORM", pure FORMAT_R16G16B16A16_SNORM)-                            , ("FORMAT_R16G16B16A16_USCALED", pure FORMAT_R16G16B16A16_USCALED)-                            , ("FORMAT_R16G16B16A16_SSCALED", pure FORMAT_R16G16B16A16_SSCALED)-                            , ("FORMAT_R16G16B16A16_UINT", pure FORMAT_R16G16B16A16_UINT)-                            , ("FORMAT_R16G16B16A16_SINT", pure FORMAT_R16G16B16A16_SINT)-                            , ("FORMAT_R16G16B16A16_SFLOAT", pure FORMAT_R16G16B16A16_SFLOAT)-                            , ("FORMAT_R32_UINT", pure FORMAT_R32_UINT)-                            , ("FORMAT_R32_SINT", pure FORMAT_R32_SINT)-                            , ("FORMAT_R32_SFLOAT", pure FORMAT_R32_SFLOAT)-                            , ("FORMAT_R32G32_UINT", pure FORMAT_R32G32_UINT)-                            , ("FORMAT_R32G32_SINT", pure FORMAT_R32G32_SINT)-                            , ("FORMAT_R32G32_SFLOAT", pure FORMAT_R32G32_SFLOAT)-                            , ("FORMAT_R32G32B32_UINT", pure FORMAT_R32G32B32_UINT)-                            , ("FORMAT_R32G32B32_SINT", pure FORMAT_R32G32B32_SINT)-                            , ("FORMAT_R32G32B32_SFLOAT", pure FORMAT_R32G32B32_SFLOAT)-                            , ("FORMAT_R32G32B32A32_UINT", pure FORMAT_R32G32B32A32_UINT)-                            , ("FORMAT_R32G32B32A32_SINT", pure FORMAT_R32G32B32A32_SINT)-                            , ("FORMAT_R32G32B32A32_SFLOAT", pure FORMAT_R32G32B32A32_SFLOAT)-                            , ("FORMAT_R64_UINT", pure FORMAT_R64_UINT)-                            , ("FORMAT_R64_SINT", pure FORMAT_R64_SINT)-                            , ("FORMAT_R64_SFLOAT", pure FORMAT_R64_SFLOAT)-                            , ("FORMAT_R64G64_UINT", pure FORMAT_R64G64_UINT)-                            , ("FORMAT_R64G64_SINT", pure FORMAT_R64G64_SINT)-                            , ("FORMAT_R64G64_SFLOAT", pure FORMAT_R64G64_SFLOAT)-                            , ("FORMAT_R64G64B64_UINT", pure FORMAT_R64G64B64_UINT)-                            , ("FORMAT_R64G64B64_SINT", pure FORMAT_R64G64B64_SINT)-                            , ("FORMAT_R64G64B64_SFLOAT", pure FORMAT_R64G64B64_SFLOAT)-                            , ("FORMAT_R64G64B64A64_UINT", pure FORMAT_R64G64B64A64_UINT)-                            , ("FORMAT_R64G64B64A64_SINT", pure FORMAT_R64G64B64A64_SINT)-                            , ("FORMAT_R64G64B64A64_SFLOAT", pure FORMAT_R64G64B64A64_SFLOAT)-                            , ("FORMAT_B10G11R11_UFLOAT_PACK32", pure FORMAT_B10G11R11_UFLOAT_PACK32)-                            , ("FORMAT_E5B9G9R9_UFLOAT_PACK32", pure FORMAT_E5B9G9R9_UFLOAT_PACK32)-                            , ("FORMAT_D16_UNORM", pure FORMAT_D16_UNORM)-                            , ("FORMAT_X8_D24_UNORM_PACK32", pure FORMAT_X8_D24_UNORM_PACK32)-                            , ("FORMAT_D32_SFLOAT", pure FORMAT_D32_SFLOAT)-                            , ("FORMAT_S8_UINT", pure FORMAT_S8_UINT)-                            , ("FORMAT_D16_UNORM_S8_UINT", pure FORMAT_D16_UNORM_S8_UINT)-                            , ("FORMAT_D24_UNORM_S8_UINT", pure FORMAT_D24_UNORM_S8_UINT)-                            , ("FORMAT_D32_SFLOAT_S8_UINT", pure FORMAT_D32_SFLOAT_S8_UINT)-                            , ("FORMAT_BC1_RGB_UNORM_BLOCK", pure FORMAT_BC1_RGB_UNORM_BLOCK)-                            , ("FORMAT_BC1_RGB_SRGB_BLOCK", pure FORMAT_BC1_RGB_SRGB_BLOCK)-                            , ("FORMAT_BC1_RGBA_UNORM_BLOCK", pure FORMAT_BC1_RGBA_UNORM_BLOCK)-                            , ("FORMAT_BC1_RGBA_SRGB_BLOCK", pure FORMAT_BC1_RGBA_SRGB_BLOCK)-                            , ("FORMAT_BC2_UNORM_BLOCK", pure FORMAT_BC2_UNORM_BLOCK)-                            , ("FORMAT_BC2_SRGB_BLOCK", pure FORMAT_BC2_SRGB_BLOCK)-                            , ("FORMAT_BC3_UNORM_BLOCK", pure FORMAT_BC3_UNORM_BLOCK)-                            , ("FORMAT_BC3_SRGB_BLOCK", pure FORMAT_BC3_SRGB_BLOCK)-                            , ("FORMAT_BC4_UNORM_BLOCK", pure FORMAT_BC4_UNORM_BLOCK)-                            , ("FORMAT_BC4_SNORM_BLOCK", pure FORMAT_BC4_SNORM_BLOCK)-                            , ("FORMAT_BC5_UNORM_BLOCK", pure FORMAT_BC5_UNORM_BLOCK)-                            , ("FORMAT_BC5_SNORM_BLOCK", pure FORMAT_BC5_SNORM_BLOCK)-                            , ("FORMAT_BC6H_UFLOAT_BLOCK", pure FORMAT_BC6H_UFLOAT_BLOCK)-                            , ("FORMAT_BC6H_SFLOAT_BLOCK", pure FORMAT_BC6H_SFLOAT_BLOCK)-                            , ("FORMAT_BC7_UNORM_BLOCK", pure FORMAT_BC7_UNORM_BLOCK)-                            , ("FORMAT_BC7_SRGB_BLOCK", pure FORMAT_BC7_SRGB_BLOCK)-                            , ("FORMAT_ETC2_R8G8B8_UNORM_BLOCK", pure FORMAT_ETC2_R8G8B8_UNORM_BLOCK)-                            , ("FORMAT_ETC2_R8G8B8_SRGB_BLOCK", pure FORMAT_ETC2_R8G8B8_SRGB_BLOCK)-                            , ("FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK", pure FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK)-                            , ("FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK", pure FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK)-                            , ("FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK", pure FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK)-                            , ("FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK", pure FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK)-                            , ("FORMAT_EAC_R11_UNORM_BLOCK", pure FORMAT_EAC_R11_UNORM_BLOCK)-                            , ("FORMAT_EAC_R11_SNORM_BLOCK", pure FORMAT_EAC_R11_SNORM_BLOCK)-                            , ("FORMAT_EAC_R11G11_UNORM_BLOCK", pure FORMAT_EAC_R11G11_UNORM_BLOCK)-                            , ("FORMAT_EAC_R11G11_SNORM_BLOCK", pure FORMAT_EAC_R11G11_SNORM_BLOCK)-                            , ("FORMAT_ASTC_4x4_UNORM_BLOCK", pure FORMAT_ASTC_4x4_UNORM_BLOCK)-                            , ("FORMAT_ASTC_4x4_SRGB_BLOCK", pure FORMAT_ASTC_4x4_SRGB_BLOCK)-                            , ("FORMAT_ASTC_5x4_UNORM_BLOCK", pure FORMAT_ASTC_5x4_UNORM_BLOCK)-                            , ("FORMAT_ASTC_5x4_SRGB_BLOCK", pure FORMAT_ASTC_5x4_SRGB_BLOCK)-                            , ("FORMAT_ASTC_5x5_UNORM_BLOCK", pure FORMAT_ASTC_5x5_UNORM_BLOCK)-                            , ("FORMAT_ASTC_5x5_SRGB_BLOCK", pure FORMAT_ASTC_5x5_SRGB_BLOCK)-                            , ("FORMAT_ASTC_6x5_UNORM_BLOCK", pure FORMAT_ASTC_6x5_UNORM_BLOCK)-                            , ("FORMAT_ASTC_6x5_SRGB_BLOCK", pure FORMAT_ASTC_6x5_SRGB_BLOCK)-                            , ("FORMAT_ASTC_6x6_UNORM_BLOCK", pure FORMAT_ASTC_6x6_UNORM_BLOCK)-                            , ("FORMAT_ASTC_6x6_SRGB_BLOCK", pure FORMAT_ASTC_6x6_SRGB_BLOCK)-                            , ("FORMAT_ASTC_8x5_UNORM_BLOCK", pure FORMAT_ASTC_8x5_UNORM_BLOCK)-                            , ("FORMAT_ASTC_8x5_SRGB_BLOCK", pure FORMAT_ASTC_8x5_SRGB_BLOCK)-                            , ("FORMAT_ASTC_8x6_UNORM_BLOCK", pure FORMAT_ASTC_8x6_UNORM_BLOCK)-                            , ("FORMAT_ASTC_8x6_SRGB_BLOCK", pure FORMAT_ASTC_8x6_SRGB_BLOCK)-                            , ("FORMAT_ASTC_8x8_UNORM_BLOCK", pure FORMAT_ASTC_8x8_UNORM_BLOCK)-                            , ("FORMAT_ASTC_8x8_SRGB_BLOCK", pure FORMAT_ASTC_8x8_SRGB_BLOCK)-                            , ("FORMAT_ASTC_10x5_UNORM_BLOCK", pure FORMAT_ASTC_10x5_UNORM_BLOCK)-                            , ("FORMAT_ASTC_10x5_SRGB_BLOCK", pure FORMAT_ASTC_10x5_SRGB_BLOCK)-                            , ("FORMAT_ASTC_10x6_UNORM_BLOCK", pure FORMAT_ASTC_10x6_UNORM_BLOCK)-                            , ("FORMAT_ASTC_10x6_SRGB_BLOCK", pure FORMAT_ASTC_10x6_SRGB_BLOCK)-                            , ("FORMAT_ASTC_10x8_UNORM_BLOCK", pure FORMAT_ASTC_10x8_UNORM_BLOCK)-                            , ("FORMAT_ASTC_10x8_SRGB_BLOCK", pure FORMAT_ASTC_10x8_SRGB_BLOCK)-                            , ("FORMAT_ASTC_10x10_UNORM_BLOCK", pure FORMAT_ASTC_10x10_UNORM_BLOCK)-                            , ("FORMAT_ASTC_10x10_SRGB_BLOCK", pure FORMAT_ASTC_10x10_SRGB_BLOCK)-                            , ("FORMAT_ASTC_12x10_UNORM_BLOCK", pure FORMAT_ASTC_12x10_UNORM_BLOCK)-                            , ("FORMAT_ASTC_12x10_SRGB_BLOCK", pure FORMAT_ASTC_12x10_SRGB_BLOCK)-                            , ("FORMAT_ASTC_12x12_UNORM_BLOCK", pure FORMAT_ASTC_12x12_UNORM_BLOCK)-                            , ("FORMAT_ASTC_12x12_SRGB_BLOCK", pure FORMAT_ASTC_12x12_SRGB_BLOCK)-                            , ("FORMAT_A4B4G4R4_UNORM_PACK16_EXT", pure FORMAT_A4B4G4R4_UNORM_PACK16_EXT)-                            , ("FORMAT_A4R4G4B4_UNORM_PACK16_EXT", pure FORMAT_A4R4G4B4_UNORM_PACK16_EXT)-                            , ("FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT)-                            , ("FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT)-                            , ("FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT)-                            , ("FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT)-                            , ("FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT)-                            , ("FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT)-                            , ("FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT)-                            , ("FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT)-                            , ("FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT)-                            , ("FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT)-                            , ("FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT)-                            , ("FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT)-                            , ("FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT)-                            , ("FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT)-                            , ("FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG", pure FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG)-                            , ("FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG", pure FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG)-                            , ("FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG", pure FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG)-                            , ("FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG", pure FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG)-                            , ("FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG", pure FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG)-                            , ("FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG", pure FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG)-                            , ("FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG", pure FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG)-                            , ("FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG", pure FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG)-                            , ("FORMAT_G16_B16_R16_3PLANE_444_UNORM", pure FORMAT_G16_B16_R16_3PLANE_444_UNORM)-                            , ("FORMAT_G16_B16R16_2PLANE_422_UNORM", pure FORMAT_G16_B16R16_2PLANE_422_UNORM)-                            , ("FORMAT_G16_B16_R16_3PLANE_422_UNORM", pure FORMAT_G16_B16_R16_3PLANE_422_UNORM)-                            , ("FORMAT_G16_B16R16_2PLANE_420_UNORM", pure FORMAT_G16_B16R16_2PLANE_420_UNORM)-                            , ("FORMAT_G16_B16_R16_3PLANE_420_UNORM", pure FORMAT_G16_B16_R16_3PLANE_420_UNORM)-                            , ("FORMAT_B16G16R16G16_422_UNORM", pure FORMAT_B16G16R16G16_422_UNORM)-                            , ("FORMAT_G16B16G16R16_422_UNORM", pure FORMAT_G16B16G16R16_422_UNORM)-                            , ("FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16", pure FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16)-                            , ("FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16", pure FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16)-                            , ("FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16", pure FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16)-                            , ("FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16", pure FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16)-                            , ("FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16", pure FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16)-                            , ("FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16", pure FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16)-                            , ("FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16", pure FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16)-                            , ("FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16", pure FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16)-                            , ("FORMAT_R12X4G12X4_UNORM_2PACK16", pure FORMAT_R12X4G12X4_UNORM_2PACK16)-                            , ("FORMAT_R12X4_UNORM_PACK16", pure FORMAT_R12X4_UNORM_PACK16)-                            , ("FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16", pure FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16)-                            , ("FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16", pure FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16)-                            , ("FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16", pure FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16)-                            , ("FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16", pure FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16)-                            , ("FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16", pure FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16)-                            , ("FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16", pure FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16)-                            , ("FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16", pure FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16)-                            , ("FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16", pure FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16)-                            , ("FORMAT_R10X6G10X6_UNORM_2PACK16", pure FORMAT_R10X6G10X6_UNORM_2PACK16)-                            , ("FORMAT_R10X6_UNORM_PACK16", pure FORMAT_R10X6_UNORM_PACK16)-                            , ("FORMAT_G8_B8_R8_3PLANE_444_UNORM", pure FORMAT_G8_B8_R8_3PLANE_444_UNORM)-                            , ("FORMAT_G8_B8R8_2PLANE_422_UNORM", pure FORMAT_G8_B8R8_2PLANE_422_UNORM)-                            , ("FORMAT_G8_B8_R8_3PLANE_422_UNORM", pure FORMAT_G8_B8_R8_3PLANE_422_UNORM)-                            , ("FORMAT_G8_B8R8_2PLANE_420_UNORM", pure FORMAT_G8_B8R8_2PLANE_420_UNORM)-                            , ("FORMAT_G8_B8_R8_3PLANE_420_UNORM", pure FORMAT_G8_B8_R8_3PLANE_420_UNORM)-                            , ("FORMAT_B8G8R8G8_422_UNORM", pure FORMAT_B8G8R8G8_422_UNORM)-                            , ("FORMAT_G8B8G8R8_422_UNORM", pure FORMAT_G8B8G8R8_422_UNORM)]-                     +++-                     prec 10 (do-                       expectP (Ident "Format")-                       v <- step readPrec-                       pure (Format v)))+-- No documentation found for Chapter "Format"+module Vulkan.Core10.Enums.Format  (Format( FORMAT_UNDEFINED+                                          , FORMAT_R4G4_UNORM_PACK8+                                          , FORMAT_R4G4B4A4_UNORM_PACK16+                                          , FORMAT_B4G4R4A4_UNORM_PACK16+                                          , FORMAT_R5G6B5_UNORM_PACK16+                                          , FORMAT_B5G6R5_UNORM_PACK16+                                          , FORMAT_R5G5B5A1_UNORM_PACK16+                                          , FORMAT_B5G5R5A1_UNORM_PACK16+                                          , FORMAT_A1R5G5B5_UNORM_PACK16+                                          , FORMAT_R8_UNORM+                                          , FORMAT_R8_SNORM+                                          , FORMAT_R8_USCALED+                                          , FORMAT_R8_SSCALED+                                          , FORMAT_R8_UINT+                                          , FORMAT_R8_SINT+                                          , FORMAT_R8_SRGB+                                          , FORMAT_R8G8_UNORM+                                          , FORMAT_R8G8_SNORM+                                          , FORMAT_R8G8_USCALED+                                          , FORMAT_R8G8_SSCALED+                                          , FORMAT_R8G8_UINT+                                          , FORMAT_R8G8_SINT+                                          , FORMAT_R8G8_SRGB+                                          , FORMAT_R8G8B8_UNORM+                                          , FORMAT_R8G8B8_SNORM+                                          , FORMAT_R8G8B8_USCALED+                                          , FORMAT_R8G8B8_SSCALED+                                          , FORMAT_R8G8B8_UINT+                                          , FORMAT_R8G8B8_SINT+                                          , FORMAT_R8G8B8_SRGB+                                          , FORMAT_B8G8R8_UNORM+                                          , FORMAT_B8G8R8_SNORM+                                          , FORMAT_B8G8R8_USCALED+                                          , FORMAT_B8G8R8_SSCALED+                                          , FORMAT_B8G8R8_UINT+                                          , FORMAT_B8G8R8_SINT+                                          , FORMAT_B8G8R8_SRGB+                                          , FORMAT_R8G8B8A8_UNORM+                                          , FORMAT_R8G8B8A8_SNORM+                                          , FORMAT_R8G8B8A8_USCALED+                                          , FORMAT_R8G8B8A8_SSCALED+                                          , FORMAT_R8G8B8A8_UINT+                                          , FORMAT_R8G8B8A8_SINT+                                          , FORMAT_R8G8B8A8_SRGB+                                          , FORMAT_B8G8R8A8_UNORM+                                          , FORMAT_B8G8R8A8_SNORM+                                          , FORMAT_B8G8R8A8_USCALED+                                          , FORMAT_B8G8R8A8_SSCALED+                                          , FORMAT_B8G8R8A8_UINT+                                          , FORMAT_B8G8R8A8_SINT+                                          , FORMAT_B8G8R8A8_SRGB+                                          , FORMAT_A8B8G8R8_UNORM_PACK32+                                          , FORMAT_A8B8G8R8_SNORM_PACK32+                                          , FORMAT_A8B8G8R8_USCALED_PACK32+                                          , FORMAT_A8B8G8R8_SSCALED_PACK32+                                          , FORMAT_A8B8G8R8_UINT_PACK32+                                          , FORMAT_A8B8G8R8_SINT_PACK32+                                          , FORMAT_A8B8G8R8_SRGB_PACK32+                                          , FORMAT_A2R10G10B10_UNORM_PACK32+                                          , FORMAT_A2R10G10B10_SNORM_PACK32+                                          , FORMAT_A2R10G10B10_USCALED_PACK32+                                          , FORMAT_A2R10G10B10_SSCALED_PACK32+                                          , FORMAT_A2R10G10B10_UINT_PACK32+                                          , FORMAT_A2R10G10B10_SINT_PACK32+                                          , FORMAT_A2B10G10R10_UNORM_PACK32+                                          , FORMAT_A2B10G10R10_SNORM_PACK32+                                          , FORMAT_A2B10G10R10_USCALED_PACK32+                                          , FORMAT_A2B10G10R10_SSCALED_PACK32+                                          , FORMAT_A2B10G10R10_UINT_PACK32+                                          , FORMAT_A2B10G10R10_SINT_PACK32+                                          , FORMAT_R16_UNORM+                                          , FORMAT_R16_SNORM+                                          , FORMAT_R16_USCALED+                                          , FORMAT_R16_SSCALED+                                          , FORMAT_R16_UINT+                                          , FORMAT_R16_SINT+                                          , FORMAT_R16_SFLOAT+                                          , FORMAT_R16G16_UNORM+                                          , FORMAT_R16G16_SNORM+                                          , FORMAT_R16G16_USCALED+                                          , FORMAT_R16G16_SSCALED+                                          , FORMAT_R16G16_UINT+                                          , FORMAT_R16G16_SINT+                                          , FORMAT_R16G16_SFLOAT+                                          , FORMAT_R16G16B16_UNORM+                                          , FORMAT_R16G16B16_SNORM+                                          , FORMAT_R16G16B16_USCALED+                                          , FORMAT_R16G16B16_SSCALED+                                          , FORMAT_R16G16B16_UINT+                                          , FORMAT_R16G16B16_SINT+                                          , FORMAT_R16G16B16_SFLOAT+                                          , FORMAT_R16G16B16A16_UNORM+                                          , FORMAT_R16G16B16A16_SNORM+                                          , FORMAT_R16G16B16A16_USCALED+                                          , FORMAT_R16G16B16A16_SSCALED+                                          , FORMAT_R16G16B16A16_UINT+                                          , FORMAT_R16G16B16A16_SINT+                                          , FORMAT_R16G16B16A16_SFLOAT+                                          , FORMAT_R32_UINT+                                          , FORMAT_R32_SINT+                                          , FORMAT_R32_SFLOAT+                                          , FORMAT_R32G32_UINT+                                          , FORMAT_R32G32_SINT+                                          , FORMAT_R32G32_SFLOAT+                                          , FORMAT_R32G32B32_UINT+                                          , FORMAT_R32G32B32_SINT+                                          , FORMAT_R32G32B32_SFLOAT+                                          , FORMAT_R32G32B32A32_UINT+                                          , FORMAT_R32G32B32A32_SINT+                                          , FORMAT_R32G32B32A32_SFLOAT+                                          , FORMAT_R64_UINT+                                          , FORMAT_R64_SINT+                                          , FORMAT_R64_SFLOAT+                                          , FORMAT_R64G64_UINT+                                          , FORMAT_R64G64_SINT+                                          , FORMAT_R64G64_SFLOAT+                                          , FORMAT_R64G64B64_UINT+                                          , FORMAT_R64G64B64_SINT+                                          , FORMAT_R64G64B64_SFLOAT+                                          , FORMAT_R64G64B64A64_UINT+                                          , FORMAT_R64G64B64A64_SINT+                                          , FORMAT_R64G64B64A64_SFLOAT+                                          , FORMAT_B10G11R11_UFLOAT_PACK32+                                          , FORMAT_E5B9G9R9_UFLOAT_PACK32+                                          , FORMAT_D16_UNORM+                                          , FORMAT_X8_D24_UNORM_PACK32+                                          , FORMAT_D32_SFLOAT+                                          , FORMAT_S8_UINT+                                          , FORMAT_D16_UNORM_S8_UINT+                                          , FORMAT_D24_UNORM_S8_UINT+                                          , FORMAT_D32_SFLOAT_S8_UINT+                                          , FORMAT_BC1_RGB_UNORM_BLOCK+                                          , FORMAT_BC1_RGB_SRGB_BLOCK+                                          , FORMAT_BC1_RGBA_UNORM_BLOCK+                                          , FORMAT_BC1_RGBA_SRGB_BLOCK+                                          , FORMAT_BC2_UNORM_BLOCK+                                          , FORMAT_BC2_SRGB_BLOCK+                                          , FORMAT_BC3_UNORM_BLOCK+                                          , FORMAT_BC3_SRGB_BLOCK+                                          , FORMAT_BC4_UNORM_BLOCK+                                          , FORMAT_BC4_SNORM_BLOCK+                                          , FORMAT_BC5_UNORM_BLOCK+                                          , FORMAT_BC5_SNORM_BLOCK+                                          , FORMAT_BC6H_UFLOAT_BLOCK+                                          , FORMAT_BC6H_SFLOAT_BLOCK+                                          , FORMAT_BC7_UNORM_BLOCK+                                          , FORMAT_BC7_SRGB_BLOCK+                                          , FORMAT_ETC2_R8G8B8_UNORM_BLOCK+                                          , FORMAT_ETC2_R8G8B8_SRGB_BLOCK+                                          , FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK+                                          , FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK+                                          , FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK+                                          , FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK+                                          , FORMAT_EAC_R11_UNORM_BLOCK+                                          , FORMAT_EAC_R11_SNORM_BLOCK+                                          , FORMAT_EAC_R11G11_UNORM_BLOCK+                                          , FORMAT_EAC_R11G11_SNORM_BLOCK+                                          , FORMAT_ASTC_4x4_UNORM_BLOCK+                                          , FORMAT_ASTC_4x4_SRGB_BLOCK+                                          , FORMAT_ASTC_5x4_UNORM_BLOCK+                                          , FORMAT_ASTC_5x4_SRGB_BLOCK+                                          , FORMAT_ASTC_5x5_UNORM_BLOCK+                                          , FORMAT_ASTC_5x5_SRGB_BLOCK+                                          , FORMAT_ASTC_6x5_UNORM_BLOCK+                                          , FORMAT_ASTC_6x5_SRGB_BLOCK+                                          , FORMAT_ASTC_6x6_UNORM_BLOCK+                                          , FORMAT_ASTC_6x6_SRGB_BLOCK+                                          , FORMAT_ASTC_8x5_UNORM_BLOCK+                                          , FORMAT_ASTC_8x5_SRGB_BLOCK+                                          , FORMAT_ASTC_8x6_UNORM_BLOCK+                                          , FORMAT_ASTC_8x6_SRGB_BLOCK+                                          , FORMAT_ASTC_8x8_UNORM_BLOCK+                                          , FORMAT_ASTC_8x8_SRGB_BLOCK+                                          , FORMAT_ASTC_10x5_UNORM_BLOCK+                                          , FORMAT_ASTC_10x5_SRGB_BLOCK+                                          , FORMAT_ASTC_10x6_UNORM_BLOCK+                                          , FORMAT_ASTC_10x6_SRGB_BLOCK+                                          , FORMAT_ASTC_10x8_UNORM_BLOCK+                                          , FORMAT_ASTC_10x8_SRGB_BLOCK+                                          , FORMAT_ASTC_10x10_UNORM_BLOCK+                                          , FORMAT_ASTC_10x10_SRGB_BLOCK+                                          , FORMAT_ASTC_12x10_UNORM_BLOCK+                                          , FORMAT_ASTC_12x10_SRGB_BLOCK+                                          , FORMAT_ASTC_12x12_UNORM_BLOCK+                                          , FORMAT_ASTC_12x12_SRGB_BLOCK+                                          , FORMAT_A4B4G4R4_UNORM_PACK16_EXT+                                          , FORMAT_A4R4G4B4_UNORM_PACK16_EXT+                                          , FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT+                                          , FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT+                                          , FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT+                                          , FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT+                                          , FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT+                                          , FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT+                                          , FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT+                                          , FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT+                                          , FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT+                                          , FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT+                                          , FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT+                                          , FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT+                                          , FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT+                                          , FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT+                                          , FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG+                                          , FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG+                                          , FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG+                                          , FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG+                                          , FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG+                                          , FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG+                                          , FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG+                                          , FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG+                                          , FORMAT_G16_B16_R16_3PLANE_444_UNORM+                                          , FORMAT_G16_B16R16_2PLANE_422_UNORM+                                          , FORMAT_G16_B16_R16_3PLANE_422_UNORM+                                          , FORMAT_G16_B16R16_2PLANE_420_UNORM+                                          , FORMAT_G16_B16_R16_3PLANE_420_UNORM+                                          , FORMAT_B16G16R16G16_422_UNORM+                                          , FORMAT_G16B16G16R16_422_UNORM+                                          , FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16+                                          , FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16+                                          , FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16+                                          , FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16+                                          , FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16+                                          , FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16+                                          , FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16+                                          , FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16+                                          , FORMAT_R12X4G12X4_UNORM_2PACK16+                                          , FORMAT_R12X4_UNORM_PACK16+                                          , FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16+                                          , FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16+                                          , FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16+                                          , FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16+                                          , FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16+                                          , FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16+                                          , FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16+                                          , FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16+                                          , FORMAT_R10X6G10X6_UNORM_2PACK16+                                          , FORMAT_R10X6_UNORM_PACK16+                                          , FORMAT_G8_B8_R8_3PLANE_444_UNORM+                                          , FORMAT_G8_B8R8_2PLANE_422_UNORM+                                          , FORMAT_G8_B8_R8_3PLANE_422_UNORM+                                          , FORMAT_G8_B8R8_2PLANE_420_UNORM+                                          , FORMAT_G8_B8_R8_3PLANE_420_UNORM+                                          , FORMAT_B8G8R8G8_422_UNORM+                                          , FORMAT_G8B8G8R8_422_UNORM+                                          , ..+                                          )) where++import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec)+import GHC.Show (showsPrec)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec))+import Vulkan.Zero (Zero)+-- | VkFormat - Available image formats+--+-- = See Also+--+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR',+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',+-- 'Vulkan.Core10.Pass.AttachmentDescription',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',+-- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',+-- 'Vulkan.Core10.Image.ImageCreateInfo',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.ImageViewASTCDecodeModeEXT',+-- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',+-- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceFormatKHR',+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',+-- 'Vulkan.Core10.Pipeline.VertexInputAttributeDescription',+-- 'Vulkan.Extensions.VK_NV_external_memory_capabilities.getPhysicalDeviceExternalImageFormatPropertiesNV',+-- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2',+-- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2KHR',+-- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties',+-- 'Vulkan.Core10.SparseResourceMemoryManagement.getPhysicalDeviceSparseImageFormatProperties'+newtype Format = Format Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'FORMAT_UNDEFINED' specifies that the format is not specified.+pattern FORMAT_UNDEFINED                          = Format 0+-- | 'FORMAT_R4G4_UNORM_PACK8' specifies a two-component, 8-bit packed+-- unsigned normalized format that has a 4-bit R component in bits 4..7,+-- and a 4-bit G component in bits 0..3.+pattern FORMAT_R4G4_UNORM_PACK8                   = Format 1+-- | 'FORMAT_R4G4B4A4_UNORM_PACK16' specifies a four-component, 16-bit packed+-- unsigned normalized format that has a 4-bit R component in bits 12..15,+-- a 4-bit G component in bits 8..11, a 4-bit B component in bits 4..7, and+-- a 4-bit A component in bits 0..3.+pattern FORMAT_R4G4B4A4_UNORM_PACK16              = Format 2+-- | 'FORMAT_B4G4R4A4_UNORM_PACK16' specifies a four-component, 16-bit packed+-- unsigned normalized format that has a 4-bit B component in bits 12..15,+-- a 4-bit G component in bits 8..11, a 4-bit R component in bits 4..7, and+-- a 4-bit A component in bits 0..3.+pattern FORMAT_B4G4R4A4_UNORM_PACK16              = Format 3+-- | 'FORMAT_R5G6B5_UNORM_PACK16' specifies a three-component, 16-bit packed+-- unsigned normalized format that has a 5-bit R component in bits 11..15,+-- a 6-bit G component in bits 5..10, and a 5-bit B component in bits 0..4.+pattern FORMAT_R5G6B5_UNORM_PACK16                = Format 4+-- | 'FORMAT_B5G6R5_UNORM_PACK16' specifies a three-component, 16-bit packed+-- unsigned normalized format that has a 5-bit B component in bits 11..15,+-- a 6-bit G component in bits 5..10, and a 5-bit R component in bits 0..4.+pattern FORMAT_B5G6R5_UNORM_PACK16                = Format 5+-- | 'FORMAT_R5G5B5A1_UNORM_PACK16' specifies a four-component, 16-bit packed+-- unsigned normalized format that has a 5-bit R component in bits 11..15,+-- a 5-bit G component in bits 6..10, a 5-bit B component in bits 1..5, and+-- a 1-bit A component in bit 0.+pattern FORMAT_R5G5B5A1_UNORM_PACK16              = Format 6+-- | 'FORMAT_B5G5R5A1_UNORM_PACK16' specifies a four-component, 16-bit packed+-- unsigned normalized format that has a 5-bit B component in bits 11..15,+-- a 5-bit G component in bits 6..10, a 5-bit R component in bits 1..5, and+-- a 1-bit A component in bit 0.+pattern FORMAT_B5G5R5A1_UNORM_PACK16              = Format 7+-- | 'FORMAT_A1R5G5B5_UNORM_PACK16' specifies a four-component, 16-bit packed+-- unsigned normalized format that has a 1-bit A component in bit 15, a+-- 5-bit R component in bits 10..14, a 5-bit G component in bits 5..9, and+-- a 5-bit B component in bits 0..4.+pattern FORMAT_A1R5G5B5_UNORM_PACK16              = Format 8+-- | 'FORMAT_R8_UNORM' specifies a one-component, 8-bit unsigned normalized+-- format that has a single 8-bit R component.+pattern FORMAT_R8_UNORM                           = Format 9+-- | 'FORMAT_R8_SNORM' specifies a one-component, 8-bit signed normalized+-- format that has a single 8-bit R component.+pattern FORMAT_R8_SNORM                           = Format 10+-- | 'FORMAT_R8_USCALED' specifies a one-component, 8-bit unsigned scaled+-- integer format that has a single 8-bit R component.+pattern FORMAT_R8_USCALED                         = Format 11+-- | 'FORMAT_R8_SSCALED' specifies a one-component, 8-bit signed scaled+-- integer format that has a single 8-bit R component.+pattern FORMAT_R8_SSCALED                         = Format 12+-- | 'FORMAT_R8_UINT' specifies a one-component, 8-bit unsigned integer+-- format that has a single 8-bit R component.+pattern FORMAT_R8_UINT                            = Format 13+-- | 'FORMAT_R8_SINT' specifies a one-component, 8-bit signed integer format+-- that has a single 8-bit R component.+pattern FORMAT_R8_SINT                            = Format 14+-- | 'FORMAT_R8_SRGB' specifies a one-component, 8-bit unsigned normalized+-- format that has a single 8-bit R component stored with sRGB nonlinear+-- encoding.+pattern FORMAT_R8_SRGB                            = Format 15+-- | 'FORMAT_R8G8_UNORM' specifies a two-component, 16-bit unsigned+-- normalized format that has an 8-bit R component in byte 0, and an 8-bit+-- G component in byte 1.+pattern FORMAT_R8G8_UNORM                         = Format 16+-- | 'FORMAT_R8G8_SNORM' specifies a two-component, 16-bit signed normalized+-- format that has an 8-bit R component in byte 0, and an 8-bit G component+-- in byte 1.+pattern FORMAT_R8G8_SNORM                         = Format 17+-- | 'FORMAT_R8G8_USCALED' specifies a two-component, 16-bit unsigned scaled+-- integer format that has an 8-bit R component in byte 0, and an 8-bit G+-- component in byte 1.+pattern FORMAT_R8G8_USCALED                       = Format 18+-- | 'FORMAT_R8G8_SSCALED' specifies a two-component, 16-bit signed scaled+-- integer format that has an 8-bit R component in byte 0, and an 8-bit G+-- component in byte 1.+pattern FORMAT_R8G8_SSCALED                       = Format 19+-- | 'FORMAT_R8G8_UINT' specifies a two-component, 16-bit unsigned integer+-- format that has an 8-bit R component in byte 0, and an 8-bit G component+-- in byte 1.+pattern FORMAT_R8G8_UINT                          = Format 20+-- | 'FORMAT_R8G8_SINT' specifies a two-component, 16-bit signed integer+-- format that has an 8-bit R component in byte 0, and an 8-bit G component+-- in byte 1.+pattern FORMAT_R8G8_SINT                          = Format 21+-- | 'FORMAT_R8G8_SRGB' specifies a two-component, 16-bit unsigned normalized+-- format that has an 8-bit R component stored with sRGB nonlinear encoding+-- in byte 0, and an 8-bit G component stored with sRGB nonlinear encoding+-- in byte 1.+pattern FORMAT_R8G8_SRGB                          = Format 22+-- | 'FORMAT_R8G8B8_UNORM' specifies a three-component, 24-bit unsigned+-- normalized format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit B component in byte 2.+pattern FORMAT_R8G8B8_UNORM                       = Format 23+-- | 'FORMAT_R8G8B8_SNORM' specifies a three-component, 24-bit signed+-- normalized format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit B component in byte 2.+pattern FORMAT_R8G8B8_SNORM                       = Format 24+-- | 'FORMAT_R8G8B8_USCALED' specifies a three-component, 24-bit unsigned+-- scaled format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit B component in byte 2.+pattern FORMAT_R8G8B8_USCALED                     = Format 25+-- | 'FORMAT_R8G8B8_SSCALED' specifies a three-component, 24-bit signed+-- scaled format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit B component in byte 2.+pattern FORMAT_R8G8B8_SSCALED                     = Format 26+-- | 'FORMAT_R8G8B8_UINT' specifies a three-component, 24-bit unsigned+-- integer format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit B component in byte 2.+pattern FORMAT_R8G8B8_UINT                        = Format 27+-- | 'FORMAT_R8G8B8_SINT' specifies a three-component, 24-bit signed integer+-- format that has an 8-bit R component in byte 0, an 8-bit G component in+-- byte 1, and an 8-bit B component in byte 2.+pattern FORMAT_R8G8B8_SINT                        = Format 28+-- | 'FORMAT_R8G8B8_SRGB' specifies a three-component, 24-bit unsigned+-- normalized format that has an 8-bit R component stored with sRGB+-- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB+-- nonlinear encoding in byte 1, and an 8-bit B component stored with sRGB+-- nonlinear encoding in byte 2.+pattern FORMAT_R8G8B8_SRGB                        = Format 29+-- | 'FORMAT_B8G8R8_UNORM' specifies a three-component, 24-bit unsigned+-- normalized format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit R component in byte 2.+pattern FORMAT_B8G8R8_UNORM                       = Format 30+-- | 'FORMAT_B8G8R8_SNORM' specifies a three-component, 24-bit signed+-- normalized format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit R component in byte 2.+pattern FORMAT_B8G8R8_SNORM                       = Format 31+-- | 'FORMAT_B8G8R8_USCALED' specifies a three-component, 24-bit unsigned+-- scaled format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit R component in byte 2.+pattern FORMAT_B8G8R8_USCALED                     = Format 32+-- | 'FORMAT_B8G8R8_SSCALED' specifies a three-component, 24-bit signed+-- scaled format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit R component in byte 2.+pattern FORMAT_B8G8R8_SSCALED                     = Format 33+-- | 'FORMAT_B8G8R8_UINT' specifies a three-component, 24-bit unsigned+-- integer format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit R component in byte 2.+pattern FORMAT_B8G8R8_UINT                        = Format 34+-- | 'FORMAT_B8G8R8_SINT' specifies a three-component, 24-bit signed integer+-- format that has an 8-bit B component in byte 0, an 8-bit G component in+-- byte 1, and an 8-bit R component in byte 2.+pattern FORMAT_B8G8R8_SINT                        = Format 35+-- | 'FORMAT_B8G8R8_SRGB' specifies a three-component, 24-bit unsigned+-- normalized format that has an 8-bit B component stored with sRGB+-- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB+-- nonlinear encoding in byte 1, and an 8-bit R component stored with sRGB+-- nonlinear encoding in byte 2.+pattern FORMAT_B8G8R8_SRGB                        = Format 36+-- | 'FORMAT_R8G8B8A8_UNORM' specifies a four-component, 32-bit unsigned+-- normalized format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_R8G8B8A8_UNORM                     = Format 37+-- | 'FORMAT_R8G8B8A8_SNORM' specifies a four-component, 32-bit signed+-- normalized format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_R8G8B8A8_SNORM                     = Format 38+-- | 'FORMAT_R8G8B8A8_USCALED' specifies a four-component, 32-bit unsigned+-- scaled format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_R8G8B8A8_USCALED                   = Format 39+-- | 'FORMAT_R8G8B8A8_SSCALED' specifies a four-component, 32-bit signed+-- scaled format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_R8G8B8A8_SSCALED                   = Format 40+-- | 'FORMAT_R8G8B8A8_UINT' specifies a four-component, 32-bit unsigned+-- integer format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_R8G8B8A8_UINT                      = Format 41+-- | 'FORMAT_R8G8B8A8_SINT' specifies a four-component, 32-bit signed integer+-- format that has an 8-bit R component in byte 0, an 8-bit G component in+-- byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte+-- 3.+pattern FORMAT_R8G8B8A8_SINT                      = Format 42+-- | 'FORMAT_R8G8B8A8_SRGB' specifies a four-component, 32-bit unsigned+-- normalized format that has an 8-bit R component stored with sRGB+-- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB+-- nonlinear encoding in byte 1, an 8-bit B component stored with sRGB+-- nonlinear encoding in byte 2, and an 8-bit A component in byte 3.+pattern FORMAT_R8G8B8A8_SRGB                      = Format 43+-- | 'FORMAT_B8G8R8A8_UNORM' specifies a four-component, 32-bit unsigned+-- normalized format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_B8G8R8A8_UNORM                     = Format 44+-- | 'FORMAT_B8G8R8A8_SNORM' specifies a four-component, 32-bit signed+-- normalized format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_B8G8R8A8_SNORM                     = Format 45+-- | 'FORMAT_B8G8R8A8_USCALED' specifies a four-component, 32-bit unsigned+-- scaled format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_B8G8R8A8_USCALED                   = Format 46+-- | 'FORMAT_B8G8R8A8_SSCALED' specifies a four-component, 32-bit signed+-- scaled format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_B8G8R8A8_SSCALED                   = Format 47+-- | 'FORMAT_B8G8R8A8_UINT' specifies a four-component, 32-bit unsigned+-- integer format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_B8G8R8A8_UINT                      = Format 48+-- | 'FORMAT_B8G8R8A8_SINT' specifies a four-component, 32-bit signed integer+-- format that has an 8-bit B component in byte 0, an 8-bit G component in+-- byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte+-- 3.+pattern FORMAT_B8G8R8A8_SINT                      = Format 49+-- | 'FORMAT_B8G8R8A8_SRGB' specifies a four-component, 32-bit unsigned+-- normalized format that has an 8-bit B component stored with sRGB+-- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB+-- nonlinear encoding in byte 1, an 8-bit R component stored with sRGB+-- nonlinear encoding in byte 2, and an 8-bit A component in byte 3.+pattern FORMAT_B8G8R8A8_SRGB                      = Format 50+-- | 'FORMAT_A8B8G8R8_UNORM_PACK32' specifies a four-component, 32-bit packed+-- unsigned normalized format that has an 8-bit A component in bits 24..31,+-- an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,+-- and an 8-bit R component in bits 0..7.+pattern FORMAT_A8B8G8R8_UNORM_PACK32              = Format 51+-- | 'FORMAT_A8B8G8R8_SNORM_PACK32' specifies a four-component, 32-bit packed+-- signed normalized format that has an 8-bit A component in bits 24..31,+-- an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,+-- and an 8-bit R component in bits 0..7.+pattern FORMAT_A8B8G8R8_SNORM_PACK32              = Format 52+-- | 'FORMAT_A8B8G8R8_USCALED_PACK32' specifies a four-component, 32-bit+-- packed unsigned scaled integer format that has an 8-bit A component in+-- bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component+-- in bits 8..15, and an 8-bit R component in bits 0..7.+pattern FORMAT_A8B8G8R8_USCALED_PACK32            = Format 53+-- | 'FORMAT_A8B8G8R8_SSCALED_PACK32' specifies a four-component, 32-bit+-- packed signed scaled integer format that has an 8-bit A component in+-- bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component+-- in bits 8..15, and an 8-bit R component in bits 0..7.+pattern FORMAT_A8B8G8R8_SSCALED_PACK32            = Format 54+-- | 'FORMAT_A8B8G8R8_UINT_PACK32' specifies a four-component, 32-bit packed+-- unsigned integer format that has an 8-bit A component in bits 24..31, an+-- 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,+-- and an 8-bit R component in bits 0..7.+pattern FORMAT_A8B8G8R8_UINT_PACK32               = Format 55+-- | 'FORMAT_A8B8G8R8_SINT_PACK32' specifies a four-component, 32-bit packed+-- signed integer format that has an 8-bit A component in bits 24..31, an+-- 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,+-- and an 8-bit R component in bits 0..7.+pattern FORMAT_A8B8G8R8_SINT_PACK32               = Format 56+-- | 'FORMAT_A8B8G8R8_SRGB_PACK32' specifies a four-component, 32-bit packed+-- unsigned normalized format that has an 8-bit A component in bits 24..31,+-- an 8-bit B component stored with sRGB nonlinear encoding in bits 16..23,+-- an 8-bit G component stored with sRGB nonlinear encoding in bits 8..15,+-- and an 8-bit R component stored with sRGB nonlinear encoding in bits+-- 0..7.+pattern FORMAT_A8B8G8R8_SRGB_PACK32               = Format 57+-- | 'FORMAT_A2R10G10B10_UNORM_PACK32' specifies a four-component, 32-bit+-- packed unsigned normalized format that has a 2-bit A component in bits+-- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit B component in bits 0..9.+pattern FORMAT_A2R10G10B10_UNORM_PACK32           = Format 58+-- | 'FORMAT_A2R10G10B10_SNORM_PACK32' specifies a four-component, 32-bit+-- packed signed normalized format that has a 2-bit A component in bits+-- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit B component in bits 0..9.+pattern FORMAT_A2R10G10B10_SNORM_PACK32           = Format 59+-- | 'FORMAT_A2R10G10B10_USCALED_PACK32' specifies a four-component, 32-bit+-- packed unsigned scaled integer format that has a 2-bit A component in+-- bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component+-- in bits 10..19, and a 10-bit B component in bits 0..9.+pattern FORMAT_A2R10G10B10_USCALED_PACK32         = Format 60+-- | 'FORMAT_A2R10G10B10_SSCALED_PACK32' specifies a four-component, 32-bit+-- packed signed scaled integer format that has a 2-bit A component in bits+-- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit B component in bits 0..9.+pattern FORMAT_A2R10G10B10_SSCALED_PACK32         = Format 61+-- | 'FORMAT_A2R10G10B10_UINT_PACK32' specifies a four-component, 32-bit+-- packed unsigned integer format that has a 2-bit A component in bits+-- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit B component in bits 0..9.+pattern FORMAT_A2R10G10B10_UINT_PACK32            = Format 62+-- | 'FORMAT_A2R10G10B10_SINT_PACK32' specifies a four-component, 32-bit+-- packed signed integer format that has a 2-bit A component in bits+-- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit B component in bits 0..9.+pattern FORMAT_A2R10G10B10_SINT_PACK32            = Format 63+-- | 'FORMAT_A2B10G10R10_UNORM_PACK32' specifies a four-component, 32-bit+-- packed unsigned normalized format that has a 2-bit A component in bits+-- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit R component in bits 0..9.+pattern FORMAT_A2B10G10R10_UNORM_PACK32           = Format 64+-- | 'FORMAT_A2B10G10R10_SNORM_PACK32' specifies a four-component, 32-bit+-- packed signed normalized format that has a 2-bit A component in bits+-- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit R component in bits 0..9.+pattern FORMAT_A2B10G10R10_SNORM_PACK32           = Format 65+-- | 'FORMAT_A2B10G10R10_USCALED_PACK32' specifies a four-component, 32-bit+-- packed unsigned scaled integer format that has a 2-bit A component in+-- bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component+-- in bits 10..19, and a 10-bit R component in bits 0..9.+pattern FORMAT_A2B10G10R10_USCALED_PACK32         = Format 66+-- | 'FORMAT_A2B10G10R10_SSCALED_PACK32' specifies a four-component, 32-bit+-- packed signed scaled integer format that has a 2-bit A component in bits+-- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit R component in bits 0..9.+pattern FORMAT_A2B10G10R10_SSCALED_PACK32         = Format 67+-- | 'FORMAT_A2B10G10R10_UINT_PACK32' specifies a four-component, 32-bit+-- packed unsigned integer format that has a 2-bit A component in bits+-- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit R component in bits 0..9.+pattern FORMAT_A2B10G10R10_UINT_PACK32            = Format 68+-- | 'FORMAT_A2B10G10R10_SINT_PACK32' specifies a four-component, 32-bit+-- packed signed integer format that has a 2-bit A component in bits+-- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit R component in bits 0..9.+pattern FORMAT_A2B10G10R10_SINT_PACK32            = Format 69+-- | 'FORMAT_R16_UNORM' specifies a one-component, 16-bit unsigned normalized+-- format that has a single 16-bit R component.+pattern FORMAT_R16_UNORM                          = Format 70+-- | 'FORMAT_R16_SNORM' specifies a one-component, 16-bit signed normalized+-- format that has a single 16-bit R component.+pattern FORMAT_R16_SNORM                          = Format 71+-- | 'FORMAT_R16_USCALED' specifies a one-component, 16-bit unsigned scaled+-- integer format that has a single 16-bit R component.+pattern FORMAT_R16_USCALED                        = Format 72+-- | 'FORMAT_R16_SSCALED' specifies a one-component, 16-bit signed scaled+-- integer format that has a single 16-bit R component.+pattern FORMAT_R16_SSCALED                        = Format 73+-- | 'FORMAT_R16_UINT' specifies a one-component, 16-bit unsigned integer+-- format that has a single 16-bit R component.+pattern FORMAT_R16_UINT                           = Format 74+-- | 'FORMAT_R16_SINT' specifies a one-component, 16-bit signed integer+-- format that has a single 16-bit R component.+pattern FORMAT_R16_SINT                           = Format 75+-- | 'FORMAT_R16_SFLOAT' specifies a one-component, 16-bit signed+-- floating-point format that has a single 16-bit R component.+pattern FORMAT_R16_SFLOAT                         = Format 76+-- | 'FORMAT_R16G16_UNORM' specifies a two-component, 32-bit unsigned+-- normalized format that has a 16-bit R component in bytes 0..1, and a+-- 16-bit G component in bytes 2..3.+pattern FORMAT_R16G16_UNORM                       = Format 77+-- | 'FORMAT_R16G16_SNORM' specifies a two-component, 32-bit signed+-- normalized format that has a 16-bit R component in bytes 0..1, and a+-- 16-bit G component in bytes 2..3.+pattern FORMAT_R16G16_SNORM                       = Format 78+-- | 'FORMAT_R16G16_USCALED' specifies a two-component, 32-bit unsigned+-- scaled integer format that has a 16-bit R component in bytes 0..1, and a+-- 16-bit G component in bytes 2..3.+pattern FORMAT_R16G16_USCALED                     = Format 79+-- | 'FORMAT_R16G16_SSCALED' specifies a two-component, 32-bit signed scaled+-- integer format that has a 16-bit R component in bytes 0..1, and a 16-bit+-- G component in bytes 2..3.+pattern FORMAT_R16G16_SSCALED                     = Format 80+-- | 'FORMAT_R16G16_UINT' specifies a two-component, 32-bit unsigned integer+-- format that has a 16-bit R component in bytes 0..1, and a 16-bit G+-- component in bytes 2..3.+pattern FORMAT_R16G16_UINT                        = Format 81+-- | 'FORMAT_R16G16_SINT' specifies a two-component, 32-bit signed integer+-- format that has a 16-bit R component in bytes 0..1, and a 16-bit G+-- component in bytes 2..3.+pattern FORMAT_R16G16_SINT                        = Format 82+-- | 'FORMAT_R16G16_SFLOAT' specifies a two-component, 32-bit signed+-- floating-point format that has a 16-bit R component in bytes 0..1, and a+-- 16-bit G component in bytes 2..3.+pattern FORMAT_R16G16_SFLOAT                      = Format 83+-- | 'FORMAT_R16G16B16_UNORM' specifies a three-component, 48-bit unsigned+-- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit+-- G component in bytes 2..3, and a 16-bit B component in bytes 4..5.+pattern FORMAT_R16G16B16_UNORM                    = Format 84+-- | 'FORMAT_R16G16B16_SNORM' specifies a three-component, 48-bit signed+-- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit+-- G component in bytes 2..3, and a 16-bit B component in bytes 4..5.+pattern FORMAT_R16G16B16_SNORM                    = Format 85+-- | 'FORMAT_R16G16B16_USCALED' specifies a three-component, 48-bit unsigned+-- scaled integer format that has a 16-bit R component in bytes 0..1, a+-- 16-bit G component in bytes 2..3, and a 16-bit B component in bytes+-- 4..5.+pattern FORMAT_R16G16B16_USCALED                  = Format 86+-- | 'FORMAT_R16G16B16_SSCALED' specifies a three-component, 48-bit signed+-- scaled integer format that has a 16-bit R component in bytes 0..1, a+-- 16-bit G component in bytes 2..3, and a 16-bit B component in bytes+-- 4..5.+pattern FORMAT_R16G16B16_SSCALED                  = Format 87+-- | 'FORMAT_R16G16B16_UINT' specifies a three-component, 48-bit unsigned+-- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G+-- component in bytes 2..3, and a 16-bit B component in bytes 4..5.+pattern FORMAT_R16G16B16_UINT                     = Format 88+-- | 'FORMAT_R16G16B16_SINT' specifies a three-component, 48-bit signed+-- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G+-- component in bytes 2..3, and a 16-bit B component in bytes 4..5.+pattern FORMAT_R16G16B16_SINT                     = Format 89+-- | 'FORMAT_R16G16B16_SFLOAT' specifies a three-component, 48-bit signed+-- floating-point format that has a 16-bit R component in bytes 0..1, a+-- 16-bit G component in bytes 2..3, and a 16-bit B component in bytes+-- 4..5.+pattern FORMAT_R16G16B16_SFLOAT                   = Format 90+-- | 'FORMAT_R16G16B16A16_UNORM' specifies a four-component, 64-bit unsigned+-- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit+-- G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a+-- 16-bit A component in bytes 6..7.+pattern FORMAT_R16G16B16A16_UNORM                 = Format 91+-- | 'FORMAT_R16G16B16A16_SNORM' specifies a four-component, 64-bit signed+-- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit+-- G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a+-- 16-bit A component in bytes 6..7.+pattern FORMAT_R16G16B16A16_SNORM                 = Format 92+-- | 'FORMAT_R16G16B16A16_USCALED' specifies a four-component, 64-bit+-- unsigned scaled integer format that has a 16-bit R component in bytes+-- 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes+-- 4..5, and a 16-bit A component in bytes 6..7.+pattern FORMAT_R16G16B16A16_USCALED               = Format 93+-- | 'FORMAT_R16G16B16A16_SSCALED' specifies a four-component, 64-bit signed+-- scaled integer format that has a 16-bit R component in bytes 0..1, a+-- 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5,+-- and a 16-bit A component in bytes 6..7.+pattern FORMAT_R16G16B16A16_SSCALED               = Format 94+-- | 'FORMAT_R16G16B16A16_UINT' specifies a four-component, 64-bit unsigned+-- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G+-- component in bytes 2..3, a 16-bit B component in bytes 4..5, and a+-- 16-bit A component in bytes 6..7.+pattern FORMAT_R16G16B16A16_UINT                  = Format 95+-- | 'FORMAT_R16G16B16A16_SINT' specifies a four-component, 64-bit signed+-- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G+-- component in bytes 2..3, a 16-bit B component in bytes 4..5, and a+-- 16-bit A component in bytes 6..7.+pattern FORMAT_R16G16B16A16_SINT                  = Format 96+-- | 'FORMAT_R16G16B16A16_SFLOAT' specifies a four-component, 64-bit signed+-- floating-point format that has a 16-bit R component in bytes 0..1, a+-- 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5,+-- and a 16-bit A component in bytes 6..7.+pattern FORMAT_R16G16B16A16_SFLOAT                = Format 97+-- | 'FORMAT_R32_UINT' specifies a one-component, 32-bit unsigned integer+-- format that has a single 32-bit R component.+pattern FORMAT_R32_UINT                           = Format 98+-- | 'FORMAT_R32_SINT' specifies a one-component, 32-bit signed integer+-- format that has a single 32-bit R component.+pattern FORMAT_R32_SINT                           = Format 99+-- | 'FORMAT_R32_SFLOAT' specifies a one-component, 32-bit signed+-- floating-point format that has a single 32-bit R component.+pattern FORMAT_R32_SFLOAT                         = Format 100+-- | 'FORMAT_R32G32_UINT' specifies a two-component, 64-bit unsigned integer+-- format that has a 32-bit R component in bytes 0..3, and a 32-bit G+-- component in bytes 4..7.+pattern FORMAT_R32G32_UINT                        = Format 101+-- | 'FORMAT_R32G32_SINT' specifies a two-component, 64-bit signed integer+-- format that has a 32-bit R component in bytes 0..3, and a 32-bit G+-- component in bytes 4..7.+pattern FORMAT_R32G32_SINT                        = Format 102+-- | 'FORMAT_R32G32_SFLOAT' specifies a two-component, 64-bit signed+-- floating-point format that has a 32-bit R component in bytes 0..3, and a+-- 32-bit G component in bytes 4..7.+pattern FORMAT_R32G32_SFLOAT                      = Format 103+-- | 'FORMAT_R32G32B32_UINT' specifies a three-component, 96-bit unsigned+-- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G+-- component in bytes 4..7, and a 32-bit B component in bytes 8..11.+pattern FORMAT_R32G32B32_UINT                     = Format 104+-- | 'FORMAT_R32G32B32_SINT' specifies a three-component, 96-bit signed+-- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G+-- component in bytes 4..7, and a 32-bit B component in bytes 8..11.+pattern FORMAT_R32G32B32_SINT                     = Format 105+-- | 'FORMAT_R32G32B32_SFLOAT' specifies a three-component, 96-bit signed+-- floating-point format that has a 32-bit R component in bytes 0..3, a+-- 32-bit G component in bytes 4..7, and a 32-bit B component in bytes+-- 8..11.+pattern FORMAT_R32G32B32_SFLOAT                   = Format 106+-- | 'FORMAT_R32G32B32A32_UINT' specifies a four-component, 128-bit unsigned+-- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G+-- component in bytes 4..7, a 32-bit B component in bytes 8..11, and a+-- 32-bit A component in bytes 12..15.+pattern FORMAT_R32G32B32A32_UINT                  = Format 107+-- | 'FORMAT_R32G32B32A32_SINT' specifies a four-component, 128-bit signed+-- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G+-- component in bytes 4..7, a 32-bit B component in bytes 8..11, and a+-- 32-bit A component in bytes 12..15.+pattern FORMAT_R32G32B32A32_SINT                  = Format 108+-- | 'FORMAT_R32G32B32A32_SFLOAT' specifies a four-component, 128-bit signed+-- floating-point format that has a 32-bit R component in bytes 0..3, a+-- 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11,+-- and a 32-bit A component in bytes 12..15.+pattern FORMAT_R32G32B32A32_SFLOAT                = Format 109+-- | 'FORMAT_R64_UINT' specifies a one-component, 64-bit unsigned integer+-- format that has a single 64-bit R component.+pattern FORMAT_R64_UINT                           = Format 110+-- | 'FORMAT_R64_SINT' specifies a one-component, 64-bit signed integer+-- format that has a single 64-bit R component.+pattern FORMAT_R64_SINT                           = Format 111+-- | 'FORMAT_R64_SFLOAT' specifies a one-component, 64-bit signed+-- floating-point format that has a single 64-bit R component.+pattern FORMAT_R64_SFLOAT                         = Format 112+-- | 'FORMAT_R64G64_UINT' specifies a two-component, 128-bit unsigned integer+-- format that has a 64-bit R component in bytes 0..7, and a 64-bit G+-- component in bytes 8..15.+pattern FORMAT_R64G64_UINT                        = Format 113+-- | 'FORMAT_R64G64_SINT' specifies a two-component, 128-bit signed integer+-- format that has a 64-bit R component in bytes 0..7, and a 64-bit G+-- component in bytes 8..15.+pattern FORMAT_R64G64_SINT                        = Format 114+-- | 'FORMAT_R64G64_SFLOAT' specifies a two-component, 128-bit signed+-- floating-point format that has a 64-bit R component in bytes 0..7, and a+-- 64-bit G component in bytes 8..15.+pattern FORMAT_R64G64_SFLOAT                      = Format 115+-- | 'FORMAT_R64G64B64_UINT' specifies a three-component, 192-bit unsigned+-- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G+-- component in bytes 8..15, and a 64-bit B component in bytes 16..23.+pattern FORMAT_R64G64B64_UINT                     = Format 116+-- | 'FORMAT_R64G64B64_SINT' specifies a three-component, 192-bit signed+-- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G+-- component in bytes 8..15, and a 64-bit B component in bytes 16..23.+pattern FORMAT_R64G64B64_SINT                     = Format 117+-- | 'FORMAT_R64G64B64_SFLOAT' specifies a three-component, 192-bit signed+-- floating-point format that has a 64-bit R component in bytes 0..7, a+-- 64-bit G component in bytes 8..15, and a 64-bit B component in bytes+-- 16..23.+pattern FORMAT_R64G64B64_SFLOAT                   = Format 118+-- | 'FORMAT_R64G64B64A64_UINT' specifies a four-component, 256-bit unsigned+-- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G+-- component in bytes 8..15, a 64-bit B component in bytes 16..23, and a+-- 64-bit A component in bytes 24..31.+pattern FORMAT_R64G64B64A64_UINT                  = Format 119+-- | 'FORMAT_R64G64B64A64_SINT' specifies a four-component, 256-bit signed+-- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G+-- component in bytes 8..15, a 64-bit B component in bytes 16..23, and a+-- 64-bit A component in bytes 24..31.+pattern FORMAT_R64G64B64A64_SINT                  = Format 120+-- | 'FORMAT_R64G64B64A64_SFLOAT' specifies a four-component, 256-bit signed+-- floating-point format that has a 64-bit R component in bytes 0..7, a+-- 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23,+-- and a 64-bit A component in bytes 24..31.+pattern FORMAT_R64G64B64A64_SFLOAT                = Format 121+-- | 'FORMAT_B10G11R11_UFLOAT_PACK32' specifies a three-component, 32-bit+-- packed unsigned floating-point format that has a 10-bit B component in+-- bits 22..31, an 11-bit G component in bits 11..21, an 11-bit R component+-- in bits 0..10. See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fp10>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fp11>.+pattern FORMAT_B10G11R11_UFLOAT_PACK32            = Format 122+-- | 'FORMAT_E5B9G9R9_UFLOAT_PACK32' specifies a three-component, 32-bit+-- packed unsigned floating-point format that has a 5-bit shared exponent+-- in bits 27..31, a 9-bit B component mantissa in bits 18..26, a 9-bit G+-- component mantissa in bits 9..17, and a 9-bit R component mantissa in+-- bits 0..8.+pattern FORMAT_E5B9G9R9_UFLOAT_PACK32             = Format 123+-- | 'FORMAT_D16_UNORM' specifies a one-component, 16-bit unsigned normalized+-- format that has a single 16-bit depth component.+pattern FORMAT_D16_UNORM                          = Format 124+-- | 'FORMAT_X8_D24_UNORM_PACK32' specifies a two-component, 32-bit format+-- that has 24 unsigned normalized bits in the depth component and,+-- optionally:, 8 bits that are unused.+pattern FORMAT_X8_D24_UNORM_PACK32                = Format 125+-- | 'FORMAT_D32_SFLOAT' specifies a one-component, 32-bit signed+-- floating-point format that has 32-bits in the depth component.+pattern FORMAT_D32_SFLOAT                         = Format 126+-- | 'FORMAT_S8_UINT' specifies a one-component, 8-bit unsigned integer+-- format that has 8-bits in the stencil component.+pattern FORMAT_S8_UINT                            = Format 127+-- | 'FORMAT_D16_UNORM_S8_UINT' specifies a two-component, 24-bit format that+-- has 16 unsigned normalized bits in the depth component and 8 unsigned+-- integer bits in the stencil component.+pattern FORMAT_D16_UNORM_S8_UINT                  = Format 128+-- | 'FORMAT_D24_UNORM_S8_UINT' specifies a two-component, 32-bit packed+-- format that has 8 unsigned integer bits in the stencil component, and 24+-- unsigned normalized bits in the depth component.+pattern FORMAT_D24_UNORM_S8_UINT                  = Format 129+-- | 'FORMAT_D32_SFLOAT_S8_UINT' specifies a two-component format that has 32+-- signed float bits in the depth component and 8 unsigned integer bits in+-- the stencil component. There are optionally: 24-bits that are unused.+pattern FORMAT_D32_SFLOAT_S8_UINT                 = Format 130+-- | 'FORMAT_BC1_RGB_UNORM_BLOCK' specifies a three-component,+-- block-compressed format where each 64-bit compressed texel block encodes+-- a 4×4 rectangle of unsigned normalized RGB texel data. This format has+-- no alpha and is considered opaque.+pattern FORMAT_BC1_RGB_UNORM_BLOCK                = Format 131+-- | 'FORMAT_BC1_RGB_SRGB_BLOCK' specifies a three-component,+-- block-compressed format where each 64-bit compressed texel block encodes+-- a 4×4 rectangle of unsigned normalized RGB texel data with sRGB+-- nonlinear encoding. This format has no alpha and is considered opaque.+pattern FORMAT_BC1_RGB_SRGB_BLOCK                 = Format 132+-- | 'FORMAT_BC1_RGBA_UNORM_BLOCK' specifies a four-component,+-- block-compressed format where each 64-bit compressed texel block encodes+-- a 4×4 rectangle of unsigned normalized RGB texel data, and provides 1+-- bit of alpha.+pattern FORMAT_BC1_RGBA_UNORM_BLOCK               = Format 133+-- | 'FORMAT_BC1_RGBA_SRGB_BLOCK' specifies a four-component,+-- block-compressed format where each 64-bit compressed texel block encodes+-- a 4×4 rectangle of unsigned normalized RGB texel data with sRGB+-- nonlinear encoding, and provides 1 bit of alpha.+pattern FORMAT_BC1_RGBA_SRGB_BLOCK                = Format 134+-- | 'FORMAT_BC2_UNORM_BLOCK' specifies a four-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RGBA texel data with the first 64 bits encoding+-- alpha values followed by 64 bits encoding RGB values.+pattern FORMAT_BC2_UNORM_BLOCK                    = Format 135+-- | 'FORMAT_BC2_SRGB_BLOCK' specifies a four-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RGBA texel data with the first 64 bits encoding+-- alpha values followed by 64 bits encoding RGB values with sRGB nonlinear+-- encoding.+pattern FORMAT_BC2_SRGB_BLOCK                     = Format 136+-- | 'FORMAT_BC3_UNORM_BLOCK' specifies a four-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RGBA texel data with the first 64 bits encoding+-- alpha values followed by 64 bits encoding RGB values.+pattern FORMAT_BC3_UNORM_BLOCK                    = Format 137+-- | 'FORMAT_BC3_SRGB_BLOCK' specifies a four-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RGBA texel data with the first 64 bits encoding+-- alpha values followed by 64 bits encoding RGB values with sRGB nonlinear+-- encoding.+pattern FORMAT_BC3_SRGB_BLOCK                     = Format 138+-- | 'FORMAT_BC4_UNORM_BLOCK' specifies a one-component, block-compressed+-- format where each 64-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized red texel data.+pattern FORMAT_BC4_UNORM_BLOCK                    = Format 139+-- | 'FORMAT_BC4_SNORM_BLOCK' specifies a one-component, block-compressed+-- format where each 64-bit compressed texel block encodes a 4×4 rectangle+-- of signed normalized red texel data.+pattern FORMAT_BC4_SNORM_BLOCK                    = Format 140+-- | 'FORMAT_BC5_UNORM_BLOCK' specifies a two-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RG texel data with the first 64 bits encoding red+-- values followed by 64 bits encoding green values.+pattern FORMAT_BC5_UNORM_BLOCK                    = Format 141+-- | 'FORMAT_BC5_SNORM_BLOCK' specifies a two-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of signed normalized RG texel data with the first 64 bits encoding red+-- values followed by 64 bits encoding green values.+pattern FORMAT_BC5_SNORM_BLOCK                    = Format 142+-- | 'FORMAT_BC6H_UFLOAT_BLOCK' specifies a three-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned floating-point RGB texel data.+pattern FORMAT_BC6H_UFLOAT_BLOCK                  = Format 143+-- | 'FORMAT_BC6H_SFLOAT_BLOCK' specifies a three-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of signed floating-point RGB texel data.+pattern FORMAT_BC6H_SFLOAT_BLOCK                  = Format 144+-- | 'FORMAT_BC7_UNORM_BLOCK' specifies a four-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RGBA texel data.+pattern FORMAT_BC7_UNORM_BLOCK                    = Format 145+-- | 'FORMAT_BC7_SRGB_BLOCK' specifies a four-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RGBA texel data with sRGB nonlinear encoding+-- applied to the RGB components.+pattern FORMAT_BC7_SRGB_BLOCK                     = Format 146+-- | 'FORMAT_ETC2_R8G8B8_UNORM_BLOCK' specifies a three-component, ETC2+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGB texel data. This format has no+-- alpha and is considered opaque.+pattern FORMAT_ETC2_R8G8B8_UNORM_BLOCK            = Format 147+-- | 'FORMAT_ETC2_R8G8B8_SRGB_BLOCK' specifies a three-component, ETC2+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGB texel data with sRGB nonlinear+-- encoding. This format has no alpha and is considered opaque.+pattern FORMAT_ETC2_R8G8B8_SRGB_BLOCK             = Format 148+-- | 'FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK' specifies a four-component, ETC2+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGB texel data, and provides 1 bit of+-- alpha.+pattern FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK          = Format 149+-- | 'FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK' specifies a four-component, ETC2+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGB texel data with sRGB nonlinear+-- encoding, and provides 1 bit of alpha.+pattern FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK           = Format 150+-- | 'FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK' specifies a four-component, ETC2+-- compressed format where each 128-bit compressed texel block encodes a+-- 4×4 rectangle of unsigned normalized RGBA texel data with the first 64+-- bits encoding alpha values followed by 64 bits encoding RGB values.+pattern FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK          = Format 151+-- | 'FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK' specifies a four-component, ETC2+-- compressed format where each 128-bit compressed texel block encodes a+-- 4×4 rectangle of unsigned normalized RGBA texel data with the first 64+-- bits encoding alpha values followed by 64 bits encoding RGB values with+-- sRGB nonlinear encoding applied.+pattern FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK           = Format 152+-- | 'FORMAT_EAC_R11_UNORM_BLOCK' specifies a one-component, ETC2 compressed+-- format where each 64-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized red texel data.+pattern FORMAT_EAC_R11_UNORM_BLOCK                = Format 153+-- | 'FORMAT_EAC_R11_SNORM_BLOCK' specifies a one-component, ETC2 compressed+-- format where each 64-bit compressed texel block encodes a 4×4 rectangle+-- of signed normalized red texel data.+pattern FORMAT_EAC_R11_SNORM_BLOCK                = Format 154+-- | 'FORMAT_EAC_R11G11_UNORM_BLOCK' specifies a two-component, ETC2+-- compressed format where each 128-bit compressed texel block encodes a+-- 4×4 rectangle of unsigned normalized RG texel data with the first 64+-- bits encoding red values followed by 64 bits encoding green values.+pattern FORMAT_EAC_R11G11_UNORM_BLOCK             = Format 155+-- | 'FORMAT_EAC_R11G11_SNORM_BLOCK' specifies a two-component, ETC2+-- compressed format where each 128-bit compressed texel block encodes a+-- 4×4 rectangle of signed normalized RG texel data with the first 64 bits+-- encoding red values followed by 64 bits encoding green values.+pattern FORMAT_EAC_R11G11_SNORM_BLOCK             = Format 156+-- | 'FORMAT_ASTC_4x4_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 4×4 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_4x4_UNORM_BLOCK               = Format 157+-- | 'FORMAT_ASTC_4x4_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RGBA texel data with sRGB nonlinear encoding+-- applied to the RGB components.+pattern FORMAT_ASTC_4x4_SRGB_BLOCK                = Format 158+-- | 'FORMAT_ASTC_5x4_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 5×4 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_5x4_UNORM_BLOCK               = Format 159+-- | 'FORMAT_ASTC_5x4_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes a 5×4 rectangle+-- of unsigned normalized RGBA texel data with sRGB nonlinear encoding+-- applied to the RGB components.+pattern FORMAT_ASTC_5x4_SRGB_BLOCK                = Format 160+-- | 'FORMAT_ASTC_5x5_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 5×5 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_5x5_UNORM_BLOCK               = Format 161+-- | 'FORMAT_ASTC_5x5_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes a 5×5 rectangle+-- of unsigned normalized RGBA texel data with sRGB nonlinear encoding+-- applied to the RGB components.+pattern FORMAT_ASTC_5x5_SRGB_BLOCK                = Format 162+-- | 'FORMAT_ASTC_6x5_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 6×5 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_6x5_UNORM_BLOCK               = Format 163+-- | 'FORMAT_ASTC_6x5_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes a 6×5 rectangle+-- of unsigned normalized RGBA texel data with sRGB nonlinear encoding+-- applied to the RGB components.+pattern FORMAT_ASTC_6x5_SRGB_BLOCK                = Format 164+-- | 'FORMAT_ASTC_6x6_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 6×6 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_6x6_UNORM_BLOCK               = Format 165+-- | 'FORMAT_ASTC_6x6_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes a 6×6 rectangle+-- of unsigned normalized RGBA texel data with sRGB nonlinear encoding+-- applied to the RGB components.+pattern FORMAT_ASTC_6x6_SRGB_BLOCK                = Format 166+-- | 'FORMAT_ASTC_8x5_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes an+-- 8×5 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_8x5_UNORM_BLOCK               = Format 167+-- | 'FORMAT_ASTC_8x5_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes an 8×5+-- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear+-- encoding applied to the RGB components.+pattern FORMAT_ASTC_8x5_SRGB_BLOCK                = Format 168+-- | 'FORMAT_ASTC_8x6_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes an+-- 8×6 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_8x6_UNORM_BLOCK               = Format 169+-- | 'FORMAT_ASTC_8x6_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes an 8×6+-- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear+-- encoding applied to the RGB components.+pattern FORMAT_ASTC_8x6_SRGB_BLOCK                = Format 170+-- | 'FORMAT_ASTC_8x8_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes an+-- 8×8 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_8x8_UNORM_BLOCK               = Format 171+-- | 'FORMAT_ASTC_8x8_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes an 8×8+-- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear+-- encoding applied to the RGB components.+pattern FORMAT_ASTC_8x8_SRGB_BLOCK                = Format 172+-- | 'FORMAT_ASTC_10x5_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×5 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_10x5_UNORM_BLOCK              = Format 173+-- | 'FORMAT_ASTC_10x5_SRGB_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×5 rectangle of unsigned normalized RGBA texel data with sRGB+-- nonlinear encoding applied to the RGB components.+pattern FORMAT_ASTC_10x5_SRGB_BLOCK               = Format 174+-- | 'FORMAT_ASTC_10x6_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×6 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_10x6_UNORM_BLOCK              = Format 175+-- | 'FORMAT_ASTC_10x6_SRGB_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×6 rectangle of unsigned normalized RGBA texel data with sRGB+-- nonlinear encoding applied to the RGB components.+pattern FORMAT_ASTC_10x6_SRGB_BLOCK               = Format 176+-- | 'FORMAT_ASTC_10x8_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×8 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_10x8_UNORM_BLOCK              = Format 177+-- | 'FORMAT_ASTC_10x8_SRGB_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×8 rectangle of unsigned normalized RGBA texel data with sRGB+-- nonlinear encoding applied to the RGB components.+pattern FORMAT_ASTC_10x8_SRGB_BLOCK               = Format 178+-- | 'FORMAT_ASTC_10x10_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×10 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_10x10_UNORM_BLOCK             = Format 179+-- | 'FORMAT_ASTC_10x10_SRGB_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×10 rectangle of unsigned normalized RGBA texel data with sRGB+-- nonlinear encoding applied to the RGB components.+pattern FORMAT_ASTC_10x10_SRGB_BLOCK              = Format 180+-- | 'FORMAT_ASTC_12x10_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 12×10 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_12x10_UNORM_BLOCK             = Format 181+-- | 'FORMAT_ASTC_12x10_SRGB_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 12×10 rectangle of unsigned normalized RGBA texel data with sRGB+-- nonlinear encoding applied to the RGB components.+pattern FORMAT_ASTC_12x10_SRGB_BLOCK              = Format 182+-- | 'FORMAT_ASTC_12x12_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 12×12 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_12x12_UNORM_BLOCK             = Format 183+-- | 'FORMAT_ASTC_12x12_SRGB_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 12×12 rectangle of unsigned normalized RGBA texel data with sRGB+-- nonlinear encoding applied to the RGB components.+pattern FORMAT_ASTC_12x12_SRGB_BLOCK              = Format 184+-- | 'FORMAT_A4B4G4R4_UNORM_PACK16_EXT' specifies a four-component, 16-bit+-- packed unsigned normalized format that has a 4-bit A component in bits+-- 12..15, a 4-bit B component in bits 8..11, a 4-bit G component in bits+-- 4..7, and a 4-bit R component in bits 0..3.+pattern FORMAT_A4B4G4R4_UNORM_PACK16_EXT          = Format 1000340001+-- | 'FORMAT_A4R4G4B4_UNORM_PACK16_EXT' specifies a four-component, 16-bit+-- packed unsigned normalized format that has a 4-bit A component in bits+-- 12..15, a 4-bit R component in bits 8..11, a 4-bit G component in bits+-- 4..7, and a 4-bit B component in bits 0..3.+pattern FORMAT_A4R4G4B4_UNORM_PACK16_EXT          = Format 1000340000+-- | 'FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 12×12 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT        = Format 1000066013+-- | 'FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 12×10 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT        = Format 1000066012+-- | 'FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×10 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT        = Format 1000066011+-- | 'FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×8 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT         = Format 1000066010+-- | 'FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×6 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT         = Format 1000066009+-- | 'FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×5 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT         = Format 1000066008+-- | 'FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 8×8 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT          = Format 1000066007+-- | 'FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 8×6 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT          = Format 1000066006+-- | 'FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 8×5 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT          = Format 1000066005+-- | 'FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 6×6 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT          = Format 1000066004+-- | 'FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 6×5 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT          = Format 1000066003+-- | 'FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 5×5 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT          = Format 1000066002+-- | 'FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 5×4 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT          = Format 1000066001+-- | 'FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 4×4 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT          = Format 1000066000+-- | 'FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear+-- encoding applied to the RGB components.+pattern FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG         = Format 1000054007+-- | 'FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes an+-- 8×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear+-- encoding applied to the RGB components.+pattern FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG         = Format 1000054006+-- | 'FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear+-- encoding applied to the RGB components.+pattern FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG         = Format 1000054005+-- | 'FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes an+-- 8×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear+-- encoding applied to the RGB components.+pattern FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG         = Format 1000054004+-- | 'FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG        = Format 1000054003+-- | 'FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes an+-- 8×4 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG        = Format 1000054002+-- | 'FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG        = Format 1000054001+-- | 'FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes an+-- 8×4 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG        = Format 1000054000+-- | 'FORMAT_G16_B16_R16_3PLANE_444_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word+-- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a+-- 16-bit R component in each 16-bit word of plane 2. Each plane has the+-- same dimensions and each R, G and B component contributes to a single+-- texel. The location of each plane when this image is in linear layout+-- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',+-- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the B plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for+-- the R plane.+pattern FORMAT_G16_B16_R16_3PLANE_444_UNORM       = Format 1000156033+-- | 'FORMAT_G16_B16R16_2PLANE_422_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word+-- of plane 0, and a two-component, 32-bit BR plane 1 consisting of a+-- 16-bit B component in the word in bytes 0..1, and a 16-bit R component+-- in the word in bytes 2..3. The horizontal dimensions of the BR plane is+-- halved relative to the image dimensions, and each R and B value is+-- shared with the G components for which+-- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =+-- i_R\). The location of each plane when this image is in linear layout+-- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',+-- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the BR plane. Images in this format /must/ be defined with a width that+-- is a multiple of two.+pattern FORMAT_G16_B16R16_2PLANE_422_UNORM        = Format 1000156032+-- | 'FORMAT_G16_B16_R16_3PLANE_422_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word+-- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a+-- 16-bit R component in each 16-bit word of plane 2. The horizontal+-- dimension of the R and B plane is halved relative to the image+-- dimensions, and each R and B value is shared with the G components for+-- which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =+-- i_R\). The location of each plane when this image is in linear layout+-- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',+-- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the B plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for+-- the R plane. Images in this format /must/ be defined with a width that+-- is a multiple of two.+pattern FORMAT_G16_B16_R16_3PLANE_422_UNORM       = Format 1000156031+-- | 'FORMAT_G16_B16R16_2PLANE_420_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word+-- of plane 0, and a two-component, 32-bit BR plane 1 consisting of a+-- 16-bit B component in the word in bytes 0..1, and a 16-bit R component+-- in the word in bytes 2..3. The horizontal and vertical dimensions of the+-- BR plane is halved relative to the image dimensions, and each R and B+-- value is shared with the G components for which+-- \(\left\lfloor i_G \times 0.5+-- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5+-- \right\rfloor = j_B = j_R\). The location of each plane when this image+-- is in linear layout can be determined via+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for+-- the G plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the BR plane. Images in this format /must/ be defined with a width and+-- height that is a multiple of two.+pattern FORMAT_G16_B16R16_2PLANE_420_UNORM        = Format 1000156030+-- | 'FORMAT_G16_B16_R16_3PLANE_420_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word+-- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a+-- 16-bit R component in each 16-bit word of plane 2. The horizontal and+-- vertical dimensions of the R and B planes are halved relative to the+-- image dimensions, and each R and B component is shared with the G+-- components for which \(\left\lfloor i_G \times 0.5+-- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5+-- \right\rfloor = j_B = j_R\). The location of each plane when this image+-- is in linear layout can be determined via+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for+-- the G plane,+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the B plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for+-- the R plane. Images in this format /must/ be defined with a width and+-- height that is a multiple of two.+pattern FORMAT_G16_B16_R16_3PLANE_420_UNORM       = Format 1000156029+-- | 'FORMAT_B16G16R16G16_422_UNORM' specifies a four-component, 64-bit+-- format containing a pair of G components, an R component, and a B+-- component, collectively encoding a 2×1 rectangle of unsigned normalized+-- RGB texel data. One G value is present at each /i/ coordinate, with the+-- B and R values shared across both G values and thus recorded at half the+-- horizontal resolution of the image. This format has a 16-bit B component+-- in the word in bytes 0..1, a 16-bit G component for the even /i/+-- coordinate in the word in bytes 2..3, a 16-bit R component in the word+-- in bytes 4..5, and a 16-bit G component for the odd /i/ coordinate in+-- the word in bytes 6..7. Images in this format /must/ be defined with a+-- width that is a multiple of two. For the purposes of the constraints on+-- copy extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_B16G16R16G16_422_UNORM             = Format 1000156028+-- | 'FORMAT_G16B16G16R16_422_UNORM' specifies a four-component, 64-bit+-- format containing a pair of G components, an R component, and a B+-- component, collectively encoding a 2×1 rectangle of unsigned normalized+-- RGB texel data. One G value is present at each /i/ coordinate, with the+-- B and R values shared across both G values and thus recorded at half the+-- horizontal resolution of the image. This format has a 16-bit G component+-- for the even /i/ coordinate in the word in bytes 0..1, a 16-bit B+-- component in the word in bytes 2..3, a 16-bit G component for the odd+-- /i/ coordinate in the word in bytes 4..5, and a 16-bit R component in+-- the word in bytes 6..7. Images in this format /must/ be defined with a+-- width that is a multiple of two. For the purposes of the constraints on+-- copy extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_G16B16G16R16_422_UNORM             = Format 1000156027+-- | 'FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16' specifies an+-- unsigned normalized /multi-planar format/ that has a 12-bit G component+-- in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component+-- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R+-- component in the top 12 bits of each 16-bit word of plane 2, with the+-- bottom 4 bits of each word unused. Each plane has the same dimensions+-- and each R, G and B component contributes to a single texel. The+-- location of each plane when this image is in linear layout can be+-- determined via 'Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for+-- the G plane,+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the B plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for+-- the R plane.+pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = Format 1000156026+-- | 'FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16' specifies an unsigned+-- normalized /multi-planar format/ that has a 12-bit G component in the+-- top 12 bits of each 16-bit word of plane 0, and a two-component, 32-bit+-- BR plane 1 consisting of a 12-bit B component in the top 12 bits of the+-- word in bytes 0..1, and a 12-bit R component in the top 12 bits of the+-- word in bytes 2..3, the bottom 4 bits of each word unused. The+-- horizontal dimensions of the BR plane is halved relative to the image+-- dimensions, and each R and B value is shared with the G components for+-- which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =+-- i_R\). The location of each plane when this image is in linear layout+-- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',+-- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the BR plane. Images in this format /must/ be defined with a width that+-- is a multiple of two.+pattern FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = Format 1000156025+-- | 'FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16' specifies an+-- unsigned normalized /multi-planar format/ that has a 12-bit G component+-- in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component+-- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R+-- component in the top 12 bits of each 16-bit word of plane 2, with the+-- bottom 4 bits of each word unused. The horizontal dimension of the R and+-- B plane is halved relative to the image dimensions, and each R and B+-- value is shared with the G components for which+-- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =+-- i_R\). The location of each plane when this image is in linear layout+-- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',+-- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the B plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for+-- the R plane. Images in this format /must/ be defined with a width that+-- is a multiple of two.+pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = Format 1000156024+-- | 'FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16' specifies an unsigned+-- normalized /multi-planar format/ that has a 12-bit G component in the+-- top 12 bits of each 16-bit word of plane 0, and a two-component, 32-bit+-- BR plane 1 consisting of a 12-bit B component in the top 12 bits of the+-- word in bytes 0..1, and a 12-bit R component in the top 12 bits of the+-- word in bytes 2..3, the bottom 4 bits of each word unused. The+-- horizontal and vertical dimensions of the BR plane is halved relative to+-- the image dimensions, and each R and B value is shared with the G+-- components for which \(\left\lfloor i_G \times 0.5+-- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5+-- \right\rfloor = j_B = j_R\). The location of each plane when this image+-- is in linear layout can be determined via+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for+-- the G plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the BR plane. Images in this format /must/ be defined with a width and+-- height that is a multiple of two.+pattern FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = Format 1000156023+-- | 'FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16' specifies an+-- unsigned normalized /multi-planar format/ that has a 12-bit G component+-- in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component+-- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R+-- component in the top 12 bits of each 16-bit word of plane 2, with the+-- bottom 4 bits of each word unused. The horizontal and vertical+-- dimensions of the R and B planes are halved relative to the image+-- dimensions, and each R and B component is shared with the G components+-- for which \(\left\lfloor i_G \times 0.5+-- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5+-- \right\rfloor = j_B = j_R\). The location of each plane when this image+-- is in linear layout can be determined via+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for+-- the G plane,+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the B plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for+-- the R plane. Images in this format /must/ be defined with a width and+-- height that is a multiple of two.+pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = Format 1000156022+-- | 'FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16' specifies a+-- four-component, 64-bit format containing a pair of G components, an R+-- component, and a B component, collectively encoding a 2×1 rectangle of+-- unsigned normalized RGB texel data. One G value is present at each /i/+-- coordinate, with the B and R values shared across both G values and thus+-- recorded at half the horizontal resolution of the image. This format has+-- a 12-bit B component in the top 12 bits of the word in bytes 0..1, a+-- 12-bit G component for the even /i/ coordinate in the top 12 bits of the+-- word in bytes 2..3, a 12-bit R component in the top 12 bits of the word+-- in bytes 4..5, and a 12-bit G component for the odd /i/ coordinate in+-- the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of+-- each word unused. Images in this format /must/ be defined with a width+-- that is a multiple of two. For the purposes of the constraints on copy+-- extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = Format 1000156021+-- | 'FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16' specifies a+-- four-component, 64-bit format containing a pair of G components, an R+-- component, and a B component, collectively encoding a 2×1 rectangle of+-- unsigned normalized RGB texel data. One G value is present at each /i/+-- coordinate, with the B and R values shared across both G values and thus+-- recorded at half the horizontal resolution of the image. This format has+-- a 12-bit G component for the even /i/ coordinate in the top 12 bits of+-- the word in bytes 0..1, a 12-bit B component in the top 12 bits of the+-- word in bytes 2..3, a 12-bit G component for the odd /i/ coordinate in+-- the top 12 bits of the word in bytes 4..5, and a 12-bit R component in+-- the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of+-- each word unused. Images in this format /must/ be defined with a width+-- that is a multiple of two. For the purposes of the constraints on copy+-- extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = Format 1000156020+-- | 'FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16' specifies a four-component,+-- 64-bit unsigned normalized format that has a 12-bit R component in the+-- top 12 bits of the word in bytes 0..1, a 12-bit G component in the top+-- 12 bits of the word in bytes 2..3, a 12-bit B component in the top 12+-- bits of the word in bytes 4..5, and a 12-bit A component in the top 12+-- bits of the word in bytes 6..7, with the bottom 4 bits of each word+-- unused.+pattern FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = Format 1000156019+-- | 'FORMAT_R12X4G12X4_UNORM_2PACK16' specifies a two-component, 32-bit+-- unsigned normalized format that has a 12-bit R component in the top 12+-- bits of the word in bytes 0..1, and a 12-bit G component in the top 12+-- bits of the word in bytes 2..3, with the bottom 4 bits of each word+-- unused.+pattern FORMAT_R12X4G12X4_UNORM_2PACK16           = Format 1000156018+-- | 'FORMAT_R12X4_UNORM_PACK16' specifies a one-component, 16-bit unsigned+-- normalized format that has a single 12-bit R component in the top 12+-- bits of a 16-bit word, with the bottom 4 bits unused.+pattern FORMAT_R12X4_UNORM_PACK16                 = Format 1000156017+-- | 'FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16' specifies an+-- unsigned normalized /multi-planar format/ that has a 10-bit G component+-- in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component+-- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R+-- component in the top 10 bits of each 16-bit word of plane 2, with the+-- bottom 6 bits of each word unused. Each plane has the same dimensions+-- and each R, G and B component contributes to a single texel. The+-- location of each plane when this image is in linear layout can be+-- determined via 'Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for+-- the G plane,+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the B plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for+-- the R plane.+pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = Format 1000156016+-- | 'FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16' specifies an unsigned+-- normalized /multi-planar format/ that has a 10-bit G component in the+-- top 10 bits of each 16-bit word of plane 0, and a two-component, 32-bit+-- BR plane 1 consisting of a 10-bit B component in the top 10 bits of the+-- word in bytes 0..1, and a 10-bit R component in the top 10 bits of the+-- word in bytes 2..3, the bottom 6 bits of each word unused. The+-- horizontal dimensions of the BR plane is halved relative to the image+-- dimensions, and each R and B value is shared with the G components for+-- which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =+-- i_R\). The location of each plane when this image is in linear layout+-- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',+-- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the BR plane. Images in this format /must/ be defined with a width that+-- is a multiple of two.+pattern FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = Format 1000156015+-- | 'FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16' specifies an+-- unsigned normalized /multi-planar format/ that has a 10-bit G component+-- in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component+-- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R+-- component in the top 10 bits of each 16-bit word of plane 2, with the+-- bottom 6 bits of each word unused. The horizontal dimension of the R and+-- B plane is halved relative to the image dimensions, and each R and B+-- value is shared with the G components for which+-- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =+-- i_R\). The location of each plane when this image is in linear layout+-- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',+-- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the B plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for+-- the R plane. Images in this format /must/ be defined with a width that+-- is a multiple of two.+pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = Format 1000156014+-- | 'FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16' specifies an unsigned+-- normalized /multi-planar format/ that has a 10-bit G component in the+-- top 10 bits of each 16-bit word of plane 0, and a two-component, 32-bit+-- BR plane 1 consisting of a 10-bit B component in the top 10 bits of the+-- word in bytes 0..1, and a 10-bit R component in the top 10 bits of the+-- word in bytes 2..3, the bottom 6 bits of each word unused. The+-- horizontal and vertical dimensions of the BR plane is halved relative to+-- the image dimensions, and each R and B value is shared with the G+-- components for which \(\left\lfloor i_G \times 0.5+-- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5+-- \right\rfloor = j_B = j_R\). The location of each plane when this image+-- is in linear layout can be determined via+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for+-- the G plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the BR plane. Images in this format /must/ be defined with a width and+-- height that is a multiple of two.+pattern FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = Format 1000156013+-- | 'FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16' specifies an+-- unsigned normalized /multi-planar format/ that has a 10-bit G component+-- in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component+-- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R+-- component in the top 10 bits of each 16-bit word of plane 2, with the+-- bottom 6 bits of each word unused. The horizontal and vertical+-- dimensions of the R and B planes are halved relative to the image+-- dimensions, and each R and B component is shared with the G components+-- for which \(\left\lfloor i_G \times 0.5+-- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5+-- \right\rfloor = j_B = j_R\). The location of each plane when this image+-- is in linear layout can be determined via+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for+-- the G plane,+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the B plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for+-- the R plane. Images in this format /must/ be defined with a width and+-- height that is a multiple of two.+pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = Format 1000156012+-- | 'FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16' specifies a+-- four-component, 64-bit format containing a pair of G components, an R+-- component, and a B component, collectively encoding a 2×1 rectangle of+-- unsigned normalized RGB texel data. One G value is present at each /i/+-- coordinate, with the B and R values shared across both G values and thus+-- recorded at half the horizontal resolution of the image. This format has+-- a 10-bit B component in the top 10 bits of the word in bytes 0..1, a+-- 10-bit G component for the even /i/ coordinate in the top 10 bits of the+-- word in bytes 2..3, a 10-bit R component in the top 10 bits of the word+-- in bytes 4..5, and a 10-bit G component for the odd /i/ coordinate in+-- the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of+-- each word unused. Images in this format /must/ be defined with a width+-- that is a multiple of two. For the purposes of the constraints on copy+-- extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = Format 1000156011+-- | 'FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16' specifies a+-- four-component, 64-bit format containing a pair of G components, an R+-- component, and a B component, collectively encoding a 2×1 rectangle of+-- unsigned normalized RGB texel data. One G value is present at each /i/+-- coordinate, with the B and R values shared across both G values and thus+-- recorded at half the horizontal resolution of the image. This format has+-- a 10-bit G component for the even /i/ coordinate in the top 10 bits of+-- the word in bytes 0..1, a 10-bit B component in the top 10 bits of the+-- word in bytes 2..3, a 10-bit G component for the odd /i/ coordinate in+-- the top 10 bits of the word in bytes 4..5, and a 10-bit R component in+-- the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of+-- each word unused. Images in this format /must/ be defined with a width+-- that is a multiple of two. For the purposes of the constraints on copy+-- extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = Format 1000156010+-- | 'FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16' specifies a four-component,+-- 64-bit unsigned normalized format that has a 10-bit R component in the+-- top 10 bits of the word in bytes 0..1, a 10-bit G component in the top+-- 10 bits of the word in bytes 2..3, a 10-bit B component in the top 10+-- bits of the word in bytes 4..5, and a 10-bit A component in the top 10+-- bits of the word in bytes 6..7, with the bottom 6 bits of each word+-- unused.+pattern FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = Format 1000156009+-- | 'FORMAT_R10X6G10X6_UNORM_2PACK16' specifies a two-component, 32-bit+-- unsigned normalized format that has a 10-bit R component in the top 10+-- bits of the word in bytes 0..1, and a 10-bit G component in the top 10+-- bits of the word in bytes 2..3, with the bottom 6 bits of each word+-- unused.+pattern FORMAT_R10X6G10X6_UNORM_2PACK16           = Format 1000156008+-- | 'FORMAT_R10X6_UNORM_PACK16' specifies a one-component, 16-bit unsigned+-- normalized format that has a single 10-bit R component in the top 10+-- bits of a 16-bit word, with the bottom 6 bits unused.+pattern FORMAT_R10X6_UNORM_PACK16                 = Format 1000156007+-- | 'FORMAT_G8_B8_R8_3PLANE_444_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit+-- B component in plane 1, and an 8-bit R component in plane 2. Each plane+-- has the same dimensions and each R, G and B component contributes to a+-- single texel. The location of each plane when this image is in linear+-- layout can be determined via+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for+-- the G plane,+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the B plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for+-- the R plane.+pattern FORMAT_G8_B8_R8_3PLANE_444_UNORM          = Format 1000156006+-- | 'FORMAT_G8_B8R8_2PLANE_422_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has an 8-bit G component in plane 0, and a+-- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in+-- byte 0 and an 8-bit R component in byte 1. The horizontal dimensions of+-- the BR plane is halved relative to the image dimensions, and each R and+-- B value is shared with the G components for which+-- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =+-- i_R\). The location of each plane when this image is in linear layout+-- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',+-- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the BR plane. Images in this format /must/ be defined with a width that+-- is a multiple of two.+pattern FORMAT_G8_B8R8_2PLANE_422_UNORM           = Format 1000156005+-- | 'FORMAT_G8_B8_R8_3PLANE_422_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit+-- B component in plane 1, and an 8-bit R component in plane 2. The+-- horizontal dimension of the R and B plane is halved relative to the+-- image dimensions, and each R and B value is shared with the G components+-- for which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =+-- i_R\). The location of each plane when this image is in linear layout+-- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',+-- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the B plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for+-- the R plane. Images in this format /must/ be defined with a width that+-- is a multiple of two.+pattern FORMAT_G8_B8_R8_3PLANE_422_UNORM          = Format 1000156004+-- | 'FORMAT_G8_B8R8_2PLANE_420_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has an 8-bit G component in plane 0, and a+-- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in+-- byte 0 and an 8-bit R component in byte 1. The horizontal and vertical+-- dimensions of the BR plane is halved relative to the image dimensions,+-- and each R and B value is shared with the G components for which+-- \(\left\lfloor i_G \times 0.5+-- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5+-- \right\rfloor = j_B = j_R\). The location of each plane when this image+-- is in linear layout can be determined via+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for+-- the G plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the BR plane. Images in this format /must/ be defined with a width and+-- height that is a multiple of two.+pattern FORMAT_G8_B8R8_2PLANE_420_UNORM           = Format 1000156003+-- | 'FORMAT_G8_B8_R8_3PLANE_420_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit+-- B component in plane 1, and an 8-bit R component in plane 2. The+-- horizontal and vertical dimensions of the R and B planes are halved+-- relative to the image dimensions, and each R and B component is shared+-- with the G components for which \(\left\lfloor i_G \times 0.5+-- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5+-- \right\rfloor = j_B = j_R\). The location of each plane when this image+-- is in linear layout can be determined via+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for+-- the G plane,+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for+-- the B plane, and+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT' for+-- the R plane. Images in this format /must/ be defined with a width and+-- height that is a multiple of two.+pattern FORMAT_G8_B8_R8_3PLANE_420_UNORM          = Format 1000156002+-- | 'FORMAT_B8G8R8G8_422_UNORM' specifies a four-component, 32-bit format+-- containing a pair of G components, an R component, and a B component,+-- collectively encoding a 2×1 rectangle of unsigned normalized RGB texel+-- data. One G value is present at each /i/ coordinate, with the B and R+-- values shared across both G values and thus recorded at half the+-- horizontal resolution of the image. This format has an 8-bit B component+-- in byte 0, an 8-bit G component for the even /i/ coordinate in byte 1,+-- an 8-bit R component in byte 2, and an 8-bit G component for the odd /i/+-- coordinate in byte 3. Images in this format /must/ be defined with a+-- width that is a multiple of two. For the purposes of the constraints on+-- copy extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_B8G8R8G8_422_UNORM                 = Format 1000156001+-- | 'FORMAT_G8B8G8R8_422_UNORM' specifies a four-component, 32-bit format+-- containing a pair of G components, an R component, and a B component,+-- collectively encoding a 2×1 rectangle of unsigned normalized RGB texel+-- data. One G value is present at each /i/ coordinate, with the B and R+-- values shared across both G values and thus recorded at half the+-- horizontal resolution of the image. This format has an 8-bit G component+-- for the even /i/ coordinate in byte 0, an 8-bit B component in byte 1,+-- an 8-bit G component for the odd /i/ coordinate in byte 2, and an 8-bit+-- R component in byte 3. Images in this format /must/ be defined with a+-- width that is a multiple of two. For the purposes of the constraints on+-- copy extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_G8B8G8R8_422_UNORM                 = Format 1000156000+{-# complete FORMAT_UNDEFINED,+             FORMAT_R4G4_UNORM_PACK8,+             FORMAT_R4G4B4A4_UNORM_PACK16,+             FORMAT_B4G4R4A4_UNORM_PACK16,+             FORMAT_R5G6B5_UNORM_PACK16,+             FORMAT_B5G6R5_UNORM_PACK16,+             FORMAT_R5G5B5A1_UNORM_PACK16,+             FORMAT_B5G5R5A1_UNORM_PACK16,+             FORMAT_A1R5G5B5_UNORM_PACK16,+             FORMAT_R8_UNORM,+             FORMAT_R8_SNORM,+             FORMAT_R8_USCALED,+             FORMAT_R8_SSCALED,+             FORMAT_R8_UINT,+             FORMAT_R8_SINT,+             FORMAT_R8_SRGB,+             FORMAT_R8G8_UNORM,+             FORMAT_R8G8_SNORM,+             FORMAT_R8G8_USCALED,+             FORMAT_R8G8_SSCALED,+             FORMAT_R8G8_UINT,+             FORMAT_R8G8_SINT,+             FORMAT_R8G8_SRGB,+             FORMAT_R8G8B8_UNORM,+             FORMAT_R8G8B8_SNORM,+             FORMAT_R8G8B8_USCALED,+             FORMAT_R8G8B8_SSCALED,+             FORMAT_R8G8B8_UINT,+             FORMAT_R8G8B8_SINT,+             FORMAT_R8G8B8_SRGB,+             FORMAT_B8G8R8_UNORM,+             FORMAT_B8G8R8_SNORM,+             FORMAT_B8G8R8_USCALED,+             FORMAT_B8G8R8_SSCALED,+             FORMAT_B8G8R8_UINT,+             FORMAT_B8G8R8_SINT,+             FORMAT_B8G8R8_SRGB,+             FORMAT_R8G8B8A8_UNORM,+             FORMAT_R8G8B8A8_SNORM,+             FORMAT_R8G8B8A8_USCALED,+             FORMAT_R8G8B8A8_SSCALED,+             FORMAT_R8G8B8A8_UINT,+             FORMAT_R8G8B8A8_SINT,+             FORMAT_R8G8B8A8_SRGB,+             FORMAT_B8G8R8A8_UNORM,+             FORMAT_B8G8R8A8_SNORM,+             FORMAT_B8G8R8A8_USCALED,+             FORMAT_B8G8R8A8_SSCALED,+             FORMAT_B8G8R8A8_UINT,+             FORMAT_B8G8R8A8_SINT,+             FORMAT_B8G8R8A8_SRGB,+             FORMAT_A8B8G8R8_UNORM_PACK32,+             FORMAT_A8B8G8R8_SNORM_PACK32,+             FORMAT_A8B8G8R8_USCALED_PACK32,+             FORMAT_A8B8G8R8_SSCALED_PACK32,+             FORMAT_A8B8G8R8_UINT_PACK32,+             FORMAT_A8B8G8R8_SINT_PACK32,+             FORMAT_A8B8G8R8_SRGB_PACK32,+             FORMAT_A2R10G10B10_UNORM_PACK32,+             FORMAT_A2R10G10B10_SNORM_PACK32,+             FORMAT_A2R10G10B10_USCALED_PACK32,+             FORMAT_A2R10G10B10_SSCALED_PACK32,+             FORMAT_A2R10G10B10_UINT_PACK32,+             FORMAT_A2R10G10B10_SINT_PACK32,+             FORMAT_A2B10G10R10_UNORM_PACK32,+             FORMAT_A2B10G10R10_SNORM_PACK32,+             FORMAT_A2B10G10R10_USCALED_PACK32,+             FORMAT_A2B10G10R10_SSCALED_PACK32,+             FORMAT_A2B10G10R10_UINT_PACK32,+             FORMAT_A2B10G10R10_SINT_PACK32,+             FORMAT_R16_UNORM,+             FORMAT_R16_SNORM,+             FORMAT_R16_USCALED,+             FORMAT_R16_SSCALED,+             FORMAT_R16_UINT,+             FORMAT_R16_SINT,+             FORMAT_R16_SFLOAT,+             FORMAT_R16G16_UNORM,+             FORMAT_R16G16_SNORM,+             FORMAT_R16G16_USCALED,+             FORMAT_R16G16_SSCALED,+             FORMAT_R16G16_UINT,+             FORMAT_R16G16_SINT,+             FORMAT_R16G16_SFLOAT,+             FORMAT_R16G16B16_UNORM,+             FORMAT_R16G16B16_SNORM,+             FORMAT_R16G16B16_USCALED,+             FORMAT_R16G16B16_SSCALED,+             FORMAT_R16G16B16_UINT,+             FORMAT_R16G16B16_SINT,+             FORMAT_R16G16B16_SFLOAT,+             FORMAT_R16G16B16A16_UNORM,+             FORMAT_R16G16B16A16_SNORM,+             FORMAT_R16G16B16A16_USCALED,+             FORMAT_R16G16B16A16_SSCALED,+             FORMAT_R16G16B16A16_UINT,+             FORMAT_R16G16B16A16_SINT,+             FORMAT_R16G16B16A16_SFLOAT,+             FORMAT_R32_UINT,+             FORMAT_R32_SINT,+             FORMAT_R32_SFLOAT,+             FORMAT_R32G32_UINT,+             FORMAT_R32G32_SINT,+             FORMAT_R32G32_SFLOAT,+             FORMAT_R32G32B32_UINT,+             FORMAT_R32G32B32_SINT,+             FORMAT_R32G32B32_SFLOAT,+             FORMAT_R32G32B32A32_UINT,+             FORMAT_R32G32B32A32_SINT,+             FORMAT_R32G32B32A32_SFLOAT,+             FORMAT_R64_UINT,+             FORMAT_R64_SINT,+             FORMAT_R64_SFLOAT,+             FORMAT_R64G64_UINT,+             FORMAT_R64G64_SINT,+             FORMAT_R64G64_SFLOAT,+             FORMAT_R64G64B64_UINT,+             FORMAT_R64G64B64_SINT,+             FORMAT_R64G64B64_SFLOAT,+             FORMAT_R64G64B64A64_UINT,+             FORMAT_R64G64B64A64_SINT,+             FORMAT_R64G64B64A64_SFLOAT,+             FORMAT_B10G11R11_UFLOAT_PACK32,+             FORMAT_E5B9G9R9_UFLOAT_PACK32,+             FORMAT_D16_UNORM,+             FORMAT_X8_D24_UNORM_PACK32,+             FORMAT_D32_SFLOAT,+             FORMAT_S8_UINT,+             FORMAT_D16_UNORM_S8_UINT,+             FORMAT_D24_UNORM_S8_UINT,+             FORMAT_D32_SFLOAT_S8_UINT,+             FORMAT_BC1_RGB_UNORM_BLOCK,+             FORMAT_BC1_RGB_SRGB_BLOCK,+             FORMAT_BC1_RGBA_UNORM_BLOCK,+             FORMAT_BC1_RGBA_SRGB_BLOCK,+             FORMAT_BC2_UNORM_BLOCK,+             FORMAT_BC2_SRGB_BLOCK,+             FORMAT_BC3_UNORM_BLOCK,+             FORMAT_BC3_SRGB_BLOCK,+             FORMAT_BC4_UNORM_BLOCK,+             FORMAT_BC4_SNORM_BLOCK,+             FORMAT_BC5_UNORM_BLOCK,+             FORMAT_BC5_SNORM_BLOCK,+             FORMAT_BC6H_UFLOAT_BLOCK,+             FORMAT_BC6H_SFLOAT_BLOCK,+             FORMAT_BC7_UNORM_BLOCK,+             FORMAT_BC7_SRGB_BLOCK,+             FORMAT_ETC2_R8G8B8_UNORM_BLOCK,+             FORMAT_ETC2_R8G8B8_SRGB_BLOCK,+             FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,+             FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,+             FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,+             FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,+             FORMAT_EAC_R11_UNORM_BLOCK,+             FORMAT_EAC_R11_SNORM_BLOCK,+             FORMAT_EAC_R11G11_UNORM_BLOCK,+             FORMAT_EAC_R11G11_SNORM_BLOCK,+             FORMAT_ASTC_4x4_UNORM_BLOCK,+             FORMAT_ASTC_4x4_SRGB_BLOCK,+             FORMAT_ASTC_5x4_UNORM_BLOCK,+             FORMAT_ASTC_5x4_SRGB_BLOCK,+             FORMAT_ASTC_5x5_UNORM_BLOCK,+             FORMAT_ASTC_5x5_SRGB_BLOCK,+             FORMAT_ASTC_6x5_UNORM_BLOCK,+             FORMAT_ASTC_6x5_SRGB_BLOCK,+             FORMAT_ASTC_6x6_UNORM_BLOCK,+             FORMAT_ASTC_6x6_SRGB_BLOCK,+             FORMAT_ASTC_8x5_UNORM_BLOCK,+             FORMAT_ASTC_8x5_SRGB_BLOCK,+             FORMAT_ASTC_8x6_UNORM_BLOCK,+             FORMAT_ASTC_8x6_SRGB_BLOCK,+             FORMAT_ASTC_8x8_UNORM_BLOCK,+             FORMAT_ASTC_8x8_SRGB_BLOCK,+             FORMAT_ASTC_10x5_UNORM_BLOCK,+             FORMAT_ASTC_10x5_SRGB_BLOCK,+             FORMAT_ASTC_10x6_UNORM_BLOCK,+             FORMAT_ASTC_10x6_SRGB_BLOCK,+             FORMAT_ASTC_10x8_UNORM_BLOCK,+             FORMAT_ASTC_10x8_SRGB_BLOCK,+             FORMAT_ASTC_10x10_UNORM_BLOCK,+             FORMAT_ASTC_10x10_SRGB_BLOCK,+             FORMAT_ASTC_12x10_UNORM_BLOCK,+             FORMAT_ASTC_12x10_SRGB_BLOCK,+             FORMAT_ASTC_12x12_UNORM_BLOCK,+             FORMAT_ASTC_12x12_SRGB_BLOCK,+             FORMAT_A4B4G4R4_UNORM_PACK16_EXT,+             FORMAT_A4R4G4B4_UNORM_PACK16_EXT,+             FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT,+             FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT,+             FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT,+             FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT,+             FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT,+             FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT,+             FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT,+             FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT,+             FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT,+             FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT,+             FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT,+             FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT,+             FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT,+             FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT,+             FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG,+             FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,+             FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,+             FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,+             FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,+             FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,+             FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,+             FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,+             FORMAT_G16_B16_R16_3PLANE_444_UNORM,+             FORMAT_G16_B16R16_2PLANE_422_UNORM,+             FORMAT_G16_B16_R16_3PLANE_422_UNORM,+             FORMAT_G16_B16R16_2PLANE_420_UNORM,+             FORMAT_G16_B16_R16_3PLANE_420_UNORM,+             FORMAT_B16G16R16G16_422_UNORM,+             FORMAT_G16B16G16R16_422_UNORM,+             FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,+             FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,+             FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,+             FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,+             FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,+             FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,+             FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,+             FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,+             FORMAT_R12X4G12X4_UNORM_2PACK16,+             FORMAT_R12X4_UNORM_PACK16,+             FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,+             FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,+             FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,+             FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,+             FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,+             FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,+             FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,+             FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,+             FORMAT_R10X6G10X6_UNORM_2PACK16,+             FORMAT_R10X6_UNORM_PACK16,+             FORMAT_G8_B8_R8_3PLANE_444_UNORM,+             FORMAT_G8_B8R8_2PLANE_422_UNORM,+             FORMAT_G8_B8_R8_3PLANE_422_UNORM,+             FORMAT_G8_B8R8_2PLANE_420_UNORM,+             FORMAT_G8_B8_R8_3PLANE_420_UNORM,+             FORMAT_B8G8R8G8_422_UNORM,+             FORMAT_G8B8G8R8_422_UNORM :: Format #-}++conNameFormat :: String+conNameFormat = "Format"++enumPrefixFormat :: String+enumPrefixFormat = "FORMAT_"++showTableFormat :: [(Format, String)]+showTableFormat =+  [ (FORMAT_UNDEFINED                         , "UNDEFINED")+  , (FORMAT_R4G4_UNORM_PACK8                  , "R4G4_UNORM_PACK8")+  , (FORMAT_R4G4B4A4_UNORM_PACK16             , "R4G4B4A4_UNORM_PACK16")+  , (FORMAT_B4G4R4A4_UNORM_PACK16             , "B4G4R4A4_UNORM_PACK16")+  , (FORMAT_R5G6B5_UNORM_PACK16               , "R5G6B5_UNORM_PACK16")+  , (FORMAT_B5G6R5_UNORM_PACK16               , "B5G6R5_UNORM_PACK16")+  , (FORMAT_R5G5B5A1_UNORM_PACK16             , "R5G5B5A1_UNORM_PACK16")+  , (FORMAT_B5G5R5A1_UNORM_PACK16             , "B5G5R5A1_UNORM_PACK16")+  , (FORMAT_A1R5G5B5_UNORM_PACK16             , "A1R5G5B5_UNORM_PACK16")+  , (FORMAT_R8_UNORM                          , "R8_UNORM")+  , (FORMAT_R8_SNORM                          , "R8_SNORM")+  , (FORMAT_R8_USCALED                        , "R8_USCALED")+  , (FORMAT_R8_SSCALED                        , "R8_SSCALED")+  , (FORMAT_R8_UINT                           , "R8_UINT")+  , (FORMAT_R8_SINT                           , "R8_SINT")+  , (FORMAT_R8_SRGB                           , "R8_SRGB")+  , (FORMAT_R8G8_UNORM                        , "R8G8_UNORM")+  , (FORMAT_R8G8_SNORM                        , "R8G8_SNORM")+  , (FORMAT_R8G8_USCALED                      , "R8G8_USCALED")+  , (FORMAT_R8G8_SSCALED                      , "R8G8_SSCALED")+  , (FORMAT_R8G8_UINT                         , "R8G8_UINT")+  , (FORMAT_R8G8_SINT                         , "R8G8_SINT")+  , (FORMAT_R8G8_SRGB                         , "R8G8_SRGB")+  , (FORMAT_R8G8B8_UNORM                      , "R8G8B8_UNORM")+  , (FORMAT_R8G8B8_SNORM                      , "R8G8B8_SNORM")+  , (FORMAT_R8G8B8_USCALED                    , "R8G8B8_USCALED")+  , (FORMAT_R8G8B8_SSCALED                    , "R8G8B8_SSCALED")+  , (FORMAT_R8G8B8_UINT                       , "R8G8B8_UINT")+  , (FORMAT_R8G8B8_SINT                       , "R8G8B8_SINT")+  , (FORMAT_R8G8B8_SRGB                       , "R8G8B8_SRGB")+  , (FORMAT_B8G8R8_UNORM                      , "B8G8R8_UNORM")+  , (FORMAT_B8G8R8_SNORM                      , "B8G8R8_SNORM")+  , (FORMAT_B8G8R8_USCALED                    , "B8G8R8_USCALED")+  , (FORMAT_B8G8R8_SSCALED                    , "B8G8R8_SSCALED")+  , (FORMAT_B8G8R8_UINT                       , "B8G8R8_UINT")+  , (FORMAT_B8G8R8_SINT                       , "B8G8R8_SINT")+  , (FORMAT_B8G8R8_SRGB                       , "B8G8R8_SRGB")+  , (FORMAT_R8G8B8A8_UNORM                    , "R8G8B8A8_UNORM")+  , (FORMAT_R8G8B8A8_SNORM                    , "R8G8B8A8_SNORM")+  , (FORMAT_R8G8B8A8_USCALED                  , "R8G8B8A8_USCALED")+  , (FORMAT_R8G8B8A8_SSCALED                  , "R8G8B8A8_SSCALED")+  , (FORMAT_R8G8B8A8_UINT                     , "R8G8B8A8_UINT")+  , (FORMAT_R8G8B8A8_SINT                     , "R8G8B8A8_SINT")+  , (FORMAT_R8G8B8A8_SRGB                     , "R8G8B8A8_SRGB")+  , (FORMAT_B8G8R8A8_UNORM                    , "B8G8R8A8_UNORM")+  , (FORMAT_B8G8R8A8_SNORM                    , "B8G8R8A8_SNORM")+  , (FORMAT_B8G8R8A8_USCALED                  , "B8G8R8A8_USCALED")+  , (FORMAT_B8G8R8A8_SSCALED                  , "B8G8R8A8_SSCALED")+  , (FORMAT_B8G8R8A8_UINT                     , "B8G8R8A8_UINT")+  , (FORMAT_B8G8R8A8_SINT                     , "B8G8R8A8_SINT")+  , (FORMAT_B8G8R8A8_SRGB                     , "B8G8R8A8_SRGB")+  , (FORMAT_A8B8G8R8_UNORM_PACK32             , "A8B8G8R8_UNORM_PACK32")+  , (FORMAT_A8B8G8R8_SNORM_PACK32             , "A8B8G8R8_SNORM_PACK32")+  , (FORMAT_A8B8G8R8_USCALED_PACK32           , "A8B8G8R8_USCALED_PACK32")+  , (FORMAT_A8B8G8R8_SSCALED_PACK32           , "A8B8G8R8_SSCALED_PACK32")+  , (FORMAT_A8B8G8R8_UINT_PACK32              , "A8B8G8R8_UINT_PACK32")+  , (FORMAT_A8B8G8R8_SINT_PACK32              , "A8B8G8R8_SINT_PACK32")+  , (FORMAT_A8B8G8R8_SRGB_PACK32              , "A8B8G8R8_SRGB_PACK32")+  , (FORMAT_A2R10G10B10_UNORM_PACK32          , "A2R10G10B10_UNORM_PACK32")+  , (FORMAT_A2R10G10B10_SNORM_PACK32          , "A2R10G10B10_SNORM_PACK32")+  , (FORMAT_A2R10G10B10_USCALED_PACK32        , "A2R10G10B10_USCALED_PACK32")+  , (FORMAT_A2R10G10B10_SSCALED_PACK32        , "A2R10G10B10_SSCALED_PACK32")+  , (FORMAT_A2R10G10B10_UINT_PACK32           , "A2R10G10B10_UINT_PACK32")+  , (FORMAT_A2R10G10B10_SINT_PACK32           , "A2R10G10B10_SINT_PACK32")+  , (FORMAT_A2B10G10R10_UNORM_PACK32          , "A2B10G10R10_UNORM_PACK32")+  , (FORMAT_A2B10G10R10_SNORM_PACK32          , "A2B10G10R10_SNORM_PACK32")+  , (FORMAT_A2B10G10R10_USCALED_PACK32        , "A2B10G10R10_USCALED_PACK32")+  , (FORMAT_A2B10G10R10_SSCALED_PACK32        , "A2B10G10R10_SSCALED_PACK32")+  , (FORMAT_A2B10G10R10_UINT_PACK32           , "A2B10G10R10_UINT_PACK32")+  , (FORMAT_A2B10G10R10_SINT_PACK32           , "A2B10G10R10_SINT_PACK32")+  , (FORMAT_R16_UNORM                         , "R16_UNORM")+  , (FORMAT_R16_SNORM                         , "R16_SNORM")+  , (FORMAT_R16_USCALED                       , "R16_USCALED")+  , (FORMAT_R16_SSCALED                       , "R16_SSCALED")+  , (FORMAT_R16_UINT                          , "R16_UINT")+  , (FORMAT_R16_SINT                          , "R16_SINT")+  , (FORMAT_R16_SFLOAT                        , "R16_SFLOAT")+  , (FORMAT_R16G16_UNORM                      , "R16G16_UNORM")+  , (FORMAT_R16G16_SNORM                      , "R16G16_SNORM")+  , (FORMAT_R16G16_USCALED                    , "R16G16_USCALED")+  , (FORMAT_R16G16_SSCALED                    , "R16G16_SSCALED")+  , (FORMAT_R16G16_UINT                       , "R16G16_UINT")+  , (FORMAT_R16G16_SINT                       , "R16G16_SINT")+  , (FORMAT_R16G16_SFLOAT                     , "R16G16_SFLOAT")+  , (FORMAT_R16G16B16_UNORM                   , "R16G16B16_UNORM")+  , (FORMAT_R16G16B16_SNORM                   , "R16G16B16_SNORM")+  , (FORMAT_R16G16B16_USCALED                 , "R16G16B16_USCALED")+  , (FORMAT_R16G16B16_SSCALED                 , "R16G16B16_SSCALED")+  , (FORMAT_R16G16B16_UINT                    , "R16G16B16_UINT")+  , (FORMAT_R16G16B16_SINT                    , "R16G16B16_SINT")+  , (FORMAT_R16G16B16_SFLOAT                  , "R16G16B16_SFLOAT")+  , (FORMAT_R16G16B16A16_UNORM                , "R16G16B16A16_UNORM")+  , (FORMAT_R16G16B16A16_SNORM                , "R16G16B16A16_SNORM")+  , (FORMAT_R16G16B16A16_USCALED              , "R16G16B16A16_USCALED")+  , (FORMAT_R16G16B16A16_SSCALED              , "R16G16B16A16_SSCALED")+  , (FORMAT_R16G16B16A16_UINT                 , "R16G16B16A16_UINT")+  , (FORMAT_R16G16B16A16_SINT                 , "R16G16B16A16_SINT")+  , (FORMAT_R16G16B16A16_SFLOAT               , "R16G16B16A16_SFLOAT")+  , (FORMAT_R32_UINT                          , "R32_UINT")+  , (FORMAT_R32_SINT                          , "R32_SINT")+  , (FORMAT_R32_SFLOAT                        , "R32_SFLOAT")+  , (FORMAT_R32G32_UINT                       , "R32G32_UINT")+  , (FORMAT_R32G32_SINT                       , "R32G32_SINT")+  , (FORMAT_R32G32_SFLOAT                     , "R32G32_SFLOAT")+  , (FORMAT_R32G32B32_UINT                    , "R32G32B32_UINT")+  , (FORMAT_R32G32B32_SINT                    , "R32G32B32_SINT")+  , (FORMAT_R32G32B32_SFLOAT                  , "R32G32B32_SFLOAT")+  , (FORMAT_R32G32B32A32_UINT                 , "R32G32B32A32_UINT")+  , (FORMAT_R32G32B32A32_SINT                 , "R32G32B32A32_SINT")+  , (FORMAT_R32G32B32A32_SFLOAT               , "R32G32B32A32_SFLOAT")+  , (FORMAT_R64_UINT                          , "R64_UINT")+  , (FORMAT_R64_SINT                          , "R64_SINT")+  , (FORMAT_R64_SFLOAT                        , "R64_SFLOAT")+  , (FORMAT_R64G64_UINT                       , "R64G64_UINT")+  , (FORMAT_R64G64_SINT                       , "R64G64_SINT")+  , (FORMAT_R64G64_SFLOAT                     , "R64G64_SFLOAT")+  , (FORMAT_R64G64B64_UINT                    , "R64G64B64_UINT")+  , (FORMAT_R64G64B64_SINT                    , "R64G64B64_SINT")+  , (FORMAT_R64G64B64_SFLOAT                  , "R64G64B64_SFLOAT")+  , (FORMAT_R64G64B64A64_UINT                 , "R64G64B64A64_UINT")+  , (FORMAT_R64G64B64A64_SINT                 , "R64G64B64A64_SINT")+  , (FORMAT_R64G64B64A64_SFLOAT               , "R64G64B64A64_SFLOAT")+  , (FORMAT_B10G11R11_UFLOAT_PACK32           , "B10G11R11_UFLOAT_PACK32")+  , (FORMAT_E5B9G9R9_UFLOAT_PACK32            , "E5B9G9R9_UFLOAT_PACK32")+  , (FORMAT_D16_UNORM                         , "D16_UNORM")+  , (FORMAT_X8_D24_UNORM_PACK32               , "X8_D24_UNORM_PACK32")+  , (FORMAT_D32_SFLOAT                        , "D32_SFLOAT")+  , (FORMAT_S8_UINT                           , "S8_UINT")+  , (FORMAT_D16_UNORM_S8_UINT                 , "D16_UNORM_S8_UINT")+  , (FORMAT_D24_UNORM_S8_UINT                 , "D24_UNORM_S8_UINT")+  , (FORMAT_D32_SFLOAT_S8_UINT                , "D32_SFLOAT_S8_UINT")+  , (FORMAT_BC1_RGB_UNORM_BLOCK               , "BC1_RGB_UNORM_BLOCK")+  , (FORMAT_BC1_RGB_SRGB_BLOCK                , "BC1_RGB_SRGB_BLOCK")+  , (FORMAT_BC1_RGBA_UNORM_BLOCK              , "BC1_RGBA_UNORM_BLOCK")+  , (FORMAT_BC1_RGBA_SRGB_BLOCK               , "BC1_RGBA_SRGB_BLOCK")+  , (FORMAT_BC2_UNORM_BLOCK                   , "BC2_UNORM_BLOCK")+  , (FORMAT_BC2_SRGB_BLOCK                    , "BC2_SRGB_BLOCK")+  , (FORMAT_BC3_UNORM_BLOCK                   , "BC3_UNORM_BLOCK")+  , (FORMAT_BC3_SRGB_BLOCK                    , "BC3_SRGB_BLOCK")+  , (FORMAT_BC4_UNORM_BLOCK                   , "BC4_UNORM_BLOCK")+  , (FORMAT_BC4_SNORM_BLOCK                   , "BC4_SNORM_BLOCK")+  , (FORMAT_BC5_UNORM_BLOCK                   , "BC5_UNORM_BLOCK")+  , (FORMAT_BC5_SNORM_BLOCK                   , "BC5_SNORM_BLOCK")+  , (FORMAT_BC6H_UFLOAT_BLOCK                 , "BC6H_UFLOAT_BLOCK")+  , (FORMAT_BC6H_SFLOAT_BLOCK                 , "BC6H_SFLOAT_BLOCK")+  , (FORMAT_BC7_UNORM_BLOCK                   , "BC7_UNORM_BLOCK")+  , (FORMAT_BC7_SRGB_BLOCK                    , "BC7_SRGB_BLOCK")+  , (FORMAT_ETC2_R8G8B8_UNORM_BLOCK           , "ETC2_R8G8B8_UNORM_BLOCK")+  , (FORMAT_ETC2_R8G8B8_SRGB_BLOCK            , "ETC2_R8G8B8_SRGB_BLOCK")+  , (FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK         , "ETC2_R8G8B8A1_UNORM_BLOCK")+  , (FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK          , "ETC2_R8G8B8A1_SRGB_BLOCK")+  , (FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK         , "ETC2_R8G8B8A8_UNORM_BLOCK")+  , (FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK          , "ETC2_R8G8B8A8_SRGB_BLOCK")+  , (FORMAT_EAC_R11_UNORM_BLOCK               , "EAC_R11_UNORM_BLOCK")+  , (FORMAT_EAC_R11_SNORM_BLOCK               , "EAC_R11_SNORM_BLOCK")+  , (FORMAT_EAC_R11G11_UNORM_BLOCK            , "EAC_R11G11_UNORM_BLOCK")+  , (FORMAT_EAC_R11G11_SNORM_BLOCK            , "EAC_R11G11_SNORM_BLOCK")+  , (FORMAT_ASTC_4x4_UNORM_BLOCK              , "ASTC_4x4_UNORM_BLOCK")+  , (FORMAT_ASTC_4x4_SRGB_BLOCK               , "ASTC_4x4_SRGB_BLOCK")+  , (FORMAT_ASTC_5x4_UNORM_BLOCK              , "ASTC_5x4_UNORM_BLOCK")+  , (FORMAT_ASTC_5x4_SRGB_BLOCK               , "ASTC_5x4_SRGB_BLOCK")+  , (FORMAT_ASTC_5x5_UNORM_BLOCK              , "ASTC_5x5_UNORM_BLOCK")+  , (FORMAT_ASTC_5x5_SRGB_BLOCK               , "ASTC_5x5_SRGB_BLOCK")+  , (FORMAT_ASTC_6x5_UNORM_BLOCK              , "ASTC_6x5_UNORM_BLOCK")+  , (FORMAT_ASTC_6x5_SRGB_BLOCK               , "ASTC_6x5_SRGB_BLOCK")+  , (FORMAT_ASTC_6x6_UNORM_BLOCK              , "ASTC_6x6_UNORM_BLOCK")+  , (FORMAT_ASTC_6x6_SRGB_BLOCK               , "ASTC_6x6_SRGB_BLOCK")+  , (FORMAT_ASTC_8x5_UNORM_BLOCK              , "ASTC_8x5_UNORM_BLOCK")+  , (FORMAT_ASTC_8x5_SRGB_BLOCK               , "ASTC_8x5_SRGB_BLOCK")+  , (FORMAT_ASTC_8x6_UNORM_BLOCK              , "ASTC_8x6_UNORM_BLOCK")+  , (FORMAT_ASTC_8x6_SRGB_BLOCK               , "ASTC_8x6_SRGB_BLOCK")+  , (FORMAT_ASTC_8x8_UNORM_BLOCK              , "ASTC_8x8_UNORM_BLOCK")+  , (FORMAT_ASTC_8x8_SRGB_BLOCK               , "ASTC_8x8_SRGB_BLOCK")+  , (FORMAT_ASTC_10x5_UNORM_BLOCK             , "ASTC_10x5_UNORM_BLOCK")+  , (FORMAT_ASTC_10x5_SRGB_BLOCK              , "ASTC_10x5_SRGB_BLOCK")+  , (FORMAT_ASTC_10x6_UNORM_BLOCK             , "ASTC_10x6_UNORM_BLOCK")+  , (FORMAT_ASTC_10x6_SRGB_BLOCK              , "ASTC_10x6_SRGB_BLOCK")+  , (FORMAT_ASTC_10x8_UNORM_BLOCK             , "ASTC_10x8_UNORM_BLOCK")+  , (FORMAT_ASTC_10x8_SRGB_BLOCK              , "ASTC_10x8_SRGB_BLOCK")+  , (FORMAT_ASTC_10x10_UNORM_BLOCK            , "ASTC_10x10_UNORM_BLOCK")+  , (FORMAT_ASTC_10x10_SRGB_BLOCK             , "ASTC_10x10_SRGB_BLOCK")+  , (FORMAT_ASTC_12x10_UNORM_BLOCK            , "ASTC_12x10_UNORM_BLOCK")+  , (FORMAT_ASTC_12x10_SRGB_BLOCK             , "ASTC_12x10_SRGB_BLOCK")+  , (FORMAT_ASTC_12x12_UNORM_BLOCK            , "ASTC_12x12_UNORM_BLOCK")+  , (FORMAT_ASTC_12x12_SRGB_BLOCK             , "ASTC_12x12_SRGB_BLOCK")+  , (FORMAT_A4B4G4R4_UNORM_PACK16_EXT         , "A4B4G4R4_UNORM_PACK16_EXT")+  , (FORMAT_A4R4G4B4_UNORM_PACK16_EXT         , "A4R4G4B4_UNORM_PACK16_EXT")+  , (FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT       , "ASTC_12x12_SFLOAT_BLOCK_EXT")+  , (FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT       , "ASTC_12x10_SFLOAT_BLOCK_EXT")+  , (FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT       , "ASTC_10x10_SFLOAT_BLOCK_EXT")+  , (FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT        , "ASTC_10x8_SFLOAT_BLOCK_EXT")+  , (FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT        , "ASTC_10x6_SFLOAT_BLOCK_EXT")+  , (FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT        , "ASTC_10x5_SFLOAT_BLOCK_EXT")+  , (FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT         , "ASTC_8x8_SFLOAT_BLOCK_EXT")+  , (FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT         , "ASTC_8x6_SFLOAT_BLOCK_EXT")+  , (FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT         , "ASTC_8x5_SFLOAT_BLOCK_EXT")+  , (FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT         , "ASTC_6x6_SFLOAT_BLOCK_EXT")+  , (FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT         , "ASTC_6x5_SFLOAT_BLOCK_EXT")+  , (FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT         , "ASTC_5x5_SFLOAT_BLOCK_EXT")+  , (FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT         , "ASTC_5x4_SFLOAT_BLOCK_EXT")+  , (FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT         , "ASTC_4x4_SFLOAT_BLOCK_EXT")+  , (FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG        , "PVRTC2_4BPP_SRGB_BLOCK_IMG")+  , (FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG        , "PVRTC2_2BPP_SRGB_BLOCK_IMG")+  , (FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG        , "PVRTC1_4BPP_SRGB_BLOCK_IMG")+  , (FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG        , "PVRTC1_2BPP_SRGB_BLOCK_IMG")+  , (FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG       , "PVRTC2_4BPP_UNORM_BLOCK_IMG")+  , (FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG       , "PVRTC2_2BPP_UNORM_BLOCK_IMG")+  , (FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG       , "PVRTC1_4BPP_UNORM_BLOCK_IMG")+  , (FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG       , "PVRTC1_2BPP_UNORM_BLOCK_IMG")+  , (FORMAT_G16_B16_R16_3PLANE_444_UNORM      , "G16_B16_R16_3PLANE_444_UNORM")+  , (FORMAT_G16_B16R16_2PLANE_422_UNORM       , "G16_B16R16_2PLANE_422_UNORM")+  , (FORMAT_G16_B16_R16_3PLANE_422_UNORM      , "G16_B16_R16_3PLANE_422_UNORM")+  , (FORMAT_G16_B16R16_2PLANE_420_UNORM       , "G16_B16R16_2PLANE_420_UNORM")+  , (FORMAT_G16_B16_R16_3PLANE_420_UNORM      , "G16_B16_R16_3PLANE_420_UNORM")+  , (FORMAT_B16G16R16G16_422_UNORM            , "B16G16R16G16_422_UNORM")+  , (FORMAT_G16B16G16R16_422_UNORM            , "G16B16G16R16_422_UNORM")+  , (FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, "G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16")+  , (FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, "G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16")+  , (FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, "G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16")+  , (FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, "G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16")+  , (FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, "G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16")+  , (FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, "B12X4G12X4R12X4G12X4_422_UNORM_4PACK16")+  , (FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, "G12X4B12X4G12X4R12X4_422_UNORM_4PACK16")+  , (FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, "R12X4G12X4B12X4A12X4_UNORM_4PACK16")+  , (FORMAT_R12X4G12X4_UNORM_2PACK16          , "R12X4G12X4_UNORM_2PACK16")+  , (FORMAT_R12X4_UNORM_PACK16                , "R12X4_UNORM_PACK16")+  , (FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, "G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16")+  , (FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, "G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16")+  , (FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, "G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16")+  , (FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, "G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16")+  , (FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, "G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16")+  , (FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, "B10X6G10X6R10X6G10X6_422_UNORM_4PACK16")+  , (FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, "G10X6B10X6G10X6R10X6_422_UNORM_4PACK16")+  , (FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, "R10X6G10X6B10X6A10X6_UNORM_4PACK16")+  , (FORMAT_R10X6G10X6_UNORM_2PACK16          , "R10X6G10X6_UNORM_2PACK16")+  , (FORMAT_R10X6_UNORM_PACK16                , "R10X6_UNORM_PACK16")+  , (FORMAT_G8_B8_R8_3PLANE_444_UNORM         , "G8_B8_R8_3PLANE_444_UNORM")+  , (FORMAT_G8_B8R8_2PLANE_422_UNORM          , "G8_B8R8_2PLANE_422_UNORM")+  , (FORMAT_G8_B8_R8_3PLANE_422_UNORM         , "G8_B8_R8_3PLANE_422_UNORM")+  , (FORMAT_G8_B8R8_2PLANE_420_UNORM          , "G8_B8R8_2PLANE_420_UNORM")+  , (FORMAT_G8_B8_R8_3PLANE_420_UNORM         , "G8_B8_R8_3PLANE_420_UNORM")+  , (FORMAT_B8G8R8G8_422_UNORM                , "B8G8R8G8_422_UNORM")+  , (FORMAT_G8B8G8R8_422_UNORM                , "G8B8G8R8_422_UNORM")+  ]++instance Show Format where+  showsPrec = enumShowsPrec enumPrefixFormat showTableFormat conNameFormat (\(Format x) -> x) (showsPrec 11)++instance Read Format where+  readPrec = enumReadPrec enumPrefixFormat showTableFormat conNameFormat Format 
src/Vulkan/Core10/Enums/Format.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Format" module Vulkan.Core10.Enums.Format  (Format) where  
src/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.FormatFeatureFlagBits  ( FormatFeatureFlagBits( FORMAT_FEATURE_SAMPLED_IMAGE_BIT+-- No documentation found for Chapter "FormatFeatureFlagBits"+module Vulkan.Core10.Enums.FormatFeatureFlagBits  ( FormatFeatureFlags+                                                  , FormatFeatureFlagBits( FORMAT_FEATURE_SAMPLED_IMAGE_BIT                                                                          , FORMAT_FEATURE_STORAGE_IMAGE_BIT                                                                          , FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT                                                                          , FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT@@ -28,25 +30,21 @@                                                                          , FORMAT_FEATURE_TRANSFER_SRC_BIT                                                                          , ..                                                                          )-                                                  , FormatFeatureFlags                                                   ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type FormatFeatureFlags = FormatFeatureFlagBits+ -- | VkFormatFeatureFlagBits - Bitmask specifying features supported by a -- buffer --@@ -243,6 +241,16 @@ --     be used as a vertex attribute format --     ('Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@format@). --+-- -   'FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'+--     specifies that the format /can/ be used as the vertex format when+--     creating an+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure acceleration structure>+--     ('Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'::@vertexFormat@).+--     This format /can/ also be used as the vertex format in host memory+--     when doing+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>+--     builds.+-- -- = See Also -- -- 'FormatFeatureFlags'@@ -251,54 +259,54 @@  -- | 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT' specifies that an image view /can/ be -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from>.-pattern FORMAT_FEATURE_SAMPLED_IMAGE_BIT = FormatFeatureFlagBits 0x00000001+pattern FORMAT_FEATURE_SAMPLED_IMAGE_BIT                        = FormatFeatureFlagBits 0x00000001 -- | 'FORMAT_FEATURE_STORAGE_IMAGE_BIT' specifies that an image view /can/ be -- used as a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage images>.-pattern FORMAT_FEATURE_STORAGE_IMAGE_BIT = FormatFeatureFlagBits 0x00000002+pattern FORMAT_FEATURE_STORAGE_IMAGE_BIT                        = FormatFeatureFlagBits 0x00000002 -- | 'FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT' specifies that an image view -- /can/ be used as storage image that supports atomic operations.-pattern FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = FormatFeatureFlagBits 0x00000004+pattern FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT                 = FormatFeatureFlagBits 0x00000004 -- | 'FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT' specifies that the format -- /can/ be used to create a buffer view that /can/ be bound to a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER' -- descriptor.-pattern FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = FormatFeatureFlagBits 0x00000008+pattern FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT                 = FormatFeatureFlagBits 0x00000008 -- | 'FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT' specifies that the format -- /can/ be used to create a buffer view that /can/ be bound to a -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER' -- descriptor.-pattern FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = FormatFeatureFlagBits 0x00000010+pattern FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT                 = FormatFeatureFlagBits 0x00000010 -- | 'FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT' specifies that atomic -- operations are supported on -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER' -- with this format.-pattern FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = FormatFeatureFlagBits 0x00000020+pattern FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT          = FormatFeatureFlagBits 0x00000020 -- | 'FORMAT_FEATURE_VERTEX_BUFFER_BIT' specifies that the format /can/ be -- used as a vertex attribute format -- ('Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@format@).-pattern FORMAT_FEATURE_VERTEX_BUFFER_BIT = FormatFeatureFlagBits 0x00000040+pattern FORMAT_FEATURE_VERTEX_BUFFER_BIT                        = FormatFeatureFlagBits 0x00000040 -- | 'FORMAT_FEATURE_COLOR_ATTACHMENT_BIT' specifies that an image view /can/ -- be used as a framebuffer color attachment and as an input attachment.-pattern FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = FormatFeatureFlagBits 0x00000080+pattern FORMAT_FEATURE_COLOR_ATTACHMENT_BIT                     = FormatFeatureFlagBits 0x00000080 -- | 'FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT' specifies that an image view -- /can/ be used as a framebuffer color attachment that supports blending -- and as an input attachment.-pattern FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = FormatFeatureFlagBits 0x00000100+pattern FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT               = FormatFeatureFlagBits 0x00000100 -- | 'FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT' specifies that an image -- view /can/ be used as a framebuffer depth\/stencil attachment and as an -- input attachment.-pattern FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = FormatFeatureFlagBits 0x00000200+pattern FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT             = FormatFeatureFlagBits 0x00000200 -- | 'FORMAT_FEATURE_BLIT_SRC_BIT' specifies that an image /can/ be used as -- @srcImage@ for the -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and -- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.-pattern FORMAT_FEATURE_BLIT_SRC_BIT = FormatFeatureFlagBits 0x00000400+pattern FORMAT_FEATURE_BLIT_SRC_BIT                             = FormatFeatureFlagBits 0x00000400 -- | 'FORMAT_FEATURE_BLIT_DST_BIT' specifies that an image /can/ be used as -- @dstImage@ for the -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and -- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.-pattern FORMAT_FEATURE_BLIT_DST_BIT = FormatFeatureFlagBits 0x00000800+pattern FORMAT_FEATURE_BLIT_DST_BIT                             = FormatFeatureFlagBits 0x00000800 -- | 'FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT' specifies that if -- 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT' is also set, an image view /can/ be -- used with a sampler that has either of @magFilter@ or @minFilter@ set to@@ -322,7 +330,7 @@ -- linear filtering. The resulting value /must/ be in the range [0,1] and -- /should/ be proportional to, or a weighted average of, the number of -- comparison passes or failures.-pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = FormatFeatureFlagBits 0x00001000+pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT          = FormatFeatureFlagBits 0x00001000 -- | 'FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies that -- an image view /can/ be used as a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.@@ -332,18 +340,25 @@ -- | 'FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that an image -- view /can/ be used as a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>.-pattern FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = FormatFeatureFlagBits 0x01000000--- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"+pattern FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT             = FormatFeatureFlagBits 0x01000000+-- | 'FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR' specifies+-- that the format /can/ be used as the vertex format when creating an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure acceleration structure>+-- ('Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'::@vertexFormat@).+-- This format /can/ also be used as the vertex format in host memory when+-- doing+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>+-- builds. pattern FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = FormatFeatureFlagBits 0x20000000 -- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"-pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = FormatFeatureFlagBits 0x00002000+pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG       = FormatFeatureFlagBits 0x00002000 -- | 'FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT' specifies -- 'Vulkan.Core10.Handles.Image' /can/ be used as a sampled image with a -- min or max -- 'Vulkan.Core12.Enums.SamplerReductionMode.SamplerReductionMode'. This -- bit /must/ only be exposed for formats that also support the -- 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT'.-pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = FormatFeatureFlagBits 0x00010000+pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT          = FormatFeatureFlagBits 0x00010000 -- | 'FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT' specifies that an -- application /can/ define a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>@@ -359,13 +374,13 @@ -- /must/ not define a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion> -- using this format as a source.-pattern FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = FormatFeatureFlagBits 0x00800000+pattern FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT               = FormatFeatureFlagBits 0x00800000 -- | 'FORMAT_FEATURE_DISJOINT_BIT' specifies that a multi-planar image /can/ -- have the -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT' set -- during image creation. An implementation /must/ not set -- 'FORMAT_FEATURE_DISJOINT_BIT' for /single-plane formats/.-pattern FORMAT_FEATURE_DISJOINT_BIT = FormatFeatureFlagBits 0x00400000+pattern FORMAT_FEATURE_DISJOINT_BIT                             = FormatFeatureFlagBits 0x00400000 -- | 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT' -- specifies that reconstruction /can/ be forcibly made explicit by setting -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'::@forceExplicitReconstruction@@@ -374,16 +389,19 @@ -- 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT' -- it /must/ also support -- 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'.-pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = FormatFeatureFlagBits 0x00200000+pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT =+  FormatFeatureFlagBits 0x00200000 -- | 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT' -- specifies that reconstruction is explicit, as described in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction>. -- If this bit is not present, reconstruction is implicit by default.-pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = FormatFeatureFlagBits 0x00100000+pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT =+  FormatFeatureFlagBits 0x00100000 -- | 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT' -- specifies that the format can have different chroma, min, and mag -- filters.-pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = FormatFeatureFlagBits 0x00080000+pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT =+  FormatFeatureFlagBits 0x00080000 -- | 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT' -- specifies that the format can do linear sampler filtering -- (min\/magFilter) whilst sampler Y′CBCR conversion is enabled.@@ -408,76 +426,67 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands> -- and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>.-pattern FORMAT_FEATURE_TRANSFER_DST_BIT = FormatFeatureFlagBits 0x00008000+pattern FORMAT_FEATURE_TRANSFER_DST_BIT            = FormatFeatureFlagBits 0x00008000 -- | 'FORMAT_FEATURE_TRANSFER_SRC_BIT' specifies that an image /can/ be used -- as a source image for -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>.-pattern FORMAT_FEATURE_TRANSFER_SRC_BIT = FormatFeatureFlagBits 0x00004000+pattern FORMAT_FEATURE_TRANSFER_SRC_BIT            = FormatFeatureFlagBits 0x00004000 -type FormatFeatureFlags = FormatFeatureFlagBits+conNameFormatFeatureFlagBits :: String+conNameFormatFeatureFlagBits = "FormatFeatureFlagBits" +enumPrefixFormatFeatureFlagBits :: String+enumPrefixFormatFeatureFlagBits = "FORMAT_FEATURE_"++showTableFormatFeatureFlagBits :: [(FormatFeatureFlagBits, String)]+showTableFormatFeatureFlagBits =+  [ (FORMAT_FEATURE_SAMPLED_IMAGE_BIT                       , "SAMPLED_IMAGE_BIT")+  , (FORMAT_FEATURE_STORAGE_IMAGE_BIT                       , "STORAGE_IMAGE_BIT")+  , (FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT                , "STORAGE_IMAGE_ATOMIC_BIT")+  , (FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT                , "UNIFORM_TEXEL_BUFFER_BIT")+  , (FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT                , "STORAGE_TEXEL_BUFFER_BIT")+  , (FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT         , "STORAGE_TEXEL_BUFFER_ATOMIC_BIT")+  , (FORMAT_FEATURE_VERTEX_BUFFER_BIT                       , "VERTEX_BUFFER_BIT")+  , (FORMAT_FEATURE_COLOR_ATTACHMENT_BIT                    , "COLOR_ATTACHMENT_BIT")+  , (FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT              , "COLOR_ATTACHMENT_BLEND_BIT")+  , (FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT            , "DEPTH_STENCIL_ATTACHMENT_BIT")+  , (FORMAT_FEATURE_BLIT_SRC_BIT                            , "BLIT_SRC_BIT")+  , (FORMAT_FEATURE_BLIT_DST_BIT                            , "BLIT_DST_BIT")+  , (FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT         , "SAMPLED_IMAGE_FILTER_LINEAR_BIT")+  , (FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, "FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR")+  , (FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT            , "FRAGMENT_DENSITY_MAP_BIT_EXT")+  , (FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR, "ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR")+  , (FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG      , "SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG")+  , (FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT         , "SAMPLED_IMAGE_FILTER_MINMAX_BIT")+  , (FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT              , "COSITED_CHROMA_SAMPLES_BIT")+  , (FORMAT_FEATURE_DISJOINT_BIT                            , "DISJOINT_BIT")+  , ( FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT+    , "SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"+    )+  , ( FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT+    , "SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"+    )+  , ( FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT+    , "SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"+    )+  , ( FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT+    , "SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"+    )+  , (FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT, "MIDPOINT_CHROMA_SAMPLES_BIT")+  , (FORMAT_FEATURE_TRANSFER_DST_BIT           , "TRANSFER_DST_BIT")+  , (FORMAT_FEATURE_TRANSFER_SRC_BIT           , "TRANSFER_SRC_BIT")+  ]+ instance Show FormatFeatureFlagBits where-  showsPrec p = \case-    FORMAT_FEATURE_SAMPLED_IMAGE_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_BIT"-    FORMAT_FEATURE_STORAGE_IMAGE_BIT -> showString "FORMAT_FEATURE_STORAGE_IMAGE_BIT"-    FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT -> showString "FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"-    FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT -> showString "FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"-    FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT -> showString "FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"-    FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT -> showString "FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"-    FORMAT_FEATURE_VERTEX_BUFFER_BIT -> showString "FORMAT_FEATURE_VERTEX_BUFFER_BIT"-    FORMAT_FEATURE_COLOR_ATTACHMENT_BIT -> showString "FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"-    FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT -> showString "FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"-    FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT -> showString "FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"-    FORMAT_FEATURE_BLIT_SRC_BIT -> showString "FORMAT_FEATURE_BLIT_SRC_BIT"-    FORMAT_FEATURE_BLIT_DST_BIT -> showString "FORMAT_FEATURE_BLIT_DST_BIT"-    FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"-    FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR -> showString "FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"-    FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT -> showString "FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT"-    FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR -> showString "FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"-    FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"-    FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT"-    FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT -> showString "FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"-    FORMAT_FEATURE_DISJOINT_BIT -> showString "FORMAT_FEATURE_DISJOINT_BIT"-    FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"-    FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"-    FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"-    FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"-    FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT -> showString "FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"-    FORMAT_FEATURE_TRANSFER_DST_BIT -> showString "FORMAT_FEATURE_TRANSFER_DST_BIT"-    FORMAT_FEATURE_TRANSFER_SRC_BIT -> showString "FORMAT_FEATURE_TRANSFER_SRC_BIT"-    FormatFeatureFlagBits x -> showParen (p >= 11) (showString "FormatFeatureFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixFormatFeatureFlagBits+                            showTableFormatFeatureFlagBits+                            conNameFormatFeatureFlagBits+                            (\(FormatFeatureFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read FormatFeatureFlagBits where-  readPrec = parens (choose [("FORMAT_FEATURE_SAMPLED_IMAGE_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_BIT)-                            , ("FORMAT_FEATURE_STORAGE_IMAGE_BIT", pure FORMAT_FEATURE_STORAGE_IMAGE_BIT)-                            , ("FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT", pure FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT)-                            , ("FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", pure FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT)-                            , ("FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", pure FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT)-                            , ("FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT", pure FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT)-                            , ("FORMAT_FEATURE_VERTEX_BUFFER_BIT", pure FORMAT_FEATURE_VERTEX_BUFFER_BIT)-                            , ("FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", pure FORMAT_FEATURE_COLOR_ATTACHMENT_BIT)-                            , ("FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT", pure FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT)-                            , ("FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", pure FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)-                            , ("FORMAT_FEATURE_BLIT_SRC_BIT", pure FORMAT_FEATURE_BLIT_SRC_BIT)-                            , ("FORMAT_FEATURE_BLIT_DST_BIT", pure FORMAT_FEATURE_BLIT_DST_BIT)-                            , ("FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT)-                            , ("FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR", pure FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR)-                            , ("FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT", pure FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT)-                            , ("FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR", pure FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR)-                            , ("FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG", pure FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG)-                            , ("FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT)-                            , ("FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT", pure FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT)-                            , ("FORMAT_FEATURE_DISJOINT_BIT", pure FORMAT_FEATURE_DISJOINT_BIT)-                            , ("FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT)-                            , ("FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT)-                            , ("FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT)-                            , ("FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT)-                            , ("FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT", pure FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT)-                            , ("FORMAT_FEATURE_TRANSFER_DST_BIT", pure FORMAT_FEATURE_TRANSFER_DST_BIT)-                            , ("FORMAT_FEATURE_TRANSFER_SRC_BIT", pure FORMAT_FEATURE_TRANSFER_SRC_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "FormatFeatureFlagBits")-                       v <- step readPrec-                       pure (FormatFeatureFlagBits v)))+  readPrec = enumReadPrec enumPrefixFormatFeatureFlagBits+                          showTableFormatFeatureFlagBits+                          conNameFormatFeatureFlagBits+                          FormatFeatureFlagBits 
src/Vulkan/Core10/Enums/FramebufferCreateFlagBits.hs view
@@ -1,26 +1,24 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.FramebufferCreateFlagBits  ( FramebufferCreateFlagBits( FRAMEBUFFER_CREATE_IMAGELESS_BIT+-- No documentation found for Chapter "FramebufferCreateFlagBits"+module Vulkan.Core10.Enums.FramebufferCreateFlagBits  ( FramebufferCreateFlags+                                                      , FramebufferCreateFlagBits( FRAMEBUFFER_CREATE_IMAGELESS_BIT                                                                                  , ..                                                                                  )-                                                      , FramebufferCreateFlags                                                       ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type FramebufferCreateFlags = FramebufferCreateFlagBits+ -- | VkFramebufferCreateFlagBits - Bitmask specifying framebuffer properties -- -- = See Also@@ -36,18 +34,25 @@ -- structure. pattern FRAMEBUFFER_CREATE_IMAGELESS_BIT = FramebufferCreateFlagBits 0x00000001 -type FramebufferCreateFlags = FramebufferCreateFlagBits+conNameFramebufferCreateFlagBits :: String+conNameFramebufferCreateFlagBits = "FramebufferCreateFlagBits" +enumPrefixFramebufferCreateFlagBits :: String+enumPrefixFramebufferCreateFlagBits = "FRAMEBUFFER_CREATE_IMAGELESS_BIT"++showTableFramebufferCreateFlagBits :: [(FramebufferCreateFlagBits, String)]+showTableFramebufferCreateFlagBits = [(FRAMEBUFFER_CREATE_IMAGELESS_BIT, "")]+ instance Show FramebufferCreateFlagBits where-  showsPrec p = \case-    FRAMEBUFFER_CREATE_IMAGELESS_BIT -> showString "FRAMEBUFFER_CREATE_IMAGELESS_BIT"-    FramebufferCreateFlagBits x -> showParen (p >= 11) (showString "FramebufferCreateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixFramebufferCreateFlagBits+                            showTableFramebufferCreateFlagBits+                            conNameFramebufferCreateFlagBits+                            (\(FramebufferCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read FramebufferCreateFlagBits where-  readPrec = parens (choose [("FRAMEBUFFER_CREATE_IMAGELESS_BIT", pure FRAMEBUFFER_CREATE_IMAGELESS_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "FramebufferCreateFlagBits")-                       v <- step readPrec-                       pure (FramebufferCreateFlagBits v)))+  readPrec = enumReadPrec enumPrefixFramebufferCreateFlagBits+                          showTableFramebufferCreateFlagBits+                          conNameFramebufferCreateFlagBits+                          FramebufferCreateFlagBits 
src/Vulkan/Core10/Enums/FrontFace.hs view
@@ -1,22 +1,17 @@ {-# language CPP #-}+-- No documentation found for Chapter "FrontFace" module Vulkan.Core10.Enums.FrontFace  (FrontFace( FRONT_FACE_COUNTER_CLOCKWISE                                                 , FRONT_FACE_CLOCKWISE                                                 , ..                                                 )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkFrontFace - Interpret polygon front-facing orientation --@@ -37,22 +32,23 @@ pattern FRONT_FACE_COUNTER_CLOCKWISE = FrontFace 0 -- | 'FRONT_FACE_CLOCKWISE' specifies that a triangle with negative area is -- considered front-facing.-pattern FRONT_FACE_CLOCKWISE = FrontFace 1+pattern FRONT_FACE_CLOCKWISE         = FrontFace 1 {-# complete FRONT_FACE_COUNTER_CLOCKWISE,              FRONT_FACE_CLOCKWISE :: FrontFace #-} +conNameFrontFace :: String+conNameFrontFace = "FrontFace"++enumPrefixFrontFace :: String+enumPrefixFrontFace = "FRONT_FACE_C"++showTableFrontFace :: [(FrontFace, String)]+showTableFrontFace = [(FRONT_FACE_COUNTER_CLOCKWISE, "OUNTER_CLOCKWISE"), (FRONT_FACE_CLOCKWISE, "LOCKWISE")]+ instance Show FrontFace where-  showsPrec p = \case-    FRONT_FACE_COUNTER_CLOCKWISE -> showString "FRONT_FACE_COUNTER_CLOCKWISE"-    FRONT_FACE_CLOCKWISE -> showString "FRONT_FACE_CLOCKWISE"-    FrontFace x -> showParen (p >= 11) (showString "FrontFace " . showsPrec 11 x)+  showsPrec =+    enumShowsPrec enumPrefixFrontFace showTableFrontFace conNameFrontFace (\(FrontFace x) -> x) (showsPrec 11)  instance Read FrontFace where-  readPrec = parens (choose [("FRONT_FACE_COUNTER_CLOCKWISE", pure FRONT_FACE_COUNTER_CLOCKWISE)-                            , ("FRONT_FACE_CLOCKWISE", pure FRONT_FACE_CLOCKWISE)]-                     +++-                     prec 10 (do-                       expectP (Ident "FrontFace")-                       v <- step readPrec-                       pure (FrontFace v)))+  readPrec = enumReadPrec enumPrefixFrontFace showTableFrontFace conNameFrontFace FrontFace 
src/Vulkan/Core10/Enums/FrontFace.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "FrontFace" module Vulkan.Core10.Enums.FrontFace  (FrontFace) where  
src/Vulkan/Core10/Enums/ImageAspectFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.ImageAspectFlagBits  ( ImageAspectFlagBits( IMAGE_ASPECT_COLOR_BIT+-- No documentation found for Chapter "ImageAspectFlagBits"+module Vulkan.Core10.Enums.ImageAspectFlagBits  ( ImageAspectFlags+                                                , ImageAspectFlagBits( IMAGE_ASPECT_COLOR_BIT                                                                      , IMAGE_ASPECT_DEPTH_BIT                                                                      , IMAGE_ASPECT_STENCIL_BIT                                                                      , IMAGE_ASPECT_METADATA_BIT@@ -12,25 +14,21 @@                                                                      , IMAGE_ASPECT_PLANE_0_BIT                                                                      , ..                                                                      )-                                                , ImageAspectFlags                                                 ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type ImageAspectFlags = ImageAspectFlagBits+ -- | VkImageAspectFlagBits - Bitmask specifying which aspects of an image are -- included in a view --@@ -43,16 +41,16 @@   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)  -- | 'IMAGE_ASPECT_COLOR_BIT' specifies the color aspect.-pattern IMAGE_ASPECT_COLOR_BIT = ImageAspectFlagBits 0x00000001+pattern IMAGE_ASPECT_COLOR_BIT              = ImageAspectFlagBits 0x00000001 -- | 'IMAGE_ASPECT_DEPTH_BIT' specifies the depth aspect.-pattern IMAGE_ASPECT_DEPTH_BIT = ImageAspectFlagBits 0x00000002+pattern IMAGE_ASPECT_DEPTH_BIT              = ImageAspectFlagBits 0x00000002 -- | 'IMAGE_ASPECT_STENCIL_BIT' specifies the stencil aspect.-pattern IMAGE_ASPECT_STENCIL_BIT = ImageAspectFlagBits 0x00000004+pattern IMAGE_ASPECT_STENCIL_BIT            = ImageAspectFlagBits 0x00000004 -- | 'IMAGE_ASPECT_METADATA_BIT' specifies the metadata aspect, used for -- sparse -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory sparse resource> -- operations.-pattern IMAGE_ASPECT_METADATA_BIT = ImageAspectFlagBits 0x00000008+pattern IMAGE_ASPECT_METADATA_BIT           = ImageAspectFlagBits 0x00000008 -- | 'IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT' specifies /memory plane/ 3. pattern IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = ImageAspectFlagBits 0x00000400 -- | 'IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT' specifies /memory plane/ 2.@@ -63,46 +61,45 @@ pattern IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = ImageAspectFlagBits 0x00000080 -- | 'IMAGE_ASPECT_PLANE_2_BIT' specifies plane 2 of a /multi-planar/ image -- format.-pattern IMAGE_ASPECT_PLANE_2_BIT = ImageAspectFlagBits 0x00000040+pattern IMAGE_ASPECT_PLANE_2_BIT            = ImageAspectFlagBits 0x00000040 -- | 'IMAGE_ASPECT_PLANE_1_BIT' specifies plane 1 of a /multi-planar/ image -- format.-pattern IMAGE_ASPECT_PLANE_1_BIT = ImageAspectFlagBits 0x00000020+pattern IMAGE_ASPECT_PLANE_1_BIT            = ImageAspectFlagBits 0x00000020 -- | 'IMAGE_ASPECT_PLANE_0_BIT' specifies plane 0 of a /multi-planar/ image -- format.-pattern IMAGE_ASPECT_PLANE_0_BIT = ImageAspectFlagBits 0x00000010+pattern IMAGE_ASPECT_PLANE_0_BIT            = ImageAspectFlagBits 0x00000010 -type ImageAspectFlags = ImageAspectFlagBits+conNameImageAspectFlagBits :: String+conNameImageAspectFlagBits = "ImageAspectFlagBits" +enumPrefixImageAspectFlagBits :: String+enumPrefixImageAspectFlagBits = "IMAGE_ASPECT_"++showTableImageAspectFlagBits :: [(ImageAspectFlagBits, String)]+showTableImageAspectFlagBits =+  [ (IMAGE_ASPECT_COLOR_BIT             , "COLOR_BIT")+  , (IMAGE_ASPECT_DEPTH_BIT             , "DEPTH_BIT")+  , (IMAGE_ASPECT_STENCIL_BIT           , "STENCIL_BIT")+  , (IMAGE_ASPECT_METADATA_BIT          , "METADATA_BIT")+  , (IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT, "MEMORY_PLANE_3_BIT_EXT")+  , (IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT, "MEMORY_PLANE_2_BIT_EXT")+  , (IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT, "MEMORY_PLANE_1_BIT_EXT")+  , (IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT, "MEMORY_PLANE_0_BIT_EXT")+  , (IMAGE_ASPECT_PLANE_2_BIT           , "PLANE_2_BIT")+  , (IMAGE_ASPECT_PLANE_1_BIT           , "PLANE_1_BIT")+  , (IMAGE_ASPECT_PLANE_0_BIT           , "PLANE_0_BIT")+  ]+ instance Show ImageAspectFlagBits where-  showsPrec p = \case-    IMAGE_ASPECT_COLOR_BIT -> showString "IMAGE_ASPECT_COLOR_BIT"-    IMAGE_ASPECT_DEPTH_BIT -> showString "IMAGE_ASPECT_DEPTH_BIT"-    IMAGE_ASPECT_STENCIL_BIT -> showString "IMAGE_ASPECT_STENCIL_BIT"-    IMAGE_ASPECT_METADATA_BIT -> showString "IMAGE_ASPECT_METADATA_BIT"-    IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT -> showString "IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT"-    IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT -> showString "IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT"-    IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT -> showString "IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT"-    IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT -> showString "IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT"-    IMAGE_ASPECT_PLANE_2_BIT -> showString "IMAGE_ASPECT_PLANE_2_BIT"-    IMAGE_ASPECT_PLANE_1_BIT -> showString "IMAGE_ASPECT_PLANE_1_BIT"-    IMAGE_ASPECT_PLANE_0_BIT -> showString "IMAGE_ASPECT_PLANE_0_BIT"-    ImageAspectFlagBits x -> showParen (p >= 11) (showString "ImageAspectFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixImageAspectFlagBits+                            showTableImageAspectFlagBits+                            conNameImageAspectFlagBits+                            (\(ImageAspectFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ImageAspectFlagBits where-  readPrec = parens (choose [("IMAGE_ASPECT_COLOR_BIT", pure IMAGE_ASPECT_COLOR_BIT)-                            , ("IMAGE_ASPECT_DEPTH_BIT", pure IMAGE_ASPECT_DEPTH_BIT)-                            , ("IMAGE_ASPECT_STENCIL_BIT", pure IMAGE_ASPECT_STENCIL_BIT)-                            , ("IMAGE_ASPECT_METADATA_BIT", pure IMAGE_ASPECT_METADATA_BIT)-                            , ("IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT", pure IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT)-                            , ("IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT", pure IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT)-                            , ("IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT", pure IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT)-                            , ("IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT", pure IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT)-                            , ("IMAGE_ASPECT_PLANE_2_BIT", pure IMAGE_ASPECT_PLANE_2_BIT)-                            , ("IMAGE_ASPECT_PLANE_1_BIT", pure IMAGE_ASPECT_PLANE_1_BIT)-                            , ("IMAGE_ASPECT_PLANE_0_BIT", pure IMAGE_ASPECT_PLANE_0_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ImageAspectFlagBits")-                       v <- step readPrec-                       pure (ImageAspectFlagBits v)))+  readPrec = enumReadPrec enumPrefixImageAspectFlagBits+                          showTableImageAspectFlagBits+                          conNameImageAspectFlagBits+                          ImageAspectFlagBits 
src/Vulkan/Core10/Enums/ImageCreateFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.ImageCreateFlagBits  ( ImageCreateFlagBits( IMAGE_CREATE_SPARSE_BINDING_BIT+-- No documentation found for Chapter "ImageCreateFlagBits"+module Vulkan.Core10.Enums.ImageCreateFlagBits  ( ImageCreateFlags+                                                , ImageCreateFlagBits( IMAGE_CREATE_SPARSE_BINDING_BIT                                                                      , IMAGE_CREATE_SPARSE_RESIDENCY_BIT                                                                      , IMAGE_CREATE_SPARSE_ALIASED_BIT                                                                      , IMAGE_CREATE_MUTABLE_FORMAT_BIT@@ -16,25 +18,21 @@                                                                      , IMAGE_CREATE_ALIAS_BIT                                                                      , ..                                                                      )-                                                , ImageCreateFlags                                                 ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type ImageCreateFlags = ImageCreateFlagBits+ -- | VkImageCreateFlagBits - Bitmask specifying additional parameters of an -- image --@@ -54,18 +52,18 @@  -- | 'IMAGE_CREATE_SPARSE_BINDING_BIT' specifies that the image will be -- backed using sparse memory binding.-pattern IMAGE_CREATE_SPARSE_BINDING_BIT = ImageCreateFlagBits 0x00000001+pattern IMAGE_CREATE_SPARSE_BINDING_BIT              = ImageCreateFlagBits 0x00000001 -- | 'IMAGE_CREATE_SPARSE_RESIDENCY_BIT' specifies that the image /can/ be -- partially backed using sparse memory binding. Images created with this -- flag /must/ also be created with the 'IMAGE_CREATE_SPARSE_BINDING_BIT' -- flag.-pattern IMAGE_CREATE_SPARSE_RESIDENCY_BIT = ImageCreateFlagBits 0x00000002+pattern IMAGE_CREATE_SPARSE_RESIDENCY_BIT            = ImageCreateFlagBits 0x00000002 -- | 'IMAGE_CREATE_SPARSE_ALIASED_BIT' specifies that the image will be -- backed using sparse memory binding with memory ranges that might also -- simultaneously be backing another image (or another portion of the same -- image). Images created with this flag /must/ also be created with the -- 'IMAGE_CREATE_SPARSE_BINDING_BIT' flag-pattern IMAGE_CREATE_SPARSE_ALIASED_BIT = ImageCreateFlagBits 0x00000004+pattern IMAGE_CREATE_SPARSE_ALIASED_BIT              = ImageCreateFlagBits 0x00000004 -- | 'IMAGE_CREATE_MUTABLE_FORMAT_BIT' specifies that the image /can/ be used -- to create a 'Vulkan.Core10.Handles.ImageView' with a different format -- from the image. For@@ -73,12 +71,12 @@ -- formats, 'IMAGE_CREATE_MUTABLE_FORMAT_BIT' specifies that a -- 'Vulkan.Core10.Handles.ImageView' can be created of a /plane/ of the -- image.-pattern IMAGE_CREATE_MUTABLE_FORMAT_BIT = ImageCreateFlagBits 0x00000008+pattern IMAGE_CREATE_MUTABLE_FORMAT_BIT              = ImageCreateFlagBits 0x00000008 -- | 'IMAGE_CREATE_CUBE_COMPATIBLE_BIT' specifies that the image /can/ be -- used to create a 'Vulkan.Core10.Handles.ImageView' of type -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE' or -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'.-pattern IMAGE_CREATE_CUBE_COMPATIBLE_BIT = ImageCreateFlagBits 0x00000010+pattern IMAGE_CREATE_CUBE_COMPATIBLE_BIT             = ImageCreateFlagBits 0x00000010 -- | 'IMAGE_CREATE_SUBSAMPLED_BIT_EXT' specifies that an image /can/ be in a -- subsampled format which /may/ be more optimal when written as an -- attachment by a render pass that has a fragment density map attachment.@@ -112,28 +110,28 @@ -- -- -   Image contents outside of the render area take on undefined values --     if the image is stored as a render pass attachment.-pattern IMAGE_CREATE_SUBSAMPLED_BIT_EXT = ImageCreateFlagBits 0x00004000+pattern IMAGE_CREATE_SUBSAMPLED_BIT_EXT              = ImageCreateFlagBits 0x00004000 -- | 'IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' specifies that -- an image with a depth or depth\/stencil format /can/ be used with custom -- sample locations when used as a depth\/stencil attachment. pattern IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = ImageCreateFlagBits 0x00001000 -- | 'IMAGE_CREATE_CORNER_SAMPLED_BIT_NV' specifies that the image is a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-images-corner-sampled corner-sampled image>.-pattern IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = ImageCreateFlagBits 0x00002000+pattern IMAGE_CREATE_CORNER_SAMPLED_BIT_NV           = ImageCreateFlagBits 0x00002000 -- | 'IMAGE_CREATE_DISJOINT_BIT' specifies that an image with a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format> -- /must/ have each plane separately bound to memory, rather than having a -- single memory binding for the whole image; the presence of this bit -- distinguishes a /disjoint image/ from an image without this bit set.-pattern IMAGE_CREATE_DISJOINT_BIT = ImageCreateFlagBits 0x00000200+pattern IMAGE_CREATE_DISJOINT_BIT                    = ImageCreateFlagBits 0x00000200 -- | 'IMAGE_CREATE_PROTECTED_BIT' specifies that the image is a protected -- image.-pattern IMAGE_CREATE_PROTECTED_BIT = ImageCreateFlagBits 0x00000800+pattern IMAGE_CREATE_PROTECTED_BIT                   = ImageCreateFlagBits 0x00000800 -- | 'IMAGE_CREATE_EXTENDED_USAGE_BIT' specifies that the image /can/ be -- created with usage flags that are not supported for the format the image -- is created with but are supported for at least one format a -- 'Vulkan.Core10.Handles.ImageView' created from the image /can/ have.-pattern IMAGE_CREATE_EXTENDED_USAGE_BIT = ImageCreateFlagBits 0x00000100+pattern IMAGE_CREATE_EXTENDED_USAGE_BIT              = ImageCreateFlagBits 0x00000100 -- | 'IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT' specifies that the image -- having a compressed format /can/ be used to create a -- 'Vulkan.Core10.Handles.ImageView' with an uncompressed format where each@@ -144,7 +142,7 @@ -- used to create a 'Vulkan.Core10.Handles.ImageView' of type -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or -- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'.-pattern IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = ImageCreateFlagBits 0x00000020+pattern IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT         = ImageCreateFlagBits 0x00000020 -- | 'IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT' specifies that the image -- /can/ be used with a non-zero value of the -- @splitInstanceBindRegionCount@ member of a@@ -171,48 +169,43 @@ -- 'Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV' -- structure whose @handleTypes@ member is not @0@, it is as if -- 'IMAGE_CREATE_ALIAS_BIT' is set.-pattern IMAGE_CREATE_ALIAS_BIT = ImageCreateFlagBits 0x00000400+pattern IMAGE_CREATE_ALIAS_BIT                       = ImageCreateFlagBits 0x00000400 -type ImageCreateFlags = ImageCreateFlagBits+conNameImageCreateFlagBits :: String+conNameImageCreateFlagBits = "ImageCreateFlagBits" +enumPrefixImageCreateFlagBits :: String+enumPrefixImageCreateFlagBits = "IMAGE_CREATE_"++showTableImageCreateFlagBits :: [(ImageCreateFlagBits, String)]+showTableImageCreateFlagBits =+  [ (IMAGE_CREATE_SPARSE_BINDING_BIT             , "SPARSE_BINDING_BIT")+  , (IMAGE_CREATE_SPARSE_RESIDENCY_BIT           , "SPARSE_RESIDENCY_BIT")+  , (IMAGE_CREATE_SPARSE_ALIASED_BIT             , "SPARSE_ALIASED_BIT")+  , (IMAGE_CREATE_MUTABLE_FORMAT_BIT             , "MUTABLE_FORMAT_BIT")+  , (IMAGE_CREATE_CUBE_COMPATIBLE_BIT            , "CUBE_COMPATIBLE_BIT")+  , (IMAGE_CREATE_SUBSAMPLED_BIT_EXT             , "SUBSAMPLED_BIT_EXT")+  , (IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT, "SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT")+  , (IMAGE_CREATE_CORNER_SAMPLED_BIT_NV          , "CORNER_SAMPLED_BIT_NV")+  , (IMAGE_CREATE_DISJOINT_BIT                   , "DISJOINT_BIT")+  , (IMAGE_CREATE_PROTECTED_BIT                  , "PROTECTED_BIT")+  , (IMAGE_CREATE_EXTENDED_USAGE_BIT             , "EXTENDED_USAGE_BIT")+  , (IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, "BLOCK_TEXEL_VIEW_COMPATIBLE_BIT")+  , (IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT        , "2D_ARRAY_COMPATIBLE_BIT")+  , (IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT, "SPLIT_INSTANCE_BIND_REGIONS_BIT")+  , (IMAGE_CREATE_ALIAS_BIT                      , "ALIAS_BIT")+  ]+ instance Show ImageCreateFlagBits where-  showsPrec p = \case-    IMAGE_CREATE_SPARSE_BINDING_BIT -> showString "IMAGE_CREATE_SPARSE_BINDING_BIT"-    IMAGE_CREATE_SPARSE_RESIDENCY_BIT -> showString "IMAGE_CREATE_SPARSE_RESIDENCY_BIT"-    IMAGE_CREATE_SPARSE_ALIASED_BIT -> showString "IMAGE_CREATE_SPARSE_ALIASED_BIT"-    IMAGE_CREATE_MUTABLE_FORMAT_BIT -> showString "IMAGE_CREATE_MUTABLE_FORMAT_BIT"-    IMAGE_CREATE_CUBE_COMPATIBLE_BIT -> showString "IMAGE_CREATE_CUBE_COMPATIBLE_BIT"-    IMAGE_CREATE_SUBSAMPLED_BIT_EXT -> showString "IMAGE_CREATE_SUBSAMPLED_BIT_EXT"-    IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT -> showString "IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"-    IMAGE_CREATE_CORNER_SAMPLED_BIT_NV -> showString "IMAGE_CREATE_CORNER_SAMPLED_BIT_NV"-    IMAGE_CREATE_DISJOINT_BIT -> showString "IMAGE_CREATE_DISJOINT_BIT"-    IMAGE_CREATE_PROTECTED_BIT -> showString "IMAGE_CREATE_PROTECTED_BIT"-    IMAGE_CREATE_EXTENDED_USAGE_BIT -> showString "IMAGE_CREATE_EXTENDED_USAGE_BIT"-    IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT -> showString "IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"-    IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT -> showString "IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"-    IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT -> showString "IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"-    IMAGE_CREATE_ALIAS_BIT -> showString "IMAGE_CREATE_ALIAS_BIT"-    ImageCreateFlagBits x -> showParen (p >= 11) (showString "ImageCreateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixImageCreateFlagBits+                            showTableImageCreateFlagBits+                            conNameImageCreateFlagBits+                            (\(ImageCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ImageCreateFlagBits where-  readPrec = parens (choose [("IMAGE_CREATE_SPARSE_BINDING_BIT", pure IMAGE_CREATE_SPARSE_BINDING_BIT)-                            , ("IMAGE_CREATE_SPARSE_RESIDENCY_BIT", pure IMAGE_CREATE_SPARSE_RESIDENCY_BIT)-                            , ("IMAGE_CREATE_SPARSE_ALIASED_BIT", pure IMAGE_CREATE_SPARSE_ALIASED_BIT)-                            , ("IMAGE_CREATE_MUTABLE_FORMAT_BIT", pure IMAGE_CREATE_MUTABLE_FORMAT_BIT)-                            , ("IMAGE_CREATE_CUBE_COMPATIBLE_BIT", pure IMAGE_CREATE_CUBE_COMPATIBLE_BIT)-                            , ("IMAGE_CREATE_SUBSAMPLED_BIT_EXT", pure IMAGE_CREATE_SUBSAMPLED_BIT_EXT)-                            , ("IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT", pure IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT)-                            , ("IMAGE_CREATE_CORNER_SAMPLED_BIT_NV", pure IMAGE_CREATE_CORNER_SAMPLED_BIT_NV)-                            , ("IMAGE_CREATE_DISJOINT_BIT", pure IMAGE_CREATE_DISJOINT_BIT)-                            , ("IMAGE_CREATE_PROTECTED_BIT", pure IMAGE_CREATE_PROTECTED_BIT)-                            , ("IMAGE_CREATE_EXTENDED_USAGE_BIT", pure IMAGE_CREATE_EXTENDED_USAGE_BIT)-                            , ("IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT", pure IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT)-                            , ("IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT", pure IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT)-                            , ("IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT", pure IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT)-                            , ("IMAGE_CREATE_ALIAS_BIT", pure IMAGE_CREATE_ALIAS_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ImageCreateFlagBits")-                       v <- step readPrec-                       pure (ImageCreateFlagBits v)))+  readPrec = enumReadPrec enumPrefixImageCreateFlagBits+                          showTableImageCreateFlagBits+                          conNameImageCreateFlagBits+                          ImageCreateFlagBits 
src/Vulkan/Core10/Enums/ImageCreateFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.ImageCreateFlagBits  ( ImageCreateFlagBits-                                                , ImageCreateFlags+-- No documentation found for Chapter "ImageCreateFlagBits"+module Vulkan.Core10.Enums.ImageCreateFlagBits  ( ImageCreateFlags+                                                , ImageCreateFlagBits                                                 ) where   -data ImageCreateFlagBits- type ImageCreateFlags = ImageCreateFlagBits++data ImageCreateFlagBits 
src/Vulkan/Core10/Enums/ImageLayout.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "ImageLayout" module Vulkan.Core10.Enums.ImageLayout  (ImageLayout( IMAGE_LAYOUT_UNDEFINED                                                     , IMAGE_LAYOUT_GENERAL                                                     , IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL@@ -21,19 +22,13 @@                                                     , ..                                                     )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkImageLayout - Layout of image and image subresources --@@ -91,15 +86,15 @@ -- 'Vulkan.Core10.Pass.AttachmentDescription', or as the @oldLayout@ in an -- image transition. When transitioning out of this layout, the contents of -- the memory are not guaranteed to be preserved.-pattern IMAGE_LAYOUT_UNDEFINED = ImageLayout 0+pattern IMAGE_LAYOUT_UNDEFINED                        = ImageLayout 0 -- | 'IMAGE_LAYOUT_GENERAL' supports all types of device access.-pattern IMAGE_LAYOUT_GENERAL = ImageLayout 1+pattern IMAGE_LAYOUT_GENERAL                          = ImageLayout 1 -- | 'IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL' /must/ only be used as a color -- or resolve attachment in a 'Vulkan.Core10.Handles.Framebuffer'. This -- layout is valid only for image subresources of images created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT' -- usage bit enabled.-pattern IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = ImageLayout 2+pattern IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL         = ImageLayout 2 -- | 'IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL' specifies a layout for -- both the depth and stencil aspects of a depth\/stencil format image -- allowing read and write access as a depth\/stencil attachment. It is@@ -112,7 +107,7 @@ -- as a sampled image, combined image\/sampler, or input attachment. It is -- equivalent to 'IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' and -- 'IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'.-pattern IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = ImageLayout 4+pattern IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL  = ImageLayout 4 -- | 'IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL' specifies a layout allowing -- read-only access in a shader as a sampled image, combined -- image\/sampler, or input attachment. This layout is valid only for image@@ -120,7 +115,7 @@ -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT' -- usage bit enabled.-pattern IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = ImageLayout 5+pattern IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL         = ImageLayout 5 -- | 'IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL' /must/ only be used as a source -- image of a transfer command (see the definition of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer >).@@ -128,13 +123,13 @@ -- the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT' -- usage bit enabled.-pattern IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = ImageLayout 6+pattern IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL             = ImageLayout 6 -- | 'IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL' /must/ only be used as a destination -- image of a transfer command. This layout is valid only for image -- subresources of images created with the -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' -- usage bit enabled.-pattern IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = ImageLayout 7+pattern IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL             = ImageLayout 7 -- | 'IMAGE_LAYOUT_PREINITIALIZED' does not support device access. This -- layout /must/ only be used as the @initialLayout@ member of -- 'Vulkan.Core10.Image.ImageCreateInfo' or@@ -148,7 +143,7 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource linear> -- images because there is not a standard layout defined for -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL' images.-pattern IMAGE_LAYOUT_PREINITIALIZED = ImageLayout 8+pattern IMAGE_LAYOUT_PREINITIALIZED                   = ImageLayout 8 -- | 'IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT' /must/ only be used as a -- fragment density map attachment in a 'Vulkan.Core10.Handles.RenderPass'. -- This layout is valid only for image subresources of images created with@@ -157,35 +152,35 @@ -- usage bit enabled. pattern IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = ImageLayout 1000218000 -- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV"-pattern IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = ImageLayout 1000164003+pattern IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV          = ImageLayout 1000164003 -- | 'IMAGE_LAYOUT_SHARED_PRESENT_KHR' is valid only for shared presentable -- images, and /must/ be used for any usage the image supports.-pattern IMAGE_LAYOUT_SHARED_PRESENT_KHR = ImageLayout 1000111000+pattern IMAGE_LAYOUT_SHARED_PRESENT_KHR               = ImageLayout 1000111000 -- | 'IMAGE_LAYOUT_PRESENT_SRC_KHR' /must/ only be used for presenting a -- presentable image for display. A swapchain’s image /must/ be -- transitioned to this layout before calling -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR', and /must/ be -- transitioned away from this layout after calling -- 'Vulkan.Extensions.VK_KHR_swapchain.acquireNextImageKHR'.-pattern IMAGE_LAYOUT_PRESENT_SRC_KHR = ImageLayout 1000001002+pattern IMAGE_LAYOUT_PRESENT_SRC_KHR                  = ImageLayout 1000001002 -- | 'IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL' specifies a layout for the -- stencil aspect of a depth\/stencil format image allowing read-only -- access as a stencil attachment or in shaders as a sampled image, -- combined image\/sampler, or input attachment.-pattern IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = ImageLayout 1000241003+pattern IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL        = ImageLayout 1000241003 -- | 'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL' specifies a layout for the -- stencil aspect of a depth\/stencil format image allowing read and write -- access as a stencil attachment.-pattern IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = ImageLayout 1000241002+pattern IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL       = ImageLayout 1000241002 -- | 'IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' specifies a layout for the depth -- aspect of a depth\/stencil format image allowing read-only access as a -- depth attachment or in shaders as a sampled image, combined -- image\/sampler, or input attachment.-pattern IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = ImageLayout 1000241001+pattern IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL          = ImageLayout 1000241001 -- | 'IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL' specifies a layout for the depth -- aspect of a depth\/stencil format image allowing read and write access -- as a depth attachment.-pattern IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = ImageLayout 1000241000+pattern IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL         = ImageLayout 1000241000 -- | 'IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL' specifies a -- layout for depth\/stencil format images allowing read and write access -- to the depth aspect as a depth attachment, and read only access to the@@ -222,52 +217,39 @@              IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,              IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL :: ImageLayout #-} +conNameImageLayout :: String+conNameImageLayout = "ImageLayout"++enumPrefixImageLayout :: String+enumPrefixImageLayout = "IMAGE_LAYOUT_"++showTableImageLayout :: [(ImageLayout, String)]+showTableImageLayout =+  [ (IMAGE_LAYOUT_UNDEFINED                       , "UNDEFINED")+  , (IMAGE_LAYOUT_GENERAL                         , "GENERAL")+  , (IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL        , "COLOR_ATTACHMENT_OPTIMAL")+  , (IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, "DEPTH_STENCIL_ATTACHMENT_OPTIMAL")+  , (IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL , "DEPTH_STENCIL_READ_ONLY_OPTIMAL")+  , (IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL        , "SHADER_READ_ONLY_OPTIMAL")+  , (IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL            , "TRANSFER_SRC_OPTIMAL")+  , (IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL            , "TRANSFER_DST_OPTIMAL")+  , (IMAGE_LAYOUT_PREINITIALIZED                  , "PREINITIALIZED")+  , (IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT, "FRAGMENT_DENSITY_MAP_OPTIMAL_EXT")+  , (IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV         , "SHADING_RATE_OPTIMAL_NV")+  , (IMAGE_LAYOUT_SHARED_PRESENT_KHR              , "SHARED_PRESENT_KHR")+  , (IMAGE_LAYOUT_PRESENT_SRC_KHR                 , "PRESENT_SRC_KHR")+  , (IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL       , "STENCIL_READ_ONLY_OPTIMAL")+  , (IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL      , "STENCIL_ATTACHMENT_OPTIMAL")+  , (IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL         , "DEPTH_READ_ONLY_OPTIMAL")+  , (IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL        , "DEPTH_ATTACHMENT_OPTIMAL")+  , (IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, "DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL")+  , (IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, "DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL")+  ]+ instance Show ImageLayout where-  showsPrec p = \case-    IMAGE_LAYOUT_UNDEFINED -> showString "IMAGE_LAYOUT_UNDEFINED"-    IMAGE_LAYOUT_GENERAL -> showString "IMAGE_LAYOUT_GENERAL"-    IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL -> showString "IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL"-    IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL -> showString "IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL"-    IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL -> showString "IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL"-    IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL -> showString "IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL"-    IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL -> showString "IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"-    IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL -> showString "IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"-    IMAGE_LAYOUT_PREINITIALIZED -> showString "IMAGE_LAYOUT_PREINITIALIZED"-    IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT -> showString "IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT"-    IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV -> showString "IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV"-    IMAGE_LAYOUT_SHARED_PRESENT_KHR -> showString "IMAGE_LAYOUT_SHARED_PRESENT_KHR"-    IMAGE_LAYOUT_PRESENT_SRC_KHR -> showString "IMAGE_LAYOUT_PRESENT_SRC_KHR"-    IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL -> showString "IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL"-    IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL -> showString "IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL"-    IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL -> showString "IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL"-    IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL -> showString "IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL"-    IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL -> showString "IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"-    IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL -> showString "IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"-    ImageLayout x -> showParen (p >= 11) (showString "ImageLayout " . showsPrec 11 x)+  showsPrec =+    enumShowsPrec enumPrefixImageLayout showTableImageLayout conNameImageLayout (\(ImageLayout x) -> x) (showsPrec 11)  instance Read ImageLayout where-  readPrec = parens (choose [("IMAGE_LAYOUT_UNDEFINED", pure IMAGE_LAYOUT_UNDEFINED)-                            , ("IMAGE_LAYOUT_GENERAL", pure IMAGE_LAYOUT_GENERAL)-                            , ("IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL", pure IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)-                            , ("IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL", pure IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL)-                            , ("IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL", pure IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL)-                            , ("IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL", pure IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)-                            , ("IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL", pure IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL)-                            , ("IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL", pure IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL)-                            , ("IMAGE_LAYOUT_PREINITIALIZED", pure IMAGE_LAYOUT_PREINITIALIZED)-                            , ("IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT", pure IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT)-                            , ("IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV", pure IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV)-                            , ("IMAGE_LAYOUT_SHARED_PRESENT_KHR", pure IMAGE_LAYOUT_SHARED_PRESENT_KHR)-                            , ("IMAGE_LAYOUT_PRESENT_SRC_KHR", pure IMAGE_LAYOUT_PRESENT_SRC_KHR)-                            , ("IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL", pure IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL)-                            , ("IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL", pure IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL)-                            , ("IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL", pure IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL)-                            , ("IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL", pure IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL)-                            , ("IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL", pure IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL)-                            , ("IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL", pure IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL)]-                     +++-                     prec 10 (do-                       expectP (Ident "ImageLayout")-                       v <- step readPrec-                       pure (ImageLayout v)))+  readPrec = enumReadPrec enumPrefixImageLayout showTableImageLayout conNameImageLayout ImageLayout 
src/Vulkan/Core10/Enums/ImageLayout.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "ImageLayout" module Vulkan.Core10.Enums.ImageLayout  (ImageLayout) where  
src/Vulkan/Core10/Enums/ImageTiling.hs view
@@ -1,23 +1,18 @@ {-# language CPP #-}+-- No documentation found for Chapter "ImageTiling" module Vulkan.Core10.Enums.ImageTiling  (ImageTiling( IMAGE_TILING_OPTIMAL                                                     , IMAGE_TILING_LINEAR                                                     , IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT                                                     , ..                                                     )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkImageTiling - Specifies the tiling arrangement of data in an image --@@ -35,10 +30,10 @@ -- | 'IMAGE_TILING_OPTIMAL' specifies optimal tiling (texels are laid out in -- an implementation-dependent arrangement, for more optimal memory -- access).-pattern IMAGE_TILING_OPTIMAL = ImageTiling 0+pattern IMAGE_TILING_OPTIMAL                 = ImageTiling 0 -- | 'IMAGE_TILING_LINEAR' specifies linear tiling (texels are laid out in -- memory in row-major order, possibly with some padding on each row).-pattern IMAGE_TILING_LINEAR = ImageTiling 1+pattern IMAGE_TILING_LINEAR                  = ImageTiling 1 -- | 'IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT' indicates that the image’s tiling -- is defined by a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifier Linux DRM format modifier>.@@ -53,20 +48,23 @@              IMAGE_TILING_LINEAR,              IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT :: ImageTiling #-} +conNameImageTiling :: String+conNameImageTiling = "ImageTiling"++enumPrefixImageTiling :: String+enumPrefixImageTiling = "IMAGE_TILING_"++showTableImageTiling :: [(ImageTiling, String)]+showTableImageTiling =+  [ (IMAGE_TILING_OPTIMAL                , "OPTIMAL")+  , (IMAGE_TILING_LINEAR                 , "LINEAR")+  , (IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, "DRM_FORMAT_MODIFIER_EXT")+  ]+ instance Show ImageTiling where-  showsPrec p = \case-    IMAGE_TILING_OPTIMAL -> showString "IMAGE_TILING_OPTIMAL"-    IMAGE_TILING_LINEAR -> showString "IMAGE_TILING_LINEAR"-    IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT -> showString "IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT"-    ImageTiling x -> showParen (p >= 11) (showString "ImageTiling " . showsPrec 11 x)+  showsPrec =+    enumShowsPrec enumPrefixImageTiling showTableImageTiling conNameImageTiling (\(ImageTiling x) -> x) (showsPrec 11)  instance Read ImageTiling where-  readPrec = parens (choose [("IMAGE_TILING_OPTIMAL", pure IMAGE_TILING_OPTIMAL)-                            , ("IMAGE_TILING_LINEAR", pure IMAGE_TILING_LINEAR)-                            , ("IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT", pure IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ImageTiling")-                       v <- step readPrec-                       pure (ImageTiling v)))+  readPrec = enumReadPrec enumPrefixImageTiling showTableImageTiling conNameImageTiling ImageTiling 
src/Vulkan/Core10/Enums/ImageTiling.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "ImageTiling" module Vulkan.Core10.Enums.ImageTiling  (ImageTiling) where  
src/Vulkan/Core10/Enums/ImageType.hs view
@@ -1,23 +1,18 @@ {-# language CPP #-}+-- No documentation found for Chapter "ImageType" module Vulkan.Core10.Enums.ImageType  (ImageType( IMAGE_TYPE_1D                                                 , IMAGE_TYPE_2D                                                 , IMAGE_TYPE_3D                                                 , ..                                                 )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkImageType - Specifies the type of an image object --@@ -42,20 +37,19 @@              IMAGE_TYPE_2D,              IMAGE_TYPE_3D :: ImageType #-} +conNameImageType :: String+conNameImageType = "ImageType"++enumPrefixImageType :: String+enumPrefixImageType = "IMAGE_TYPE_"++showTableImageType :: [(ImageType, String)]+showTableImageType = [(IMAGE_TYPE_1D, "1D"), (IMAGE_TYPE_2D, "2D"), (IMAGE_TYPE_3D, "3D")]+ instance Show ImageType where-  showsPrec p = \case-    IMAGE_TYPE_1D -> showString "IMAGE_TYPE_1D"-    IMAGE_TYPE_2D -> showString "IMAGE_TYPE_2D"-    IMAGE_TYPE_3D -> showString "IMAGE_TYPE_3D"-    ImageType x -> showParen (p >= 11) (showString "ImageType " . showsPrec 11 x)+  showsPrec =+    enumShowsPrec enumPrefixImageType showTableImageType conNameImageType (\(ImageType x) -> x) (showsPrec 11)  instance Read ImageType where-  readPrec = parens (choose [("IMAGE_TYPE_1D", pure IMAGE_TYPE_1D)-                            , ("IMAGE_TYPE_2D", pure IMAGE_TYPE_2D)-                            , ("IMAGE_TYPE_3D", pure IMAGE_TYPE_3D)]-                     +++-                     prec 10 (do-                       expectP (Ident "ImageType")-                       v <- step readPrec-                       pure (ImageType v)))+  readPrec = enumReadPrec enumPrefixImageType showTableImageType conNameImageType ImageType 
src/Vulkan/Core10/Enums/ImageType.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "ImageType" module Vulkan.Core10.Enums.ImageType  (ImageType) where  
src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.ImageUsageFlagBits  ( ImageUsageFlagBits( IMAGE_USAGE_TRANSFER_SRC_BIT+-- No documentation found for Chapter "ImageUsageFlagBits"+module Vulkan.Core10.Enums.ImageUsageFlagBits  ( ImageUsageFlags+                                               , ImageUsageFlagBits( IMAGE_USAGE_TRANSFER_SRC_BIT                                                                    , IMAGE_USAGE_TRANSFER_DST_BIT                                                                    , IMAGE_USAGE_SAMPLED_BIT                                                                    , IMAGE_USAGE_STORAGE_BIT@@ -11,25 +13,21 @@                                                                    , IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV                                                                    , ..                                                                    )-                                               , ImageUsageFlags                                                ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type ImageUsageFlags = ImageUsageFlagBits+ -- | VkImageUsageFlagBits - Bitmask specifying intended usage of an image -- -- = See Also@@ -40,26 +38,26 @@  -- | 'IMAGE_USAGE_TRANSFER_SRC_BIT' specifies that the image /can/ be used as -- the source of a transfer command.-pattern IMAGE_USAGE_TRANSFER_SRC_BIT = ImageUsageFlagBits 0x00000001+pattern IMAGE_USAGE_TRANSFER_SRC_BIT             = ImageUsageFlagBits 0x00000001 -- | 'IMAGE_USAGE_TRANSFER_DST_BIT' specifies that the image /can/ be used as -- the destination of a transfer command.-pattern IMAGE_USAGE_TRANSFER_DST_BIT = ImageUsageFlagBits 0x00000002+pattern IMAGE_USAGE_TRANSFER_DST_BIT             = ImageUsageFlagBits 0x00000002 -- | 'IMAGE_USAGE_SAMPLED_BIT' specifies that the image /can/ be used to -- create a 'Vulkan.Core10.Handles.ImageView' suitable for occupying a -- 'Vulkan.Core10.Handles.DescriptorSet' slot either of type -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE' or -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER', -- and be sampled by a shader.-pattern IMAGE_USAGE_SAMPLED_BIT = ImageUsageFlagBits 0x00000004+pattern IMAGE_USAGE_SAMPLED_BIT                  = ImageUsageFlagBits 0x00000004 -- | 'IMAGE_USAGE_STORAGE_BIT' specifies that the image /can/ be used to -- create a 'Vulkan.Core10.Handles.ImageView' suitable for occupying a -- 'Vulkan.Core10.Handles.DescriptorSet' slot of type -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'.-pattern IMAGE_USAGE_STORAGE_BIT = ImageUsageFlagBits 0x00000008+pattern IMAGE_USAGE_STORAGE_BIT                  = ImageUsageFlagBits 0x00000008 -- | 'IMAGE_USAGE_COLOR_ATTACHMENT_BIT' specifies that the image /can/ be -- used to create a 'Vulkan.Core10.Handles.ImageView' suitable for use as a -- color or resolve attachment in a 'Vulkan.Core10.Handles.Framebuffer'.-pattern IMAGE_USAGE_COLOR_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000010+pattern IMAGE_USAGE_COLOR_ATTACHMENT_BIT         = ImageUsageFlagBits 0x00000010 -- | 'IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' specifies that the image -- /can/ be used to create a 'Vulkan.Core10.Handles.ImageView' suitable for -- use as a depth\/stencil or depth\/stencil resolve attachment in a@@ -73,52 +71,50 @@ -- for more detail). This bit /can/ be set for any image that /can/ be used -- to create a 'Vulkan.Core10.Handles.ImageView' suitable for use as a -- color, resolve, depth\/stencil, or input attachment.-pattern IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000040+pattern IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT     = ImageUsageFlagBits 0x00000040 -- | 'IMAGE_USAGE_INPUT_ATTACHMENT_BIT' specifies that the image /can/ be -- used to create a 'Vulkan.Core10.Handles.ImageView' suitable for -- occupying 'Vulkan.Core10.Handles.DescriptorSet' slot of type -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'; -- be read from a shader as an input attachment; and be used as an input -- attachment in a framebuffer.-pattern IMAGE_USAGE_INPUT_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000080+pattern IMAGE_USAGE_INPUT_ATTACHMENT_BIT         = ImageUsageFlagBits 0x00000080 -- | 'IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that the image -- /can/ be used to create a 'Vulkan.Core10.Handles.ImageView' suitable for -- use as a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops fragment density map image>. pattern IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = ImageUsageFlagBits 0x00000200 -- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV"-pattern IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = ImageUsageFlagBits 0x00000100+pattern IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV    = ImageUsageFlagBits 0x00000100 -type ImageUsageFlags = ImageUsageFlagBits+conNameImageUsageFlagBits :: String+conNameImageUsageFlagBits = "ImageUsageFlagBits" +enumPrefixImageUsageFlagBits :: String+enumPrefixImageUsageFlagBits = "IMAGE_USAGE_"++showTableImageUsageFlagBits :: [(ImageUsageFlagBits, String)]+showTableImageUsageFlagBits =+  [ (IMAGE_USAGE_TRANSFER_SRC_BIT            , "TRANSFER_SRC_BIT")+  , (IMAGE_USAGE_TRANSFER_DST_BIT            , "TRANSFER_DST_BIT")+  , (IMAGE_USAGE_SAMPLED_BIT                 , "SAMPLED_BIT")+  , (IMAGE_USAGE_STORAGE_BIT                 , "STORAGE_BIT")+  , (IMAGE_USAGE_COLOR_ATTACHMENT_BIT        , "COLOR_ATTACHMENT_BIT")+  , (IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, "DEPTH_STENCIL_ATTACHMENT_BIT")+  , (IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT    , "TRANSIENT_ATTACHMENT_BIT")+  , (IMAGE_USAGE_INPUT_ATTACHMENT_BIT        , "INPUT_ATTACHMENT_BIT")+  , (IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT, "FRAGMENT_DENSITY_MAP_BIT_EXT")+  , (IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV   , "SHADING_RATE_IMAGE_BIT_NV")+  ]+ instance Show ImageUsageFlagBits where-  showsPrec p = \case-    IMAGE_USAGE_TRANSFER_SRC_BIT -> showString "IMAGE_USAGE_TRANSFER_SRC_BIT"-    IMAGE_USAGE_TRANSFER_DST_BIT -> showString "IMAGE_USAGE_TRANSFER_DST_BIT"-    IMAGE_USAGE_SAMPLED_BIT -> showString "IMAGE_USAGE_SAMPLED_BIT"-    IMAGE_USAGE_STORAGE_BIT -> showString "IMAGE_USAGE_STORAGE_BIT"-    IMAGE_USAGE_COLOR_ATTACHMENT_BIT -> showString "IMAGE_USAGE_COLOR_ATTACHMENT_BIT"-    IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT -> showString "IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"-    IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT -> showString "IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"-    IMAGE_USAGE_INPUT_ATTACHMENT_BIT -> showString "IMAGE_USAGE_INPUT_ATTACHMENT_BIT"-    IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT -> showString "IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT"-    IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV -> showString "IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV"-    ImageUsageFlagBits x -> showParen (p >= 11) (showString "ImageUsageFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixImageUsageFlagBits+                            showTableImageUsageFlagBits+                            conNameImageUsageFlagBits+                            (\(ImageUsageFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ImageUsageFlagBits where-  readPrec = parens (choose [("IMAGE_USAGE_TRANSFER_SRC_BIT", pure IMAGE_USAGE_TRANSFER_SRC_BIT)-                            , ("IMAGE_USAGE_TRANSFER_DST_BIT", pure IMAGE_USAGE_TRANSFER_DST_BIT)-                            , ("IMAGE_USAGE_SAMPLED_BIT", pure IMAGE_USAGE_SAMPLED_BIT)-                            , ("IMAGE_USAGE_STORAGE_BIT", pure IMAGE_USAGE_STORAGE_BIT)-                            , ("IMAGE_USAGE_COLOR_ATTACHMENT_BIT", pure IMAGE_USAGE_COLOR_ATTACHMENT_BIT)-                            , ("IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT", pure IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)-                            , ("IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT", pure IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT)-                            , ("IMAGE_USAGE_INPUT_ATTACHMENT_BIT", pure IMAGE_USAGE_INPUT_ATTACHMENT_BIT)-                            , ("IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT", pure IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT)-                            , ("IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV", pure IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "ImageUsageFlagBits")-                       v <- step readPrec-                       pure (ImageUsageFlagBits v)))+  readPrec =+    enumReadPrec enumPrefixImageUsageFlagBits showTableImageUsageFlagBits conNameImageUsageFlagBits ImageUsageFlagBits 
src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.ImageUsageFlagBits  ( ImageUsageFlagBits-                                               , ImageUsageFlags+-- No documentation found for Chapter "ImageUsageFlagBits"+module Vulkan.Core10.Enums.ImageUsageFlagBits  ( ImageUsageFlags+                                               , ImageUsageFlagBits                                                ) where   -data ImageUsageFlagBits- type ImageUsageFlags = ImageUsageFlagBits++data ImageUsageFlagBits 
src/Vulkan/Core10/Enums/ImageViewCreateFlagBits.hs view
@@ -1,27 +1,25 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.ImageViewCreateFlagBits  ( ImageViewCreateFlagBits( IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT+-- No documentation found for Chapter "ImageViewCreateFlagBits"+module Vulkan.Core10.Enums.ImageViewCreateFlagBits  ( ImageViewCreateFlags+                                                    , ImageViewCreateFlagBits( IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT                                                                              , IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT                                                                              , ..                                                                              )-                                                    , ImageViewCreateFlags                                                     ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type ImageViewCreateFlags = ImageViewCreateFlagBits+ -- | VkImageViewCreateFlagBits - Bitmask specifying additional parameters of -- an image view --@@ -39,22 +37,30 @@ -- | 'IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT' specifies that -- the fragment density map will be read by device during -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'-pattern IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = ImageViewCreateFlagBits 0x00000001+pattern IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT  = ImageViewCreateFlagBits 0x00000001 -type ImageViewCreateFlags = ImageViewCreateFlagBits+conNameImageViewCreateFlagBits :: String+conNameImageViewCreateFlagBits = "ImageViewCreateFlagBits" +enumPrefixImageViewCreateFlagBits :: String+enumPrefixImageViewCreateFlagBits = "IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_D"++showTableImageViewCreateFlagBits :: [(ImageViewCreateFlagBits, String)]+showTableImageViewCreateFlagBits =+  [ (IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT, "EFERRED_BIT_EXT")+  , (IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT , "YNAMIC_BIT_EXT")+  ]+ instance Show ImageViewCreateFlagBits where-  showsPrec p = \case-    IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT -> showString "IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT"-    IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT -> showString "IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT"-    ImageViewCreateFlagBits x -> showParen (p >= 11) (showString "ImageViewCreateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixImageViewCreateFlagBits+                            showTableImageViewCreateFlagBits+                            conNameImageViewCreateFlagBits+                            (\(ImageViewCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ImageViewCreateFlagBits where-  readPrec = parens (choose [("IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT", pure IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT)-                            , ("IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT", pure IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ImageViewCreateFlagBits")-                       v <- step readPrec-                       pure (ImageViewCreateFlagBits v)))+  readPrec = enumReadPrec enumPrefixImageViewCreateFlagBits+                          showTableImageViewCreateFlagBits+                          conNameImageViewCreateFlagBits+                          ImageViewCreateFlagBits 
src/Vulkan/Core10/Enums/ImageViewType.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "ImageViewType" module Vulkan.Core10.Enums.ImageViewType  (ImageViewType( IMAGE_VIEW_TYPE_1D                                                         , IMAGE_VIEW_TYPE_2D                                                         , IMAGE_VIEW_TYPE_3D@@ -9,19 +10,13 @@                                                         , ..                                                         )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkImageViewType - Image view types --@@ -43,17 +38,17 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_1D"-pattern IMAGE_VIEW_TYPE_1D = ImageViewType 0+pattern IMAGE_VIEW_TYPE_1D         = ImageViewType 0 -- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_2D"-pattern IMAGE_VIEW_TYPE_2D = ImageViewType 1+pattern IMAGE_VIEW_TYPE_2D         = ImageViewType 1 -- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_3D"-pattern IMAGE_VIEW_TYPE_3D = ImageViewType 2+pattern IMAGE_VIEW_TYPE_3D         = ImageViewType 2 -- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_CUBE"-pattern IMAGE_VIEW_TYPE_CUBE = ImageViewType 3+pattern IMAGE_VIEW_TYPE_CUBE       = ImageViewType 3 -- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_1D_ARRAY"-pattern IMAGE_VIEW_TYPE_1D_ARRAY = ImageViewType 4+pattern IMAGE_VIEW_TYPE_1D_ARRAY   = ImageViewType 4 -- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_2D_ARRAY"-pattern IMAGE_VIEW_TYPE_2D_ARRAY = ImageViewType 5+pattern IMAGE_VIEW_TYPE_2D_ARRAY   = ImageViewType 5 -- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY" pattern IMAGE_VIEW_TYPE_CUBE_ARRAY = ImageViewType 6 {-# complete IMAGE_VIEW_TYPE_1D,@@ -64,28 +59,30 @@              IMAGE_VIEW_TYPE_2D_ARRAY,              IMAGE_VIEW_TYPE_CUBE_ARRAY :: ImageViewType #-} +conNameImageViewType :: String+conNameImageViewType = "ImageViewType"++enumPrefixImageViewType :: String+enumPrefixImageViewType = "IMAGE_VIEW_TYPE_"++showTableImageViewType :: [(ImageViewType, String)]+showTableImageViewType =+  [ (IMAGE_VIEW_TYPE_1D        , "1D")+  , (IMAGE_VIEW_TYPE_2D        , "2D")+  , (IMAGE_VIEW_TYPE_3D        , "3D")+  , (IMAGE_VIEW_TYPE_CUBE      , "CUBE")+  , (IMAGE_VIEW_TYPE_1D_ARRAY  , "1D_ARRAY")+  , (IMAGE_VIEW_TYPE_2D_ARRAY  , "2D_ARRAY")+  , (IMAGE_VIEW_TYPE_CUBE_ARRAY, "CUBE_ARRAY")+  ]+ instance Show ImageViewType where-  showsPrec p = \case-    IMAGE_VIEW_TYPE_1D -> showString "IMAGE_VIEW_TYPE_1D"-    IMAGE_VIEW_TYPE_2D -> showString "IMAGE_VIEW_TYPE_2D"-    IMAGE_VIEW_TYPE_3D -> showString "IMAGE_VIEW_TYPE_3D"-    IMAGE_VIEW_TYPE_CUBE -> showString "IMAGE_VIEW_TYPE_CUBE"-    IMAGE_VIEW_TYPE_1D_ARRAY -> showString "IMAGE_VIEW_TYPE_1D_ARRAY"-    IMAGE_VIEW_TYPE_2D_ARRAY -> showString "IMAGE_VIEW_TYPE_2D_ARRAY"-    IMAGE_VIEW_TYPE_CUBE_ARRAY -> showString "IMAGE_VIEW_TYPE_CUBE_ARRAY"-    ImageViewType x -> showParen (p >= 11) (showString "ImageViewType " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixImageViewType+                            showTableImageViewType+                            conNameImageViewType+                            (\(ImageViewType x) -> x)+                            (showsPrec 11)  instance Read ImageViewType where-  readPrec = parens (choose [("IMAGE_VIEW_TYPE_1D", pure IMAGE_VIEW_TYPE_1D)-                            , ("IMAGE_VIEW_TYPE_2D", pure IMAGE_VIEW_TYPE_2D)-                            , ("IMAGE_VIEW_TYPE_3D", pure IMAGE_VIEW_TYPE_3D)-                            , ("IMAGE_VIEW_TYPE_CUBE", pure IMAGE_VIEW_TYPE_CUBE)-                            , ("IMAGE_VIEW_TYPE_1D_ARRAY", pure IMAGE_VIEW_TYPE_1D_ARRAY)-                            , ("IMAGE_VIEW_TYPE_2D_ARRAY", pure IMAGE_VIEW_TYPE_2D_ARRAY)-                            , ("IMAGE_VIEW_TYPE_CUBE_ARRAY", pure IMAGE_VIEW_TYPE_CUBE_ARRAY)]-                     +++-                     prec 10 (do-                       expectP (Ident "ImageViewType")-                       v <- step readPrec-                       pure (ImageViewType v)))+  readPrec = enumReadPrec enumPrefixImageViewType showTableImageViewType conNameImageViewType ImageViewType 
src/Vulkan/Core10/Enums/IndexType.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "IndexType" module Vulkan.Core10.Enums.IndexType  (IndexType( INDEX_TYPE_UINT16                                                 , INDEX_TYPE_UINT32                                                 , INDEX_TYPE_UINT8_EXT@@ -6,26 +7,19 @@                                                 , ..                                                 )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkIndexType - Type of index buffer indices -- -- = See Also ----- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateGeometryTypeInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryTrianglesDataKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindIndexBufferIndirectCommandNV', -- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV',@@ -35,36 +29,38 @@  -- | 'INDEX_TYPE_UINT16' specifies that indices are 16-bit unsigned integer -- values.-pattern INDEX_TYPE_UINT16 = IndexType 0+pattern INDEX_TYPE_UINT16    = IndexType 0 -- | 'INDEX_TYPE_UINT32' specifies that indices are 32-bit unsigned integer -- values.-pattern INDEX_TYPE_UINT32 = IndexType 1+pattern INDEX_TYPE_UINT32    = IndexType 1 -- | 'INDEX_TYPE_UINT8_EXT' specifies that indices are 8-bit unsigned integer -- values. pattern INDEX_TYPE_UINT8_EXT = IndexType 1000265000 -- | 'INDEX_TYPE_NONE_KHR' specifies that no indices are provided.-pattern INDEX_TYPE_NONE_KHR = IndexType 1000165000+pattern INDEX_TYPE_NONE_KHR  = IndexType 1000165000 {-# complete INDEX_TYPE_UINT16,              INDEX_TYPE_UINT32,              INDEX_TYPE_UINT8_EXT,              INDEX_TYPE_NONE_KHR :: IndexType #-} +conNameIndexType :: String+conNameIndexType = "IndexType"++enumPrefixIndexType :: String+enumPrefixIndexType = "INDEX_TYPE_"++showTableIndexType :: [(IndexType, String)]+showTableIndexType =+  [ (INDEX_TYPE_UINT16   , "UINT16")+  , (INDEX_TYPE_UINT32   , "UINT32")+  , (INDEX_TYPE_UINT8_EXT, "UINT8_EXT")+  , (INDEX_TYPE_NONE_KHR , "NONE_KHR")+  ]+ instance Show IndexType where-  showsPrec p = \case-    INDEX_TYPE_UINT16 -> showString "INDEX_TYPE_UINT16"-    INDEX_TYPE_UINT32 -> showString "INDEX_TYPE_UINT32"-    INDEX_TYPE_UINT8_EXT -> showString "INDEX_TYPE_UINT8_EXT"-    INDEX_TYPE_NONE_KHR -> showString "INDEX_TYPE_NONE_KHR"-    IndexType x -> showParen (p >= 11) (showString "IndexType " . showsPrec 11 x)+  showsPrec =+    enumShowsPrec enumPrefixIndexType showTableIndexType conNameIndexType (\(IndexType x) -> x) (showsPrec 11)  instance Read IndexType where-  readPrec = parens (choose [("INDEX_TYPE_UINT16", pure INDEX_TYPE_UINT16)-                            , ("INDEX_TYPE_UINT32", pure INDEX_TYPE_UINT32)-                            , ("INDEX_TYPE_UINT8_EXT", pure INDEX_TYPE_UINT8_EXT)-                            , ("INDEX_TYPE_NONE_KHR", pure INDEX_TYPE_NONE_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "IndexType")-                       v <- step readPrec-                       pure (IndexType v)))+  readPrec = enumReadPrec enumPrefixIndexType showTableIndexType conNameIndexType IndexType 
src/Vulkan/Core10/Enums/IndexType.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "IndexType" module Vulkan.Core10.Enums.IndexType  (IndexType) where  
src/Vulkan/Core10/Enums/InstanceCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "InstanceCreateFlags" module Vulkan.Core10.Enums.InstanceCreateFlags  (InstanceCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkInstanceCreateFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNameInstanceCreateFlags :: String+conNameInstanceCreateFlags = "InstanceCreateFlags"++enumPrefixInstanceCreateFlags :: String+enumPrefixInstanceCreateFlags = ""++showTableInstanceCreateFlags :: [(InstanceCreateFlags, String)]+showTableInstanceCreateFlags = []+ instance Show InstanceCreateFlags where-  showsPrec p = \case-    InstanceCreateFlags x -> showParen (p >= 11) (showString "InstanceCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixInstanceCreateFlags+                            showTableInstanceCreateFlags+                            conNameInstanceCreateFlags+                            (\(InstanceCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read InstanceCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "InstanceCreateFlags")-                       v <- step readPrec-                       pure (InstanceCreateFlags v)))+  readPrec = enumReadPrec enumPrefixInstanceCreateFlags+                          showTableInstanceCreateFlags+                          conNameInstanceCreateFlags+                          InstanceCreateFlags 
src/Vulkan/Core10/Enums/InternalAllocationType.hs view
@@ -1,21 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "InternalAllocationType" module Vulkan.Core10.Enums.InternalAllocationType  (InternalAllocationType( INTERNAL_ALLOCATION_TYPE_EXECUTABLE                                                                           , ..                                                                           )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkInternalAllocationType - Allocation type --@@ -31,16 +26,25 @@ pattern INTERNAL_ALLOCATION_TYPE_EXECUTABLE = InternalAllocationType 0 {-# complete INTERNAL_ALLOCATION_TYPE_EXECUTABLE :: InternalAllocationType #-} +conNameInternalAllocationType :: String+conNameInternalAllocationType = "InternalAllocationType"++enumPrefixInternalAllocationType :: String+enumPrefixInternalAllocationType = "INTERNAL_ALLOCATION_TYPE_EXECUTABLE"++showTableInternalAllocationType :: [(InternalAllocationType, String)]+showTableInternalAllocationType = [(INTERNAL_ALLOCATION_TYPE_EXECUTABLE, "")]+ instance Show InternalAllocationType where-  showsPrec p = \case-    INTERNAL_ALLOCATION_TYPE_EXECUTABLE -> showString "INTERNAL_ALLOCATION_TYPE_EXECUTABLE"-    InternalAllocationType x -> showParen (p >= 11) (showString "InternalAllocationType " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixInternalAllocationType+                            showTableInternalAllocationType+                            conNameInternalAllocationType+                            (\(InternalAllocationType x) -> x)+                            (showsPrec 11)  instance Read InternalAllocationType where-  readPrec = parens (choose [("INTERNAL_ALLOCATION_TYPE_EXECUTABLE", pure INTERNAL_ALLOCATION_TYPE_EXECUTABLE)]-                     +++-                     prec 10 (do-                       expectP (Ident "InternalAllocationType")-                       v <- step readPrec-                       pure (InternalAllocationType v)))+  readPrec = enumReadPrec enumPrefixInternalAllocationType+                          showTableInternalAllocationType+                          conNameInternalAllocationType+                          InternalAllocationType 
src/Vulkan/Core10/Enums/LogicOp.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "LogicOp" module Vulkan.Core10.Enums.LogicOp  (LogicOp( LOGIC_OP_CLEAR                                             , LOGIC_OP_AND                                             , LOGIC_OP_AND_REVERSE@@ -18,19 +19,13 @@                                             , ..                                             )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkLogicOp - Framebuffer logical operations --@@ -102,37 +97,37 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_CLEAR"-pattern LOGIC_OP_CLEAR = LogicOp 0+pattern LOGIC_OP_CLEAR         = LogicOp 0 -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND"-pattern LOGIC_OP_AND = LogicOp 1+pattern LOGIC_OP_AND           = LogicOp 1 -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND_REVERSE"-pattern LOGIC_OP_AND_REVERSE = LogicOp 2+pattern LOGIC_OP_AND_REVERSE   = LogicOp 2 -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_COPY"-pattern LOGIC_OP_COPY = LogicOp 3+pattern LOGIC_OP_COPY          = LogicOp 3 -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND_INVERTED"-pattern LOGIC_OP_AND_INVERTED = LogicOp 4+pattern LOGIC_OP_AND_INVERTED  = LogicOp 4 -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NO_OP"-pattern LOGIC_OP_NO_OP = LogicOp 5+pattern LOGIC_OP_NO_OP         = LogicOp 5 -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_XOR"-pattern LOGIC_OP_XOR = LogicOp 6+pattern LOGIC_OP_XOR           = LogicOp 6 -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR"-pattern LOGIC_OP_OR = LogicOp 7+pattern LOGIC_OP_OR            = LogicOp 7 -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NOR"-pattern LOGIC_OP_NOR = LogicOp 8+pattern LOGIC_OP_NOR           = LogicOp 8 -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_EQUIVALENT"-pattern LOGIC_OP_EQUIVALENT = LogicOp 9+pattern LOGIC_OP_EQUIVALENT    = LogicOp 9 -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_INVERT"-pattern LOGIC_OP_INVERT = LogicOp 10+pattern LOGIC_OP_INVERT        = LogicOp 10 -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR_REVERSE"-pattern LOGIC_OP_OR_REVERSE = LogicOp 11+pattern LOGIC_OP_OR_REVERSE    = LogicOp 11 -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_COPY_INVERTED" pattern LOGIC_OP_COPY_INVERTED = LogicOp 12 -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR_INVERTED"-pattern LOGIC_OP_OR_INVERTED = LogicOp 13+pattern LOGIC_OP_OR_INVERTED   = LogicOp 13 -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NAND"-pattern LOGIC_OP_NAND = LogicOp 14+pattern LOGIC_OP_NAND          = LogicOp 14 -- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_SET"-pattern LOGIC_OP_SET = LogicOp 15+pattern LOGIC_OP_SET           = LogicOp 15 {-# complete LOGIC_OP_CLEAR,              LOGIC_OP_AND,              LOGIC_OP_AND_REVERSE,@@ -150,46 +145,35 @@              LOGIC_OP_NAND,              LOGIC_OP_SET :: LogicOp #-} +conNameLogicOp :: String+conNameLogicOp = "LogicOp"++enumPrefixLogicOp :: String+enumPrefixLogicOp = "LOGIC_OP_"++showTableLogicOp :: [(LogicOp, String)]+showTableLogicOp =+  [ (LOGIC_OP_CLEAR        , "CLEAR")+  , (LOGIC_OP_AND          , "AND")+  , (LOGIC_OP_AND_REVERSE  , "AND_REVERSE")+  , (LOGIC_OP_COPY         , "COPY")+  , (LOGIC_OP_AND_INVERTED , "AND_INVERTED")+  , (LOGIC_OP_NO_OP        , "NO_OP")+  , (LOGIC_OP_XOR          , "XOR")+  , (LOGIC_OP_OR           , "OR")+  , (LOGIC_OP_NOR          , "NOR")+  , (LOGIC_OP_EQUIVALENT   , "EQUIVALENT")+  , (LOGIC_OP_INVERT       , "INVERT")+  , (LOGIC_OP_OR_REVERSE   , "OR_REVERSE")+  , (LOGIC_OP_COPY_INVERTED, "COPY_INVERTED")+  , (LOGIC_OP_OR_INVERTED  , "OR_INVERTED")+  , (LOGIC_OP_NAND         , "NAND")+  , (LOGIC_OP_SET          , "SET")+  ]+ instance Show LogicOp where-  showsPrec p = \case-    LOGIC_OP_CLEAR -> showString "LOGIC_OP_CLEAR"-    LOGIC_OP_AND -> showString "LOGIC_OP_AND"-    LOGIC_OP_AND_REVERSE -> showString "LOGIC_OP_AND_REVERSE"-    LOGIC_OP_COPY -> showString "LOGIC_OP_COPY"-    LOGIC_OP_AND_INVERTED -> showString "LOGIC_OP_AND_INVERTED"-    LOGIC_OP_NO_OP -> showString "LOGIC_OP_NO_OP"-    LOGIC_OP_XOR -> showString "LOGIC_OP_XOR"-    LOGIC_OP_OR -> showString "LOGIC_OP_OR"-    LOGIC_OP_NOR -> showString "LOGIC_OP_NOR"-    LOGIC_OP_EQUIVALENT -> showString "LOGIC_OP_EQUIVALENT"-    LOGIC_OP_INVERT -> showString "LOGIC_OP_INVERT"-    LOGIC_OP_OR_REVERSE -> showString "LOGIC_OP_OR_REVERSE"-    LOGIC_OP_COPY_INVERTED -> showString "LOGIC_OP_COPY_INVERTED"-    LOGIC_OP_OR_INVERTED -> showString "LOGIC_OP_OR_INVERTED"-    LOGIC_OP_NAND -> showString "LOGIC_OP_NAND"-    LOGIC_OP_SET -> showString "LOGIC_OP_SET"-    LogicOp x -> showParen (p >= 11) (showString "LogicOp " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixLogicOp showTableLogicOp conNameLogicOp (\(LogicOp x) -> x) (showsPrec 11)  instance Read LogicOp where-  readPrec = parens (choose [("LOGIC_OP_CLEAR", pure LOGIC_OP_CLEAR)-                            , ("LOGIC_OP_AND", pure LOGIC_OP_AND)-                            , ("LOGIC_OP_AND_REVERSE", pure LOGIC_OP_AND_REVERSE)-                            , ("LOGIC_OP_COPY", pure LOGIC_OP_COPY)-                            , ("LOGIC_OP_AND_INVERTED", pure LOGIC_OP_AND_INVERTED)-                            , ("LOGIC_OP_NO_OP", pure LOGIC_OP_NO_OP)-                            , ("LOGIC_OP_XOR", pure LOGIC_OP_XOR)-                            , ("LOGIC_OP_OR", pure LOGIC_OP_OR)-                            , ("LOGIC_OP_NOR", pure LOGIC_OP_NOR)-                            , ("LOGIC_OP_EQUIVALENT", pure LOGIC_OP_EQUIVALENT)-                            , ("LOGIC_OP_INVERT", pure LOGIC_OP_INVERT)-                            , ("LOGIC_OP_OR_REVERSE", pure LOGIC_OP_OR_REVERSE)-                            , ("LOGIC_OP_COPY_INVERTED", pure LOGIC_OP_COPY_INVERTED)-                            , ("LOGIC_OP_OR_INVERTED", pure LOGIC_OP_OR_INVERTED)-                            , ("LOGIC_OP_NAND", pure LOGIC_OP_NAND)-                            , ("LOGIC_OP_SET", pure LOGIC_OP_SET)]-                     +++-                     prec 10 (do-                       expectP (Ident "LogicOp")-                       v <- step readPrec-                       pure (LogicOp v)))+  readPrec = enumReadPrec enumPrefixLogicOp showTableLogicOp conNameLogicOp LogicOp 
src/Vulkan/Core10/Enums/MemoryHeapFlagBits.hs view
@@ -1,27 +1,25 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.MemoryHeapFlagBits  ( MemoryHeapFlagBits( MEMORY_HEAP_DEVICE_LOCAL_BIT+-- No documentation found for Chapter "MemoryHeapFlagBits"+module Vulkan.Core10.Enums.MemoryHeapFlagBits  ( MemoryHeapFlags+                                               , MemoryHeapFlagBits( MEMORY_HEAP_DEVICE_LOCAL_BIT                                                                    , MEMORY_HEAP_MULTI_INSTANCE_BIT                                                                    , ..                                                                    )-                                               , MemoryHeapFlags                                                ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type MemoryHeapFlags = MemoryHeapFlagBits+ -- | VkMemoryHeapFlagBits - Bitmask specifying attribute flags for a heap -- -- = See Also@@ -34,7 +32,7 @@ -- device local memory. Device local memory /may/ have different -- performance characteristics than host local memory, and /may/ support -- different memory property flags.-pattern MEMORY_HEAP_DEVICE_LOCAL_BIT = MemoryHeapFlagBits 0x00000001+pattern MEMORY_HEAP_DEVICE_LOCAL_BIT   = MemoryHeapFlagBits 0x00000001 -- | 'MEMORY_HEAP_MULTI_INSTANCE_BIT' specifies that in a logical device -- representing more than one physical device, there is a per-physical -- device instance of the heap memory. By default, an allocation from such@@ -42,20 +40,24 @@ -- heap. pattern MEMORY_HEAP_MULTI_INSTANCE_BIT = MemoryHeapFlagBits 0x00000002 -type MemoryHeapFlags = MemoryHeapFlagBits+conNameMemoryHeapFlagBits :: String+conNameMemoryHeapFlagBits = "MemoryHeapFlagBits" +enumPrefixMemoryHeapFlagBits :: String+enumPrefixMemoryHeapFlagBits = "MEMORY_HEAP_"++showTableMemoryHeapFlagBits :: [(MemoryHeapFlagBits, String)]+showTableMemoryHeapFlagBits =+  [(MEMORY_HEAP_DEVICE_LOCAL_BIT, "DEVICE_LOCAL_BIT"), (MEMORY_HEAP_MULTI_INSTANCE_BIT, "MULTI_INSTANCE_BIT")]+ instance Show MemoryHeapFlagBits where-  showsPrec p = \case-    MEMORY_HEAP_DEVICE_LOCAL_BIT -> showString "MEMORY_HEAP_DEVICE_LOCAL_BIT"-    MEMORY_HEAP_MULTI_INSTANCE_BIT -> showString "MEMORY_HEAP_MULTI_INSTANCE_BIT"-    MemoryHeapFlagBits x -> showParen (p >= 11) (showString "MemoryHeapFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixMemoryHeapFlagBits+                            showTableMemoryHeapFlagBits+                            conNameMemoryHeapFlagBits+                            (\(MemoryHeapFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read MemoryHeapFlagBits where-  readPrec = parens (choose [("MEMORY_HEAP_DEVICE_LOCAL_BIT", pure MEMORY_HEAP_DEVICE_LOCAL_BIT)-                            , ("MEMORY_HEAP_MULTI_INSTANCE_BIT", pure MEMORY_HEAP_MULTI_INSTANCE_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "MemoryHeapFlagBits")-                       v <- step readPrec-                       pure (MemoryHeapFlagBits v)))+  readPrec =+    enumReadPrec enumPrefixMemoryHeapFlagBits showTableMemoryHeapFlagBits conNameMemoryHeapFlagBits MemoryHeapFlagBits 
src/Vulkan/Core10/Enums/MemoryMapFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "MemoryMapFlags" module Vulkan.Core10.Enums.MemoryMapFlags  (MemoryMapFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkMemoryMapFlags - Reserved for future use@@ -32,15 +28,22 @@   +conNameMemoryMapFlags :: String+conNameMemoryMapFlags = "MemoryMapFlags"++enumPrefixMemoryMapFlags :: String+enumPrefixMemoryMapFlags = ""++showTableMemoryMapFlags :: [(MemoryMapFlags, String)]+showTableMemoryMapFlags = []+ instance Show MemoryMapFlags where-  showsPrec p = \case-    MemoryMapFlags x -> showParen (p >= 11) (showString "MemoryMapFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixMemoryMapFlags+                            showTableMemoryMapFlags+                            conNameMemoryMapFlags+                            (\(MemoryMapFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read MemoryMapFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "MemoryMapFlags")-                       v <- step readPrec-                       pure (MemoryMapFlags v)))+  readPrec = enumReadPrec enumPrefixMemoryMapFlags showTableMemoryMapFlags conNameMemoryMapFlags MemoryMapFlags 
src/Vulkan/Core10/Enums/MemoryMapFlags.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "MemoryMapFlags" module Vulkan.Core10.Enums.MemoryMapFlags  (MemoryMapFlags) where  
src/Vulkan/Core10/Enums/MemoryPropertyFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.MemoryPropertyFlagBits  ( MemoryPropertyFlagBits( MEMORY_PROPERTY_DEVICE_LOCAL_BIT+-- No documentation found for Chapter "MemoryPropertyFlagBits"+module Vulkan.Core10.Enums.MemoryPropertyFlagBits  ( MemoryPropertyFlags+                                                   , MemoryPropertyFlagBits( MEMORY_PROPERTY_DEVICE_LOCAL_BIT                                                                            , MEMORY_PROPERTY_HOST_VISIBLE_BIT                                                                            , MEMORY_PROPERTY_HOST_COHERENT_BIT                                                                            , MEMORY_PROPERTY_HOST_CACHED_BIT@@ -9,25 +11,21 @@                                                                            , MEMORY_PROPERTY_PROTECTED_BIT                                                                            , ..                                                                            )-                                                   , MemoryPropertyFlags                                                    ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type MemoryPropertyFlags = MemoryPropertyFlagBits+ -- | VkMemoryPropertyFlagBits - Bitmask specifying properties for a memory -- type --@@ -64,22 +62,22 @@ -- will be set if and only if the memory type belongs to a heap with the -- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_DEVICE_LOCAL_BIT' -- set.-pattern MEMORY_PROPERTY_DEVICE_LOCAL_BIT = MemoryPropertyFlagBits 0x00000001+pattern MEMORY_PROPERTY_DEVICE_LOCAL_BIT        = MemoryPropertyFlagBits 0x00000001 -- | 'MEMORY_PROPERTY_HOST_VISIBLE_BIT' bit specifies that memory allocated -- with this type /can/ be mapped for host access using -- 'Vulkan.Core10.Memory.mapMemory'.-pattern MEMORY_PROPERTY_HOST_VISIBLE_BIT = MemoryPropertyFlagBits 0x00000002+pattern MEMORY_PROPERTY_HOST_VISIBLE_BIT        = MemoryPropertyFlagBits 0x00000002 -- | 'MEMORY_PROPERTY_HOST_COHERENT_BIT' bit specifies that the host cache -- management commands 'Vulkan.Core10.Memory.flushMappedMemoryRanges' and -- 'Vulkan.Core10.Memory.invalidateMappedMemoryRanges' are not needed to -- flush host writes to the device or make device writes visible to the -- host, respectively.-pattern MEMORY_PROPERTY_HOST_COHERENT_BIT = MemoryPropertyFlagBits 0x00000004+pattern MEMORY_PROPERTY_HOST_COHERENT_BIT       = MemoryPropertyFlagBits 0x00000004 -- | 'MEMORY_PROPERTY_HOST_CACHED_BIT' bit specifies that memory allocated -- with this type is cached on the host. Host memory accesses to uncached -- memory are slower than to cached memory, however uncached memory is -- always host coherent.-pattern MEMORY_PROPERTY_HOST_CACHED_BIT = MemoryPropertyFlagBits 0x00000008+pattern MEMORY_PROPERTY_HOST_CACHED_BIT         = MemoryPropertyFlagBits 0x00000008 -- | 'MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT' bit specifies that the memory -- type only allows device access to the memory. Memory types /must/ not -- have both 'MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT' and@@ -87,7 +85,7 @@ -- backing memory /may/ be provided by the implementation lazily as -- specified in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-lazy_allocation Lazily Allocated Memory>.-pattern MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = MemoryPropertyFlagBits 0x00000010+pattern MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT    = MemoryPropertyFlagBits 0x00000010 -- | 'MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD' bit specifies that memory -- allocated with this type is not cached on the device. Uncached device -- memory is always device coherent.@@ -103,34 +101,36 @@ -- 'MEMORY_PROPERTY_HOST_VISIBLE_BIT' set, or -- 'MEMORY_PROPERTY_HOST_COHERENT_BIT' set, or -- 'MEMORY_PROPERTY_HOST_CACHED_BIT' set.-pattern MEMORY_PROPERTY_PROTECTED_BIT = MemoryPropertyFlagBits 0x00000020+pattern MEMORY_PROPERTY_PROTECTED_BIT           = MemoryPropertyFlagBits 0x00000020 -type MemoryPropertyFlags = MemoryPropertyFlagBits+conNameMemoryPropertyFlagBits :: String+conNameMemoryPropertyFlagBits = "MemoryPropertyFlagBits" +enumPrefixMemoryPropertyFlagBits :: String+enumPrefixMemoryPropertyFlagBits = "MEMORY_PROPERTY_"++showTableMemoryPropertyFlagBits :: [(MemoryPropertyFlagBits, String)]+showTableMemoryPropertyFlagBits =+  [ (MEMORY_PROPERTY_DEVICE_LOCAL_BIT       , "DEVICE_LOCAL_BIT")+  , (MEMORY_PROPERTY_HOST_VISIBLE_BIT       , "HOST_VISIBLE_BIT")+  , (MEMORY_PROPERTY_HOST_COHERENT_BIT      , "HOST_COHERENT_BIT")+  , (MEMORY_PROPERTY_HOST_CACHED_BIT        , "HOST_CACHED_BIT")+  , (MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT   , "LAZILY_ALLOCATED_BIT")+  , (MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD, "DEVICE_UNCACHED_BIT_AMD")+  , (MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD, "DEVICE_COHERENT_BIT_AMD")+  , (MEMORY_PROPERTY_PROTECTED_BIT          , "PROTECTED_BIT")+  ]+ instance Show MemoryPropertyFlagBits where-  showsPrec p = \case-    MEMORY_PROPERTY_DEVICE_LOCAL_BIT -> showString "MEMORY_PROPERTY_DEVICE_LOCAL_BIT"-    MEMORY_PROPERTY_HOST_VISIBLE_BIT -> showString "MEMORY_PROPERTY_HOST_VISIBLE_BIT"-    MEMORY_PROPERTY_HOST_COHERENT_BIT -> showString "MEMORY_PROPERTY_HOST_COHERENT_BIT"-    MEMORY_PROPERTY_HOST_CACHED_BIT -> showString "MEMORY_PROPERTY_HOST_CACHED_BIT"-    MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT -> showString "MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"-    MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD -> showString "MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD"-    MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD -> showString "MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD"-    MEMORY_PROPERTY_PROTECTED_BIT -> showString "MEMORY_PROPERTY_PROTECTED_BIT"-    MemoryPropertyFlagBits x -> showParen (p >= 11) (showString "MemoryPropertyFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixMemoryPropertyFlagBits+                            showTableMemoryPropertyFlagBits+                            conNameMemoryPropertyFlagBits+                            (\(MemoryPropertyFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read MemoryPropertyFlagBits where-  readPrec = parens (choose [("MEMORY_PROPERTY_DEVICE_LOCAL_BIT", pure MEMORY_PROPERTY_DEVICE_LOCAL_BIT)-                            , ("MEMORY_PROPERTY_HOST_VISIBLE_BIT", pure MEMORY_PROPERTY_HOST_VISIBLE_BIT)-                            , ("MEMORY_PROPERTY_HOST_COHERENT_BIT", pure MEMORY_PROPERTY_HOST_COHERENT_BIT)-                            , ("MEMORY_PROPERTY_HOST_CACHED_BIT", pure MEMORY_PROPERTY_HOST_CACHED_BIT)-                            , ("MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT", pure MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT)-                            , ("MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD", pure MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD)-                            , ("MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD", pure MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD)-                            , ("MEMORY_PROPERTY_PROTECTED_BIT", pure MEMORY_PROPERTY_PROTECTED_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "MemoryPropertyFlagBits")-                       v <- step readPrec-                       pure (MemoryPropertyFlagBits v)))+  readPrec = enumReadPrec enumPrefixMemoryPropertyFlagBits+                          showTableMemoryPropertyFlagBits+                          conNameMemoryPropertyFlagBits+                          MemoryPropertyFlagBits 
src/Vulkan/Core10/Enums/ObjectType.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "ObjectType" module Vulkan.Core10.Enums.ObjectType  (ObjectType( OBJECT_TYPE_UNKNOWN                                                   , OBJECT_TYPE_INSTANCE                                                   , OBJECT_TYPE_PHYSICAL_DEVICE@@ -29,6 +30,7 @@                                                   , OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV                                                   , OBJECT_TYPE_DEFERRED_OPERATION_KHR                                                   , OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL+                                                  , OBJECT_TYPE_ACCELERATION_STRUCTURE_NV                                                   , OBJECT_TYPE_VALIDATION_CACHE_EXT                                                   , OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR                                                   , OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT@@ -42,19 +44,13 @@                                                   , ..                                                   )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkObjectType - Specify an enumeration to track object handle types --@@ -137,6 +133,8 @@ -- +-----------------------------------------------+-----------------------------------------------------------+ -- | 'OBJECT_TYPE_VALIDATION_CACHE_EXT'            | 'Vulkan.Extensions.Handles.ValidationCacheEXT'            | -- +-----------------------------------------------+-----------------------------------------------------------++-- | 'OBJECT_TYPE_ACCELERATION_STRUCTURE_NV'       | 'Vulkan.Extensions.Handles.AccelerationStructureNV'       |+-- +-----------------------------------------------+-----------------------------------------------------------+ -- | 'OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR'      | 'Vulkan.Extensions.Handles.AccelerationStructureKHR'      | -- +-----------------------------------------------+-----------------------------------------------------------+ -- | 'OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL' | 'Vulkan.Extensions.Handles.PerformanceConfigurationINTEL' |@@ -159,85 +157,87 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_UNKNOWN"-pattern OBJECT_TYPE_UNKNOWN = ObjectType 0+pattern OBJECT_TYPE_UNKNOWN                         = ObjectType 0 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_INSTANCE"-pattern OBJECT_TYPE_INSTANCE = ObjectType 1+pattern OBJECT_TYPE_INSTANCE                        = ObjectType 1 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PHYSICAL_DEVICE"-pattern OBJECT_TYPE_PHYSICAL_DEVICE = ObjectType 2+pattern OBJECT_TYPE_PHYSICAL_DEVICE                 = ObjectType 2 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEVICE"-pattern OBJECT_TYPE_DEVICE = ObjectType 3+pattern OBJECT_TYPE_DEVICE                          = ObjectType 3 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_QUEUE"-pattern OBJECT_TYPE_QUEUE = ObjectType 4+pattern OBJECT_TYPE_QUEUE                           = ObjectType 4 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SEMAPHORE"-pattern OBJECT_TYPE_SEMAPHORE = ObjectType 5+pattern OBJECT_TYPE_SEMAPHORE                       = ObjectType 5 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_COMMAND_BUFFER"-pattern OBJECT_TYPE_COMMAND_BUFFER = ObjectType 6+pattern OBJECT_TYPE_COMMAND_BUFFER                  = ObjectType 6 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_FENCE"-pattern OBJECT_TYPE_FENCE = ObjectType 7+pattern OBJECT_TYPE_FENCE                           = ObjectType 7 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEVICE_MEMORY"-pattern OBJECT_TYPE_DEVICE_MEMORY = ObjectType 8+pattern OBJECT_TYPE_DEVICE_MEMORY                   = ObjectType 8 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_BUFFER"-pattern OBJECT_TYPE_BUFFER = ObjectType 9+pattern OBJECT_TYPE_BUFFER                          = ObjectType 9 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_IMAGE"-pattern OBJECT_TYPE_IMAGE = ObjectType 10+pattern OBJECT_TYPE_IMAGE                           = ObjectType 10 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_EVENT"-pattern OBJECT_TYPE_EVENT = ObjectType 11+pattern OBJECT_TYPE_EVENT                           = ObjectType 11 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_QUERY_POOL"-pattern OBJECT_TYPE_QUERY_POOL = ObjectType 12+pattern OBJECT_TYPE_QUERY_POOL                      = ObjectType 12 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_BUFFER_VIEW"-pattern OBJECT_TYPE_BUFFER_VIEW = ObjectType 13+pattern OBJECT_TYPE_BUFFER_VIEW                     = ObjectType 13 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_IMAGE_VIEW"-pattern OBJECT_TYPE_IMAGE_VIEW = ObjectType 14+pattern OBJECT_TYPE_IMAGE_VIEW                      = ObjectType 14 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SHADER_MODULE"-pattern OBJECT_TYPE_SHADER_MODULE = ObjectType 15+pattern OBJECT_TYPE_SHADER_MODULE                   = ObjectType 15 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PIPELINE_CACHE"-pattern OBJECT_TYPE_PIPELINE_CACHE = ObjectType 16+pattern OBJECT_TYPE_PIPELINE_CACHE                  = ObjectType 16 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PIPELINE_LAYOUT"-pattern OBJECT_TYPE_PIPELINE_LAYOUT = ObjectType 17+pattern OBJECT_TYPE_PIPELINE_LAYOUT                 = ObjectType 17 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_RENDER_PASS"-pattern OBJECT_TYPE_RENDER_PASS = ObjectType 18+pattern OBJECT_TYPE_RENDER_PASS                     = ObjectType 18 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PIPELINE"-pattern OBJECT_TYPE_PIPELINE = ObjectType 19+pattern OBJECT_TYPE_PIPELINE                        = ObjectType 19 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"-pattern OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = ObjectType 20+pattern OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT           = ObjectType 20 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SAMPLER"-pattern OBJECT_TYPE_SAMPLER = ObjectType 21+pattern OBJECT_TYPE_SAMPLER                         = ObjectType 21 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DESCRIPTOR_POOL"-pattern OBJECT_TYPE_DESCRIPTOR_POOL = ObjectType 22+pattern OBJECT_TYPE_DESCRIPTOR_POOL                 = ObjectType 22 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DESCRIPTOR_SET"-pattern OBJECT_TYPE_DESCRIPTOR_SET = ObjectType 23+pattern OBJECT_TYPE_DESCRIPTOR_SET                  = ObjectType 23 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_FRAMEBUFFER"-pattern OBJECT_TYPE_FRAMEBUFFER = ObjectType 24+pattern OBJECT_TYPE_FRAMEBUFFER                     = ObjectType 24 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_COMMAND_POOL"-pattern OBJECT_TYPE_COMMAND_POOL = ObjectType 25+pattern OBJECT_TYPE_COMMAND_POOL                    = ObjectType 25 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT"-pattern OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = ObjectType 1000295000+pattern OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT           = ObjectType 1000295000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV"-pattern OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = ObjectType 1000277000+pattern OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV     = ObjectType 1000277000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR"-pattern OBJECT_TYPE_DEFERRED_OPERATION_KHR = ObjectType 1000268000+pattern OBJECT_TYPE_DEFERRED_OPERATION_KHR          = ObjectType 1000268000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL" pattern OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = ObjectType 1000210000+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV"+pattern OBJECT_TYPE_ACCELERATION_STRUCTURE_NV       = ObjectType 1000165000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT"-pattern OBJECT_TYPE_VALIDATION_CACHE_EXT = ObjectType 1000160000+pattern OBJECT_TYPE_VALIDATION_CACHE_EXT            = ObjectType 1000160000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR"-pattern OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = ObjectType 1000165000+pattern OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR      = ObjectType 1000150000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"-pattern OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = ObjectType 1000128000+pattern OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT       = ObjectType 1000128000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"-pattern OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = ObjectType 1000011000+pattern OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT       = ObjectType 1000011000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DISPLAY_MODE_KHR"-pattern OBJECT_TYPE_DISPLAY_MODE_KHR = ObjectType 1000002001+pattern OBJECT_TYPE_DISPLAY_MODE_KHR                = ObjectType 1000002001 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DISPLAY_KHR"-pattern OBJECT_TYPE_DISPLAY_KHR = ObjectType 1000002000+pattern OBJECT_TYPE_DISPLAY_KHR                     = ObjectType 1000002000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SWAPCHAIN_KHR"-pattern OBJECT_TYPE_SWAPCHAIN_KHR = ObjectType 1000001000+pattern OBJECT_TYPE_SWAPCHAIN_KHR                   = ObjectType 1000001000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SURFACE_KHR"-pattern OBJECT_TYPE_SURFACE_KHR = ObjectType 1000000000+pattern OBJECT_TYPE_SURFACE_KHR                     = ObjectType 1000000000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"-pattern OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = ObjectType 1000085000+pattern OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE      = ObjectType 1000085000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"-pattern OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = ObjectType 1000156000+pattern OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION        = ObjectType 1000156000 {-# complete OBJECT_TYPE_UNKNOWN,              OBJECT_TYPE_INSTANCE,              OBJECT_TYPE_PHYSICAL_DEVICE,@@ -268,6 +268,7 @@              OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV,              OBJECT_TYPE_DEFERRED_OPERATION_KHR,              OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL,+             OBJECT_TYPE_ACCELERATION_STRUCTURE_NV,              OBJECT_TYPE_VALIDATION_CACHE_EXT,              OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR,              OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT,@@ -279,94 +280,61 @@              OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,              OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION :: ObjectType #-} +conNameObjectType :: String+conNameObjectType = "ObjectType"++enumPrefixObjectType :: String+enumPrefixObjectType = "OBJECT_TYPE_"++showTableObjectType :: [(ObjectType, String)]+showTableObjectType =+  [ (OBJECT_TYPE_UNKNOWN                        , "UNKNOWN")+  , (OBJECT_TYPE_INSTANCE                       , "INSTANCE")+  , (OBJECT_TYPE_PHYSICAL_DEVICE                , "PHYSICAL_DEVICE")+  , (OBJECT_TYPE_DEVICE                         , "DEVICE")+  , (OBJECT_TYPE_QUEUE                          , "QUEUE")+  , (OBJECT_TYPE_SEMAPHORE                      , "SEMAPHORE")+  , (OBJECT_TYPE_COMMAND_BUFFER                 , "COMMAND_BUFFER")+  , (OBJECT_TYPE_FENCE                          , "FENCE")+  , (OBJECT_TYPE_DEVICE_MEMORY                  , "DEVICE_MEMORY")+  , (OBJECT_TYPE_BUFFER                         , "BUFFER")+  , (OBJECT_TYPE_IMAGE                          , "IMAGE")+  , (OBJECT_TYPE_EVENT                          , "EVENT")+  , (OBJECT_TYPE_QUERY_POOL                     , "QUERY_POOL")+  , (OBJECT_TYPE_BUFFER_VIEW                    , "BUFFER_VIEW")+  , (OBJECT_TYPE_IMAGE_VIEW                     , "IMAGE_VIEW")+  , (OBJECT_TYPE_SHADER_MODULE                  , "SHADER_MODULE")+  , (OBJECT_TYPE_PIPELINE_CACHE                 , "PIPELINE_CACHE")+  , (OBJECT_TYPE_PIPELINE_LAYOUT                , "PIPELINE_LAYOUT")+  , (OBJECT_TYPE_RENDER_PASS                    , "RENDER_PASS")+  , (OBJECT_TYPE_PIPELINE                       , "PIPELINE")+  , (OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT          , "DESCRIPTOR_SET_LAYOUT")+  , (OBJECT_TYPE_SAMPLER                        , "SAMPLER")+  , (OBJECT_TYPE_DESCRIPTOR_POOL                , "DESCRIPTOR_POOL")+  , (OBJECT_TYPE_DESCRIPTOR_SET                 , "DESCRIPTOR_SET")+  , (OBJECT_TYPE_FRAMEBUFFER                    , "FRAMEBUFFER")+  , (OBJECT_TYPE_COMMAND_POOL                   , "COMMAND_POOL")+  , (OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT          , "PRIVATE_DATA_SLOT_EXT")+  , (OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV    , "INDIRECT_COMMANDS_LAYOUT_NV")+  , (OBJECT_TYPE_DEFERRED_OPERATION_KHR         , "DEFERRED_OPERATION_KHR")+  , (OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL, "PERFORMANCE_CONFIGURATION_INTEL")+  , (OBJECT_TYPE_ACCELERATION_STRUCTURE_NV      , "ACCELERATION_STRUCTURE_NV")+  , (OBJECT_TYPE_VALIDATION_CACHE_EXT           , "VALIDATION_CACHE_EXT")+  , (OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR     , "ACCELERATION_STRUCTURE_KHR")+  , (OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT      , "DEBUG_UTILS_MESSENGER_EXT")+  , (OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT      , "DEBUG_REPORT_CALLBACK_EXT")+  , (OBJECT_TYPE_DISPLAY_MODE_KHR               , "DISPLAY_MODE_KHR")+  , (OBJECT_TYPE_DISPLAY_KHR                    , "DISPLAY_KHR")+  , (OBJECT_TYPE_SWAPCHAIN_KHR                  , "SWAPCHAIN_KHR")+  , (OBJECT_TYPE_SURFACE_KHR                    , "SURFACE_KHR")+  , (OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE     , "DESCRIPTOR_UPDATE_TEMPLATE")+  , (OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION       , "SAMPLER_YCBCR_CONVERSION")+  ]+ instance Show ObjectType where-  showsPrec p = \case-    OBJECT_TYPE_UNKNOWN -> showString "OBJECT_TYPE_UNKNOWN"-    OBJECT_TYPE_INSTANCE -> showString "OBJECT_TYPE_INSTANCE"-    OBJECT_TYPE_PHYSICAL_DEVICE -> showString "OBJECT_TYPE_PHYSICAL_DEVICE"-    OBJECT_TYPE_DEVICE -> showString "OBJECT_TYPE_DEVICE"-    OBJECT_TYPE_QUEUE -> showString "OBJECT_TYPE_QUEUE"-    OBJECT_TYPE_SEMAPHORE -> showString "OBJECT_TYPE_SEMAPHORE"-    OBJECT_TYPE_COMMAND_BUFFER -> showString "OBJECT_TYPE_COMMAND_BUFFER"-    OBJECT_TYPE_FENCE -> showString "OBJECT_TYPE_FENCE"-    OBJECT_TYPE_DEVICE_MEMORY -> showString "OBJECT_TYPE_DEVICE_MEMORY"-    OBJECT_TYPE_BUFFER -> showString "OBJECT_TYPE_BUFFER"-    OBJECT_TYPE_IMAGE -> showString "OBJECT_TYPE_IMAGE"-    OBJECT_TYPE_EVENT -> showString "OBJECT_TYPE_EVENT"-    OBJECT_TYPE_QUERY_POOL -> showString "OBJECT_TYPE_QUERY_POOL"-    OBJECT_TYPE_BUFFER_VIEW -> showString "OBJECT_TYPE_BUFFER_VIEW"-    OBJECT_TYPE_IMAGE_VIEW -> showString "OBJECT_TYPE_IMAGE_VIEW"-    OBJECT_TYPE_SHADER_MODULE -> showString "OBJECT_TYPE_SHADER_MODULE"-    OBJECT_TYPE_PIPELINE_CACHE -> showString "OBJECT_TYPE_PIPELINE_CACHE"-    OBJECT_TYPE_PIPELINE_LAYOUT -> showString "OBJECT_TYPE_PIPELINE_LAYOUT"-    OBJECT_TYPE_RENDER_PASS -> showString "OBJECT_TYPE_RENDER_PASS"-    OBJECT_TYPE_PIPELINE -> showString "OBJECT_TYPE_PIPELINE"-    OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT -> showString "OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"-    OBJECT_TYPE_SAMPLER -> showString "OBJECT_TYPE_SAMPLER"-    OBJECT_TYPE_DESCRIPTOR_POOL -> showString "OBJECT_TYPE_DESCRIPTOR_POOL"-    OBJECT_TYPE_DESCRIPTOR_SET -> showString "OBJECT_TYPE_DESCRIPTOR_SET"-    OBJECT_TYPE_FRAMEBUFFER -> showString "OBJECT_TYPE_FRAMEBUFFER"-    OBJECT_TYPE_COMMAND_POOL -> showString "OBJECT_TYPE_COMMAND_POOL"-    OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT -> showString "OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT"-    OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV -> showString "OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV"-    OBJECT_TYPE_DEFERRED_OPERATION_KHR -> showString "OBJECT_TYPE_DEFERRED_OPERATION_KHR"-    OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL -> showString "OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL"-    OBJECT_TYPE_VALIDATION_CACHE_EXT -> showString "OBJECT_TYPE_VALIDATION_CACHE_EXT"-    OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR -> showString "OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR"-    OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT -> showString "OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"-    OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT -> showString "OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"-    OBJECT_TYPE_DISPLAY_MODE_KHR -> showString "OBJECT_TYPE_DISPLAY_MODE_KHR"-    OBJECT_TYPE_DISPLAY_KHR -> showString "OBJECT_TYPE_DISPLAY_KHR"-    OBJECT_TYPE_SWAPCHAIN_KHR -> showString "OBJECT_TYPE_SWAPCHAIN_KHR"-    OBJECT_TYPE_SURFACE_KHR -> showString "OBJECT_TYPE_SURFACE_KHR"-    OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE -> showString "OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"-    OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION -> showString "OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"-    ObjectType x -> showParen (p >= 11) (showString "ObjectType " . showsPrec 11 x)+  showsPrec =+    enumShowsPrec enumPrefixObjectType showTableObjectType conNameObjectType (\(ObjectType x) -> x) (showsPrec 11)  instance Read ObjectType where-  readPrec = parens (choose [("OBJECT_TYPE_UNKNOWN", pure OBJECT_TYPE_UNKNOWN)-                            , ("OBJECT_TYPE_INSTANCE", pure OBJECT_TYPE_INSTANCE)-                            , ("OBJECT_TYPE_PHYSICAL_DEVICE", pure OBJECT_TYPE_PHYSICAL_DEVICE)-                            , ("OBJECT_TYPE_DEVICE", pure OBJECT_TYPE_DEVICE)-                            , ("OBJECT_TYPE_QUEUE", pure OBJECT_TYPE_QUEUE)-                            , ("OBJECT_TYPE_SEMAPHORE", pure OBJECT_TYPE_SEMAPHORE)-                            , ("OBJECT_TYPE_COMMAND_BUFFER", pure OBJECT_TYPE_COMMAND_BUFFER)-                            , ("OBJECT_TYPE_FENCE", pure OBJECT_TYPE_FENCE)-                            , ("OBJECT_TYPE_DEVICE_MEMORY", pure OBJECT_TYPE_DEVICE_MEMORY)-                            , ("OBJECT_TYPE_BUFFER", pure OBJECT_TYPE_BUFFER)-                            , ("OBJECT_TYPE_IMAGE", pure OBJECT_TYPE_IMAGE)-                            , ("OBJECT_TYPE_EVENT", pure OBJECT_TYPE_EVENT)-                            , ("OBJECT_TYPE_QUERY_POOL", pure OBJECT_TYPE_QUERY_POOL)-                            , ("OBJECT_TYPE_BUFFER_VIEW", pure OBJECT_TYPE_BUFFER_VIEW)-                            , ("OBJECT_TYPE_IMAGE_VIEW", pure OBJECT_TYPE_IMAGE_VIEW)-                            , ("OBJECT_TYPE_SHADER_MODULE", pure OBJECT_TYPE_SHADER_MODULE)-                            , ("OBJECT_TYPE_PIPELINE_CACHE", pure OBJECT_TYPE_PIPELINE_CACHE)-                            , ("OBJECT_TYPE_PIPELINE_LAYOUT", pure OBJECT_TYPE_PIPELINE_LAYOUT)-                            , ("OBJECT_TYPE_RENDER_PASS", pure OBJECT_TYPE_RENDER_PASS)-                            , ("OBJECT_TYPE_PIPELINE", pure OBJECT_TYPE_PIPELINE)-                            , ("OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT", pure OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT)-                            , ("OBJECT_TYPE_SAMPLER", pure OBJECT_TYPE_SAMPLER)-                            , ("OBJECT_TYPE_DESCRIPTOR_POOL", pure OBJECT_TYPE_DESCRIPTOR_POOL)-                            , ("OBJECT_TYPE_DESCRIPTOR_SET", pure OBJECT_TYPE_DESCRIPTOR_SET)-                            , ("OBJECT_TYPE_FRAMEBUFFER", pure OBJECT_TYPE_FRAMEBUFFER)-                            , ("OBJECT_TYPE_COMMAND_POOL", pure OBJECT_TYPE_COMMAND_POOL)-                            , ("OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT", pure OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT)-                            , ("OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV", pure OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV)-                            , ("OBJECT_TYPE_DEFERRED_OPERATION_KHR", pure OBJECT_TYPE_DEFERRED_OPERATION_KHR)-                            , ("OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL", pure OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL)-                            , ("OBJECT_TYPE_VALIDATION_CACHE_EXT", pure OBJECT_TYPE_VALIDATION_CACHE_EXT)-                            , ("OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR", pure OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR)-                            , ("OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT", pure OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT)-                            , ("OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT", pure OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT)-                            , ("OBJECT_TYPE_DISPLAY_MODE_KHR", pure OBJECT_TYPE_DISPLAY_MODE_KHR)-                            , ("OBJECT_TYPE_DISPLAY_KHR", pure OBJECT_TYPE_DISPLAY_KHR)-                            , ("OBJECT_TYPE_SWAPCHAIN_KHR", pure OBJECT_TYPE_SWAPCHAIN_KHR)-                            , ("OBJECT_TYPE_SURFACE_KHR", pure OBJECT_TYPE_SURFACE_KHR)-                            , ("OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE", pure OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE)-                            , ("OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION", pure OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION)]-                     +++-                     prec 10 (do-                       expectP (Ident "ObjectType")-                       v <- step readPrec-                       pure (ObjectType v)))+  readPrec = enumReadPrec enumPrefixObjectType showTableObjectType conNameObjectType ObjectType 
src/Vulkan/Core10/Enums/ObjectType.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "ObjectType" module Vulkan.Core10.Enums.ObjectType  (ObjectType) where  
src/Vulkan/Core10/Enums/PhysicalDeviceType.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "PhysicalDeviceType" module Vulkan.Core10.Enums.PhysicalDeviceType  (PhysicalDeviceType( PHYSICAL_DEVICE_TYPE_OTHER                                                                   , PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU                                                                   , PHYSICAL_DEVICE_TYPE_DISCRETE_GPU@@ -7,19 +8,13 @@                                                                   , ..                                                                   )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkPhysicalDeviceType - Supported physical device types --@@ -38,43 +33,48 @@  -- | 'PHYSICAL_DEVICE_TYPE_OTHER' - the device does not match any other -- available types.-pattern PHYSICAL_DEVICE_TYPE_OTHER = PhysicalDeviceType 0+pattern PHYSICAL_DEVICE_TYPE_OTHER          = PhysicalDeviceType 0 -- | 'PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU' - the device is typically one -- embedded in or tightly coupled with the host. pattern PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = PhysicalDeviceType 1 -- | 'PHYSICAL_DEVICE_TYPE_DISCRETE_GPU' - the device is typically a separate -- processor connected to the host via an interlink.-pattern PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = PhysicalDeviceType 2+pattern PHYSICAL_DEVICE_TYPE_DISCRETE_GPU   = PhysicalDeviceType 2 -- | 'PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU' - the device is typically a virtual -- node in a virtualization environment.-pattern PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = PhysicalDeviceType 3+pattern PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU    = PhysicalDeviceType 3 -- | 'PHYSICAL_DEVICE_TYPE_CPU' - the device is typically running on the same -- processors as the host.-pattern PHYSICAL_DEVICE_TYPE_CPU = PhysicalDeviceType 4+pattern PHYSICAL_DEVICE_TYPE_CPU            = PhysicalDeviceType 4 {-# complete PHYSICAL_DEVICE_TYPE_OTHER,              PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,              PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,              PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,              PHYSICAL_DEVICE_TYPE_CPU :: PhysicalDeviceType #-} +conNamePhysicalDeviceType :: String+conNamePhysicalDeviceType = "PhysicalDeviceType"++enumPrefixPhysicalDeviceType :: String+enumPrefixPhysicalDeviceType = "PHYSICAL_DEVICE_TYPE_"++showTablePhysicalDeviceType :: [(PhysicalDeviceType, String)]+showTablePhysicalDeviceType =+  [ (PHYSICAL_DEVICE_TYPE_OTHER         , "OTHER")+  , (PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, "INTEGRATED_GPU")+  , (PHYSICAL_DEVICE_TYPE_DISCRETE_GPU  , "DISCRETE_GPU")+  , (PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU   , "VIRTUAL_GPU")+  , (PHYSICAL_DEVICE_TYPE_CPU           , "CPU")+  ]+ instance Show PhysicalDeviceType where-  showsPrec p = \case-    PHYSICAL_DEVICE_TYPE_OTHER -> showString "PHYSICAL_DEVICE_TYPE_OTHER"-    PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU -> showString "PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"-    PHYSICAL_DEVICE_TYPE_DISCRETE_GPU -> showString "PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"-    PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU -> showString "PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"-    PHYSICAL_DEVICE_TYPE_CPU -> showString "PHYSICAL_DEVICE_TYPE_CPU"-    PhysicalDeviceType x -> showParen (p >= 11) (showString "PhysicalDeviceType " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixPhysicalDeviceType+                            showTablePhysicalDeviceType+                            conNamePhysicalDeviceType+                            (\(PhysicalDeviceType x) -> x)+                            (showsPrec 11)  instance Read PhysicalDeviceType where-  readPrec = parens (choose [("PHYSICAL_DEVICE_TYPE_OTHER", pure PHYSICAL_DEVICE_TYPE_OTHER)-                            , ("PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU", pure PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU)-                            , ("PHYSICAL_DEVICE_TYPE_DISCRETE_GPU", pure PHYSICAL_DEVICE_TYPE_DISCRETE_GPU)-                            , ("PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU", pure PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU)-                            , ("PHYSICAL_DEVICE_TYPE_CPU", pure PHYSICAL_DEVICE_TYPE_CPU)]-                     +++-                     prec 10 (do-                       expectP (Ident "PhysicalDeviceType")-                       v <- step readPrec-                       pure (PhysicalDeviceType v)))+  readPrec =+    enumReadPrec enumPrefixPhysicalDeviceType showTablePhysicalDeviceType conNamePhysicalDeviceType PhysicalDeviceType 
src/Vulkan/Core10/Enums/PipelineBindPoint.hs view
@@ -1,23 +1,18 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineBindPoint" module Vulkan.Core10.Enums.PipelineBindPoint  (PipelineBindPoint( PIPELINE_BIND_POINT_GRAPHICS                                                                 , PIPELINE_BIND_POINT_COMPUTE                                                                 , PIPELINE_BIND_POINT_RAY_TRACING_KHR                                                                 , ..                                                                 )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkPipelineBindPoint - Specify the bind point of a pipeline object to a -- command buffer@@ -38,9 +33,9 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- | 'PIPELINE_BIND_POINT_GRAPHICS' specifies binding as a graphics pipeline.-pattern PIPELINE_BIND_POINT_GRAPHICS = PipelineBindPoint 0+pattern PIPELINE_BIND_POINT_GRAPHICS        = PipelineBindPoint 0 -- | 'PIPELINE_BIND_POINT_COMPUTE' specifies binding as a compute pipeline.-pattern PIPELINE_BIND_POINT_COMPUTE = PipelineBindPoint 1+pattern PIPELINE_BIND_POINT_COMPUTE         = PipelineBindPoint 1 -- | 'PIPELINE_BIND_POINT_RAY_TRACING_KHR' specifies binding as a ray tracing -- pipeline. pattern PIPELINE_BIND_POINT_RAY_TRACING_KHR = PipelineBindPoint 1000165000@@ -48,20 +43,27 @@              PIPELINE_BIND_POINT_COMPUTE,              PIPELINE_BIND_POINT_RAY_TRACING_KHR :: PipelineBindPoint #-} +conNamePipelineBindPoint :: String+conNamePipelineBindPoint = "PipelineBindPoint"++enumPrefixPipelineBindPoint :: String+enumPrefixPipelineBindPoint = "PIPELINE_BIND_POINT_"++showTablePipelineBindPoint :: [(PipelineBindPoint, String)]+showTablePipelineBindPoint =+  [ (PIPELINE_BIND_POINT_GRAPHICS       , "GRAPHICS")+  , (PIPELINE_BIND_POINT_COMPUTE        , "COMPUTE")+  , (PIPELINE_BIND_POINT_RAY_TRACING_KHR, "RAY_TRACING_KHR")+  ]+ instance Show PipelineBindPoint where-  showsPrec p = \case-    PIPELINE_BIND_POINT_GRAPHICS -> showString "PIPELINE_BIND_POINT_GRAPHICS"-    PIPELINE_BIND_POINT_COMPUTE -> showString "PIPELINE_BIND_POINT_COMPUTE"-    PIPELINE_BIND_POINT_RAY_TRACING_KHR -> showString "PIPELINE_BIND_POINT_RAY_TRACING_KHR"-    PipelineBindPoint x -> showParen (p >= 11) (showString "PipelineBindPoint " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixPipelineBindPoint+                            showTablePipelineBindPoint+                            conNamePipelineBindPoint+                            (\(PipelineBindPoint x) -> x)+                            (showsPrec 11)  instance Read PipelineBindPoint where-  readPrec = parens (choose [("PIPELINE_BIND_POINT_GRAPHICS", pure PIPELINE_BIND_POINT_GRAPHICS)-                            , ("PIPELINE_BIND_POINT_COMPUTE", pure PIPELINE_BIND_POINT_COMPUTE)-                            , ("PIPELINE_BIND_POINT_RAY_TRACING_KHR", pure PIPELINE_BIND_POINT_RAY_TRACING_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineBindPoint")-                       v <- step readPrec-                       pure (PipelineBindPoint v)))+  readPrec =+    enumReadPrec enumPrefixPipelineBindPoint showTablePipelineBindPoint conNamePipelineBindPoint PipelineBindPoint 
src/Vulkan/Core10/Enums/PipelineBindPoint.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineBindPoint" module Vulkan.Core10.Enums.PipelineBindPoint  (PipelineBindPoint) where  
src/Vulkan/Core10/Enums/PipelineCacheCreateFlagBits.hs view
@@ -1,26 +1,24 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.PipelineCacheCreateFlagBits  ( PipelineCacheCreateFlagBits( PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT+-- No documentation found for Chapter "PipelineCacheCreateFlagBits"+module Vulkan.Core10.Enums.PipelineCacheCreateFlagBits  ( PipelineCacheCreateFlags+                                                        , PipelineCacheCreateFlagBits( PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT                                                                                      , ..                                                                                      )-                                                        , PipelineCacheCreateFlags                                                         ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type PipelineCacheCreateFlags = PipelineCacheCreateFlagBits+ -- | VkPipelineCacheCreateFlagBits - Bitmask specifying the behavior of the -- pipeline cache --@@ -39,18 +37,25 @@ -- allowed. pattern PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = PipelineCacheCreateFlagBits 0x00000001 -type PipelineCacheCreateFlags = PipelineCacheCreateFlagBits+conNamePipelineCacheCreateFlagBits :: String+conNamePipelineCacheCreateFlagBits = "PipelineCacheCreateFlagBits" +enumPrefixPipelineCacheCreateFlagBits :: String+enumPrefixPipelineCacheCreateFlagBits = "PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT"++showTablePipelineCacheCreateFlagBits :: [(PipelineCacheCreateFlagBits, String)]+showTablePipelineCacheCreateFlagBits = [(PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT, "")]+ instance Show PipelineCacheCreateFlagBits where-  showsPrec p = \case-    PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT -> showString "PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT"-    PipelineCacheCreateFlagBits x -> showParen (p >= 11) (showString "PipelineCacheCreateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineCacheCreateFlagBits+                            showTablePipelineCacheCreateFlagBits+                            conNamePipelineCacheCreateFlagBits+                            (\(PipelineCacheCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineCacheCreateFlagBits where-  readPrec = parens (choose [("PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT", pure PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineCacheCreateFlagBits")-                       v <- step readPrec-                       pure (PipelineCacheCreateFlagBits v)))+  readPrec = enumReadPrec enumPrefixPipelineCacheCreateFlagBits+                          showTablePipelineCacheCreateFlagBits+                          conNamePipelineCacheCreateFlagBits+                          PipelineCacheCreateFlagBits 
src/Vulkan/Core10/Enums/PipelineCacheHeaderVersion.hs view
@@ -1,21 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineCacheHeaderVersion" module Vulkan.Core10.Enums.PipelineCacheHeaderVersion  (PipelineCacheHeaderVersion( PIPELINE_CACHE_HEADER_VERSION_ONE                                                                                   , ..                                                                                   )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkPipelineCacheHeaderVersion - Encode pipeline cache version --@@ -32,16 +27,25 @@ pattern PIPELINE_CACHE_HEADER_VERSION_ONE = PipelineCacheHeaderVersion 1 {-# complete PIPELINE_CACHE_HEADER_VERSION_ONE :: PipelineCacheHeaderVersion #-} +conNamePipelineCacheHeaderVersion :: String+conNamePipelineCacheHeaderVersion = "PipelineCacheHeaderVersion"++enumPrefixPipelineCacheHeaderVersion :: String+enumPrefixPipelineCacheHeaderVersion = "PIPELINE_CACHE_HEADER_VERSION_ONE"++showTablePipelineCacheHeaderVersion :: [(PipelineCacheHeaderVersion, String)]+showTablePipelineCacheHeaderVersion = [(PIPELINE_CACHE_HEADER_VERSION_ONE, "")]+ instance Show PipelineCacheHeaderVersion where-  showsPrec p = \case-    PIPELINE_CACHE_HEADER_VERSION_ONE -> showString "PIPELINE_CACHE_HEADER_VERSION_ONE"-    PipelineCacheHeaderVersion x -> showParen (p >= 11) (showString "PipelineCacheHeaderVersion " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixPipelineCacheHeaderVersion+                            showTablePipelineCacheHeaderVersion+                            conNamePipelineCacheHeaderVersion+                            (\(PipelineCacheHeaderVersion x) -> x)+                            (showsPrec 11)  instance Read PipelineCacheHeaderVersion where-  readPrec = parens (choose [("PIPELINE_CACHE_HEADER_VERSION_ONE", pure PIPELINE_CACHE_HEADER_VERSION_ONE)]-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineCacheHeaderVersion")-                       v <- step readPrec-                       pure (PipelineCacheHeaderVersion v)))+  readPrec = enumReadPrec enumPrefixPipelineCacheHeaderVersion+                          showTablePipelineCacheHeaderVersion+                          conNamePipelineCacheHeaderVersion+                          PipelineCacheHeaderVersion 
src/Vulkan/Core10/Enums/PipelineColorBlendStateCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineColorBlendStateCreateFlags" module Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlags  (PipelineColorBlendStateCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkPipelineColorBlendStateCreateFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNamePipelineColorBlendStateCreateFlags :: String+conNamePipelineColorBlendStateCreateFlags = "PipelineColorBlendStateCreateFlags"++enumPrefixPipelineColorBlendStateCreateFlags :: String+enumPrefixPipelineColorBlendStateCreateFlags = ""++showTablePipelineColorBlendStateCreateFlags :: [(PipelineColorBlendStateCreateFlags, String)]+showTablePipelineColorBlendStateCreateFlags = []+ instance Show PipelineColorBlendStateCreateFlags where-  showsPrec p = \case-    PipelineColorBlendStateCreateFlags x -> showParen (p >= 11) (showString "PipelineColorBlendStateCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineColorBlendStateCreateFlags+                            showTablePipelineColorBlendStateCreateFlags+                            conNamePipelineColorBlendStateCreateFlags+                            (\(PipelineColorBlendStateCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineColorBlendStateCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineColorBlendStateCreateFlags")-                       v <- step readPrec-                       pure (PipelineColorBlendStateCreateFlags v)))+  readPrec = enumReadPrec enumPrefixPipelineColorBlendStateCreateFlags+                          showTablePipelineColorBlendStateCreateFlags+                          conNamePipelineColorBlendStateCreateFlags+                          PipelineColorBlendStateCreateFlags 
src/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.PipelineCreateFlagBits  ( PipelineCreateFlagBits( PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT+-- No documentation found for Chapter "PipelineCreateFlagBits"+module Vulkan.Core10.Enums.PipelineCreateFlagBits  ( PipelineCreateFlags+                                                   , PipelineCreateFlagBits( PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT                                                                            , PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                                                                            , PIPELINE_CREATE_DERIVATIVE_BIT                                                                            , PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT@@ -9,6 +11,7 @@                                                                            , PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR                                                                            , PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR                                                                            , PIPELINE_CREATE_DEFER_COMPILE_BIT_NV+                                                                           , PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR                                                                            , PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR                                                                            , PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR                                                                            , PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR@@ -19,25 +22,21 @@                                                                            , PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT                                                                            , ..                                                                            )-                                                   , PipelineCreateFlags                                                    ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type PipelineCreateFlags = PipelineCreateFlagBits+ -- | VkPipelineCreateFlagBits - Bitmask controlling how a pipeline is created -- -- = Description@@ -90,11 +89,11 @@ --     /cannot/ be used directly, and instead defines a /pipeline library/ --     that /can/ be combined with other pipelines using the --     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'---     structure. This is available in raytracing pipelines.+--     structure. This is available in ray tracing pipelines. -- -- -   'PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'---     specifies that an any hit shader will always be present when an any---     hit shader would be executed.+--     specifies that an any-hit shader will always be present when an+--     any-hit shader would be executed. -- -- -   'PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR' --     specifies that a closest hit shader will always be present when a@@ -115,6 +114,10 @@ -- -   'PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR' specifies that AABB --     primitives will be skipped during traversal using @OpTraceKHR@. --+-- -   'PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'+--     specifies that the shader group handles /can/ be saved and reused on+--     a subsequent run (e.g. for trace capture and replay).+-- -- -   'PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV' specifies that the --     pipeline can be used in combination with --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-generated-commands>.@@ -146,88 +149,87 @@   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)  -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"-pattern PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = PipelineCreateFlagBits 0x00000001+pattern PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT                    = PipelineCreateFlagBits 0x00000001 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"-pattern PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = PipelineCreateFlagBits 0x00000002+pattern PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                       = PipelineCreateFlagBits 0x00000002 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DERIVATIVE_BIT"-pattern PIPELINE_CREATE_DERIVATIVE_BIT = PipelineCreateFlagBits 0x00000004+pattern PIPELINE_CREATE_DERIVATIVE_BIT                              = PipelineCreateFlagBits 0x00000004 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT"-pattern PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = PipelineCreateFlagBits 0x00000200+pattern PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT             = PipelineCreateFlagBits 0x00000200 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT"-pattern PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = PipelineCreateFlagBits 0x00000100+pattern PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT   = PipelineCreateFlagBits 0x00000100 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_LIBRARY_BIT_KHR"-pattern PIPELINE_CREATE_LIBRARY_BIT_KHR = PipelineCreateFlagBits 0x00000800+pattern PIPELINE_CREATE_LIBRARY_BIT_KHR                             = PipelineCreateFlagBits 0x00000800 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV"-pattern PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = PipelineCreateFlagBits 0x00040000+pattern PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV                    = PipelineCreateFlagBits 0x00040000 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"-pattern PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = PipelineCreateFlagBits 0x00000080+pattern PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR    = PipelineCreateFlagBits 0x00000080 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR"-pattern PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = PipelineCreateFlagBits 0x00000040+pattern PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR                  = PipelineCreateFlagBits 0x00000040 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV"-pattern PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = PipelineCreateFlagBits 0x00000020+pattern PIPELINE_CREATE_DEFER_COMPILE_BIT_NV                        = PipelineCreateFlagBits 0x00000020+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"+pattern PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = PipelineCreateFlagBits 0x00080000 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR"-pattern PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = PipelineCreateFlagBits 0x00002000+pattern PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR              = PipelineCreateFlagBits 0x00002000 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"-pattern PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = PipelineCreateFlagBits 0x00001000+pattern PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR          = PipelineCreateFlagBits 0x00001000 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR" pattern PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = PipelineCreateFlagBits 0x00020000 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"-pattern PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = PipelineCreateFlagBits 0x00010000+pattern PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR    = PipelineCreateFlagBits 0x00010000 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR" pattern PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = PipelineCreateFlagBits 0x00008000 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR" pattern PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = PipelineCreateFlagBits 0x00004000 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DISPATCH_BASE_BIT"-pattern PIPELINE_CREATE_DISPATCH_BASE_BIT = PipelineCreateFlagBits 0x00000010+pattern PIPELINE_CREATE_DISPATCH_BASE_BIT                           = PipelineCreateFlagBits 0x00000010 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"-pattern PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = PipelineCreateFlagBits 0x00000008+pattern PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT            = PipelineCreateFlagBits 0x00000008 -type PipelineCreateFlags = PipelineCreateFlagBits+conNamePipelineCreateFlagBits :: String+conNamePipelineCreateFlagBits = "PipelineCreateFlagBits" +enumPrefixPipelineCreateFlagBits :: String+enumPrefixPipelineCreateFlagBits = "PIPELINE_CREATE_"++showTablePipelineCreateFlagBits :: [(PipelineCreateFlagBits, String)]+showTablePipelineCreateFlagBits =+  [ (PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT                 , "DISABLE_OPTIMIZATION_BIT")+  , (PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                    , "ALLOW_DERIVATIVES_BIT")+  , (PIPELINE_CREATE_DERIVATIVE_BIT                           , "DERIVATIVE_BIT")+  , (PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT          , "EARLY_RETURN_ON_FAILURE_BIT_EXT")+  , (PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT, "FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT")+  , (PIPELINE_CREATE_LIBRARY_BIT_KHR                          , "LIBRARY_BIT_KHR")+  , (PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV                 , "INDIRECT_BINDABLE_BIT_NV")+  , (PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR , "CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR")+  , (PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR               , "CAPTURE_STATISTICS_BIT_KHR")+  , (PIPELINE_CREATE_DEFER_COMPILE_BIT_NV                     , "DEFER_COMPILE_BIT_NV")+  , ( PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR+    , "RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"+    )+  , (PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR    , "RAY_TRACING_SKIP_AABBS_BIT_KHR")+  , (PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR, "RAY_TRACING_SKIP_TRIANGLES_BIT_KHR")+  , ( PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR+    , "RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"+    )+  , (PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR       , "RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR")+  , (PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, "RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR")+  , (PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR    , "RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR")+  , (PIPELINE_CREATE_DISPATCH_BASE_BIT                              , "DISPATCH_BASE_BIT")+  , (PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT               , "VIEW_INDEX_FROM_DEVICE_INDEX_BIT")+  ]+ instance Show PipelineCreateFlagBits where-  showsPrec p = \case-    PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT -> showString "PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"-    PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT -> showString "PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"-    PIPELINE_CREATE_DERIVATIVE_BIT -> showString "PIPELINE_CREATE_DERIVATIVE_BIT"-    PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT -> showString "PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT"-    PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT -> showString "PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT"-    PIPELINE_CREATE_LIBRARY_BIT_KHR -> showString "PIPELINE_CREATE_LIBRARY_BIT_KHR"-    PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV -> showString "PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV"-    PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR -> showString "PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"-    PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR -> showString "PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR"-    PIPELINE_CREATE_DEFER_COMPILE_BIT_NV -> showString "PIPELINE_CREATE_DEFER_COMPILE_BIT_NV"-    PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR -> showString "PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR"-    PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR -> showString "PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"-    PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR -> showString "PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"-    PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR -> showString "PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"-    PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR -> showString "PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"-    PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR -> showString "PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"-    PIPELINE_CREATE_DISPATCH_BASE_BIT -> showString "PIPELINE_CREATE_DISPATCH_BASE_BIT"-    PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT -> showString "PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"-    PipelineCreateFlagBits x -> showParen (p >= 11) (showString "PipelineCreateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineCreateFlagBits+                            showTablePipelineCreateFlagBits+                            conNamePipelineCreateFlagBits+                            (\(PipelineCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineCreateFlagBits where-  readPrec = parens (choose [("PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT", pure PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT)-                            , ("PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT", pure PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT)-                            , ("PIPELINE_CREATE_DERIVATIVE_BIT", pure PIPELINE_CREATE_DERIVATIVE_BIT)-                            , ("PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT", pure PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT)-                            , ("PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT", pure PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT)-                            , ("PIPELINE_CREATE_LIBRARY_BIT_KHR", pure PIPELINE_CREATE_LIBRARY_BIT_KHR)-                            , ("PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV", pure PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV)-                            , ("PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR", pure PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR)-                            , ("PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR", pure PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR)-                            , ("PIPELINE_CREATE_DEFER_COMPILE_BIT_NV", pure PIPELINE_CREATE_DEFER_COMPILE_BIT_NV)-                            , ("PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR", pure PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR)-                            , ("PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR", pure PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR)-                            , ("PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR", pure PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR)-                            , ("PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR", pure PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR)-                            , ("PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR", pure PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR)-                            , ("PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR", pure PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR)-                            , ("PIPELINE_CREATE_DISPATCH_BASE_BIT", pure PIPELINE_CREATE_DISPATCH_BASE_BIT)-                            , ("PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT", pure PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineCreateFlagBits")-                       v <- step readPrec-                       pure (PipelineCreateFlagBits v)))+  readPrec = enumReadPrec enumPrefixPipelineCreateFlagBits+                          showTablePipelineCreateFlagBits+                          conNamePipelineCreateFlagBits+                          PipelineCreateFlagBits 
src/Vulkan/Core10/Enums/PipelineDepthStencilStateCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineDepthStencilStateCreateFlags" module Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlags  (PipelineDepthStencilStateCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkPipelineDepthStencilStateCreateFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNamePipelineDepthStencilStateCreateFlags :: String+conNamePipelineDepthStencilStateCreateFlags = "PipelineDepthStencilStateCreateFlags"++enumPrefixPipelineDepthStencilStateCreateFlags :: String+enumPrefixPipelineDepthStencilStateCreateFlags = ""++showTablePipelineDepthStencilStateCreateFlags :: [(PipelineDepthStencilStateCreateFlags, String)]+showTablePipelineDepthStencilStateCreateFlags = []+ instance Show PipelineDepthStencilStateCreateFlags where-  showsPrec p = \case-    PipelineDepthStencilStateCreateFlags x -> showParen (p >= 11) (showString "PipelineDepthStencilStateCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineDepthStencilStateCreateFlags+                            showTablePipelineDepthStencilStateCreateFlags+                            conNamePipelineDepthStencilStateCreateFlags+                            (\(PipelineDepthStencilStateCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineDepthStencilStateCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineDepthStencilStateCreateFlags")-                       v <- step readPrec-                       pure (PipelineDepthStencilStateCreateFlags v)))+  readPrec = enumReadPrec enumPrefixPipelineDepthStencilStateCreateFlags+                          showTablePipelineDepthStencilStateCreateFlags+                          conNamePipelineDepthStencilStateCreateFlags+                          PipelineDepthStencilStateCreateFlags 
src/Vulkan/Core10/Enums/PipelineDynamicStateCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineDynamicStateCreateFlags" module Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags  (PipelineDynamicStateCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkPipelineDynamicStateCreateFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNamePipelineDynamicStateCreateFlags :: String+conNamePipelineDynamicStateCreateFlags = "PipelineDynamicStateCreateFlags"++enumPrefixPipelineDynamicStateCreateFlags :: String+enumPrefixPipelineDynamicStateCreateFlags = ""++showTablePipelineDynamicStateCreateFlags :: [(PipelineDynamicStateCreateFlags, String)]+showTablePipelineDynamicStateCreateFlags = []+ instance Show PipelineDynamicStateCreateFlags where-  showsPrec p = \case-    PipelineDynamicStateCreateFlags x -> showParen (p >= 11) (showString "PipelineDynamicStateCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineDynamicStateCreateFlags+                            showTablePipelineDynamicStateCreateFlags+                            conNamePipelineDynamicStateCreateFlags+                            (\(PipelineDynamicStateCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineDynamicStateCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineDynamicStateCreateFlags")-                       v <- step readPrec-                       pure (PipelineDynamicStateCreateFlags v)))+  readPrec = enumReadPrec enumPrefixPipelineDynamicStateCreateFlags+                          showTablePipelineDynamicStateCreateFlags+                          conNamePipelineDynamicStateCreateFlags+                          PipelineDynamicStateCreateFlags 
src/Vulkan/Core10/Enums/PipelineInputAssemblyStateCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineInputAssemblyStateCreateFlags" module Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags  (PipelineInputAssemblyStateCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkPipelineInputAssemblyStateCreateFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNamePipelineInputAssemblyStateCreateFlags :: String+conNamePipelineInputAssemblyStateCreateFlags = "PipelineInputAssemblyStateCreateFlags"++enumPrefixPipelineInputAssemblyStateCreateFlags :: String+enumPrefixPipelineInputAssemblyStateCreateFlags = ""++showTablePipelineInputAssemblyStateCreateFlags :: [(PipelineInputAssemblyStateCreateFlags, String)]+showTablePipelineInputAssemblyStateCreateFlags = []+ instance Show PipelineInputAssemblyStateCreateFlags where-  showsPrec p = \case-    PipelineInputAssemblyStateCreateFlags x -> showParen (p >= 11) (showString "PipelineInputAssemblyStateCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineInputAssemblyStateCreateFlags+                            showTablePipelineInputAssemblyStateCreateFlags+                            conNamePipelineInputAssemblyStateCreateFlags+                            (\(PipelineInputAssemblyStateCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineInputAssemblyStateCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineInputAssemblyStateCreateFlags")-                       v <- step readPrec-                       pure (PipelineInputAssemblyStateCreateFlags v)))+  readPrec = enumReadPrec enumPrefixPipelineInputAssemblyStateCreateFlags+                          showTablePipelineInputAssemblyStateCreateFlags+                          conNamePipelineInputAssemblyStateCreateFlags+                          PipelineInputAssemblyStateCreateFlags 
src/Vulkan/Core10/Enums/PipelineLayoutCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineLayoutCreateFlags" module Vulkan.Core10.Enums.PipelineLayoutCreateFlags  (PipelineLayoutCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkPipelineLayoutCreateFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNamePipelineLayoutCreateFlags :: String+conNamePipelineLayoutCreateFlags = "PipelineLayoutCreateFlags"++enumPrefixPipelineLayoutCreateFlags :: String+enumPrefixPipelineLayoutCreateFlags = ""++showTablePipelineLayoutCreateFlags :: [(PipelineLayoutCreateFlags, String)]+showTablePipelineLayoutCreateFlags = []+ instance Show PipelineLayoutCreateFlags where-  showsPrec p = \case-    PipelineLayoutCreateFlags x -> showParen (p >= 11) (showString "PipelineLayoutCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineLayoutCreateFlags+                            showTablePipelineLayoutCreateFlags+                            conNamePipelineLayoutCreateFlags+                            (\(PipelineLayoutCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineLayoutCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineLayoutCreateFlags")-                       v <- step readPrec-                       pure (PipelineLayoutCreateFlags v)))+  readPrec = enumReadPrec enumPrefixPipelineLayoutCreateFlags+                          showTablePipelineLayoutCreateFlags+                          conNamePipelineLayoutCreateFlags+                          PipelineLayoutCreateFlags 
src/Vulkan/Core10/Enums/PipelineMultisampleStateCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineMultisampleStateCreateFlags" module Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags  (PipelineMultisampleStateCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkPipelineMultisampleStateCreateFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNamePipelineMultisampleStateCreateFlags :: String+conNamePipelineMultisampleStateCreateFlags = "PipelineMultisampleStateCreateFlags"++enumPrefixPipelineMultisampleStateCreateFlags :: String+enumPrefixPipelineMultisampleStateCreateFlags = ""++showTablePipelineMultisampleStateCreateFlags :: [(PipelineMultisampleStateCreateFlags, String)]+showTablePipelineMultisampleStateCreateFlags = []+ instance Show PipelineMultisampleStateCreateFlags where-  showsPrec p = \case-    PipelineMultisampleStateCreateFlags x -> showParen (p >= 11) (showString "PipelineMultisampleStateCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineMultisampleStateCreateFlags+                            showTablePipelineMultisampleStateCreateFlags+                            conNamePipelineMultisampleStateCreateFlags+                            (\(PipelineMultisampleStateCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineMultisampleStateCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineMultisampleStateCreateFlags")-                       v <- step readPrec-                       pure (PipelineMultisampleStateCreateFlags v)))+  readPrec = enumReadPrec enumPrefixPipelineMultisampleStateCreateFlags+                          showTablePipelineMultisampleStateCreateFlags+                          conNamePipelineMultisampleStateCreateFlags+                          PipelineMultisampleStateCreateFlags 
src/Vulkan/Core10/Enums/PipelineRasterizationStateCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineRasterizationStateCreateFlags" module Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags  (PipelineRasterizationStateCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkPipelineRasterizationStateCreateFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNamePipelineRasterizationStateCreateFlags :: String+conNamePipelineRasterizationStateCreateFlags = "PipelineRasterizationStateCreateFlags"++enumPrefixPipelineRasterizationStateCreateFlags :: String+enumPrefixPipelineRasterizationStateCreateFlags = ""++showTablePipelineRasterizationStateCreateFlags :: [(PipelineRasterizationStateCreateFlags, String)]+showTablePipelineRasterizationStateCreateFlags = []+ instance Show PipelineRasterizationStateCreateFlags where-  showsPrec p = \case-    PipelineRasterizationStateCreateFlags x -> showParen (p >= 11) (showString "PipelineRasterizationStateCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineRasterizationStateCreateFlags+                            showTablePipelineRasterizationStateCreateFlags+                            conNamePipelineRasterizationStateCreateFlags+                            (\(PipelineRasterizationStateCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineRasterizationStateCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineRasterizationStateCreateFlags")-                       v <- step readPrec-                       pure (PipelineRasterizationStateCreateFlags v)))+  readPrec = enumReadPrec enumPrefixPipelineRasterizationStateCreateFlags+                          showTablePipelineRasterizationStateCreateFlags+                          conNamePipelineRasterizationStateCreateFlags+                          PipelineRasterizationStateCreateFlags 
src/Vulkan/Core10/Enums/PipelineShaderStageCreateFlagBits.hs view
@@ -1,27 +1,25 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits  ( PipelineShaderStageCreateFlagBits( PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT+-- No documentation found for Chapter "PipelineShaderStageCreateFlagBits"+module Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits  ( PipelineShaderStageCreateFlags+                                                              , PipelineShaderStageCreateFlagBits( PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT                                                                                                  , PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT                                                                                                  , ..                                                                                                  )-                                                              , PipelineShaderStageCreateFlags                                                               ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type PipelineShaderStageCreateFlags = PipelineShaderStageCreateFlagBits+ -- | VkPipelineShaderStageCreateFlagBits - Bitmask controlling how a pipeline -- shader stage is created --@@ -52,27 +50,35 @@ -- | 'PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT' specifies -- that the subgroup sizes /must/ be launched with all invocations active -- in the compute stage.-pattern PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = PipelineShaderStageCreateFlagBits 0x00000002+pattern PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT      = PipelineShaderStageCreateFlagBits 0x00000002 -- | 'PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT' -- specifies that the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize> -- /may/ vary in the shader stage. pattern PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = PipelineShaderStageCreateFlagBits 0x00000001 -type PipelineShaderStageCreateFlags = PipelineShaderStageCreateFlagBits+conNamePipelineShaderStageCreateFlagBits :: String+conNamePipelineShaderStageCreateFlagBits = "PipelineShaderStageCreateFlagBits" +enumPrefixPipelineShaderStageCreateFlagBits :: String+enumPrefixPipelineShaderStageCreateFlagBits = "PIPELINE_SHADER_STAGE_CREATE_"++showTablePipelineShaderStageCreateFlagBits :: [(PipelineShaderStageCreateFlagBits, String)]+showTablePipelineShaderStageCreateFlagBits =+  [ (PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT     , "REQUIRE_FULL_SUBGROUPS_BIT_EXT")+  , (PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, "ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT")+  ]+ instance Show PipelineShaderStageCreateFlagBits where-  showsPrec p = \case-    PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT -> showString "PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT"-    PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT -> showString "PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT"-    PipelineShaderStageCreateFlagBits x -> showParen (p >= 11) (showString "PipelineShaderStageCreateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineShaderStageCreateFlagBits+                            showTablePipelineShaderStageCreateFlagBits+                            conNamePipelineShaderStageCreateFlagBits+                            (\(PipelineShaderStageCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineShaderStageCreateFlagBits where-  readPrec = parens (choose [("PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT", pure PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT)-                            , ("PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT", pure PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineShaderStageCreateFlagBits")-                       v <- step readPrec-                       pure (PipelineShaderStageCreateFlagBits v)))+  readPrec = enumReadPrec enumPrefixPipelineShaderStageCreateFlagBits+                          showTablePipelineShaderStageCreateFlagBits+                          conNamePipelineShaderStageCreateFlagBits+                          PipelineShaderStageCreateFlagBits 
src/Vulkan/Core10/Enums/PipelineStageFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.PipelineStageFlagBits  ( PipelineStageFlagBits( PIPELINE_STAGE_TOP_OF_PIPE_BIT+-- No documentation found for Chapter "PipelineStageFlagBits"+module Vulkan.Core10.Enums.PipelineStageFlagBits  ( PipelineStageFlags+                                                  , PipelineStageFlagBits( PIPELINE_STAGE_TOP_OF_PIPE_BIT                                                                          , PIPELINE_STAGE_DRAW_INDIRECT_BIT                                                                          , PIPELINE_STAGE_VERTEX_INPUT_BIT                                                                          , PIPELINE_STAGE_VERTEX_SHADER_BIT@@ -21,31 +23,27 @@                                                                          , PIPELINE_STAGE_MESH_SHADER_BIT_NV                                                                          , PIPELINE_STAGE_TASK_SHADER_BIT_NV                                                                          , PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV-                                                                         , PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR                                                                          , PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR+                                                                         , PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR                                                                          , PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT                                                                          , PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT                                                                          , ..                                                                          )-                                                  , PipelineStageFlags                                                   ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type PipelineStageFlags = PipelineStageFlagBits+ -- | VkPipelineStageFlagBits - Bitmask specifying pipeline stages -- -- = See Also@@ -62,51 +60,51 @@ -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlags' set to @0@ when -- specified in the second synchronization scope, but specifies no stages -- in the first scope.-pattern PIPELINE_STAGE_TOP_OF_PIPE_BIT = PipelineStageFlagBits 0x00000001+pattern PIPELINE_STAGE_TOP_OF_PIPE_BIT                      = PipelineStageFlagBits 0x00000001 -- | 'PIPELINE_STAGE_DRAW_INDIRECT_BIT' specifies the stage of the pipeline--- where Draw\/DispatchIndirect data structures are consumed. This stage--- also includes reading commands written by+-- where Draw\/DispatchIndirect\/TraceRaysIndirect data structures are+-- consumed. This stage also includes reading commands written by -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdExecuteGeneratedCommandsNV'.-pattern PIPELINE_STAGE_DRAW_INDIRECT_BIT = PipelineStageFlagBits 0x00000002+pattern PIPELINE_STAGE_DRAW_INDIRECT_BIT                    = PipelineStageFlagBits 0x00000002 -- | 'PIPELINE_STAGE_VERTEX_INPUT_BIT' specifies the stage of the pipeline -- where vertex and index buffers are consumed.-pattern PIPELINE_STAGE_VERTEX_INPUT_BIT = PipelineStageFlagBits 0x00000004+pattern PIPELINE_STAGE_VERTEX_INPUT_BIT                     = PipelineStageFlagBits 0x00000004 -- | 'PIPELINE_STAGE_VERTEX_SHADER_BIT' specifies the vertex shader stage.-pattern PIPELINE_STAGE_VERTEX_SHADER_BIT = PipelineStageFlagBits 0x00000008+pattern PIPELINE_STAGE_VERTEX_SHADER_BIT                    = PipelineStageFlagBits 0x00000008 -- | 'PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT' specifies the -- tessellation control shader stage.-pattern PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = PipelineStageFlagBits 0x00000010+pattern PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT      = PipelineStageFlagBits 0x00000010 -- | 'PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT' specifies the -- tessellation evaluation shader stage.-pattern PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = PipelineStageFlagBits 0x00000020+pattern PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT   = PipelineStageFlagBits 0x00000020 -- | 'PIPELINE_STAGE_GEOMETRY_SHADER_BIT' specifies the geometry shader -- stage.-pattern PIPELINE_STAGE_GEOMETRY_SHADER_BIT = PipelineStageFlagBits 0x00000040+pattern PIPELINE_STAGE_GEOMETRY_SHADER_BIT                  = PipelineStageFlagBits 0x00000040 -- | 'PIPELINE_STAGE_FRAGMENT_SHADER_BIT' specifies the fragment shader -- stage.-pattern PIPELINE_STAGE_FRAGMENT_SHADER_BIT = PipelineStageFlagBits 0x00000080+pattern PIPELINE_STAGE_FRAGMENT_SHADER_BIT                  = PipelineStageFlagBits 0x00000080 -- | 'PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT' specifies the stage of the -- pipeline where early fragment tests (depth and stencil tests before -- fragment shading) are performed. This stage also includes -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations> -- for framebuffer attachments with a depth\/stencil format.-pattern PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = PipelineStageFlagBits 0x00000100+pattern PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT             = PipelineStageFlagBits 0x00000100 -- | 'PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT' specifies the stage of the -- pipeline where late fragment tests (depth and stencil tests after -- fragment shading) are performed. This stage also includes -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass store operations> -- for framebuffer attachments with a depth\/stencil format.-pattern PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = PipelineStageFlagBits 0x00000200+pattern PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT              = PipelineStageFlagBits 0x00000200 -- | 'PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT' specifies the stage of the -- pipeline after blending where the final color values are output from the -- pipeline. This stage also includes -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations> -- and multisample resolve operations for framebuffer attachments with a -- color or depth\/stencil format.-pattern PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = PipelineStageFlagBits 0x00000400+pattern PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT          = PipelineStageFlagBits 0x00000400 -- | 'PIPELINE_STAGE_COMPUTE_SHADER_BIT' specifies the execution of a compute -- shader.-pattern PIPELINE_STAGE_COMPUTE_SHADER_BIT = PipelineStageFlagBits 0x00000800+pattern PIPELINE_STAGE_COMPUTE_SHADER_BIT                   = PipelineStageFlagBits 0x00000800 -- | #synchronization-pipeline-stages-transfer# 'PIPELINE_STAGE_TRANSFER_BIT' -- specifies the following commands: --@@ -125,17 +123,17 @@ --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>, --     with the exception of --     'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'-pattern PIPELINE_STAGE_TRANSFER_BIT = PipelineStageFlagBits 0x00001000+pattern PIPELINE_STAGE_TRANSFER_BIT                         = PipelineStageFlagBits 0x00001000 -- | 'PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT' is equivalent to -- 'PIPELINE_STAGE_ALL_COMMANDS_BIT' with -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlags' set to @0@ when -- specified in the first synchronization scope, but specifies no stages in -- the second scope.-pattern PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = PipelineStageFlagBits 0x00002000+pattern PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT                   = PipelineStageFlagBits 0x00002000 -- | 'PIPELINE_STAGE_HOST_BIT' specifies a pseudo-stage indicating execution -- on the host of reads\/writes of device memory. This stage is not invoked -- by any commands recorded in a command buffer.-pattern PIPELINE_STAGE_HOST_BIT = PipelineStageFlagBits 0x00004000+pattern PIPELINE_STAGE_HOST_BIT                             = PipelineStageFlagBits 0x00004000 -- | 'PIPELINE_STAGE_ALL_GRAPHICS_BIT' specifies the execution of all -- graphics pipeline stages, and is equivalent to the logical OR of: --@@ -170,102 +168,99 @@ -- -   'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' -- -- -   'PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'-pattern PIPELINE_STAGE_ALL_GRAPHICS_BIT = PipelineStageFlagBits 0x00008000+pattern PIPELINE_STAGE_ALL_GRAPHICS_BIT                     = PipelineStageFlagBits 0x00008000 -- | 'PIPELINE_STAGE_ALL_COMMANDS_BIT' specifies all commands supported on -- the queue it is used with.-pattern PIPELINE_STAGE_ALL_COMMANDS_BIT = PipelineStageFlagBits 0x00010000+pattern PIPELINE_STAGE_ALL_COMMANDS_BIT                     = PipelineStageFlagBits 0x00010000 -- | 'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV' specifies the stage of the -- pipeline where device-side preprocessing for generated commands via -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV' -- is handled.-pattern PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = PipelineStageFlagBits 0x00020000+pattern PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV            = PipelineStageFlagBits 0x00020000 -- | 'PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT' specifies the stage of -- the pipeline where the fragment density map is read to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops generate the fragment areas>.-pattern PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = PipelineStageFlagBits 0x00800000+pattern PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT     = PipelineStageFlagBits 0x00800000 -- | 'PIPELINE_STAGE_MESH_SHADER_BIT_NV' specifies the mesh shader stage.-pattern PIPELINE_STAGE_MESH_SHADER_BIT_NV = PipelineStageFlagBits 0x00100000+pattern PIPELINE_STAGE_MESH_SHADER_BIT_NV                   = PipelineStageFlagBits 0x00100000 -- | 'PIPELINE_STAGE_TASK_SHADER_BIT_NV' specifies the task shader stage.-pattern PIPELINE_STAGE_TASK_SHADER_BIT_NV = PipelineStageFlagBits 0x00080000+pattern PIPELINE_STAGE_TASK_SHADER_BIT_NV                   = PipelineStageFlagBits 0x00080000 -- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV"-pattern PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = PipelineStageFlagBits 0x00400000+pattern PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV            = PipelineStageFlagBits 0x00400000+-- | 'PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' specifies the execution of+-- the ray tracing shader stages, via+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV' ,+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysKHR', or+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysIndirectKHR'+pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR           = PipelineStageFlagBits 0x00200000 -- | 'PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' specifies the -- execution of--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure acceleration structure commands>.+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'+-- ,+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresIndirectKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyAccelerationStructureKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyAccelerationStructureToMemoryKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyMemoryToAccelerationStructureKHR',+-- and+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR'. pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = PipelineStageFlagBits 0x02000000--- | 'PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' specifies the execution of--- the ray tracing shader stages.-pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = PipelineStageFlagBits 0x00200000 -- | 'PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT' specifies the stage of -- the pipeline where the predicate of conditional rendering is consumed.-pattern PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = PipelineStageFlagBits 0x00040000+pattern PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT        = PipelineStageFlagBits 0x00040000 -- | 'PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT' specifies the stage of the -- pipeline where vertex attribute output values are written to the -- transform feedback buffers.-pattern PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = PipelineStageFlagBits 0x01000000+pattern PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT           = PipelineStageFlagBits 0x01000000 -type PipelineStageFlags = PipelineStageFlagBits+conNamePipelineStageFlagBits :: String+conNamePipelineStageFlagBits = "PipelineStageFlagBits" +enumPrefixPipelineStageFlagBits :: String+enumPrefixPipelineStageFlagBits = "PIPELINE_STAGE_"++showTablePipelineStageFlagBits :: [(PipelineStageFlagBits, String)]+showTablePipelineStageFlagBits =+  [ (PIPELINE_STAGE_TOP_OF_PIPE_BIT                     , "TOP_OF_PIPE_BIT")+  , (PIPELINE_STAGE_DRAW_INDIRECT_BIT                   , "DRAW_INDIRECT_BIT")+  , (PIPELINE_STAGE_VERTEX_INPUT_BIT                    , "VERTEX_INPUT_BIT")+  , (PIPELINE_STAGE_VERTEX_SHADER_BIT                   , "VERTEX_SHADER_BIT")+  , (PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT     , "TESSELLATION_CONTROL_SHADER_BIT")+  , (PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT  , "TESSELLATION_EVALUATION_SHADER_BIT")+  , (PIPELINE_STAGE_GEOMETRY_SHADER_BIT                 , "GEOMETRY_SHADER_BIT")+  , (PIPELINE_STAGE_FRAGMENT_SHADER_BIT                 , "FRAGMENT_SHADER_BIT")+  , (PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT            , "EARLY_FRAGMENT_TESTS_BIT")+  , (PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT             , "LATE_FRAGMENT_TESTS_BIT")+  , (PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT         , "COLOR_ATTACHMENT_OUTPUT_BIT")+  , (PIPELINE_STAGE_COMPUTE_SHADER_BIT                  , "COMPUTE_SHADER_BIT")+  , (PIPELINE_STAGE_TRANSFER_BIT                        , "TRANSFER_BIT")+  , (PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT                  , "BOTTOM_OF_PIPE_BIT")+  , (PIPELINE_STAGE_HOST_BIT                            , "HOST_BIT")+  , (PIPELINE_STAGE_ALL_GRAPHICS_BIT                    , "ALL_GRAPHICS_BIT")+  , (PIPELINE_STAGE_ALL_COMMANDS_BIT                    , "ALL_COMMANDS_BIT")+  , (PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV           , "COMMAND_PREPROCESS_BIT_NV")+  , (PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT    , "FRAGMENT_DENSITY_PROCESS_BIT_EXT")+  , (PIPELINE_STAGE_MESH_SHADER_BIT_NV                  , "MESH_SHADER_BIT_NV")+  , (PIPELINE_STAGE_TASK_SHADER_BIT_NV                  , "TASK_SHADER_BIT_NV")+  , (PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV           , "SHADING_RATE_IMAGE_BIT_NV")+  , (PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR          , "RAY_TRACING_SHADER_BIT_KHR")+  , (PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, "ACCELERATION_STRUCTURE_BUILD_BIT_KHR")+  , (PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT       , "CONDITIONAL_RENDERING_BIT_EXT")+  , (PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT          , "TRANSFORM_FEEDBACK_BIT_EXT")+  ]+ instance Show PipelineStageFlagBits where-  showsPrec p = \case-    PIPELINE_STAGE_TOP_OF_PIPE_BIT -> showString "PIPELINE_STAGE_TOP_OF_PIPE_BIT"-    PIPELINE_STAGE_DRAW_INDIRECT_BIT -> showString "PIPELINE_STAGE_DRAW_INDIRECT_BIT"-    PIPELINE_STAGE_VERTEX_INPUT_BIT -> showString "PIPELINE_STAGE_VERTEX_INPUT_BIT"-    PIPELINE_STAGE_VERTEX_SHADER_BIT -> showString "PIPELINE_STAGE_VERTEX_SHADER_BIT"-    PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT -> showString "PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"-    PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT -> showString "PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"-    PIPELINE_STAGE_GEOMETRY_SHADER_BIT -> showString "PIPELINE_STAGE_GEOMETRY_SHADER_BIT"-    PIPELINE_STAGE_FRAGMENT_SHADER_BIT -> showString "PIPELINE_STAGE_FRAGMENT_SHADER_BIT"-    PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT -> showString "PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"-    PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT -> showString "PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"-    PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT -> showString "PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"-    PIPELINE_STAGE_COMPUTE_SHADER_BIT -> showString "PIPELINE_STAGE_COMPUTE_SHADER_BIT"-    PIPELINE_STAGE_TRANSFER_BIT -> showString "PIPELINE_STAGE_TRANSFER_BIT"-    PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT -> showString "PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"-    PIPELINE_STAGE_HOST_BIT -> showString "PIPELINE_STAGE_HOST_BIT"-    PIPELINE_STAGE_ALL_GRAPHICS_BIT -> showString "PIPELINE_STAGE_ALL_GRAPHICS_BIT"-    PIPELINE_STAGE_ALL_COMMANDS_BIT -> showString "PIPELINE_STAGE_ALL_COMMANDS_BIT"-    PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV -> showString "PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV"-    PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT -> showString "PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT"-    PIPELINE_STAGE_MESH_SHADER_BIT_NV -> showString "PIPELINE_STAGE_MESH_SHADER_BIT_NV"-    PIPELINE_STAGE_TASK_SHADER_BIT_NV -> showString "PIPELINE_STAGE_TASK_SHADER_BIT_NV"-    PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV -> showString "PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV"-    PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR -> showString "PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"-    PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR -> showString "PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR"-    PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT -> showString "PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT"-    PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT -> showString "PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT"-    PipelineStageFlagBits x -> showParen (p >= 11) (showString "PipelineStageFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineStageFlagBits+                            showTablePipelineStageFlagBits+                            conNamePipelineStageFlagBits+                            (\(PipelineStageFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineStageFlagBits where-  readPrec = parens (choose [("PIPELINE_STAGE_TOP_OF_PIPE_BIT", pure PIPELINE_STAGE_TOP_OF_PIPE_BIT)-                            , ("PIPELINE_STAGE_DRAW_INDIRECT_BIT", pure PIPELINE_STAGE_DRAW_INDIRECT_BIT)-                            , ("PIPELINE_STAGE_VERTEX_INPUT_BIT", pure PIPELINE_STAGE_VERTEX_INPUT_BIT)-                            , ("PIPELINE_STAGE_VERTEX_SHADER_BIT", pure PIPELINE_STAGE_VERTEX_SHADER_BIT)-                            , ("PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT", pure PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT)-                            , ("PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", pure PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT)-                            , ("PIPELINE_STAGE_GEOMETRY_SHADER_BIT", pure PIPELINE_STAGE_GEOMETRY_SHADER_BIT)-                            , ("PIPELINE_STAGE_FRAGMENT_SHADER_BIT", pure PIPELINE_STAGE_FRAGMENT_SHADER_BIT)-                            , ("PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT", pure PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT)-                            , ("PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT", pure PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT)-                            , ("PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT", pure PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT)-                            , ("PIPELINE_STAGE_COMPUTE_SHADER_BIT", pure PIPELINE_STAGE_COMPUTE_SHADER_BIT)-                            , ("PIPELINE_STAGE_TRANSFER_BIT", pure PIPELINE_STAGE_TRANSFER_BIT)-                            , ("PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT", pure PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT)-                            , ("PIPELINE_STAGE_HOST_BIT", pure PIPELINE_STAGE_HOST_BIT)-                            , ("PIPELINE_STAGE_ALL_GRAPHICS_BIT", pure PIPELINE_STAGE_ALL_GRAPHICS_BIT)-                            , ("PIPELINE_STAGE_ALL_COMMANDS_BIT", pure PIPELINE_STAGE_ALL_COMMANDS_BIT)-                            , ("PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV", pure PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV)-                            , ("PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT", pure PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT)-                            , ("PIPELINE_STAGE_MESH_SHADER_BIT_NV", pure PIPELINE_STAGE_MESH_SHADER_BIT_NV)-                            , ("PIPELINE_STAGE_TASK_SHADER_BIT_NV", pure PIPELINE_STAGE_TASK_SHADER_BIT_NV)-                            , ("PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV", pure PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV)-                            , ("PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR", pure PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR)-                            , ("PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR", pure PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR)-                            , ("PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT", pure PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT)-                            , ("PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT", pure PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineStageFlagBits")-                       v <- step readPrec-                       pure (PipelineStageFlagBits v)))+  readPrec = enumReadPrec enumPrefixPipelineStageFlagBits+                          showTablePipelineStageFlagBits+                          conNamePipelineStageFlagBits+                          PipelineStageFlagBits 
src/Vulkan/Core10/Enums/PipelineStageFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.PipelineStageFlagBits  ( PipelineStageFlagBits-                                                  , PipelineStageFlags+-- No documentation found for Chapter "PipelineStageFlagBits"+module Vulkan.Core10.Enums.PipelineStageFlagBits  ( PipelineStageFlags+                                                  , PipelineStageFlagBits                                                   ) where   -data PipelineStageFlagBits- type PipelineStageFlags = PipelineStageFlagBits++data PipelineStageFlagBits 
src/Vulkan/Core10/Enums/PipelineTessellationStateCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineTessellationStateCreateFlags" module Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags  (PipelineTessellationStateCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkPipelineTessellationStateCreateFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNamePipelineTessellationStateCreateFlags :: String+conNamePipelineTessellationStateCreateFlags = "PipelineTessellationStateCreateFlags"++enumPrefixPipelineTessellationStateCreateFlags :: String+enumPrefixPipelineTessellationStateCreateFlags = ""++showTablePipelineTessellationStateCreateFlags :: [(PipelineTessellationStateCreateFlags, String)]+showTablePipelineTessellationStateCreateFlags = []+ instance Show PipelineTessellationStateCreateFlags where-  showsPrec p = \case-    PipelineTessellationStateCreateFlags x -> showParen (p >= 11) (showString "PipelineTessellationStateCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineTessellationStateCreateFlags+                            showTablePipelineTessellationStateCreateFlags+                            conNamePipelineTessellationStateCreateFlags+                            (\(PipelineTessellationStateCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineTessellationStateCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineTessellationStateCreateFlags")-                       v <- step readPrec-                       pure (PipelineTessellationStateCreateFlags v)))+  readPrec = enumReadPrec enumPrefixPipelineTessellationStateCreateFlags+                          showTablePipelineTessellationStateCreateFlags+                          conNamePipelineTessellationStateCreateFlags+                          PipelineTessellationStateCreateFlags 
src/Vulkan/Core10/Enums/PipelineVertexInputStateCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineVertexInputStateCreateFlags" module Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags  (PipelineVertexInputStateCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkPipelineVertexInputStateCreateFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNamePipelineVertexInputStateCreateFlags :: String+conNamePipelineVertexInputStateCreateFlags = "PipelineVertexInputStateCreateFlags"++enumPrefixPipelineVertexInputStateCreateFlags :: String+enumPrefixPipelineVertexInputStateCreateFlags = ""++showTablePipelineVertexInputStateCreateFlags :: [(PipelineVertexInputStateCreateFlags, String)]+showTablePipelineVertexInputStateCreateFlags = []+ instance Show PipelineVertexInputStateCreateFlags where-  showsPrec p = \case-    PipelineVertexInputStateCreateFlags x -> showParen (p >= 11) (showString "PipelineVertexInputStateCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineVertexInputStateCreateFlags+                            showTablePipelineVertexInputStateCreateFlags+                            conNamePipelineVertexInputStateCreateFlags+                            (\(PipelineVertexInputStateCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineVertexInputStateCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineVertexInputStateCreateFlags")-                       v <- step readPrec-                       pure (PipelineVertexInputStateCreateFlags v)))+  readPrec = enumReadPrec enumPrefixPipelineVertexInputStateCreateFlags+                          showTablePipelineVertexInputStateCreateFlags+                          conNamePipelineVertexInputStateCreateFlags+                          PipelineVertexInputStateCreateFlags 
src/Vulkan/Core10/Enums/PipelineViewportStateCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineViewportStateCreateFlags" module Vulkan.Core10.Enums.PipelineViewportStateCreateFlags  (PipelineViewportStateCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkPipelineViewportStateCreateFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNamePipelineViewportStateCreateFlags :: String+conNamePipelineViewportStateCreateFlags = "PipelineViewportStateCreateFlags"++enumPrefixPipelineViewportStateCreateFlags :: String+enumPrefixPipelineViewportStateCreateFlags = ""++showTablePipelineViewportStateCreateFlags :: [(PipelineViewportStateCreateFlags, String)]+showTablePipelineViewportStateCreateFlags = []+ instance Show PipelineViewportStateCreateFlags where-  showsPrec p = \case-    PipelineViewportStateCreateFlags x -> showParen (p >= 11) (showString "PipelineViewportStateCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineViewportStateCreateFlags+                            showTablePipelineViewportStateCreateFlags+                            conNamePipelineViewportStateCreateFlags+                            (\(PipelineViewportStateCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineViewportStateCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineViewportStateCreateFlags")-                       v <- step readPrec-                       pure (PipelineViewportStateCreateFlags v)))+  readPrec = enumReadPrec enumPrefixPipelineViewportStateCreateFlags+                          showTablePipelineViewportStateCreateFlags+                          conNamePipelineViewportStateCreateFlags+                          PipelineViewportStateCreateFlags 
src/Vulkan/Core10/Enums/PolygonMode.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "PolygonMode" module Vulkan.Core10.Enums.PolygonMode  (PolygonMode( POLYGON_MODE_FILL                                                     , POLYGON_MODE_LINE                                                     , POLYGON_MODE_POINT@@ -6,19 +7,13 @@                                                     , ..                                                     )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkPolygonMode - Control polygon rasterization mode --@@ -36,13 +31,13 @@  -- | 'POLYGON_MODE_FILL' specifies that polygons are rendered using the -- polygon rasterization rules in this section.-pattern POLYGON_MODE_FILL = PolygonMode 0+pattern POLYGON_MODE_FILL              = PolygonMode 0 -- | 'POLYGON_MODE_LINE' specifies that polygon edges are drawn as line -- segments.-pattern POLYGON_MODE_LINE = PolygonMode 1+pattern POLYGON_MODE_LINE              = PolygonMode 1 -- | 'POLYGON_MODE_POINT' specifies that polygon vertices are drawn as -- points.-pattern POLYGON_MODE_POINT = PolygonMode 2+pattern POLYGON_MODE_POINT             = PolygonMode 2 -- | 'POLYGON_MODE_FILL_RECTANGLE_NV' specifies that polygons are rendered -- using polygon rasterization rules, modified to consider a sample within -- the primitive if the sample location is inside the axis-aligned bounding@@ -67,22 +62,24 @@              POLYGON_MODE_POINT,              POLYGON_MODE_FILL_RECTANGLE_NV :: PolygonMode #-} +conNamePolygonMode :: String+conNamePolygonMode = "PolygonMode"++enumPrefixPolygonMode :: String+enumPrefixPolygonMode = "POLYGON_MODE_"++showTablePolygonMode :: [(PolygonMode, String)]+showTablePolygonMode =+  [ (POLYGON_MODE_FILL             , "FILL")+  , (POLYGON_MODE_LINE             , "LINE")+  , (POLYGON_MODE_POINT            , "POINT")+  , (POLYGON_MODE_FILL_RECTANGLE_NV, "FILL_RECTANGLE_NV")+  ]+ instance Show PolygonMode where-  showsPrec p = \case-    POLYGON_MODE_FILL -> showString "POLYGON_MODE_FILL"-    POLYGON_MODE_LINE -> showString "POLYGON_MODE_LINE"-    POLYGON_MODE_POINT -> showString "POLYGON_MODE_POINT"-    POLYGON_MODE_FILL_RECTANGLE_NV -> showString "POLYGON_MODE_FILL_RECTANGLE_NV"-    PolygonMode x -> showParen (p >= 11) (showString "PolygonMode " . showsPrec 11 x)+  showsPrec =+    enumShowsPrec enumPrefixPolygonMode showTablePolygonMode conNamePolygonMode (\(PolygonMode x) -> x) (showsPrec 11)  instance Read PolygonMode where-  readPrec = parens (choose [("POLYGON_MODE_FILL", pure POLYGON_MODE_FILL)-                            , ("POLYGON_MODE_LINE", pure POLYGON_MODE_LINE)-                            , ("POLYGON_MODE_POINT", pure POLYGON_MODE_POINT)-                            , ("POLYGON_MODE_FILL_RECTANGLE_NV", pure POLYGON_MODE_FILL_RECTANGLE_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "PolygonMode")-                       v <- step readPrec-                       pure (PolygonMode v)))+  readPrec = enumReadPrec enumPrefixPolygonMode showTablePolygonMode conNamePolygonMode PolygonMode 
src/Vulkan/Core10/Enums/PrimitiveTopology.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "PrimitiveTopology" module Vulkan.Core10.Enums.PrimitiveTopology  (PrimitiveTopology( PRIMITIVE_TOPOLOGY_POINT_LIST                                                                 , PRIMITIVE_TOPOLOGY_LINE_LIST                                                                 , PRIMITIVE_TOPOLOGY_LINE_STRIP@@ -13,19 +14,13 @@                                                                 , ..                                                                 )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkPrimitiveTopology - Supported primitive topologies --@@ -70,21 +65,21 @@  -- | 'PRIMITIVE_TOPOLOGY_POINT_LIST' specifies a series of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-point-lists separate point primitives>.-pattern PRIMITIVE_TOPOLOGY_POINT_LIST = PrimitiveTopology 0+pattern PRIMITIVE_TOPOLOGY_POINT_LIST                    = PrimitiveTopology 0 -- | 'PRIMITIVE_TOPOLOGY_LINE_LIST' specifies a series of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-lists separate line primitives>.-pattern PRIMITIVE_TOPOLOGY_LINE_LIST = PrimitiveTopology 1+pattern PRIMITIVE_TOPOLOGY_LINE_LIST                     = PrimitiveTopology 1 -- | 'PRIMITIVE_TOPOLOGY_LINE_STRIP' specifies a series of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-strips connected line primitives> -- with consecutive lines sharing a vertex.-pattern PRIMITIVE_TOPOLOGY_LINE_STRIP = PrimitiveTopology 2+pattern PRIMITIVE_TOPOLOGY_LINE_STRIP                    = PrimitiveTopology 2 -- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_LIST' specifies a series of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-lists separate triangle primitives>.-pattern PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = PrimitiveTopology 3+pattern PRIMITIVE_TOPOLOGY_TRIANGLE_LIST                 = PrimitiveTopology 3 -- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP' specifies a series of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-strips connected triangle primitives> -- with consecutive triangles sharing an edge.-pattern PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = PrimitiveTopology 4+pattern PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP                = PrimitiveTopology 4 -- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_FAN' specifies a series of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-fans connected triangle primitives> -- with all triangles sharing a common vertex. If the@@ -93,24 +88,24 @@ -- is 'Vulkan.Core10.FundamentalTypes.FALSE', then triangle fans are not -- supported by the implementation, and 'PRIMITIVE_TOPOLOGY_TRIANGLE_FAN' -- /must/ not be used.-pattern PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = PrimitiveTopology 5+pattern PRIMITIVE_TOPOLOGY_TRIANGLE_FAN                  = PrimitiveTopology 5 -- | 'PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY' specifies a series of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-lists-with-adjacency separate line primitives with adjacency>.-pattern PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = PrimitiveTopology 6+pattern PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY      = PrimitiveTopology 6 -- | 'PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY' specifies a series of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-strips-with-adjacency connected line primitives with adjacency>, -- with consecutive primitives sharing three vertices.-pattern PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = PrimitiveTopology 7+pattern PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY     = PrimitiveTopology 7 -- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY' specifies a series of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-lists-with-adjacency separate triangle primitives with adjacency>.-pattern PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = PrimitiveTopology 8+pattern PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY  = PrimitiveTopology 8 -- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY' specifies -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-strips-with-adjacency connected triangle primitives with adjacency>, -- with consecutive triangles sharing an edge. pattern PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = PrimitiveTopology 9 -- | 'PRIMITIVE_TOPOLOGY_PATCH_LIST' specifies -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-patch-lists separate patch primitives>.-pattern PRIMITIVE_TOPOLOGY_PATCH_LIST = PrimitiveTopology 10+pattern PRIMITIVE_TOPOLOGY_PATCH_LIST                    = PrimitiveTopology 10 {-# complete PRIMITIVE_TOPOLOGY_POINT_LIST,              PRIMITIVE_TOPOLOGY_LINE_LIST,              PRIMITIVE_TOPOLOGY_LINE_STRIP,@@ -123,36 +118,35 @@              PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,              PRIMITIVE_TOPOLOGY_PATCH_LIST :: PrimitiveTopology #-} +conNamePrimitiveTopology :: String+conNamePrimitiveTopology = "PrimitiveTopology"++enumPrefixPrimitiveTopology :: String+enumPrefixPrimitiveTopology = "PRIMITIVE_TOPOLOGY_"++showTablePrimitiveTopology :: [(PrimitiveTopology, String)]+showTablePrimitiveTopology =+  [ (PRIMITIVE_TOPOLOGY_POINT_LIST                   , "POINT_LIST")+  , (PRIMITIVE_TOPOLOGY_LINE_LIST                    , "LINE_LIST")+  , (PRIMITIVE_TOPOLOGY_LINE_STRIP                   , "LINE_STRIP")+  , (PRIMITIVE_TOPOLOGY_TRIANGLE_LIST                , "TRIANGLE_LIST")+  , (PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP               , "TRIANGLE_STRIP")+  , (PRIMITIVE_TOPOLOGY_TRIANGLE_FAN                 , "TRIANGLE_FAN")+  , (PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY     , "LINE_LIST_WITH_ADJACENCY")+  , (PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY    , "LINE_STRIP_WITH_ADJACENCY")+  , (PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY , "TRIANGLE_LIST_WITH_ADJACENCY")+  , (PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY, "TRIANGLE_STRIP_WITH_ADJACENCY")+  , (PRIMITIVE_TOPOLOGY_PATCH_LIST                   , "PATCH_LIST")+  ]+ instance Show PrimitiveTopology where-  showsPrec p = \case-    PRIMITIVE_TOPOLOGY_POINT_LIST -> showString "PRIMITIVE_TOPOLOGY_POINT_LIST"-    PRIMITIVE_TOPOLOGY_LINE_LIST -> showString "PRIMITIVE_TOPOLOGY_LINE_LIST"-    PRIMITIVE_TOPOLOGY_LINE_STRIP -> showString "PRIMITIVE_TOPOLOGY_LINE_STRIP"-    PRIMITIVE_TOPOLOGY_TRIANGLE_LIST -> showString "PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"-    PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP -> showString "PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"-    PRIMITIVE_TOPOLOGY_TRIANGLE_FAN -> showString "PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"-    PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY -> showString "PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"-    PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY -> showString "PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"-    PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY -> showString "PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"-    PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY -> showString "PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"-    PRIMITIVE_TOPOLOGY_PATCH_LIST -> showString "PRIMITIVE_TOPOLOGY_PATCH_LIST"-    PrimitiveTopology x -> showParen (p >= 11) (showString "PrimitiveTopology " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixPrimitiveTopology+                            showTablePrimitiveTopology+                            conNamePrimitiveTopology+                            (\(PrimitiveTopology x) -> x)+                            (showsPrec 11)  instance Read PrimitiveTopology where-  readPrec = parens (choose [("PRIMITIVE_TOPOLOGY_POINT_LIST", pure PRIMITIVE_TOPOLOGY_POINT_LIST)-                            , ("PRIMITIVE_TOPOLOGY_LINE_LIST", pure PRIMITIVE_TOPOLOGY_LINE_LIST)-                            , ("PRIMITIVE_TOPOLOGY_LINE_STRIP", pure PRIMITIVE_TOPOLOGY_LINE_STRIP)-                            , ("PRIMITIVE_TOPOLOGY_TRIANGLE_LIST", pure PRIMITIVE_TOPOLOGY_TRIANGLE_LIST)-                            , ("PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP", pure PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP)-                            , ("PRIMITIVE_TOPOLOGY_TRIANGLE_FAN", pure PRIMITIVE_TOPOLOGY_TRIANGLE_FAN)-                            , ("PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY", pure PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY)-                            , ("PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY", pure PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY)-                            , ("PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY", pure PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY)-                            , ("PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY", pure PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY)-                            , ("PRIMITIVE_TOPOLOGY_PATCH_LIST", pure PRIMITIVE_TOPOLOGY_PATCH_LIST)]-                     +++-                     prec 10 (do-                       expectP (Ident "PrimitiveTopology")-                       v <- step readPrec-                       pure (PrimitiveTopology v)))+  readPrec =+    enumReadPrec enumPrefixPrimitiveTopology showTablePrimitiveTopology conNamePrimitiveTopology PrimitiveTopology 
src/Vulkan/Core10/Enums/PrimitiveTopology.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "PrimitiveTopology" module Vulkan.Core10.Enums.PrimitiveTopology  (PrimitiveTopology) where  
src/Vulkan/Core10/Enums/QueryControlFlagBits.hs view
@@ -1,26 +1,24 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.QueryControlFlagBits  ( QueryControlFlagBits( QUERY_CONTROL_PRECISE_BIT+-- No documentation found for Chapter "QueryControlFlagBits"+module Vulkan.Core10.Enums.QueryControlFlagBits  ( QueryControlFlags+                                                 , QueryControlFlagBits( QUERY_CONTROL_PRECISE_BIT                                                                        , ..                                                                        )-                                                 , QueryControlFlags                                                  ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type QueryControlFlags = QueryControlFlagBits+ -- | VkQueryControlFlagBits - Bitmask specifying constraints on a query -- -- = See Also@@ -33,18 +31,25 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusion occlusion queries>. pattern QUERY_CONTROL_PRECISE_BIT = QueryControlFlagBits 0x00000001 -type QueryControlFlags = QueryControlFlagBits+conNameQueryControlFlagBits :: String+conNameQueryControlFlagBits = "QueryControlFlagBits" +enumPrefixQueryControlFlagBits :: String+enumPrefixQueryControlFlagBits = "QUERY_CONTROL_PRECISE_BIT"++showTableQueryControlFlagBits :: [(QueryControlFlagBits, String)]+showTableQueryControlFlagBits = [(QUERY_CONTROL_PRECISE_BIT, "")]+ instance Show QueryControlFlagBits where-  showsPrec p = \case-    QUERY_CONTROL_PRECISE_BIT -> showString "QUERY_CONTROL_PRECISE_BIT"-    QueryControlFlagBits x -> showParen (p >= 11) (showString "QueryControlFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixQueryControlFlagBits+                            showTableQueryControlFlagBits+                            conNameQueryControlFlagBits+                            (\(QueryControlFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read QueryControlFlagBits where-  readPrec = parens (choose [("QUERY_CONTROL_PRECISE_BIT", pure QUERY_CONTROL_PRECISE_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "QueryControlFlagBits")-                       v <- step readPrec-                       pure (QueryControlFlagBits v)))+  readPrec = enumReadPrec enumPrefixQueryControlFlagBits+                          showTableQueryControlFlagBits+                          conNameQueryControlFlagBits+                          QueryControlFlagBits 
src/Vulkan/Core10/Enums/QueryControlFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.QueryControlFlagBits  ( QueryControlFlagBits-                                                 , QueryControlFlags+-- No documentation found for Chapter "QueryControlFlagBits"+module Vulkan.Core10.Enums.QueryControlFlagBits  ( QueryControlFlags+                                                 , QueryControlFlagBits                                                  ) where   -data QueryControlFlagBits- type QueryControlFlags = QueryControlFlagBits++data QueryControlFlagBits 
src/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits  ( QueryPipelineStatisticFlagBits( QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT+-- No documentation found for Chapter "QueryPipelineStatisticFlagBits"+module Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits  ( QueryPipelineStatisticFlags+                                                           , QueryPipelineStatisticFlagBits( QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT                                                                                            , QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT                                                                                            , QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT                                                                                            , QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT@@ -12,25 +14,21 @@                                                                                            , QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT                                                                                            , ..                                                                                            )-                                                           , QueryPipelineStatisticFlags                                                            ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type QueryPipelineStatisticFlags = QueryPipelineStatisticFlagBits+ -- | VkQueryPipelineStatisticFlagBits - Bitmask specifying queried pipeline -- statistics --@@ -70,7 +68,7 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing input assembly> -- stage. Vertices corresponding to incomplete primitives /may/ contribute -- to the count.-pattern QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = QueryPipelineStatisticFlagBits 0x00000001+pattern QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT             = QueryPipelineStatisticFlagBits 0x00000001 -- | 'QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT' specifies that -- queries managed by the pool will count the number of primitives -- processed by the@@ -78,13 +76,13 @@ -- stage. If primitive restart is enabled, restarting the primitive -- topology has no effect on the count. Incomplete primitives /may/ be -- counted.-pattern QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = QueryPipelineStatisticFlagBits 0x00000002+pattern QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT           = QueryPipelineStatisticFlagBits 0x00000002 -- | 'QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT' specifies that -- queries managed by the pool will count the number of vertex shader -- invocations. This counter’s value is incremented each time a vertex -- shader is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-vertex-execution invoked>.-pattern QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000004+pattern QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT           = QueryPipelineStatisticFlagBits 0x00000004 -- | 'QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT' specifies -- that queries managed by the pool will count the number of geometry -- shader invocations. This counter’s value is incremented each time a@@ -94,7 +92,7 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry-invocations instanced geometry shaders>, -- the geometry shader invocations count is incremented for each separate -- instanced invocation.-pattern QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000008+pattern QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT         = QueryPipelineStatisticFlagBits 0x00000008 -- | 'QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT' specifies that -- queries managed by the pool will count the number of primitives -- generated by geometry shader invocations. The counter’s value is@@ -102,14 +100,14 @@ -- primitive topology using the SPIR-V instructions @OpEndPrimitive@ or -- @OpEndStreamPrimitive@ has no effect on the geometry shader output -- primitives count.-pattern QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = QueryPipelineStatisticFlagBits 0x00000010+pattern QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT          = QueryPipelineStatisticFlagBits 0x00000010 -- | 'QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT' specifies that -- queries managed by the pool will count the number of primitives -- processed by the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping> -- stage of the pipeline. The counter’s value is incremented each time a -- primitive reaches the primitive clipping stage.-pattern QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000020+pattern QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT                = QueryPipelineStatisticFlagBits 0x00000020 -- | 'QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT' specifies that -- queries managed by the pool will count the number of primitives output -- by the@@ -124,13 +122,13 @@ --     clipping volume, the counter is incremented by one or more. -- -- -   Otherwise, the counter is incremented by zero or more.-pattern QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = QueryPipelineStatisticFlagBits 0x00000040+pattern QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT                 = QueryPipelineStatisticFlagBits 0x00000040 -- | 'QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT' specifies -- that queries managed by the pool will count the number of fragment -- shader invocations. The counter’s value is incremented each time the -- fragment shader is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-execution invoked>.-pattern QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000080+pattern QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT         = QueryPipelineStatisticFlagBits 0x00000080 -- | 'QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT' -- specifies that queries managed by the pool will count the number of -- patches processed by the tessellation control shader. The counter’s@@ -143,7 +141,8 @@ -- invocations of the tessellation evaluation shader. The counter’s value -- is incremented each time the tessellation evaluation shader is -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-tessellation-evaluation-execution invoked>.-pattern QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000200+pattern QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT =+  QueryPipelineStatisticFlagBits 0x00000200 -- | 'QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT' specifies that -- queries managed by the pool will count the number of compute shader -- invocations. The counter’s value is incremented every time the compute@@ -153,38 +152,39 @@ -- of rendering otherwise remain unchanged. pattern QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000400 -type QueryPipelineStatisticFlags = QueryPipelineStatisticFlagBits+conNameQueryPipelineStatisticFlagBits :: String+conNameQueryPipelineStatisticFlagBits = "QueryPipelineStatisticFlagBits" +enumPrefixQueryPipelineStatisticFlagBits :: String+enumPrefixQueryPipelineStatisticFlagBits = "QUERY_PIPELINE_STATISTIC_"++showTableQueryPipelineStatisticFlagBits :: [(QueryPipelineStatisticFlagBits, String)]+showTableQueryPipelineStatisticFlagBits =+  [ (QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT            , "INPUT_ASSEMBLY_VERTICES_BIT")+  , (QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT          , "INPUT_ASSEMBLY_PRIMITIVES_BIT")+  , (QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT          , "VERTEX_SHADER_INVOCATIONS_BIT")+  , (QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT        , "GEOMETRY_SHADER_INVOCATIONS_BIT")+  , (QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT         , "GEOMETRY_SHADER_PRIMITIVES_BIT")+  , (QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT               , "CLIPPING_INVOCATIONS_BIT")+  , (QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT                , "CLIPPING_PRIMITIVES_BIT")+  , (QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT        , "FRAGMENT_SHADER_INVOCATIONS_BIT")+  , (QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, "TESSELLATION_CONTROL_SHADER_PATCHES_BIT")+  , ( QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT+    , "TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"+    )+  , (QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT, "COMPUTE_SHADER_INVOCATIONS_BIT")+  ]+ instance Show QueryPipelineStatisticFlagBits where-  showsPrec p = \case-    QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT -> showString "QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"-    QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT -> showString "QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"-    QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT -> showString "QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"-    QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT -> showString "QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"-    QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT -> showString "QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"-    QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT -> showString "QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"-    QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT -> showString "QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"-    QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT -> showString "QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"-    QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT -> showString "QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"-    QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT -> showString "QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"-    QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT -> showString "QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"-    QueryPipelineStatisticFlagBits x -> showParen (p >= 11) (showString "QueryPipelineStatisticFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixQueryPipelineStatisticFlagBits+                            showTableQueryPipelineStatisticFlagBits+                            conNameQueryPipelineStatisticFlagBits+                            (\(QueryPipelineStatisticFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read QueryPipelineStatisticFlagBits where-  readPrec = parens (choose [("QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT", pure QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT)-                            , ("QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT", pure QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT)-                            , ("QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT", pure QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT)-                            , ("QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT", pure QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT)-                            , ("QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT", pure QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT)-                            , ("QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT", pure QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT)-                            , ("QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT", pure QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT)-                            , ("QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT", pure QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT)-                            , ("QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT", pure QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT)-                            , ("QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT", pure QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT)-                            , ("QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT", pure QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "QueryPipelineStatisticFlagBits")-                       v <- step readPrec-                       pure (QueryPipelineStatisticFlagBits v)))+  readPrec = enumReadPrec enumPrefixQueryPipelineStatisticFlagBits+                          showTableQueryPipelineStatisticFlagBits+                          conNameQueryPipelineStatisticFlagBits+                          QueryPipelineStatisticFlagBits 
src/Vulkan/Core10/Enums/QueryPoolCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "QueryPoolCreateFlags" module Vulkan.Core10.Enums.QueryPoolCreateFlags  (QueryPoolCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkQueryPoolCreateFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNameQueryPoolCreateFlags :: String+conNameQueryPoolCreateFlags = "QueryPoolCreateFlags"++enumPrefixQueryPoolCreateFlags :: String+enumPrefixQueryPoolCreateFlags = ""++showTableQueryPoolCreateFlags :: [(QueryPoolCreateFlags, String)]+showTableQueryPoolCreateFlags = []+ instance Show QueryPoolCreateFlags where-  showsPrec p = \case-    QueryPoolCreateFlags x -> showParen (p >= 11) (showString "QueryPoolCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixQueryPoolCreateFlags+                            showTableQueryPoolCreateFlags+                            conNameQueryPoolCreateFlags+                            (\(QueryPoolCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read QueryPoolCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "QueryPoolCreateFlags")-                       v <- step readPrec-                       pure (QueryPoolCreateFlags v)))+  readPrec = enumReadPrec enumPrefixQueryPoolCreateFlags+                          showTableQueryPoolCreateFlags+                          conNameQueryPoolCreateFlags+                          QueryPoolCreateFlags 
src/Vulkan/Core10/Enums/QueryResultFlagBits.hs view
@@ -1,29 +1,27 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.QueryResultFlagBits  ( QueryResultFlagBits( QUERY_RESULT_64_BIT+-- No documentation found for Chapter "QueryResultFlagBits"+module Vulkan.Core10.Enums.QueryResultFlagBits  ( QueryResultFlags+                                                , QueryResultFlagBits( QUERY_RESULT_64_BIT                                                                      , QUERY_RESULT_WAIT_BIT                                                                      , QUERY_RESULT_WITH_AVAILABILITY_BIT                                                                      , QUERY_RESULT_PARTIAL_BIT                                                                      , ..                                                                      )-                                                , QueryResultFlags                                                 ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type QueryResultFlags = QueryResultFlagBits+ -- | VkQueryResultFlagBits - Bitmask specifying how and when query results -- are returned --@@ -36,35 +34,41 @@ -- | 'QUERY_RESULT_64_BIT' specifies the results will be written as an array -- of 64-bit unsigned integer values. If this bit is not set, the results -- will be written as an array of 32-bit unsigned integer values.-pattern QUERY_RESULT_64_BIT = QueryResultFlagBits 0x00000001+pattern QUERY_RESULT_64_BIT                = QueryResultFlagBits 0x00000001 -- | 'QUERY_RESULT_WAIT_BIT' specifies that Vulkan will wait for each query’s -- status to become available before retrieving its results.-pattern QUERY_RESULT_WAIT_BIT = QueryResultFlagBits 0x00000002+pattern QUERY_RESULT_WAIT_BIT              = QueryResultFlagBits 0x00000002 -- | 'QUERY_RESULT_WITH_AVAILABILITY_BIT' specifies that the availability -- status accompanies the results. pattern QUERY_RESULT_WITH_AVAILABILITY_BIT = QueryResultFlagBits 0x00000004 -- | 'QUERY_RESULT_PARTIAL_BIT' specifies that returning partial results is -- acceptable.-pattern QUERY_RESULT_PARTIAL_BIT = QueryResultFlagBits 0x00000008+pattern QUERY_RESULT_PARTIAL_BIT           = QueryResultFlagBits 0x00000008 -type QueryResultFlags = QueryResultFlagBits+conNameQueryResultFlagBits :: String+conNameQueryResultFlagBits = "QueryResultFlagBits" +enumPrefixQueryResultFlagBits :: String+enumPrefixQueryResultFlagBits = "QUERY_RESULT_"++showTableQueryResultFlagBits :: [(QueryResultFlagBits, String)]+showTableQueryResultFlagBits =+  [ (QUERY_RESULT_64_BIT               , "64_BIT")+  , (QUERY_RESULT_WAIT_BIT             , "WAIT_BIT")+  , (QUERY_RESULT_WITH_AVAILABILITY_BIT, "WITH_AVAILABILITY_BIT")+  , (QUERY_RESULT_PARTIAL_BIT          , "PARTIAL_BIT")+  ]+ instance Show QueryResultFlagBits where-  showsPrec p = \case-    QUERY_RESULT_64_BIT -> showString "QUERY_RESULT_64_BIT"-    QUERY_RESULT_WAIT_BIT -> showString "QUERY_RESULT_WAIT_BIT"-    QUERY_RESULT_WITH_AVAILABILITY_BIT -> showString "QUERY_RESULT_WITH_AVAILABILITY_BIT"-    QUERY_RESULT_PARTIAL_BIT -> showString "QUERY_RESULT_PARTIAL_BIT"-    QueryResultFlagBits x -> showParen (p >= 11) (showString "QueryResultFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixQueryResultFlagBits+                            showTableQueryResultFlagBits+                            conNameQueryResultFlagBits+                            (\(QueryResultFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read QueryResultFlagBits where-  readPrec = parens (choose [("QUERY_RESULT_64_BIT", pure QUERY_RESULT_64_BIT)-                            , ("QUERY_RESULT_WAIT_BIT", pure QUERY_RESULT_WAIT_BIT)-                            , ("QUERY_RESULT_WITH_AVAILABILITY_BIT", pure QUERY_RESULT_WITH_AVAILABILITY_BIT)-                            , ("QUERY_RESULT_PARTIAL_BIT", pure QUERY_RESULT_PARTIAL_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "QueryResultFlagBits")-                       v <- step readPrec-                       pure (QueryResultFlagBits v)))+  readPrec = enumReadPrec enumPrefixQueryResultFlagBits+                          showTableQueryResultFlagBits+                          conNameQueryResultFlagBits+                          QueryResultFlagBits 
src/Vulkan/Core10/Enums/QueryResultFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.QueryResultFlagBits  ( QueryResultFlagBits-                                                , QueryResultFlags+-- No documentation found for Chapter "QueryResultFlagBits"+module Vulkan.Core10.Enums.QueryResultFlagBits  ( QueryResultFlags+                                                , QueryResultFlagBits                                                 ) where   -data QueryResultFlagBits- type QueryResultFlags = QueryResultFlagBits++data QueryResultFlagBits 
src/Vulkan/Core10/Enums/QueryType.hs view
@@ -1,8 +1,10 @@ {-# language CPP #-}+-- No documentation found for Chapter "QueryType" module Vulkan.Core10.Enums.QueryType  (QueryType( QUERY_TYPE_OCCLUSION                                                 , QUERY_TYPE_PIPELINE_STATISTICS                                                 , QUERY_TYPE_TIMESTAMP                                                 , QUERY_TYPE_PERFORMANCE_QUERY_INTEL+                                                , QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV                                                 , QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR                                                 , QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR                                                 , QUERY_TYPE_PERFORMANCE_QUERY_KHR@@ -10,52 +12,48 @@                                                 , ..                                                 )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkQueryType - Specify the type of queries managed by a query pool -- -- = See Also -- -- 'Vulkan.Core10.Query.QueryPoolCreateInfo',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdWriteAccelerationStructuresPropertiesKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.writeAccelerationStructuresPropertiesKHR'+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.writeAccelerationStructuresPropertiesKHR' newtype QueryType = QueryType Int32   deriving newtype (Eq, Ord, Storable, Zero)  -- | 'QUERY_TYPE_OCCLUSION' specifies an -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusion occlusion query>.-pattern QUERY_TYPE_OCCLUSION = QueryType 0+pattern QUERY_TYPE_OCCLUSION                     = QueryType 0 -- | 'QUERY_TYPE_PIPELINE_STATISTICS' specifies a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats pipeline statistics query>.-pattern QUERY_TYPE_PIPELINE_STATISTICS = QueryType 1+pattern QUERY_TYPE_PIPELINE_STATISTICS           = QueryType 1 -- | 'QUERY_TYPE_TIMESTAMP' specifies a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestamps timestamp query>.-pattern QUERY_TYPE_TIMESTAMP = QueryType 2+pattern QUERY_TYPE_TIMESTAMP                     = QueryType 2 -- | 'QUERY_TYPE_PERFORMANCE_QUERY_INTEL' specifies a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-performance-intel Intel performance query>.-pattern QUERY_TYPE_PERFORMANCE_QUERY_INTEL = QueryType 1000210000+pattern QUERY_TYPE_PERFORMANCE_QUERY_INTEL       = QueryType 1000210000+-- No documentation found for Nested "VkQueryType" "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV"+pattern QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = QueryType 1000165000 -- | 'QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR' specifies a--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying ray tracing serialization acceleration structure size query>-pattern QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = QueryType 1000150000+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying serialization acceleration structure size query>+pattern QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = QueryType 1000150001 -- | 'QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR' specifies a--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying ray tracing acceleration structure size query>.-pattern QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = QueryType 1000165000+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying acceleration structure size query>.+pattern QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = QueryType 1000150000 -- | 'QUERY_TYPE_PERFORMANCE_QUERY_KHR' specifies a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-performance performance query>.-pattern QUERY_TYPE_PERFORMANCE_QUERY_KHR = QueryType 1000116000+pattern QUERY_TYPE_PERFORMANCE_QUERY_KHR         = QueryType 1000116000 -- | 'QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT' specifies a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback transform feedback query>. pattern QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = QueryType 1000028004@@ -63,35 +61,35 @@              QUERY_TYPE_PIPELINE_STATISTICS,              QUERY_TYPE_TIMESTAMP,              QUERY_TYPE_PERFORMANCE_QUERY_INTEL,+             QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV,              QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR,              QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR,              QUERY_TYPE_PERFORMANCE_QUERY_KHR,              QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT :: QueryType #-} +conNameQueryType :: String+conNameQueryType = "QueryType"++enumPrefixQueryType :: String+enumPrefixQueryType = "QUERY_TYPE_"++showTableQueryType :: [(QueryType, String)]+showTableQueryType =+  [ (QUERY_TYPE_OCCLUSION                    , "OCCLUSION")+  , (QUERY_TYPE_PIPELINE_STATISTICS          , "PIPELINE_STATISTICS")+  , (QUERY_TYPE_TIMESTAMP                    , "TIMESTAMP")+  , (QUERY_TYPE_PERFORMANCE_QUERY_INTEL      , "PERFORMANCE_QUERY_INTEL")+  , (QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV, "ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV")+  , (QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR, "ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR")+  , (QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR, "ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR")+  , (QUERY_TYPE_PERFORMANCE_QUERY_KHR        , "PERFORMANCE_QUERY_KHR")+  , (QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT, "TRANSFORM_FEEDBACK_STREAM_EXT")+  ]+ instance Show QueryType where-  showsPrec p = \case-    QUERY_TYPE_OCCLUSION -> showString "QUERY_TYPE_OCCLUSION"-    QUERY_TYPE_PIPELINE_STATISTICS -> showString "QUERY_TYPE_PIPELINE_STATISTICS"-    QUERY_TYPE_TIMESTAMP -> showString "QUERY_TYPE_TIMESTAMP"-    QUERY_TYPE_PERFORMANCE_QUERY_INTEL -> showString "QUERY_TYPE_PERFORMANCE_QUERY_INTEL"-    QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR -> showString "QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR"-    QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR -> showString "QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR"-    QUERY_TYPE_PERFORMANCE_QUERY_KHR -> showString "QUERY_TYPE_PERFORMANCE_QUERY_KHR"-    QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT -> showString "QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT"-    QueryType x -> showParen (p >= 11) (showString "QueryType " . showsPrec 11 x)+  showsPrec =+    enumShowsPrec enumPrefixQueryType showTableQueryType conNameQueryType (\(QueryType x) -> x) (showsPrec 11)  instance Read QueryType where-  readPrec = parens (choose [("QUERY_TYPE_OCCLUSION", pure QUERY_TYPE_OCCLUSION)-                            , ("QUERY_TYPE_PIPELINE_STATISTICS", pure QUERY_TYPE_PIPELINE_STATISTICS)-                            , ("QUERY_TYPE_TIMESTAMP", pure QUERY_TYPE_TIMESTAMP)-                            , ("QUERY_TYPE_PERFORMANCE_QUERY_INTEL", pure QUERY_TYPE_PERFORMANCE_QUERY_INTEL)-                            , ("QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR", pure QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR)-                            , ("QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR", pure QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR)-                            , ("QUERY_TYPE_PERFORMANCE_QUERY_KHR", pure QUERY_TYPE_PERFORMANCE_QUERY_KHR)-                            , ("QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT", pure QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "QueryType")-                       v <- step readPrec-                       pure (QueryType v)))+  readPrec = enumReadPrec enumPrefixQueryType showTableQueryType conNameQueryType QueryType 
src/Vulkan/Core10/Enums/QueryType.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "QueryType" module Vulkan.Core10.Enums.QueryType  (QueryType) where  
src/Vulkan/Core10/Enums/QueueFlagBits.hs view
@@ -1,30 +1,28 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.QueueFlagBits  ( QueueFlagBits( QUEUE_GRAPHICS_BIT+-- No documentation found for Chapter "QueueFlagBits"+module Vulkan.Core10.Enums.QueueFlagBits  ( QueueFlags+                                          , QueueFlagBits( QUEUE_GRAPHICS_BIT                                                          , QUEUE_COMPUTE_BIT                                                          , QUEUE_TRANSFER_BIT                                                          , QUEUE_SPARSE_BINDING_BIT                                                          , QUEUE_PROTECTED_BIT                                                          , ..                                                          )-                                          , QueueFlags                                           ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type QueueFlags = QueueFlagBits+ -- | VkQueueFlagBits - Bitmask specifying capabilities of queues in a queue -- family --@@ -82,36 +80,38 @@   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)  -- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_GRAPHICS_BIT"-pattern QUEUE_GRAPHICS_BIT = QueueFlagBits 0x00000001+pattern QUEUE_GRAPHICS_BIT       = QueueFlagBits 0x00000001 -- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_COMPUTE_BIT"-pattern QUEUE_COMPUTE_BIT = QueueFlagBits 0x00000002+pattern QUEUE_COMPUTE_BIT        = QueueFlagBits 0x00000002 -- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_TRANSFER_BIT"-pattern QUEUE_TRANSFER_BIT = QueueFlagBits 0x00000004+pattern QUEUE_TRANSFER_BIT       = QueueFlagBits 0x00000004 -- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_SPARSE_BINDING_BIT" pattern QUEUE_SPARSE_BINDING_BIT = QueueFlagBits 0x00000008 -- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_PROTECTED_BIT"-pattern QUEUE_PROTECTED_BIT = QueueFlagBits 0x00000010+pattern QUEUE_PROTECTED_BIT      = QueueFlagBits 0x00000010 -type QueueFlags = QueueFlagBits+conNameQueueFlagBits :: String+conNameQueueFlagBits = "QueueFlagBits" +enumPrefixQueueFlagBits :: String+enumPrefixQueueFlagBits = "QUEUE_"++showTableQueueFlagBits :: [(QueueFlagBits, String)]+showTableQueueFlagBits =+  [ (QUEUE_GRAPHICS_BIT      , "GRAPHICS_BIT")+  , (QUEUE_COMPUTE_BIT       , "COMPUTE_BIT")+  , (QUEUE_TRANSFER_BIT      , "TRANSFER_BIT")+  , (QUEUE_SPARSE_BINDING_BIT, "SPARSE_BINDING_BIT")+  , (QUEUE_PROTECTED_BIT     , "PROTECTED_BIT")+  ]+ instance Show QueueFlagBits where-  showsPrec p = \case-    QUEUE_GRAPHICS_BIT -> showString "QUEUE_GRAPHICS_BIT"-    QUEUE_COMPUTE_BIT -> showString "QUEUE_COMPUTE_BIT"-    QUEUE_TRANSFER_BIT -> showString "QUEUE_TRANSFER_BIT"-    QUEUE_SPARSE_BINDING_BIT -> showString "QUEUE_SPARSE_BINDING_BIT"-    QUEUE_PROTECTED_BIT -> showString "QUEUE_PROTECTED_BIT"-    QueueFlagBits x -> showParen (p >= 11) (showString "QueueFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixQueueFlagBits+                            showTableQueueFlagBits+                            conNameQueueFlagBits+                            (\(QueueFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read QueueFlagBits where-  readPrec = parens (choose [("QUEUE_GRAPHICS_BIT", pure QUEUE_GRAPHICS_BIT)-                            , ("QUEUE_COMPUTE_BIT", pure QUEUE_COMPUTE_BIT)-                            , ("QUEUE_TRANSFER_BIT", pure QUEUE_TRANSFER_BIT)-                            , ("QUEUE_SPARSE_BINDING_BIT", pure QUEUE_SPARSE_BINDING_BIT)-                            , ("QUEUE_PROTECTED_BIT", pure QUEUE_PROTECTED_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "QueueFlagBits")-                       v <- step readPrec-                       pure (QueueFlagBits v)))+  readPrec = enumReadPrec enumPrefixQueueFlagBits showTableQueueFlagBits conNameQueueFlagBits QueueFlagBits 
src/Vulkan/Core10/Enums/RenderPassCreateFlagBits.hs view
@@ -1,26 +1,24 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.RenderPassCreateFlagBits  ( RenderPassCreateFlagBits( RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM+-- No documentation found for Chapter "RenderPassCreateFlagBits"+module Vulkan.Core10.Enums.RenderPassCreateFlagBits  ( RenderPassCreateFlags+                                                     , RenderPassCreateFlagBits( RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM                                                                                , ..                                                                                )-                                                     , RenderPassCreateFlags                                                      ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type RenderPassCreateFlags = RenderPassCreateFlagBits+ -- | VkRenderPassCreateFlagBits - Bitmask specifying additional properties of -- a renderpass --@@ -35,18 +33,25 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>. pattern RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = RenderPassCreateFlagBits 0x00000002 -type RenderPassCreateFlags = RenderPassCreateFlagBits+conNameRenderPassCreateFlagBits :: String+conNameRenderPassCreateFlagBits = "RenderPassCreateFlagBits" +enumPrefixRenderPassCreateFlagBits :: String+enumPrefixRenderPassCreateFlagBits = "RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM"++showTableRenderPassCreateFlagBits :: [(RenderPassCreateFlagBits, String)]+showTableRenderPassCreateFlagBits = [(RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM, "")]+ instance Show RenderPassCreateFlagBits where-  showsPrec p = \case-    RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM -> showString "RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM"-    RenderPassCreateFlagBits x -> showParen (p >= 11) (showString "RenderPassCreateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixRenderPassCreateFlagBits+                            showTableRenderPassCreateFlagBits+                            conNameRenderPassCreateFlagBits+                            (\(RenderPassCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read RenderPassCreateFlagBits where-  readPrec = parens (choose [("RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM", pure RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM)]-                     +++-                     prec 10 (do-                       expectP (Ident "RenderPassCreateFlagBits")-                       v <- step readPrec-                       pure (RenderPassCreateFlagBits v)))+  readPrec = enumReadPrec enumPrefixRenderPassCreateFlagBits+                          showTableRenderPassCreateFlagBits+                          conNameRenderPassCreateFlagBits+                          RenderPassCreateFlagBits 
src/Vulkan/Core10/Enums/Result.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Result" module Vulkan.Core10.Enums.Result  (Result( SUCCESS                                           , NOT_READY                                           , TIMEOUT@@ -26,7 +27,6 @@                                           , ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT                                           , ERROR_NOT_PERMITTED_EXT                                           , ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT-                                          , ERROR_INCOMPATIBLE_VERSION_KHR                                           , ERROR_INVALID_SHADER_NV                                           , ERROR_VALIDATION_FAILED_EXT                                           , ERROR_INCOMPATIBLE_DISPLAY_KHR@@ -41,19 +41,13 @@                                           , ..                                           )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkResult - Vulkan command return codes --@@ -104,72 +98,72 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- | 'SUCCESS' Command successfully completed-pattern SUCCESS = Result 0+pattern SUCCESS                              = Result 0 -- | 'NOT_READY' A fence or query has not yet completed-pattern NOT_READY = Result 1+pattern NOT_READY                            = Result 1 -- | 'TIMEOUT' A wait operation has not completed in the specified time-pattern TIMEOUT = Result 2+pattern TIMEOUT                              = Result 2 -- | 'EVENT_SET' An event is signaled-pattern EVENT_SET = Result 3+pattern EVENT_SET                            = Result 3 -- | 'EVENT_RESET' An event is unsignaled-pattern EVENT_RESET = Result 4+pattern EVENT_RESET                          = Result 4 -- | 'INCOMPLETE' A return array was too small for the result-pattern INCOMPLETE = Result 5+pattern INCOMPLETE                           = Result 5 -- | 'ERROR_OUT_OF_HOST_MEMORY' A host memory allocation has failed.-pattern ERROR_OUT_OF_HOST_MEMORY = Result (-1)+pattern ERROR_OUT_OF_HOST_MEMORY             = Result (-1) -- | 'ERROR_OUT_OF_DEVICE_MEMORY' A device memory allocation has failed.-pattern ERROR_OUT_OF_DEVICE_MEMORY = Result (-2)+pattern ERROR_OUT_OF_DEVICE_MEMORY           = Result (-2) -- | 'ERROR_INITIALIZATION_FAILED' Initialization of an object could not be -- completed for implementation-specific reasons.-pattern ERROR_INITIALIZATION_FAILED = Result (-3)+pattern ERROR_INITIALIZATION_FAILED          = Result (-3) -- | 'ERROR_DEVICE_LOST' The logical or physical device has been lost. See -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>-pattern ERROR_DEVICE_LOST = Result (-4)+pattern ERROR_DEVICE_LOST                    = Result (-4) -- | 'ERROR_MEMORY_MAP_FAILED' Mapping of a memory object has failed.-pattern ERROR_MEMORY_MAP_FAILED = Result (-5)+pattern ERROR_MEMORY_MAP_FAILED              = Result (-5) -- | 'ERROR_LAYER_NOT_PRESENT' A requested layer is not present or could not -- be loaded.-pattern ERROR_LAYER_NOT_PRESENT = Result (-6)+pattern ERROR_LAYER_NOT_PRESENT              = Result (-6) -- | 'ERROR_EXTENSION_NOT_PRESENT' A requested extension is not supported.-pattern ERROR_EXTENSION_NOT_PRESENT = Result (-7)+pattern ERROR_EXTENSION_NOT_PRESENT          = Result (-7) -- | 'ERROR_FEATURE_NOT_PRESENT' A requested feature is not supported.-pattern ERROR_FEATURE_NOT_PRESENT = Result (-8)+pattern ERROR_FEATURE_NOT_PRESENT            = Result (-8) -- | 'ERROR_INCOMPATIBLE_DRIVER' The requested version of Vulkan is not -- supported by the driver or is otherwise incompatible for -- implementation-specific reasons.-pattern ERROR_INCOMPATIBLE_DRIVER = Result (-9)+pattern ERROR_INCOMPATIBLE_DRIVER            = Result (-9) -- | 'ERROR_TOO_MANY_OBJECTS' Too many objects of the type have already been -- created.-pattern ERROR_TOO_MANY_OBJECTS = Result (-10)+pattern ERROR_TOO_MANY_OBJECTS               = Result (-10) -- | 'ERROR_FORMAT_NOT_SUPPORTED' A requested format is not supported on this -- device.-pattern ERROR_FORMAT_NOT_SUPPORTED = Result (-11)+pattern ERROR_FORMAT_NOT_SUPPORTED           = Result (-11) -- | 'ERROR_FRAGMENTED_POOL' A pool allocation has failed due to -- fragmentation of the pool’s memory. This /must/ only be returned if no -- attempt to allocate host or device memory was made to accommodate the -- new allocation. This /should/ be returned in preference to -- 'ERROR_OUT_OF_POOL_MEMORY', but only if the implementation is certain -- that the pool allocation failure was due to fragmentation.-pattern ERROR_FRAGMENTED_POOL = Result (-12)+pattern ERROR_FRAGMENTED_POOL                = Result (-12) -- | 'ERROR_UNKNOWN' An unknown error has occurred; either the application -- has provided invalid input, or an implementation failure has occurred.-pattern ERROR_UNKNOWN = Result (-13)+pattern ERROR_UNKNOWN                        = Result (-13) -- | 'PIPELINE_COMPILE_REQUIRED_EXT' A requested pipeline creation would have -- required compilation, but the application requested compilation to not -- be performed.-pattern PIPELINE_COMPILE_REQUIRED_EXT = Result 1000297000+pattern PIPELINE_COMPILE_REQUIRED_EXT        = Result 1000297000 -- | 'OPERATION_NOT_DEFERRED_KHR' A deferred operation was requested and no -- operations were deferred.-pattern OPERATION_NOT_DEFERRED_KHR = Result 1000268003+pattern OPERATION_NOT_DEFERRED_KHR           = Result 1000268003 -- | 'OPERATION_DEFERRED_KHR' A deferred operation was requested and at least -- some of the work was deferred.-pattern OPERATION_DEFERRED_KHR = Result 1000268002+pattern OPERATION_DEFERRED_KHR               = Result 1000268002 -- | 'THREAD_DONE_KHR' A deferred operation is not complete but there is no -- work remaining to assign to additional threads.-pattern THREAD_DONE_KHR = Result 1000268001+pattern THREAD_DONE_KHR                      = Result 1000268001 -- | 'THREAD_IDLE_KHR' A deferred operation is not complete but there is -- currently no work for this thread to do at the time of this call.-pattern THREAD_IDLE_KHR = Result 1000268000+pattern THREAD_IDLE_KHR                      = Result 1000268000 -- | 'ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT' An operation on a swapchain -- created with -- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT'@@ -178,36 +172,34 @@ -- control. pattern ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = Result (-1000255000) -- No documentation found for Nested "VkResult" "VK_ERROR_NOT_PERMITTED_EXT"-pattern ERROR_NOT_PERMITTED_EXT = Result (-1000174001)+pattern ERROR_NOT_PERMITTED_EXT              = Result (-1000174001) -- No documentation found for Nested "VkResult" "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT" pattern ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = Result (-1000158000)--- No documentation found for Nested "VkResult" "VK_ERROR_INCOMPATIBLE_VERSION_KHR"-pattern ERROR_INCOMPATIBLE_VERSION_KHR = Result (-1000150000) -- | 'ERROR_INVALID_SHADER_NV' One or more shaders failed to compile or link. -- More details are reported back to the application via -- @VK_EXT_debug_report@ if enabled.-pattern ERROR_INVALID_SHADER_NV = Result (-1000012000)+pattern ERROR_INVALID_SHADER_NV              = Result (-1000012000) -- No documentation found for Nested "VkResult" "VK_ERROR_VALIDATION_FAILED_EXT"-pattern ERROR_VALIDATION_FAILED_EXT = Result (-1000011001)+pattern ERROR_VALIDATION_FAILED_EXT          = Result (-1000011001) -- | 'ERROR_INCOMPATIBLE_DISPLAY_KHR' The display used by a swapchain does -- not use the same presentable image layout, or is incompatible in a way -- that prevents sharing an image.-pattern ERROR_INCOMPATIBLE_DISPLAY_KHR = Result (-1000003001)+pattern ERROR_INCOMPATIBLE_DISPLAY_KHR       = Result (-1000003001) -- | 'ERROR_OUT_OF_DATE_KHR' A surface has changed in such a way that it is -- no longer compatible with the swapchain, and further presentation -- requests using the swapchain will fail. Applications /must/ query the -- new surface properties and recreate their swapchain if they wish to -- continue presenting to the surface.-pattern ERROR_OUT_OF_DATE_KHR = Result (-1000001004)+pattern ERROR_OUT_OF_DATE_KHR                = Result (-1000001004) -- | 'SUBOPTIMAL_KHR' A swapchain no longer matches the surface properties -- exactly, but /can/ still be used to present to the surface successfully.-pattern SUBOPTIMAL_KHR = Result 1000001003+pattern SUBOPTIMAL_KHR                       = Result 1000001003 -- | 'ERROR_NATIVE_WINDOW_IN_USE_KHR' The requested window is already in use -- by Vulkan or another API in a manner which prevents it from being used -- again.-pattern ERROR_NATIVE_WINDOW_IN_USE_KHR = Result (-1000000001)+pattern ERROR_NATIVE_WINDOW_IN_USE_KHR       = Result (-1000000001) -- | 'ERROR_SURFACE_LOST_KHR' A surface is no longer available.-pattern ERROR_SURFACE_LOST_KHR = Result (-1000000000)+pattern ERROR_SURFACE_LOST_KHR               = Result (-1000000000) -- | 'ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS' A buffer creation or memory -- allocation failed because the requested address is not available. A -- shader group handle assignment failed because the requested shader group@@ -215,16 +207,16 @@ pattern ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = Result (-1000257000) -- | 'ERROR_FRAGMENTATION' A descriptor pool creation has failed due to -- fragmentation.-pattern ERROR_FRAGMENTATION = Result (-1000161000)+pattern ERROR_FRAGMENTATION                  = Result (-1000161000) -- | 'ERROR_INVALID_EXTERNAL_HANDLE' An external handle is not a valid handle -- of the specified type.-pattern ERROR_INVALID_EXTERNAL_HANDLE = Result (-1000072003)+pattern ERROR_INVALID_EXTERNAL_HANDLE        = Result (-1000072003) -- | 'ERROR_OUT_OF_POOL_MEMORY' A pool memory allocation has failed. This -- /must/ only be returned if no attempt to allocate host or device memory -- was made to accommodate the new allocation. If the failure was -- definitely due to fragmentation of the pool, 'ERROR_FRAGMENTED_POOL' -- /should/ be returned instead.-pattern ERROR_OUT_OF_POOL_MEMORY = Result (-1000069000)+pattern ERROR_OUT_OF_POOL_MEMORY             = Result (-1000069000) {-# complete SUCCESS,              NOT_READY,              TIMEOUT,@@ -252,7 +244,6 @@              ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT,              ERROR_NOT_PERMITTED_EXT,              ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT,-             ERROR_INCOMPATIBLE_VERSION_KHR,              ERROR_INVALID_SHADER_NV,              ERROR_VALIDATION_FAILED_EXT,              ERROR_INCOMPATIBLE_DISPLAY_KHR,@@ -265,92 +256,57 @@              ERROR_INVALID_EXTERNAL_HANDLE,              ERROR_OUT_OF_POOL_MEMORY :: Result #-} +conNameResult :: String+conNameResult = "Result"++enumPrefixResult :: String+enumPrefixResult = ""++showTableResult :: [(Result, String)]+showTableResult =+  [ (SUCCESS                             , "SUCCESS")+  , (NOT_READY                           , "NOT_READY")+  , (TIMEOUT                             , "TIMEOUT")+  , (EVENT_SET                           , "EVENT_SET")+  , (EVENT_RESET                         , "EVENT_RESET")+  , (INCOMPLETE                          , "INCOMPLETE")+  , (ERROR_OUT_OF_HOST_MEMORY            , "ERROR_OUT_OF_HOST_MEMORY")+  , (ERROR_OUT_OF_DEVICE_MEMORY          , "ERROR_OUT_OF_DEVICE_MEMORY")+  , (ERROR_INITIALIZATION_FAILED         , "ERROR_INITIALIZATION_FAILED")+  , (ERROR_DEVICE_LOST                   , "ERROR_DEVICE_LOST")+  , (ERROR_MEMORY_MAP_FAILED             , "ERROR_MEMORY_MAP_FAILED")+  , (ERROR_LAYER_NOT_PRESENT             , "ERROR_LAYER_NOT_PRESENT")+  , (ERROR_EXTENSION_NOT_PRESENT         , "ERROR_EXTENSION_NOT_PRESENT")+  , (ERROR_FEATURE_NOT_PRESENT           , "ERROR_FEATURE_NOT_PRESENT")+  , (ERROR_INCOMPATIBLE_DRIVER           , "ERROR_INCOMPATIBLE_DRIVER")+  , (ERROR_TOO_MANY_OBJECTS              , "ERROR_TOO_MANY_OBJECTS")+  , (ERROR_FORMAT_NOT_SUPPORTED          , "ERROR_FORMAT_NOT_SUPPORTED")+  , (ERROR_FRAGMENTED_POOL               , "ERROR_FRAGMENTED_POOL")+  , (ERROR_UNKNOWN                       , "ERROR_UNKNOWN")+  , (PIPELINE_COMPILE_REQUIRED_EXT       , "PIPELINE_COMPILE_REQUIRED_EXT")+  , (OPERATION_NOT_DEFERRED_KHR          , "OPERATION_NOT_DEFERRED_KHR")+  , (OPERATION_DEFERRED_KHR              , "OPERATION_DEFERRED_KHR")+  , (THREAD_DONE_KHR                     , "THREAD_DONE_KHR")+  , (THREAD_IDLE_KHR                     , "THREAD_IDLE_KHR")+  , (ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT, "ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT")+  , (ERROR_NOT_PERMITTED_EXT             , "ERROR_NOT_PERMITTED_EXT")+  , (ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT, "ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT")+  , (ERROR_INVALID_SHADER_NV             , "ERROR_INVALID_SHADER_NV")+  , (ERROR_VALIDATION_FAILED_EXT         , "ERROR_VALIDATION_FAILED_EXT")+  , (ERROR_INCOMPATIBLE_DISPLAY_KHR      , "ERROR_INCOMPATIBLE_DISPLAY_KHR")+  , (ERROR_OUT_OF_DATE_KHR               , "ERROR_OUT_OF_DATE_KHR")+  , (SUBOPTIMAL_KHR                      , "SUBOPTIMAL_KHR")+  , (ERROR_NATIVE_WINDOW_IN_USE_KHR      , "ERROR_NATIVE_WINDOW_IN_USE_KHR")+  , (ERROR_SURFACE_LOST_KHR              , "ERROR_SURFACE_LOST_KHR")+  , (ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, "ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS")+  , (ERROR_FRAGMENTATION                 , "ERROR_FRAGMENTATION")+  , (ERROR_INVALID_EXTERNAL_HANDLE       , "ERROR_INVALID_EXTERNAL_HANDLE")+  , (ERROR_OUT_OF_POOL_MEMORY            , "ERROR_OUT_OF_POOL_MEMORY")+  ]+ instance Show Result where-  showsPrec p = \case-    SUCCESS -> showString "SUCCESS"-    NOT_READY -> showString "NOT_READY"-    TIMEOUT -> showString "TIMEOUT"-    EVENT_SET -> showString "EVENT_SET"-    EVENT_RESET -> showString "EVENT_RESET"-    INCOMPLETE -> showString "INCOMPLETE"-    ERROR_OUT_OF_HOST_MEMORY -> showString "ERROR_OUT_OF_HOST_MEMORY"-    ERROR_OUT_OF_DEVICE_MEMORY -> showString "ERROR_OUT_OF_DEVICE_MEMORY"-    ERROR_INITIALIZATION_FAILED -> showString "ERROR_INITIALIZATION_FAILED"-    ERROR_DEVICE_LOST -> showString "ERROR_DEVICE_LOST"-    ERROR_MEMORY_MAP_FAILED -> showString "ERROR_MEMORY_MAP_FAILED"-    ERROR_LAYER_NOT_PRESENT -> showString "ERROR_LAYER_NOT_PRESENT"-    ERROR_EXTENSION_NOT_PRESENT -> showString "ERROR_EXTENSION_NOT_PRESENT"-    ERROR_FEATURE_NOT_PRESENT -> showString "ERROR_FEATURE_NOT_PRESENT"-    ERROR_INCOMPATIBLE_DRIVER -> showString "ERROR_INCOMPATIBLE_DRIVER"-    ERROR_TOO_MANY_OBJECTS -> showString "ERROR_TOO_MANY_OBJECTS"-    ERROR_FORMAT_NOT_SUPPORTED -> showString "ERROR_FORMAT_NOT_SUPPORTED"-    ERROR_FRAGMENTED_POOL -> showString "ERROR_FRAGMENTED_POOL"-    ERROR_UNKNOWN -> showString "ERROR_UNKNOWN"-    PIPELINE_COMPILE_REQUIRED_EXT -> showString "PIPELINE_COMPILE_REQUIRED_EXT"-    OPERATION_NOT_DEFERRED_KHR -> showString "OPERATION_NOT_DEFERRED_KHR"-    OPERATION_DEFERRED_KHR -> showString "OPERATION_DEFERRED_KHR"-    THREAD_DONE_KHR -> showString "THREAD_DONE_KHR"-    THREAD_IDLE_KHR -> showString "THREAD_IDLE_KHR"-    ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT -> showString "ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT"-    ERROR_NOT_PERMITTED_EXT -> showString "ERROR_NOT_PERMITTED_EXT"-    ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT -> showString "ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT"-    ERROR_INCOMPATIBLE_VERSION_KHR -> showString "ERROR_INCOMPATIBLE_VERSION_KHR"-    ERROR_INVALID_SHADER_NV -> showString "ERROR_INVALID_SHADER_NV"-    ERROR_VALIDATION_FAILED_EXT -> showString "ERROR_VALIDATION_FAILED_EXT"-    ERROR_INCOMPATIBLE_DISPLAY_KHR -> showString "ERROR_INCOMPATIBLE_DISPLAY_KHR"-    ERROR_OUT_OF_DATE_KHR -> showString "ERROR_OUT_OF_DATE_KHR"-    SUBOPTIMAL_KHR -> showString "SUBOPTIMAL_KHR"-    ERROR_NATIVE_WINDOW_IN_USE_KHR -> showString "ERROR_NATIVE_WINDOW_IN_USE_KHR"-    ERROR_SURFACE_LOST_KHR -> showString "ERROR_SURFACE_LOST_KHR"-    ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS -> showString "ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS"-    ERROR_FRAGMENTATION -> showString "ERROR_FRAGMENTATION"-    ERROR_INVALID_EXTERNAL_HANDLE -> showString "ERROR_INVALID_EXTERNAL_HANDLE"-    ERROR_OUT_OF_POOL_MEMORY -> showString "ERROR_OUT_OF_POOL_MEMORY"-    Result x -> showParen (p >= 11) (showString "Result " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixResult showTableResult conNameResult (\(Result x) -> x) (showsPrec 11)  instance Read Result where-  readPrec = parens (choose [("SUCCESS", pure SUCCESS)-                            , ("NOT_READY", pure NOT_READY)-                            , ("TIMEOUT", pure TIMEOUT)-                            , ("EVENT_SET", pure EVENT_SET)-                            , ("EVENT_RESET", pure EVENT_RESET)-                            , ("INCOMPLETE", pure INCOMPLETE)-                            , ("ERROR_OUT_OF_HOST_MEMORY", pure ERROR_OUT_OF_HOST_MEMORY)-                            , ("ERROR_OUT_OF_DEVICE_MEMORY", pure ERROR_OUT_OF_DEVICE_MEMORY)-                            , ("ERROR_INITIALIZATION_FAILED", pure ERROR_INITIALIZATION_FAILED)-                            , ("ERROR_DEVICE_LOST", pure ERROR_DEVICE_LOST)-                            , ("ERROR_MEMORY_MAP_FAILED", pure ERROR_MEMORY_MAP_FAILED)-                            , ("ERROR_LAYER_NOT_PRESENT", pure ERROR_LAYER_NOT_PRESENT)-                            , ("ERROR_EXTENSION_NOT_PRESENT", pure ERROR_EXTENSION_NOT_PRESENT)-                            , ("ERROR_FEATURE_NOT_PRESENT", pure ERROR_FEATURE_NOT_PRESENT)-                            , ("ERROR_INCOMPATIBLE_DRIVER", pure ERROR_INCOMPATIBLE_DRIVER)-                            , ("ERROR_TOO_MANY_OBJECTS", pure ERROR_TOO_MANY_OBJECTS)-                            , ("ERROR_FORMAT_NOT_SUPPORTED", pure ERROR_FORMAT_NOT_SUPPORTED)-                            , ("ERROR_FRAGMENTED_POOL", pure ERROR_FRAGMENTED_POOL)-                            , ("ERROR_UNKNOWN", pure ERROR_UNKNOWN)-                            , ("PIPELINE_COMPILE_REQUIRED_EXT", pure PIPELINE_COMPILE_REQUIRED_EXT)-                            , ("OPERATION_NOT_DEFERRED_KHR", pure OPERATION_NOT_DEFERRED_KHR)-                            , ("OPERATION_DEFERRED_KHR", pure OPERATION_DEFERRED_KHR)-                            , ("THREAD_DONE_KHR", pure THREAD_DONE_KHR)-                            , ("THREAD_IDLE_KHR", pure THREAD_IDLE_KHR)-                            , ("ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT", pure ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT)-                            , ("ERROR_NOT_PERMITTED_EXT", pure ERROR_NOT_PERMITTED_EXT)-                            , ("ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT", pure ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT)-                            , ("ERROR_INCOMPATIBLE_VERSION_KHR", pure ERROR_INCOMPATIBLE_VERSION_KHR)-                            , ("ERROR_INVALID_SHADER_NV", pure ERROR_INVALID_SHADER_NV)-                            , ("ERROR_VALIDATION_FAILED_EXT", pure ERROR_VALIDATION_FAILED_EXT)-                            , ("ERROR_INCOMPATIBLE_DISPLAY_KHR", pure ERROR_INCOMPATIBLE_DISPLAY_KHR)-                            , ("ERROR_OUT_OF_DATE_KHR", pure ERROR_OUT_OF_DATE_KHR)-                            , ("SUBOPTIMAL_KHR", pure SUBOPTIMAL_KHR)-                            , ("ERROR_NATIVE_WINDOW_IN_USE_KHR", pure ERROR_NATIVE_WINDOW_IN_USE_KHR)-                            , ("ERROR_SURFACE_LOST_KHR", pure ERROR_SURFACE_LOST_KHR)-                            , ("ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS", pure ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS)-                            , ("ERROR_FRAGMENTATION", pure ERROR_FRAGMENTATION)-                            , ("ERROR_INVALID_EXTERNAL_HANDLE", pure ERROR_INVALID_EXTERNAL_HANDLE)-                            , ("ERROR_OUT_OF_POOL_MEMORY", pure ERROR_OUT_OF_POOL_MEMORY)]-                     +++-                     prec 10 (do-                       expectP (Ident "Result")-                       v <- step readPrec-                       pure (Result v)))+  readPrec = enumReadPrec enumPrefixResult showTableResult conNameResult Result 
src/Vulkan/Core10/Enums/Result.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Result" module Vulkan.Core10.Enums.Result  (Result) where  
src/Vulkan/Core10/Enums/SampleCountFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.SampleCountFlagBits  ( SampleCountFlagBits( SAMPLE_COUNT_1_BIT+-- No documentation found for Chapter "SampleCountFlagBits"+module Vulkan.Core10.Enums.SampleCountFlagBits  ( SampleCountFlags+                                                , SampleCountFlagBits( SAMPLE_COUNT_1_BIT                                                                      , SAMPLE_COUNT_2_BIT                                                                      , SAMPLE_COUNT_4_BIT                                                                      , SAMPLE_COUNT_8_BIT@@ -8,25 +10,21 @@                                                                      , SAMPLE_COUNT_64_BIT                                                                      , ..                                                                      )-                                                , SampleCountFlags                                                 ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type SampleCountFlags = SampleCountFlagBits+ -- | VkSampleCountFlagBits - Bitmask specifying sample counts supported for -- an image used for storage operations --@@ -48,13 +46,13 @@   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)  -- | 'SAMPLE_COUNT_1_BIT' specifies an image with one sample per pixel.-pattern SAMPLE_COUNT_1_BIT = SampleCountFlagBits 0x00000001+pattern SAMPLE_COUNT_1_BIT  = SampleCountFlagBits 0x00000001 -- | 'SAMPLE_COUNT_2_BIT' specifies an image with 2 samples per pixel.-pattern SAMPLE_COUNT_2_BIT = SampleCountFlagBits 0x00000002+pattern SAMPLE_COUNT_2_BIT  = SampleCountFlagBits 0x00000002 -- | 'SAMPLE_COUNT_4_BIT' specifies an image with 4 samples per pixel.-pattern SAMPLE_COUNT_4_BIT = SampleCountFlagBits 0x00000004+pattern SAMPLE_COUNT_4_BIT  = SampleCountFlagBits 0x00000004 -- | 'SAMPLE_COUNT_8_BIT' specifies an image with 8 samples per pixel.-pattern SAMPLE_COUNT_8_BIT = SampleCountFlagBits 0x00000008+pattern SAMPLE_COUNT_8_BIT  = SampleCountFlagBits 0x00000008 -- | 'SAMPLE_COUNT_16_BIT' specifies an image with 16 samples per pixel. pattern SAMPLE_COUNT_16_BIT = SampleCountFlagBits 0x00000010 -- | 'SAMPLE_COUNT_32_BIT' specifies an image with 32 samples per pixel.@@ -62,30 +60,33 @@ -- | 'SAMPLE_COUNT_64_BIT' specifies an image with 64 samples per pixel. pattern SAMPLE_COUNT_64_BIT = SampleCountFlagBits 0x00000040 -type SampleCountFlags = SampleCountFlagBits+conNameSampleCountFlagBits :: String+conNameSampleCountFlagBits = "SampleCountFlagBits" +enumPrefixSampleCountFlagBits :: String+enumPrefixSampleCountFlagBits = "SAMPLE_COUNT_"++showTableSampleCountFlagBits :: [(SampleCountFlagBits, String)]+showTableSampleCountFlagBits =+  [ (SAMPLE_COUNT_1_BIT , "1_BIT")+  , (SAMPLE_COUNT_2_BIT , "2_BIT")+  , (SAMPLE_COUNT_4_BIT , "4_BIT")+  , (SAMPLE_COUNT_8_BIT , "8_BIT")+  , (SAMPLE_COUNT_16_BIT, "16_BIT")+  , (SAMPLE_COUNT_32_BIT, "32_BIT")+  , (SAMPLE_COUNT_64_BIT, "64_BIT")+  ]+ instance Show SampleCountFlagBits where-  showsPrec p = \case-    SAMPLE_COUNT_1_BIT -> showString "SAMPLE_COUNT_1_BIT"-    SAMPLE_COUNT_2_BIT -> showString "SAMPLE_COUNT_2_BIT"-    SAMPLE_COUNT_4_BIT -> showString "SAMPLE_COUNT_4_BIT"-    SAMPLE_COUNT_8_BIT -> showString "SAMPLE_COUNT_8_BIT"-    SAMPLE_COUNT_16_BIT -> showString "SAMPLE_COUNT_16_BIT"-    SAMPLE_COUNT_32_BIT -> showString "SAMPLE_COUNT_32_BIT"-    SAMPLE_COUNT_64_BIT -> showString "SAMPLE_COUNT_64_BIT"-    SampleCountFlagBits x -> showParen (p >= 11) (showString "SampleCountFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixSampleCountFlagBits+                            showTableSampleCountFlagBits+                            conNameSampleCountFlagBits+                            (\(SampleCountFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read SampleCountFlagBits where-  readPrec = parens (choose [("SAMPLE_COUNT_1_BIT", pure SAMPLE_COUNT_1_BIT)-                            , ("SAMPLE_COUNT_2_BIT", pure SAMPLE_COUNT_2_BIT)-                            , ("SAMPLE_COUNT_4_BIT", pure SAMPLE_COUNT_4_BIT)-                            , ("SAMPLE_COUNT_8_BIT", pure SAMPLE_COUNT_8_BIT)-                            , ("SAMPLE_COUNT_16_BIT", pure SAMPLE_COUNT_16_BIT)-                            , ("SAMPLE_COUNT_32_BIT", pure SAMPLE_COUNT_32_BIT)-                            , ("SAMPLE_COUNT_64_BIT", pure SAMPLE_COUNT_64_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "SampleCountFlagBits")-                       v <- step readPrec-                       pure (SampleCountFlagBits v)))+  readPrec = enumReadPrec enumPrefixSampleCountFlagBits+                          showTableSampleCountFlagBits+                          conNameSampleCountFlagBits+                          SampleCountFlagBits 
src/Vulkan/Core10/Enums/SampleCountFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.SampleCountFlagBits  ( SampleCountFlagBits-                                                , SampleCountFlags+-- No documentation found for Chapter "SampleCountFlagBits"+module Vulkan.Core10.Enums.SampleCountFlagBits  ( SampleCountFlags+                                                , SampleCountFlagBits                                                 ) where   -data SampleCountFlagBits- type SampleCountFlags = SampleCountFlagBits++data SampleCountFlagBits 
src/Vulkan/Core10/Enums/SamplerAddressMode.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "SamplerAddressMode" module Vulkan.Core10.Enums.SamplerAddressMode  (SamplerAddressMode( SAMPLER_ADDRESS_MODE_REPEAT                                                                   , SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT                                                                   , SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE@@ -7,19 +8,13 @@                                                                   , ..                                                                   )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkSamplerAddressMode - Specify behavior of sampling with texture -- coordinates outside an image@@ -32,16 +27,16 @@  -- | 'SAMPLER_ADDRESS_MODE_REPEAT' specifies that the repeat wrap mode will -- be used.-pattern SAMPLER_ADDRESS_MODE_REPEAT = SamplerAddressMode 0+pattern SAMPLER_ADDRESS_MODE_REPEAT               = SamplerAddressMode 0 -- | 'SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT' specifies that the mirrored -- repeat wrap mode will be used.-pattern SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = SamplerAddressMode 1+pattern SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT      = SamplerAddressMode 1 -- | 'SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' specifies that the clamp to edge -- wrap mode will be used.-pattern SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = SamplerAddressMode 2+pattern SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE        = SamplerAddressMode 2 -- | 'SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER' specifies that the clamp to -- border wrap mode will be used.-pattern SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = SamplerAddressMode 3+pattern SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER      = SamplerAddressMode 3 -- | 'SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE' specifies that the mirror -- clamp to edge wrap mode will be used. This is only valid if -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerMirrorClampToEdge samplerMirrorClampToEdge>@@ -54,24 +49,29 @@              SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,              SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE :: SamplerAddressMode #-} +conNameSamplerAddressMode :: String+conNameSamplerAddressMode = "SamplerAddressMode"++enumPrefixSamplerAddressMode :: String+enumPrefixSamplerAddressMode = "SAMPLER_ADDRESS_MODE_"++showTableSamplerAddressMode :: [(SamplerAddressMode, String)]+showTableSamplerAddressMode =+  [ (SAMPLER_ADDRESS_MODE_REPEAT              , "REPEAT")+  , (SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT     , "MIRRORED_REPEAT")+  , (SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE       , "CLAMP_TO_EDGE")+  , (SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER     , "CLAMP_TO_BORDER")+  , (SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, "MIRROR_CLAMP_TO_EDGE")+  ]+ instance Show SamplerAddressMode where-  showsPrec p = \case-    SAMPLER_ADDRESS_MODE_REPEAT -> showString "SAMPLER_ADDRESS_MODE_REPEAT"-    SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT -> showString "SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT"-    SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE -> showString "SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE"-    SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER -> showString "SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER"-    SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE -> showString "SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE"-    SamplerAddressMode x -> showParen (p >= 11) (showString "SamplerAddressMode " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixSamplerAddressMode+                            showTableSamplerAddressMode+                            conNameSamplerAddressMode+                            (\(SamplerAddressMode x) -> x)+                            (showsPrec 11)  instance Read SamplerAddressMode where-  readPrec = parens (choose [("SAMPLER_ADDRESS_MODE_REPEAT", pure SAMPLER_ADDRESS_MODE_REPEAT)-                            , ("SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT", pure SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT)-                            , ("SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE", pure SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE)-                            , ("SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER", pure SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER)-                            , ("SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE", pure SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE)]-                     +++-                     prec 10 (do-                       expectP (Ident "SamplerAddressMode")-                       v <- step readPrec-                       pure (SamplerAddressMode v)))+  readPrec =+    enumReadPrec enumPrefixSamplerAddressMode showTableSamplerAddressMode conNameSamplerAddressMode SamplerAddressMode 
src/Vulkan/Core10/Enums/SamplerCreateFlagBits.hs view
@@ -1,27 +1,25 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.SamplerCreateFlagBits  ( SamplerCreateFlagBits( SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT+-- No documentation found for Chapter "SamplerCreateFlagBits"+module Vulkan.Core10.Enums.SamplerCreateFlagBits  ( SamplerCreateFlags+                                                  , SamplerCreateFlagBits( SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT                                                                          , SAMPLER_CREATE_SUBSAMPLED_BIT_EXT                                                                          , ..                                                                          )-                                                  , SamplerCreateFlags                                                   ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type SamplerCreateFlags = SamplerCreateFlagBits+ -- | VkSamplerCreateFlagBits - Bitmask specifying additional parameters of -- sampler --@@ -50,22 +48,30 @@ -- specifies that the sampler will read from an image created with @flags@ -- containing -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'.-pattern SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = SamplerCreateFlagBits 0x00000001+pattern SAMPLER_CREATE_SUBSAMPLED_BIT_EXT                       = SamplerCreateFlagBits 0x00000001 -type SamplerCreateFlags = SamplerCreateFlagBits+conNameSamplerCreateFlagBits :: String+conNameSamplerCreateFlagBits = "SamplerCreateFlagBits" +enumPrefixSamplerCreateFlagBits :: String+enumPrefixSamplerCreateFlagBits = "SAMPLER_CREATE_SUBSAMPLED_"++showTableSamplerCreateFlagBits :: [(SamplerCreateFlagBits, String)]+showTableSamplerCreateFlagBits =+  [ (SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT, "COARSE_RECONSTRUCTION_BIT_EXT")+  , (SAMPLER_CREATE_SUBSAMPLED_BIT_EXT                      , "BIT_EXT")+  ]+ instance Show SamplerCreateFlagBits where-  showsPrec p = \case-    SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT -> showString "SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT"-    SAMPLER_CREATE_SUBSAMPLED_BIT_EXT -> showString "SAMPLER_CREATE_SUBSAMPLED_BIT_EXT"-    SamplerCreateFlagBits x -> showParen (p >= 11) (showString "SamplerCreateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixSamplerCreateFlagBits+                            showTableSamplerCreateFlagBits+                            conNameSamplerCreateFlagBits+                            (\(SamplerCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read SamplerCreateFlagBits where-  readPrec = parens (choose [("SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT", pure SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT)-                            , ("SAMPLER_CREATE_SUBSAMPLED_BIT_EXT", pure SAMPLER_CREATE_SUBSAMPLED_BIT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "SamplerCreateFlagBits")-                       v <- step readPrec-                       pure (SamplerCreateFlagBits v)))+  readPrec = enumReadPrec enumPrefixSamplerCreateFlagBits+                          showTableSamplerCreateFlagBits+                          conNameSamplerCreateFlagBits+                          SamplerCreateFlagBits 
src/Vulkan/Core10/Enums/SamplerMipmapMode.hs view
@@ -1,22 +1,17 @@ {-# language CPP #-}+-- No documentation found for Chapter "SamplerMipmapMode" module Vulkan.Core10.Enums.SamplerMipmapMode  (SamplerMipmapMode( SAMPLER_MIPMAP_MODE_NEAREST                                                                 , SAMPLER_MIPMAP_MODE_LINEAR                                                                 , ..                                                                 )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkSamplerMipmapMode - Specify mipmap mode used for texture lookups --@@ -34,22 +29,27 @@ -- | 'SAMPLER_MIPMAP_MODE_NEAREST' specifies nearest filtering. pattern SAMPLER_MIPMAP_MODE_NEAREST = SamplerMipmapMode 0 -- | 'SAMPLER_MIPMAP_MODE_LINEAR' specifies linear filtering.-pattern SAMPLER_MIPMAP_MODE_LINEAR = SamplerMipmapMode 1+pattern SAMPLER_MIPMAP_MODE_LINEAR  = SamplerMipmapMode 1 {-# complete SAMPLER_MIPMAP_MODE_NEAREST,              SAMPLER_MIPMAP_MODE_LINEAR :: SamplerMipmapMode #-} +conNameSamplerMipmapMode :: String+conNameSamplerMipmapMode = "SamplerMipmapMode"++enumPrefixSamplerMipmapMode :: String+enumPrefixSamplerMipmapMode = "SAMPLER_MIPMAP_MODE_"++showTableSamplerMipmapMode :: [(SamplerMipmapMode, String)]+showTableSamplerMipmapMode = [(SAMPLER_MIPMAP_MODE_NEAREST, "NEAREST"), (SAMPLER_MIPMAP_MODE_LINEAR, "LINEAR")]+ instance Show SamplerMipmapMode where-  showsPrec p = \case-    SAMPLER_MIPMAP_MODE_NEAREST -> showString "SAMPLER_MIPMAP_MODE_NEAREST"-    SAMPLER_MIPMAP_MODE_LINEAR -> showString "SAMPLER_MIPMAP_MODE_LINEAR"-    SamplerMipmapMode x -> showParen (p >= 11) (showString "SamplerMipmapMode " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixSamplerMipmapMode+                            showTableSamplerMipmapMode+                            conNameSamplerMipmapMode+                            (\(SamplerMipmapMode x) -> x)+                            (showsPrec 11)  instance Read SamplerMipmapMode where-  readPrec = parens (choose [("SAMPLER_MIPMAP_MODE_NEAREST", pure SAMPLER_MIPMAP_MODE_NEAREST)-                            , ("SAMPLER_MIPMAP_MODE_LINEAR", pure SAMPLER_MIPMAP_MODE_LINEAR)]-                     +++-                     prec 10 (do-                       expectP (Ident "SamplerMipmapMode")-                       v <- step readPrec-                       pure (SamplerMipmapMode v)))+  readPrec =+    enumReadPrec enumPrefixSamplerMipmapMode showTableSamplerMipmapMode conNameSamplerMipmapMode SamplerMipmapMode 
src/Vulkan/Core10/Enums/SemaphoreCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "SemaphoreCreateFlags" module Vulkan.Core10.Enums.SemaphoreCreateFlags  (SemaphoreCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkSemaphoreCreateFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNameSemaphoreCreateFlags :: String+conNameSemaphoreCreateFlags = "SemaphoreCreateFlags"++enumPrefixSemaphoreCreateFlags :: String+enumPrefixSemaphoreCreateFlags = ""++showTableSemaphoreCreateFlags :: [(SemaphoreCreateFlags, String)]+showTableSemaphoreCreateFlags = []+ instance Show SemaphoreCreateFlags where-  showsPrec p = \case-    SemaphoreCreateFlags x -> showParen (p >= 11) (showString "SemaphoreCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixSemaphoreCreateFlags+                            showTableSemaphoreCreateFlags+                            conNameSemaphoreCreateFlags+                            (\(SemaphoreCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read SemaphoreCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "SemaphoreCreateFlags")-                       v <- step readPrec-                       pure (SemaphoreCreateFlags v)))+  readPrec = enumReadPrec enumPrefixSemaphoreCreateFlags+                          showTableSemaphoreCreateFlags+                          conNameSemaphoreCreateFlags+                          SemaphoreCreateFlags 
src/Vulkan/Core10/Enums/ShaderModuleCreateFlagBits.hs view
@@ -1,41 +1,47 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.ShaderModuleCreateFlagBits  ( ShaderModuleCreateFlagBits(..)-                                                       , ShaderModuleCreateFlags+-- No documentation found for Chapter "ShaderModuleCreateFlagBits"+module Vulkan.Core10.Enums.ShaderModuleCreateFlagBits  ( ShaderModuleCreateFlags+                                                       , ShaderModuleCreateFlagBits(..)                                                        ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type ShaderModuleCreateFlags = ShaderModuleCreateFlagBits+ -- No documentation found for TopLevel "VkShaderModuleCreateFlagBits" newtype ShaderModuleCreateFlagBits = ShaderModuleCreateFlagBits Flags   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)   -type ShaderModuleCreateFlags = ShaderModuleCreateFlagBits+conNameShaderModuleCreateFlagBits :: String+conNameShaderModuleCreateFlagBits = "ShaderModuleCreateFlagBits" +enumPrefixShaderModuleCreateFlagBits :: String+enumPrefixShaderModuleCreateFlagBits = ""++showTableShaderModuleCreateFlagBits :: [(ShaderModuleCreateFlagBits, String)]+showTableShaderModuleCreateFlagBits = []+ instance Show ShaderModuleCreateFlagBits where-  showsPrec p = \case-    ShaderModuleCreateFlagBits x -> showParen (p >= 11) (showString "ShaderModuleCreateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixShaderModuleCreateFlagBits+                            showTableShaderModuleCreateFlagBits+                            conNameShaderModuleCreateFlagBits+                            (\(ShaderModuleCreateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ShaderModuleCreateFlagBits where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "ShaderModuleCreateFlagBits")-                       v <- step readPrec-                       pure (ShaderModuleCreateFlagBits v)))+  readPrec = enumReadPrec enumPrefixShaderModuleCreateFlagBits+                          showTableShaderModuleCreateFlagBits+                          conNameShaderModuleCreateFlagBits+                          ShaderModuleCreateFlagBits 
src/Vulkan/Core10/Enums/ShaderStageFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.ShaderStageFlagBits  ( ShaderStageFlagBits( SHADER_STAGE_VERTEX_BIT+-- No documentation found for Chapter "ShaderStageFlagBits"+module Vulkan.Core10.Enums.ShaderStageFlagBits  ( ShaderStageFlags+                                                , ShaderStageFlagBits( SHADER_STAGE_VERTEX_BIT                                                                      , SHADER_STAGE_TESSELLATION_CONTROL_BIT                                                                      , SHADER_STAGE_TESSELLATION_EVALUATION_BIT                                                                      , SHADER_STAGE_GEOMETRY_BIT@@ -17,25 +19,21 @@                                                                      , SHADER_STAGE_RAYGEN_BIT_KHR                                                                      , ..                                                                      )-                                                , ShaderStageFlags                                                 ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type ShaderStageFlags = ShaderStageFlagBits+ -- | VkShaderStageFlagBits - Bitmask specifying a pipeline stage -- -- = Description@@ -55,86 +53,80 @@   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)  -- | 'SHADER_STAGE_VERTEX_BIT' specifies the vertex stage.-pattern SHADER_STAGE_VERTEX_BIT = ShaderStageFlagBits 0x00000001+pattern SHADER_STAGE_VERTEX_BIT                  = ShaderStageFlagBits 0x00000001 -- | 'SHADER_STAGE_TESSELLATION_CONTROL_BIT' specifies the tessellation -- control stage.-pattern SHADER_STAGE_TESSELLATION_CONTROL_BIT = ShaderStageFlagBits 0x00000002+pattern SHADER_STAGE_TESSELLATION_CONTROL_BIT    = ShaderStageFlagBits 0x00000002 -- | 'SHADER_STAGE_TESSELLATION_EVALUATION_BIT' specifies the tessellation -- evaluation stage. pattern SHADER_STAGE_TESSELLATION_EVALUATION_BIT = ShaderStageFlagBits 0x00000004 -- | 'SHADER_STAGE_GEOMETRY_BIT' specifies the geometry stage.-pattern SHADER_STAGE_GEOMETRY_BIT = ShaderStageFlagBits 0x00000008+pattern SHADER_STAGE_GEOMETRY_BIT                = ShaderStageFlagBits 0x00000008 -- | 'SHADER_STAGE_FRAGMENT_BIT' specifies the fragment stage.-pattern SHADER_STAGE_FRAGMENT_BIT = ShaderStageFlagBits 0x00000010+pattern SHADER_STAGE_FRAGMENT_BIT                = ShaderStageFlagBits 0x00000010 -- | 'SHADER_STAGE_COMPUTE_BIT' specifies the compute stage.-pattern SHADER_STAGE_COMPUTE_BIT = ShaderStageFlagBits 0x00000020+pattern SHADER_STAGE_COMPUTE_BIT                 = ShaderStageFlagBits 0x00000020 -- | 'SHADER_STAGE_ALL_GRAPHICS' is a combination of bits used as shorthand -- to specify all graphics stages defined above (excluding the compute -- stage).-pattern SHADER_STAGE_ALL_GRAPHICS = ShaderStageFlagBits 0x0000001f+pattern SHADER_STAGE_ALL_GRAPHICS                = ShaderStageFlagBits 0x0000001f -- | 'SHADER_STAGE_ALL' is a combination of bits used as shorthand to specify -- all shader stages supported by the device, including all additional -- stages which are introduced by extensions.-pattern SHADER_STAGE_ALL = ShaderStageFlagBits 0x7fffffff+pattern SHADER_STAGE_ALL                         = ShaderStageFlagBits 0x7fffffff -- | 'SHADER_STAGE_MESH_BIT_NV' specifies the mesh stage.-pattern SHADER_STAGE_MESH_BIT_NV = ShaderStageFlagBits 0x00000080+pattern SHADER_STAGE_MESH_BIT_NV                 = ShaderStageFlagBits 0x00000080 -- | 'SHADER_STAGE_TASK_BIT_NV' specifies the task stage.-pattern SHADER_STAGE_TASK_BIT_NV = ShaderStageFlagBits 0x00000040+pattern SHADER_STAGE_TASK_BIT_NV                 = ShaderStageFlagBits 0x00000040 -- | 'SHADER_STAGE_CALLABLE_BIT_KHR' specifies the callable stage.-pattern SHADER_STAGE_CALLABLE_BIT_KHR = ShaderStageFlagBits 0x00002000+pattern SHADER_STAGE_CALLABLE_BIT_KHR            = ShaderStageFlagBits 0x00002000 -- | 'SHADER_STAGE_INTERSECTION_BIT_KHR' specifies the intersection stage.-pattern SHADER_STAGE_INTERSECTION_BIT_KHR = ShaderStageFlagBits 0x00001000+pattern SHADER_STAGE_INTERSECTION_BIT_KHR        = ShaderStageFlagBits 0x00001000 -- | 'SHADER_STAGE_MISS_BIT_KHR' specifies the miss stage.-pattern SHADER_STAGE_MISS_BIT_KHR = ShaderStageFlagBits 0x00000800+pattern SHADER_STAGE_MISS_BIT_KHR                = ShaderStageFlagBits 0x00000800 -- | 'SHADER_STAGE_CLOSEST_HIT_BIT_KHR' specifies the closest hit stage.-pattern SHADER_STAGE_CLOSEST_HIT_BIT_KHR = ShaderStageFlagBits 0x00000400+pattern SHADER_STAGE_CLOSEST_HIT_BIT_KHR         = ShaderStageFlagBits 0x00000400 -- | 'SHADER_STAGE_ANY_HIT_BIT_KHR' specifies the any-hit stage.-pattern SHADER_STAGE_ANY_HIT_BIT_KHR = ShaderStageFlagBits 0x00000200+pattern SHADER_STAGE_ANY_HIT_BIT_KHR             = ShaderStageFlagBits 0x00000200 -- | 'SHADER_STAGE_RAYGEN_BIT_KHR' specifies the ray generation stage.-pattern SHADER_STAGE_RAYGEN_BIT_KHR = ShaderStageFlagBits 0x00000100+pattern SHADER_STAGE_RAYGEN_BIT_KHR              = ShaderStageFlagBits 0x00000100 -type ShaderStageFlags = ShaderStageFlagBits+conNameShaderStageFlagBits :: String+conNameShaderStageFlagBits = "ShaderStageFlagBits" +enumPrefixShaderStageFlagBits :: String+enumPrefixShaderStageFlagBits = "SHADER_STAGE_"++showTableShaderStageFlagBits :: [(ShaderStageFlagBits, String)]+showTableShaderStageFlagBits =+  [ (SHADER_STAGE_VERTEX_BIT                 , "VERTEX_BIT")+  , (SHADER_STAGE_TESSELLATION_CONTROL_BIT   , "TESSELLATION_CONTROL_BIT")+  , (SHADER_STAGE_TESSELLATION_EVALUATION_BIT, "TESSELLATION_EVALUATION_BIT")+  , (SHADER_STAGE_GEOMETRY_BIT               , "GEOMETRY_BIT")+  , (SHADER_STAGE_FRAGMENT_BIT               , "FRAGMENT_BIT")+  , (SHADER_STAGE_COMPUTE_BIT                , "COMPUTE_BIT")+  , (SHADER_STAGE_ALL_GRAPHICS               , "ALL_GRAPHICS")+  , (SHADER_STAGE_ALL                        , "ALL")+  , (SHADER_STAGE_MESH_BIT_NV                , "MESH_BIT_NV")+  , (SHADER_STAGE_TASK_BIT_NV                , "TASK_BIT_NV")+  , (SHADER_STAGE_CALLABLE_BIT_KHR           , "CALLABLE_BIT_KHR")+  , (SHADER_STAGE_INTERSECTION_BIT_KHR       , "INTERSECTION_BIT_KHR")+  , (SHADER_STAGE_MISS_BIT_KHR               , "MISS_BIT_KHR")+  , (SHADER_STAGE_CLOSEST_HIT_BIT_KHR        , "CLOSEST_HIT_BIT_KHR")+  , (SHADER_STAGE_ANY_HIT_BIT_KHR            , "ANY_HIT_BIT_KHR")+  , (SHADER_STAGE_RAYGEN_BIT_KHR             , "RAYGEN_BIT_KHR")+  ]+ instance Show ShaderStageFlagBits where-  showsPrec p = \case-    SHADER_STAGE_VERTEX_BIT -> showString "SHADER_STAGE_VERTEX_BIT"-    SHADER_STAGE_TESSELLATION_CONTROL_BIT -> showString "SHADER_STAGE_TESSELLATION_CONTROL_BIT"-    SHADER_STAGE_TESSELLATION_EVALUATION_BIT -> showString "SHADER_STAGE_TESSELLATION_EVALUATION_BIT"-    SHADER_STAGE_GEOMETRY_BIT -> showString "SHADER_STAGE_GEOMETRY_BIT"-    SHADER_STAGE_FRAGMENT_BIT -> showString "SHADER_STAGE_FRAGMENT_BIT"-    SHADER_STAGE_COMPUTE_BIT -> showString "SHADER_STAGE_COMPUTE_BIT"-    SHADER_STAGE_ALL_GRAPHICS -> showString "SHADER_STAGE_ALL_GRAPHICS"-    SHADER_STAGE_ALL -> showString "SHADER_STAGE_ALL"-    SHADER_STAGE_MESH_BIT_NV -> showString "SHADER_STAGE_MESH_BIT_NV"-    SHADER_STAGE_TASK_BIT_NV -> showString "SHADER_STAGE_TASK_BIT_NV"-    SHADER_STAGE_CALLABLE_BIT_KHR -> showString "SHADER_STAGE_CALLABLE_BIT_KHR"-    SHADER_STAGE_INTERSECTION_BIT_KHR -> showString "SHADER_STAGE_INTERSECTION_BIT_KHR"-    SHADER_STAGE_MISS_BIT_KHR -> showString "SHADER_STAGE_MISS_BIT_KHR"-    SHADER_STAGE_CLOSEST_HIT_BIT_KHR -> showString "SHADER_STAGE_CLOSEST_HIT_BIT_KHR"-    SHADER_STAGE_ANY_HIT_BIT_KHR -> showString "SHADER_STAGE_ANY_HIT_BIT_KHR"-    SHADER_STAGE_RAYGEN_BIT_KHR -> showString "SHADER_STAGE_RAYGEN_BIT_KHR"-    ShaderStageFlagBits x -> showParen (p >= 11) (showString "ShaderStageFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixShaderStageFlagBits+                            showTableShaderStageFlagBits+                            conNameShaderStageFlagBits+                            (\(ShaderStageFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ShaderStageFlagBits where-  readPrec = parens (choose [("SHADER_STAGE_VERTEX_BIT", pure SHADER_STAGE_VERTEX_BIT)-                            , ("SHADER_STAGE_TESSELLATION_CONTROL_BIT", pure SHADER_STAGE_TESSELLATION_CONTROL_BIT)-                            , ("SHADER_STAGE_TESSELLATION_EVALUATION_BIT", pure SHADER_STAGE_TESSELLATION_EVALUATION_BIT)-                            , ("SHADER_STAGE_GEOMETRY_BIT", pure SHADER_STAGE_GEOMETRY_BIT)-                            , ("SHADER_STAGE_FRAGMENT_BIT", pure SHADER_STAGE_FRAGMENT_BIT)-                            , ("SHADER_STAGE_COMPUTE_BIT", pure SHADER_STAGE_COMPUTE_BIT)-                            , ("SHADER_STAGE_ALL_GRAPHICS", pure SHADER_STAGE_ALL_GRAPHICS)-                            , ("SHADER_STAGE_ALL", pure SHADER_STAGE_ALL)-                            , ("SHADER_STAGE_MESH_BIT_NV", pure SHADER_STAGE_MESH_BIT_NV)-                            , ("SHADER_STAGE_TASK_BIT_NV", pure SHADER_STAGE_TASK_BIT_NV)-                            , ("SHADER_STAGE_CALLABLE_BIT_KHR", pure SHADER_STAGE_CALLABLE_BIT_KHR)-                            , ("SHADER_STAGE_INTERSECTION_BIT_KHR", pure SHADER_STAGE_INTERSECTION_BIT_KHR)-                            , ("SHADER_STAGE_MISS_BIT_KHR", pure SHADER_STAGE_MISS_BIT_KHR)-                            , ("SHADER_STAGE_CLOSEST_HIT_BIT_KHR", pure SHADER_STAGE_CLOSEST_HIT_BIT_KHR)-                            , ("SHADER_STAGE_ANY_HIT_BIT_KHR", pure SHADER_STAGE_ANY_HIT_BIT_KHR)-                            , ("SHADER_STAGE_RAYGEN_BIT_KHR", pure SHADER_STAGE_RAYGEN_BIT_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "ShaderStageFlagBits")-                       v <- step readPrec-                       pure (ShaderStageFlagBits v)))+  readPrec = enumReadPrec enumPrefixShaderStageFlagBits+                          showTableShaderStageFlagBits+                          conNameShaderStageFlagBits+                          ShaderStageFlagBits 
src/Vulkan/Core10/Enums/ShaderStageFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.ShaderStageFlagBits  ( ShaderStageFlagBits-                                                , ShaderStageFlags+-- No documentation found for Chapter "ShaderStageFlagBits"+module Vulkan.Core10.Enums.ShaderStageFlagBits  ( ShaderStageFlags+                                                , ShaderStageFlagBits                                                 ) where   -data ShaderStageFlagBits- type ShaderStageFlags = ShaderStageFlagBits++data ShaderStageFlagBits 
src/Vulkan/Core10/Enums/SharingMode.hs view
@@ -1,22 +1,17 @@ {-# language CPP #-}+-- No documentation found for Chapter "SharingMode" module Vulkan.Core10.Enums.SharingMode  (SharingMode( SHARING_MODE_EXCLUSIVE                                                     , SHARING_MODE_CONCURRENT                                                     , ..                                                     )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkSharingMode - Buffer and image sharing modes --@@ -70,7 +65,7 @@ -- | 'SHARING_MODE_EXCLUSIVE' specifies that access to any range or image -- subresource of the object will be exclusive to a single queue family at -- a time.-pattern SHARING_MODE_EXCLUSIVE = SharingMode 0+pattern SHARING_MODE_EXCLUSIVE  = SharingMode 0 -- | 'SHARING_MODE_CONCURRENT' specifies that concurrent access to any range -- or image subresource of the object from multiple queue families is -- supported.@@ -78,18 +73,19 @@ {-# complete SHARING_MODE_EXCLUSIVE,              SHARING_MODE_CONCURRENT :: SharingMode #-} +conNameSharingMode :: String+conNameSharingMode = "SharingMode"++enumPrefixSharingMode :: String+enumPrefixSharingMode = "SHARING_MODE_"++showTableSharingMode :: [(SharingMode, String)]+showTableSharingMode = [(SHARING_MODE_EXCLUSIVE, "EXCLUSIVE"), (SHARING_MODE_CONCURRENT, "CONCURRENT")]+ instance Show SharingMode where-  showsPrec p = \case-    SHARING_MODE_EXCLUSIVE -> showString "SHARING_MODE_EXCLUSIVE"-    SHARING_MODE_CONCURRENT -> showString "SHARING_MODE_CONCURRENT"-    SharingMode x -> showParen (p >= 11) (showString "SharingMode " . showsPrec 11 x)+  showsPrec =+    enumShowsPrec enumPrefixSharingMode showTableSharingMode conNameSharingMode (\(SharingMode x) -> x) (showsPrec 11)  instance Read SharingMode where-  readPrec = parens (choose [("SHARING_MODE_EXCLUSIVE", pure SHARING_MODE_EXCLUSIVE)-                            , ("SHARING_MODE_CONCURRENT", pure SHARING_MODE_CONCURRENT)]-                     +++-                     prec 10 (do-                       expectP (Ident "SharingMode")-                       v <- step readPrec-                       pure (SharingMode v)))+  readPrec = enumReadPrec enumPrefixSharingMode showTableSharingMode conNameSharingMode SharingMode 
src/Vulkan/Core10/Enums/SparseImageFormatFlagBits.hs view
@@ -1,28 +1,26 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.SparseImageFormatFlagBits  ( SparseImageFormatFlagBits( SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT+-- No documentation found for Chapter "SparseImageFormatFlagBits"+module Vulkan.Core10.Enums.SparseImageFormatFlagBits  ( SparseImageFormatFlags+                                                      , SparseImageFormatFlagBits( SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT                                                                                  , SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT                                                                                  , SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT                                                                                  , ..                                                                                  )-                                                      , SparseImageFormatFlags                                                       ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type SparseImageFormatFlags = SparseImageFormatFlagBits+ -- | VkSparseImageFormatFlagBits - Bitmask specifying additional information -- about a sparse image resource --@@ -34,33 +32,40 @@  -- | 'SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT' specifies that the image uses a -- single mip tail region for all array layers.-pattern SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = SparseImageFormatFlagBits 0x00000001+pattern SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT         = SparseImageFormatFlagBits 0x00000001 -- | 'SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT' specifies that the first mip -- level whose dimensions are not integer multiples of the corresponding -- dimensions of the sparse image block begins the mip tail region.-pattern SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = SparseImageFormatFlagBits 0x00000002+pattern SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT       = SparseImageFormatFlagBits 0x00000002 -- | 'SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT' specifies that the -- image uses non-standard sparse image block dimensions, and the -- @imageGranularity@ values do not match the standard sparse image block -- dimensions for the given format. pattern SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = SparseImageFormatFlagBits 0x00000004 -type SparseImageFormatFlags = SparseImageFormatFlagBits+conNameSparseImageFormatFlagBits :: String+conNameSparseImageFormatFlagBits = "SparseImageFormatFlagBits" +enumPrefixSparseImageFormatFlagBits :: String+enumPrefixSparseImageFormatFlagBits = "SPARSE_IMAGE_FORMAT_"++showTableSparseImageFormatFlagBits :: [(SparseImageFormatFlagBits, String)]+showTableSparseImageFormatFlagBits =+  [ (SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT        , "SINGLE_MIPTAIL_BIT")+  , (SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT      , "ALIGNED_MIP_SIZE_BIT")+  , (SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT, "NONSTANDARD_BLOCK_SIZE_BIT")+  ]+ instance Show SparseImageFormatFlagBits where-  showsPrec p = \case-    SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT -> showString "SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"-    SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT -> showString "SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"-    SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT -> showString "SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"-    SparseImageFormatFlagBits x -> showParen (p >= 11) (showString "SparseImageFormatFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixSparseImageFormatFlagBits+                            showTableSparseImageFormatFlagBits+                            conNameSparseImageFormatFlagBits+                            (\(SparseImageFormatFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read SparseImageFormatFlagBits where-  readPrec = parens (choose [("SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT", pure SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT)-                            , ("SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT", pure SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT)-                            , ("SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT", pure SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "SparseImageFormatFlagBits")-                       v <- step readPrec-                       pure (SparseImageFormatFlagBits v)))+  readPrec = enumReadPrec enumPrefixSparseImageFormatFlagBits+                          showTableSparseImageFormatFlagBits+                          conNameSparseImageFormatFlagBits+                          SparseImageFormatFlagBits 
src/Vulkan/Core10/Enums/SparseMemoryBindFlagBits.hs view
@@ -1,26 +1,24 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.SparseMemoryBindFlagBits  ( SparseMemoryBindFlagBits( SPARSE_MEMORY_BIND_METADATA_BIT+-- No documentation found for Chapter "SparseMemoryBindFlagBits"+module Vulkan.Core10.Enums.SparseMemoryBindFlagBits  ( SparseMemoryBindFlags+                                                     , SparseMemoryBindFlagBits( SPARSE_MEMORY_BIND_METADATA_BIT                                                                                , ..                                                                                )-                                                     , SparseMemoryBindFlags                                                      ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type SparseMemoryBindFlags = SparseMemoryBindFlagBits+ -- | VkSparseMemoryBindFlagBits - Bitmask specifying usage of a sparse memory -- binding operation --@@ -34,18 +32,25 @@ -- is only for the metadata aspect. pattern SPARSE_MEMORY_BIND_METADATA_BIT = SparseMemoryBindFlagBits 0x00000001 -type SparseMemoryBindFlags = SparseMemoryBindFlagBits+conNameSparseMemoryBindFlagBits :: String+conNameSparseMemoryBindFlagBits = "SparseMemoryBindFlagBits" +enumPrefixSparseMemoryBindFlagBits :: String+enumPrefixSparseMemoryBindFlagBits = "SPARSE_MEMORY_BIND_METADATA_BIT"++showTableSparseMemoryBindFlagBits :: [(SparseMemoryBindFlagBits, String)]+showTableSparseMemoryBindFlagBits = [(SPARSE_MEMORY_BIND_METADATA_BIT, "")]+ instance Show SparseMemoryBindFlagBits where-  showsPrec p = \case-    SPARSE_MEMORY_BIND_METADATA_BIT -> showString "SPARSE_MEMORY_BIND_METADATA_BIT"-    SparseMemoryBindFlagBits x -> showParen (p >= 11) (showString "SparseMemoryBindFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixSparseMemoryBindFlagBits+                            showTableSparseMemoryBindFlagBits+                            conNameSparseMemoryBindFlagBits+                            (\(SparseMemoryBindFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read SparseMemoryBindFlagBits where-  readPrec = parens (choose [("SPARSE_MEMORY_BIND_METADATA_BIT", pure SPARSE_MEMORY_BIND_METADATA_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "SparseMemoryBindFlagBits")-                       v <- step readPrec-                       pure (SparseMemoryBindFlagBits v)))+  readPrec = enumReadPrec enumPrefixSparseMemoryBindFlagBits+                          showTableSparseMemoryBindFlagBits+                          conNameSparseMemoryBindFlagBits+                          SparseMemoryBindFlagBits 
src/Vulkan/Core10/Enums/StencilFaceFlagBits.hs view
@@ -1,33 +1,31 @@ {-# language CPP #-}+-- No documentation found for Chapter "StencilFaceFlagBits" module Vulkan.Core10.Enums.StencilFaceFlagBits  ( pattern STENCIL_FRONT_AND_BACK+                                                , StencilFaceFlags                                                 , StencilFaceFlagBits( STENCIL_FACE_FRONT_BIT                                                                      , STENCIL_FACE_BACK_BIT                                                                      , STENCIL_FACE_FRONT_AND_BACK                                                                      , ..                                                                      )-                                                , StencilFaceFlags                                                 ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- No documentation found for TopLevel "VK_STENCIL_FRONT_AND_BACK" pattern STENCIL_FRONT_AND_BACK = STENCIL_FACE_FRONT_AND_BACK  +type StencilFaceFlags = StencilFaceFlagBits+ -- | VkStencilFaceFlagBits - Bitmask specifying sets of stencil state for -- which to update the compare mask --@@ -39,31 +37,38 @@  -- | 'STENCIL_FACE_FRONT_BIT' specifies that only the front set of stencil -- state is updated.-pattern STENCIL_FACE_FRONT_BIT = StencilFaceFlagBits 0x00000001+pattern STENCIL_FACE_FRONT_BIT      = StencilFaceFlagBits 0x00000001 -- | 'STENCIL_FACE_BACK_BIT' specifies that only the back set of stencil -- state is updated.-pattern STENCIL_FACE_BACK_BIT = StencilFaceFlagBits 0x00000002+pattern STENCIL_FACE_BACK_BIT       = StencilFaceFlagBits 0x00000002 -- | 'STENCIL_FACE_FRONT_AND_BACK' is the combination of -- 'STENCIL_FACE_FRONT_BIT' and 'STENCIL_FACE_BACK_BIT', and specifies that -- both sets of stencil state are updated. pattern STENCIL_FACE_FRONT_AND_BACK = StencilFaceFlagBits 0x00000003 -type StencilFaceFlags = StencilFaceFlagBits+conNameStencilFaceFlagBits :: String+conNameStencilFaceFlagBits = "StencilFaceFlagBits" +enumPrefixStencilFaceFlagBits :: String+enumPrefixStencilFaceFlagBits = "STENCIL_FACE_"++showTableStencilFaceFlagBits :: [(StencilFaceFlagBits, String)]+showTableStencilFaceFlagBits =+  [ (STENCIL_FACE_FRONT_BIT     , "FRONT_BIT")+  , (STENCIL_FACE_BACK_BIT      , "BACK_BIT")+  , (STENCIL_FACE_FRONT_AND_BACK, "FRONT_AND_BACK")+  ]+ instance Show StencilFaceFlagBits where-  showsPrec p = \case-    STENCIL_FACE_FRONT_BIT -> showString "STENCIL_FACE_FRONT_BIT"-    STENCIL_FACE_BACK_BIT -> showString "STENCIL_FACE_BACK_BIT"-    STENCIL_FACE_FRONT_AND_BACK -> showString "STENCIL_FACE_FRONT_AND_BACK"-    StencilFaceFlagBits x -> showParen (p >= 11) (showString "StencilFaceFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixStencilFaceFlagBits+                            showTableStencilFaceFlagBits+                            conNameStencilFaceFlagBits+                            (\(StencilFaceFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read StencilFaceFlagBits where-  readPrec = parens (choose [("STENCIL_FACE_FRONT_BIT", pure STENCIL_FACE_FRONT_BIT)-                            , ("STENCIL_FACE_BACK_BIT", pure STENCIL_FACE_BACK_BIT)-                            , ("STENCIL_FACE_FRONT_AND_BACK", pure STENCIL_FACE_FRONT_AND_BACK)]-                     +++-                     prec 10 (do-                       expectP (Ident "StencilFaceFlagBits")-                       v <- step readPrec-                       pure (StencilFaceFlagBits v)))+  readPrec = enumReadPrec enumPrefixStencilFaceFlagBits+                          showTableStencilFaceFlagBits+                          conNameStencilFaceFlagBits+                          StencilFaceFlagBits 
src/Vulkan/Core10/Enums/StencilFaceFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.StencilFaceFlagBits  ( StencilFaceFlagBits-                                                , StencilFaceFlags+-- No documentation found for Chapter "StencilFaceFlagBits"+module Vulkan.Core10.Enums.StencilFaceFlagBits  ( StencilFaceFlags+                                                , StencilFaceFlagBits                                                 ) where   -data StencilFaceFlagBits- type StencilFaceFlags = StencilFaceFlagBits++data StencilFaceFlagBits 
src/Vulkan/Core10/Enums/StencilOp.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "StencilOp" module Vulkan.Core10.Enums.StencilOp  (StencilOp( STENCIL_OP_KEEP                                                 , STENCIL_OP_ZERO                                                 , STENCIL_OP_REPLACE@@ -10,19 +11,13 @@                                                 , ..                                                 )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkStencilOp - Stencil comparison function --@@ -39,11 +34,11 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- | 'STENCIL_OP_KEEP' keeps the current value.-pattern STENCIL_OP_KEEP = StencilOp 0+pattern STENCIL_OP_KEEP                = StencilOp 0 -- | 'STENCIL_OP_ZERO' sets the value to 0.-pattern STENCIL_OP_ZERO = StencilOp 1+pattern STENCIL_OP_ZERO                = StencilOp 1 -- | 'STENCIL_OP_REPLACE' sets the value to @reference@.-pattern STENCIL_OP_REPLACE = StencilOp 2+pattern STENCIL_OP_REPLACE             = StencilOp 2 -- | 'STENCIL_OP_INCREMENT_AND_CLAMP' increments the current value and clamps -- to the maximum representable unsigned value. pattern STENCIL_OP_INCREMENT_AND_CLAMP = StencilOp 3@@ -51,13 +46,13 @@ -- to 0. pattern STENCIL_OP_DECREMENT_AND_CLAMP = StencilOp 4 -- | 'STENCIL_OP_INVERT' bitwise-inverts the current value.-pattern STENCIL_OP_INVERT = StencilOp 5+pattern STENCIL_OP_INVERT              = StencilOp 5 -- | 'STENCIL_OP_INCREMENT_AND_WRAP' increments the current value and wraps -- to 0 when the maximum value would have been exceeded.-pattern STENCIL_OP_INCREMENT_AND_WRAP = StencilOp 6+pattern STENCIL_OP_INCREMENT_AND_WRAP  = StencilOp 6 -- | 'STENCIL_OP_DECREMENT_AND_WRAP' decrements the current value and wraps -- to the maximum possible value when the value would go below 0.-pattern STENCIL_OP_DECREMENT_AND_WRAP = StencilOp 7+pattern STENCIL_OP_DECREMENT_AND_WRAP  = StencilOp 7 {-# complete STENCIL_OP_KEEP,              STENCIL_OP_ZERO,              STENCIL_OP_REPLACE,@@ -67,30 +62,28 @@              STENCIL_OP_INCREMENT_AND_WRAP,              STENCIL_OP_DECREMENT_AND_WRAP :: StencilOp #-} +conNameStencilOp :: String+conNameStencilOp = "StencilOp"++enumPrefixStencilOp :: String+enumPrefixStencilOp = "STENCIL_OP_"++showTableStencilOp :: [(StencilOp, String)]+showTableStencilOp =+  [ (STENCIL_OP_KEEP               , "KEEP")+  , (STENCIL_OP_ZERO               , "ZERO")+  , (STENCIL_OP_REPLACE            , "REPLACE")+  , (STENCIL_OP_INCREMENT_AND_CLAMP, "INCREMENT_AND_CLAMP")+  , (STENCIL_OP_DECREMENT_AND_CLAMP, "DECREMENT_AND_CLAMP")+  , (STENCIL_OP_INVERT             , "INVERT")+  , (STENCIL_OP_INCREMENT_AND_WRAP , "INCREMENT_AND_WRAP")+  , (STENCIL_OP_DECREMENT_AND_WRAP , "DECREMENT_AND_WRAP")+  ]+ instance Show StencilOp where-  showsPrec p = \case-    STENCIL_OP_KEEP -> showString "STENCIL_OP_KEEP"-    STENCIL_OP_ZERO -> showString "STENCIL_OP_ZERO"-    STENCIL_OP_REPLACE -> showString "STENCIL_OP_REPLACE"-    STENCIL_OP_INCREMENT_AND_CLAMP -> showString "STENCIL_OP_INCREMENT_AND_CLAMP"-    STENCIL_OP_DECREMENT_AND_CLAMP -> showString "STENCIL_OP_DECREMENT_AND_CLAMP"-    STENCIL_OP_INVERT -> showString "STENCIL_OP_INVERT"-    STENCIL_OP_INCREMENT_AND_WRAP -> showString "STENCIL_OP_INCREMENT_AND_WRAP"-    STENCIL_OP_DECREMENT_AND_WRAP -> showString "STENCIL_OP_DECREMENT_AND_WRAP"-    StencilOp x -> showParen (p >= 11) (showString "StencilOp " . showsPrec 11 x)+  showsPrec =+    enumShowsPrec enumPrefixStencilOp showTableStencilOp conNameStencilOp (\(StencilOp x) -> x) (showsPrec 11)  instance Read StencilOp where-  readPrec = parens (choose [("STENCIL_OP_KEEP", pure STENCIL_OP_KEEP)-                            , ("STENCIL_OP_ZERO", pure STENCIL_OP_ZERO)-                            , ("STENCIL_OP_REPLACE", pure STENCIL_OP_REPLACE)-                            , ("STENCIL_OP_INCREMENT_AND_CLAMP", pure STENCIL_OP_INCREMENT_AND_CLAMP)-                            , ("STENCIL_OP_DECREMENT_AND_CLAMP", pure STENCIL_OP_DECREMENT_AND_CLAMP)-                            , ("STENCIL_OP_INVERT", pure STENCIL_OP_INVERT)-                            , ("STENCIL_OP_INCREMENT_AND_WRAP", pure STENCIL_OP_INCREMENT_AND_WRAP)-                            , ("STENCIL_OP_DECREMENT_AND_WRAP", pure STENCIL_OP_DECREMENT_AND_WRAP)]-                     +++-                     prec 10 (do-                       expectP (Ident "StencilOp")-                       v <- step readPrec-                       pure (StencilOp v)))+  readPrec = enumReadPrec enumPrefixStencilOp showTableStencilOp conNameStencilOp StencilOp 
src/Vulkan/Core10/Enums/StencilOp.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "StencilOp" module Vulkan.Core10.Enums.StencilOp  (StencilOp) where  
src/Vulkan/Core10/Enums/StructureType.hs view
@@ -1,3337 +1,3078 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.StructureType  (StructureType( STRUCTURE_TYPE_APPLICATION_INFO-                                                        , STRUCTURE_TYPE_INSTANCE_CREATE_INFO-                                                        , STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO-                                                        , STRUCTURE_TYPE_DEVICE_CREATE_INFO-                                                        , STRUCTURE_TYPE_SUBMIT_INFO-                                                        , STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO-                                                        , STRUCTURE_TYPE_MAPPED_MEMORY_RANGE-                                                        , STRUCTURE_TYPE_BIND_SPARSE_INFO-                                                        , STRUCTURE_TYPE_FENCE_CREATE_INFO-                                                        , STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO-                                                        , STRUCTURE_TYPE_EVENT_CREATE_INFO-                                                        , STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO-                                                        , STRUCTURE_TYPE_BUFFER_CREATE_INFO-                                                        , STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO-                                                        , STRUCTURE_TYPE_IMAGE_CREATE_INFO-                                                        , STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO-                                                        , STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO-                                                        , STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO-                                                        , STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO-                                                        , STRUCTURE_TYPE_SAMPLER_CREATE_INFO-                                                        , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO-                                                        , STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO-                                                        , STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO-                                                        , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET-                                                        , STRUCTURE_TYPE_COPY_DESCRIPTOR_SET-                                                        , STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO-                                                        , STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO-                                                        , STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO-                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO-                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO-                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO-                                                        , STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO-                                                        , STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER-                                                        , STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER-                                                        , STRUCTURE_TYPE_MEMORY_BARRIER-                                                        , STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO-                                                        , STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO-                                                        , STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT-                                                        , STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR-                                                        , STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR-                                                        , STRUCTURE_TYPE_IMAGE_BLIT_2_KHR-                                                        , STRUCTURE_TYPE_IMAGE_COPY_2_KHR-                                                        , STRUCTURE_TYPE_BUFFER_COPY_2_KHR-                                                        , STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR-                                                        , STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR-                                                        , STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR-                                                        , STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR-                                                        , STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR-                                                        , STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT-                                                        , STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV-                                                        , STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT-                                                        , STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT-                                                        , STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT-                                                        , STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM-                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV-                                                        , STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV-                                                        , STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV-                                                        , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV-                                                        , STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR-                                                        , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR-                                                        , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR-                                                        , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR-                                                        , STRUCTURE_TYPE_PIPELINE_INFO_KHR-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR-                                                        , STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT-                                                        , STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT-                                                        , STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT-                                                        , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT-                                                        , STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV-                                                        , STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV-                                                        , STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV-                                                        , STRUCTURE_TYPE_VALIDATION_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV-                                                        , STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR-                                                        , STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR-                                                        , STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT-                                                        , STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR-                                                        , STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA-                                                        , STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD-                                                        , STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL-                                                        , STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL-                                                        , STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL-                                                        , STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL-                                                        , STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL-                                                        , STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL-                                                        , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV-                                                        , STRUCTURE_TYPE_CHECKPOINT_DATA_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV-                                                        , STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV-                                                        , STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD-                                                        , STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT-                                                        , STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT-                                                        , STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT-                                                        , STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV-                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV-                                                        , STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV-                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV-                                                        , STRUCTURE_TYPE_GEOMETRY_AABB_NV-                                                        , STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV-                                                        , STRUCTURE_TYPE_GEOMETRY_NV-                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV-                                                        , STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR-                                                        , STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT-                                                        , STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV-                                                        , STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR-                                                        , STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR-                                                        , STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR-                                                        , STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR-                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR-                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR-                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR-                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR-                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR-                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR-                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR-                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR-                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR-                                                        , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR-                                                        , STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR-                                                        , STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT-                                                        , STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT-                                                        , STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT-                                                        , STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT-                                                        , STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID-                                                        , STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID-                                                        , STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID-                                                        , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID-                                                        , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID-                                                        , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID-                                                        , STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT-                                                        , STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT-                                                        , STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT-                                                        , STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT-                                                        , STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK-                                                        , STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK-                                                        , STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR-                                                        , STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR-                                                        , STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR-                                                        , STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR-                                                        , STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR-                                                        , STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR-                                                        , STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR-                                                        , STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR-                                                        , STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR-                                                        , STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR-                                                        , STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR-                                                        , STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR-                                                        , STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR-                                                        , STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR-                                                        , STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR-                                                        , STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR-                                                        , STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR-                                                        , STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR-                                                        , STRUCTURE_TYPE_HDR_METADATA_EXT-                                                        , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT-                                                        , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX-                                                        , STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE-                                                        , STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT-                                                        , STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT-                                                        , STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT-                                                        , STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT-                                                        , STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_PRESENT_REGIONS_KHR-                                                        , STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT-                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR-                                                        , STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR-                                                        , STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR-                                                        , STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR-                                                        , STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR-                                                        , STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR-                                                        , STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR-                                                        , STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR-                                                        , STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR-                                                        , STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR-                                                        , STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR-                                                        , STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR-                                                        , STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR-                                                        , STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR-                                                        , STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT-                                                        , STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT-                                                        , STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN-                                                        , STRUCTURE_TYPE_VALIDATION_FLAGS_EXT-                                                        , STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR-                                                        , STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR-                                                        , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR-                                                        , STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR-                                                        , STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV-                                                        , STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV-                                                        , STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV-                                                        , STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV-                                                        , STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV-                                                        , STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP-                                                        , STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD-                                                        , STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX-                                                        , STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX-                                                        , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT-                                                        , STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV-                                                        , STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV-                                                        , STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT-                                                        , STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT-                                                        , STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT-                                                        , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD-                                                        , STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT-                                                        , STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR-                                                        , STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_PRESENT_INFO_KHR-                                                        , STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR-                                                        , STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO-                                                        , STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO-                                                        , STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO-                                                        , STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES-                                                        , STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO-                                                        , STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO-                                                        , STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO-                                                        , STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES-                                                        , STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT-                                                        , STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES-                                                        , STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO-                                                        , STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO-                                                        , STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES-                                                        , STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES-                                                        , STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES-                                                        , STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES-                                                        , STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT-                                                        , STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES-                                                        , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES-                                                        , STRUCTURE_TYPE_SUBPASS_END_INFO-                                                        , STRUCTURE_TYPE_SUBPASS_BEGIN_INFO-                                                        , STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2-                                                        , STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2-                                                        , STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2-                                                        , STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2-                                                        , STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2-                                                        , STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES-                                                        , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES-                                                        , STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO-                                                        , STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO-                                                        , STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO-                                                        , STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO-                                                        , STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO-                                                        , STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO-                                                        , STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES-                                                        , STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO-                                                        , STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO-                                                        , STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO-                                                        , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES-                                                        , STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO-                                                        , STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO-                                                        , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO-                                                        , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO-                                                        , STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES-                                                        , STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES-                                                        , STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO-                                                        , STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO-                                                        , STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO-                                                        , STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2-                                                        , STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2-                                                        , STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2-                                                        , STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2-                                                        , STRUCTURE_TYPE_FORMAT_PROPERTIES_2-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2-                                                        , STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2-                                                        , STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2-                                                        , STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2-                                                        , STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2-                                                        , STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2-                                                        , STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES-                                                        , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO-                                                        , STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO-                                                        , STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO-                                                        , STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO-                                                        , STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO-                                                        , STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO-                                                        , STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO-                                                        , STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO-                                                        , STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES-                                                        , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO-                                                        , STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES-                                                        , ..-                                                        )) where--import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)-import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step)-import Foreign.Storable (Storable)-import Data.Int (Int32)-import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))-import Vulkan.Zero (Zero)--- | VkStructureType - Vulkan structure types (@sType@)------ = Description------ Each value corresponds to a particular structure with a @sType@ member--- with a matching name. As a general rule, the name of each--- 'StructureType' value is obtained by taking the name of the structure,--- stripping the leading @Vk@, prefixing each capital letter with @_@,--- converting the entire resulting string to upper case, and prefixing it--- with @VK_STRUCTURE_TYPE_@. For example, structures of type--- 'Vulkan.Core10.Image.ImageCreateInfo' correspond to a 'StructureType' of--- 'STRUCTURE_TYPE_IMAGE_CREATE_INFO', and thus its @sType@ member /must/--- equal that when it is passed to the API.------ The values 'STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO' and--- 'STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO' are reserved for internal use--- by the loader, and do not have corresponding Vulkan structures in this--- Specification.------ = See Also------ 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureBuildGeometryInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateGeometryTypeInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR',--- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureDeviceAddressInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryAabbsDataKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryInstancesDataKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryTrianglesDataKHR',--- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureInfoNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureMemoryRequirementsInfoKHR',--- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsInfoNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureVersionKHR',--- 'Vulkan.Extensions.VK_KHR_swapchain.AcquireNextImageInfoKHR',--- 'Vulkan.Extensions.VK_KHR_performance_query.AcquireProfilingLockInfoKHR',--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferUsageANDROID',--- 'Vulkan.Extensions.VK_KHR_android_surface.AndroidSurfaceCreateInfoKHR',--- 'Vulkan.Core10.DeviceInitialization.ApplicationInfo',--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',--- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout',--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2',--- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout',--- 'Vulkan.CStruct.Extends.BaseInStructure',--- 'Vulkan.CStruct.Extends.BaseOutStructure',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.BindAccelerationStructureMemoryInfoKHR',--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindBufferMemoryDeviceGroupInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',--- 'Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR',--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo',--- 'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo',--- 'Vulkan.Extensions.VK_KHR_copy_commands2.BlitImageInfo2KHR',--- 'Vulkan.Extensions.VK_KHR_copy_commands2.BufferCopy2KHR',--- 'Vulkan.Core10.Buffer.BufferCreateInfo',--- 'Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',--- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferDeviceAddressInfo',--- 'Vulkan.Extensions.VK_KHR_copy_commands2.BufferImageCopy2KHR',--- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.BufferMemoryRequirementsInfo2',--- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo',--- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',--- 'Vulkan.Extensions.VK_EXT_calibrated_timestamps.CalibratedTimestampInfoEXT',--- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.CheckpointDataNV',--- 'Vulkan.Core10.CommandBuffer.CommandBufferAllocateInfo',--- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo',--- 'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',--- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',--- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',--- 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo',--- 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',--- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',--- 'Vulkan.Extensions.VK_NV_cooperative_matrix.CooperativeMatrixPropertiesNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.CopyAccelerationStructureInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.CopyAccelerationStructureToMemoryInfoKHR',--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyBufferInfo2KHR',--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyBufferToImageInfo2KHR',--- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM',--- 'Vulkan.Core10.DescriptorSet.CopyDescriptorSet',--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyImageInfo2KHR',--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyImageToBufferInfo2KHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.CopyMemoryToAccelerationStructureInfoKHR',--- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.D3D12FenceSubmitInfoKHR',--- 'Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerMarkerInfoEXT',--- 'Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerObjectNameInfoEXT',--- 'Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerObjectTagInfoEXT',--- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportCallbackCreateInfoEXT',--- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsLabelEXT',--- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCallbackDataEXT',--- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCreateInfoEXT',--- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT',--- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectTagInfoEXT',--- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV',--- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV',--- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV',--- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR',--- 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo',--- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfoEXT',--- 'Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo',--- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetLayoutBindingFlagsCreateInfo',--- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.DescriptorSetLayoutSupport',--- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountAllocateInfo',--- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountLayoutSupport',--- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo',--- 'Vulkan.Core10.Device.DeviceCreateInfo',--- 'Vulkan.Extensions.VK_EXT_device_memory_report.DeviceDeviceMemoryReportCreateInfoEXT',--- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.DeviceDiagnosticsConfigCreateInfoNV',--- 'Vulkan.Extensions.VK_EXT_display_control.DeviceEventInfoEXT',--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupBindSparseInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupCommandBufferBeginInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo',--- 'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentCapabilitiesKHR',--- 'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentInfoKHR',--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupSubmitInfo',--- 'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupSwapchainCreateInfoKHR',--- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.DeviceMemoryOpaqueCaptureAddressInfo',--- 'Vulkan.Extensions.VK_AMD_memory_overallocation_behavior.DeviceMemoryOverallocationCreateInfoAMD',--- 'Vulkan.Extensions.VK_EXT_device_memory_report.DeviceMemoryReportCallbackDataEXT',--- 'Vulkan.Extensions.VK_EXT_private_data.DevicePrivateDataCreateInfoEXT',--- 'Vulkan.Core10.Device.DeviceQueueCreateInfo',--- 'Vulkan.Extensions.VK_EXT_global_priority.DeviceQueueGlobalPriorityCreateInfoEXT',--- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.DeviceQueueInfo2',--- 'Vulkan.Extensions.VK_EXT_directfb_surface.DirectFBSurfaceCreateInfoEXT',--- 'Vulkan.Extensions.VK_EXT_display_control.DisplayEventInfoEXT',--- 'Vulkan.Extensions.VK_KHR_display.DisplayModeCreateInfoKHR',--- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayModeProperties2KHR',--- 'Vulkan.Extensions.VK_AMD_display_native_hdr.DisplayNativeHdrSurfaceCapabilitiesAMD',--- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneCapabilities2KHR',--- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneInfo2KHR',--- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneProperties2KHR',--- 'Vulkan.Extensions.VK_EXT_display_control.DisplayPowerInfoEXT',--- 'Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR',--- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayProperties2KHR',--- 'Vulkan.Extensions.VK_KHR_display.DisplaySurfaceCreateInfoKHR',--- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesListEXT',--- 'Vulkan.Core10.Event.EventCreateInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence.ExportFenceCreateInfo',--- 'Vulkan.Extensions.VK_KHR_external_fence_win32.ExportFenceWin32HandleInfoKHR',--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo',--- 'Vulkan.Extensions.VK_NV_external_memory.ExportMemoryAllocateInfoNV',--- 'Vulkan.Extensions.VK_KHR_external_memory_win32.ExportMemoryWin32HandleInfoKHR',--- 'Vulkan.Extensions.VK_NV_external_memory_win32.ExportMemoryWin32HandleInfoNV',--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore.ExportSemaphoreCreateInfo',--- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.ExportSemaphoreWin32HandleInfoKHR',--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties',--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.ExternalFenceProperties',--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID',--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties',--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo',--- 'Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV',--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties',--- 'Vulkan.Core10.Fence.FenceCreateInfo',--- 'Vulkan.Extensions.VK_KHR_external_fence_fd.FenceGetFdInfoKHR',--- 'Vulkan.Extensions.VK_KHR_external_fence_win32.FenceGetWin32HandleInfoKHR',--- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2',--- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR',--- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo',--- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo',--- 'Vulkan.Core10.Pass.FramebufferCreateInfo',--- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.FramebufferMixedSamplesCombinationNV',--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsMemoryRequirementsInfoNV',--- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV',--- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV',--- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV',--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',--- 'Vulkan.Extensions.VK_EXT_hdr_metadata.HdrMetadataEXT',--- 'Vulkan.Extensions.VK_EXT_headless_surface.HeadlessSurfaceCreateInfoEXT',--- 'Vulkan.Extensions.VK_MVK_ios_surface.IOSSurfaceCreateInfoMVK',--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageBlit2KHR',--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageCopy2KHR',--- 'Vulkan.Core10.Image.ImageCreateInfo',--- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT',--- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierListCreateInfoEXT',--- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierPropertiesEXT',--- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2',--- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageMemoryRequirementsInfo2',--- 'Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface.ImagePipeSurfaceCreateInfoFUCHSIA',--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.ImagePlaneMemoryRequirementsInfo',--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageResolve2KHR',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageSparseMemoryRequirementsInfo2',--- 'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo',--- 'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR',--- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.ImageViewASTCDecodeModeEXT',--- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',--- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',--- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX',--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo',--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID',--- 'Vulkan.Extensions.VK_KHR_external_fence_fd.ImportFenceFdInfoKHR',--- 'Vulkan.Extensions.VK_KHR_external_fence_win32.ImportFenceWin32HandleInfoKHR',--- 'Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR',--- 'Vulkan.Extensions.VK_EXT_external_memory_host.ImportMemoryHostPointerInfoEXT',--- 'Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR',--- 'Vulkan.Extensions.VK_NV_external_memory_win32.ImportMemoryWin32HandleInfoNV',--- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.ImportSemaphoreFdInfoKHR',--- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.ImportSemaphoreWin32HandleInfoKHR',--- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutCreateInfoNV',--- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV',--- 'Vulkan.Extensions.VK_INTEL_performance_query.InitializePerformanceApiInfoINTEL',--- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo',--- 'Vulkan.Extensions.VK_MVK_macos_surface.MacOSSurfaceCreateInfoMVK',--- 'Vulkan.Core10.Memory.MappedMemoryRange',--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo',--- 'Vulkan.Core10.Memory.MemoryAllocateInfo',--- 'Vulkan.Core10.OtherTypes.MemoryBarrier',--- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements',--- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryFdPropertiesKHR',--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.MemoryGetAndroidHardwareBufferInfoANDROID',--- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',--- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR',--- 'Vulkan.Extensions.VK_EXT_external_memory_host.MemoryHostPointerPropertiesEXT',--- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.MemoryOpaqueCaptureAddressAllocateInfo',--- 'Vulkan.Extensions.VK_EXT_memory_priority.MemoryPriorityAllocateInfoEXT',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2',--- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryWin32HandlePropertiesKHR',--- 'Vulkan.Extensions.VK_EXT_metal_surface.MetalSurfaceCreateInfoEXT',--- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT',--- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceConfigurationAcquireInfoINTEL',--- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterDescriptionKHR',--- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterKHR',--- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceMarkerInfoINTEL',--- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceOverrideInfoINTEL',--- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceQuerySubmitInfoKHR',--- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceStreamMarkerInfoINTEL',--- 'Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage.PhysicalDevice16BitStorageFeatures',--- 'Vulkan.Extensions.VK_EXT_4444_formats.PhysicalDevice4444FormatsFeaturesEXT',--- 'Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage.PhysicalDevice8BitStorageFeatures',--- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.PhysicalDeviceASTCDecodeFeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedFeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT',--- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',--- 'Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',--- 'Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD',--- 'Vulkan.Extensions.VK_NV_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesNV',--- 'Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',--- 'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesNV',--- 'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixPropertiesNV',--- 'Vulkan.Extensions.VK_NV_corner_sampled_image.PhysicalDeviceCornerSampledImageFeaturesNV',--- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PhysicalDeviceCoverageReductionModeFeaturesNV',--- 'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorFeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorPropertiesEXT',--- 'Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing.PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',--- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT',--- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',--- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',--- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',--- 'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV',--- 'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsPropertiesNV',--- 'Vulkan.Extensions.VK_EXT_device_memory_report.PhysicalDeviceDeviceMemoryReportFeaturesEXT',--- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV',--- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT',--- 'Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties',--- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.PhysicalDeviceExternalFenceInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo',--- 'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.PhysicalDeviceExternalSemaphoreInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',--- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',--- 'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2FeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2PropertiesEXT',--- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapFeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT',--- 'Vulkan.Extensions.VK_NV_fragment_shader_barycentric.PhysicalDeviceFragmentShaderBarycentricFeaturesNV',--- 'Vulkan.Extensions.VK_EXT_fragment_shader_interlock.PhysicalDeviceFragmentShaderInterlockFeaturesEXT',--- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsFeaturesNV',--- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsPropertiesNV',--- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateFeaturesKHR',--- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateKHR',--- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRatePropertiesKHR',--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties',--- 'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures',--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',--- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',--- 'Vulkan.Extensions.VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_filter_cubic.PhysicalDeviceImageViewImageFormatInfoEXT',--- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',--- 'Vulkan.Extensions.VK_EXT_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT',--- 'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationPropertiesEXT',--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',--- 'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',--- 'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceMemoryProperties2',--- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',--- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV',--- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewFeatures',--- 'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',--- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties',--- 'Vulkan.Extensions.VK_EXT_pci_bus_info.PhysicalDevicePCIBusInfoPropertiesEXT',--- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',--- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR',--- 'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeaturesEXT',--- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',--- 'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR',--- 'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetPropertiesKHR',--- 'Vulkan.Extensions.VK_EXT_private_data.PhysicalDevicePrivateDataFeaturesEXT',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',--- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',--- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',--- 'Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingFeaturesKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR',--- 'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV',--- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',--- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2FeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT',--- 'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',--- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties',--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures',--- 'Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout.PhysicalDeviceScalarBlockLayoutFeatures',--- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.PhysicalDeviceSeparateDepthStencilLayoutsFeatures',--- 'Vulkan.Extensions.VK_EXT_shader_atomic_float.PhysicalDeviceShaderAtomicFloatFeaturesEXT',--- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64.PhysicalDeviceShaderAtomicInt64Features',--- 'Vulkan.Extensions.VK_KHR_shader_clock.PhysicalDeviceShaderClockFeaturesKHR',--- 'Vulkan.Extensions.VK_AMD_shader_core_properties2.PhysicalDeviceShaderCoreProperties2AMD',--- 'Vulkan.Extensions.VK_AMD_shader_core_properties.PhysicalDeviceShaderCorePropertiesAMD',--- 'Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT',--- 'Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters.PhysicalDeviceShaderDrawParametersFeatures',--- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8Features',--- 'Vulkan.Extensions.VK_EXT_shader_image_atomic_int64.PhysicalDeviceShaderImageAtomicInt64FeaturesEXT',--- 'Vulkan.Extensions.VK_NV_shader_image_footprint.PhysicalDeviceShaderImageFootprintFeaturesNV',--- 'Vulkan.Extensions.VK_INTEL_shader_integer_functions2.PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL',--- 'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsFeaturesNV',--- 'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsPropertiesNV',--- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types.PhysicalDeviceShaderSubgroupExtendedTypesFeatures',--- 'Vulkan.Extensions.VK_KHR_shader_terminate_invocation.PhysicalDeviceShaderTerminateInvocationFeaturesKHR',--- 'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImageFeaturesNV',--- 'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImagePropertiesNV',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',--- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties',--- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlPropertiesEXT',--- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR',--- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',--- 'Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT',--- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreFeatures',--- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreProperties',--- 'Vulkan.Extensions.VK_EXT_tooling_info.PhysicalDeviceToolPropertiesEXT',--- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',--- 'Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout.PhysicalDeviceUniformBufferStandardLayoutFeatures',--- 'Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers.PhysicalDeviceVariablePointersFeatures',--- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesEXT',--- 'Vulkan.Core12.PhysicalDeviceVulkan11Features',--- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',--- 'Vulkan.Core12.PhysicalDeviceVulkan12Features',--- 'Vulkan.Core12.PhysicalDeviceVulkan12Properties',--- 'Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeatures',--- 'Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',--- 'Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo',--- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT',--- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo',--- 'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',--- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',--- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV',--- 'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',--- 'Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT',--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo',--- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT',--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo',--- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInfoKHR',--- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInternalRepresentationKHR',--- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutablePropertiesKHR',--- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableStatisticKHR',--- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV',--- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR',--- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineInfoKHR',--- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo',--- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo',--- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR',--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo',--- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT',--- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',--- 'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT',--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo',--- 'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD',--- 'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT',--- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV',--- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT',--- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',--- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT',--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PipelineTessellationDomainOriginStateCreateInfo',--- 'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo',--- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoEXT',--- 'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo',--- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportCoarseSampleOrderStateCreateInfoNV',--- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV',--- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV',--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo',--- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV',--- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV',--- 'Vulkan.Extensions.VK_GGP_frame_token.PresentFrameTokenGGP',--- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR',--- 'Vulkan.Extensions.VK_KHR_incremental_present.PresentRegionsKHR',--- 'Vulkan.Extensions.VK_GOOGLE_display_timing.PresentTimesInfoGOOGLE',--- 'Vulkan.Extensions.VK_EXT_private_data.PrivateDataSlotCreateInfoEXT',--- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.ProtectedSubmitInfo',--- 'Vulkan.Core10.Query.QueryPoolCreateInfo',--- 'Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR',--- 'Vulkan.Extensions.VK_INTEL_performance_query.QueryPoolPerformanceQueryCreateInfoINTEL',--- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.QueueFamilyCheckpointPropertiesNV',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR',--- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineInterfaceCreateInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingShaderGroupCreateInfoKHR',--- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupCreateInfoNV',--- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo',--- 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',--- 'Vulkan.Core10.Pass.RenderPassCreateInfo',--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2',--- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT',--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.RenderPassInputAttachmentAspectCreateInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo',--- 'Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT',--- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ResolveImageInfo2KHR',--- 'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT',--- 'Vulkan.Core10.Sampler.SamplerCreateInfo',--- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT',--- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionImageFormatProperties',--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo',--- 'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo',--- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.SemaphoreGetFdInfoKHR',--- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.SemaphoreGetWin32HandleInfoKHR',--- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreSignalInfo',--- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo',--- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo',--- 'Vulkan.Core10.Shader.ShaderModuleCreateInfo',--- 'Vulkan.Extensions.VK_EXT_validation_cache.ShaderModuleValidationCacheCreateInfoEXT',--- 'Vulkan.Extensions.VK_KHR_shared_presentable_image.SharedPresentSurfaceCapabilitiesKHR',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.SparseImageFormatProperties2',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.SparseImageMemoryRequirements2',--- 'Vulkan.Extensions.VK_GGP_stream_descriptor_surface.StreamDescriptorSurfaceCreateInfoGGP',--- 'Vulkan.Core10.Queue.SubmitInfo',--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassBeginInfo',--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2',--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2',--- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve',--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassEndInfo',--- 'Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCapabilities2EXT',--- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR',--- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceCapabilitiesFullScreenExclusiveEXT',--- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceFormat2KHR',--- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveInfoEXT',--- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT',--- 'Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR',--- 'Vulkan.Extensions.VK_EXT_display_control.SwapchainCounterCreateInfoEXT',--- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',--- 'Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD',--- 'Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.TextureLODGatherFormatPropertiesAMD',--- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo',--- 'Vulkan.Extensions.VK_EXT_validation_cache.ValidationCacheCreateInfoEXT',--- 'Vulkan.Extensions.VK_EXT_validation_features.ValidationFeaturesEXT',--- 'Vulkan.Extensions.VK_EXT_validation_flags.ValidationFlagsEXT',--- 'Vulkan.Extensions.VK_NN_vi_surface.ViSurfaceCreateInfoNN',--- 'Vulkan.Extensions.VK_KHR_wayland_surface.WaylandSurfaceCreateInfoKHR',--- 'Vulkan.Extensions.VK_KHR_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoKHR',--- 'Vulkan.Extensions.VK_NV_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoNV',--- 'Vulkan.Extensions.VK_KHR_win32_surface.Win32SurfaceCreateInfoKHR',--- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.WriteDescriptorSetAccelerationStructureKHR',--- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT',--- 'Vulkan.Extensions.VK_KHR_xcb_surface.XcbSurfaceCreateInfoKHR',--- 'Vulkan.Extensions.VK_KHR_xlib_surface.XlibSurfaceCreateInfoKHR'-newtype StructureType = StructureType Int32-  deriving newtype (Eq, Ord, Storable, Zero)---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_APPLICATION_INFO"-pattern STRUCTURE_TYPE_APPLICATION_INFO = StructureType 0--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"-pattern STRUCTURE_TYPE_INSTANCE_CREATE_INFO = StructureType 1--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"-pattern STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = StructureType 2--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"-pattern STRUCTURE_TYPE_DEVICE_CREATE_INFO = StructureType 3--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBMIT_INFO"-pattern STRUCTURE_TYPE_SUBMIT_INFO = StructureType 4--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"-pattern STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = StructureType 5--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"-pattern STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = StructureType 6--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"-pattern STRUCTURE_TYPE_BIND_SPARSE_INFO = StructureType 7--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"-pattern STRUCTURE_TYPE_FENCE_CREATE_INFO = StructureType 8--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"-pattern STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = StructureType 9--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"-pattern STRUCTURE_TYPE_EVENT_CREATE_INFO = StructureType 10--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"-pattern STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = StructureType 11--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"-pattern STRUCTURE_TYPE_BUFFER_CREATE_INFO = StructureType 12--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"-pattern STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = StructureType 13--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"-pattern STRUCTURE_TYPE_IMAGE_CREATE_INFO = StructureType 14--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"-pattern STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = StructureType 15--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"-pattern STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = StructureType 16--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"-pattern STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = StructureType 17--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"-pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = StructureType 18--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"-pattern STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = StructureType 19--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"-pattern STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = StructureType 20--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"-pattern STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = StructureType 21--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"-pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = StructureType 22--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"-pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = StructureType 23--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"-pattern STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = StructureType 24--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"-pattern STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = StructureType 25--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"-pattern STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = StructureType 26--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"-pattern STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = StructureType 27--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"-pattern STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = StructureType 28--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"-pattern STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = StructureType 29--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"-pattern STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = StructureType 30--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"-pattern STRUCTURE_TYPE_SAMPLER_CREATE_INFO = StructureType 31--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"-pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = StructureType 32--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"-pattern STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = StructureType 33--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"-pattern STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = StructureType 34--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"-pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = StructureType 35--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"-pattern STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = StructureType 36--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"-pattern STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = StructureType 37--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"-pattern STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = StructureType 38--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"-pattern STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = StructureType 39--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"-pattern STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = StructureType 40--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"-pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = StructureType 41--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"-pattern STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = StructureType 42--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"-pattern STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = StructureType 43--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"-pattern STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = StructureType 44--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"-pattern STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = StructureType 45--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_BARRIER"-pattern STRUCTURE_TYPE_MEMORY_BARRIER = StructureType 46--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"-pattern STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = StructureType 47--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"-pattern STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = StructureType 48--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = StructureType 1000346000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = StructureType 1000340000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR"-pattern STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = StructureType 1000337010--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR"-pattern STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = StructureType 1000337009--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR"-pattern STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = StructureType 1000337008--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR"-pattern STRUCTURE_TYPE_IMAGE_COPY_2_KHR = StructureType 1000337007--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR"-pattern STRUCTURE_TYPE_BUFFER_COPY_2_KHR = StructureType 1000337006--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR"-pattern STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = StructureType 1000337005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR"-pattern STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = StructureType 1000337004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR"-pattern STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = StructureType 1000337003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR"-pattern STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = StructureType 1000337002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR"-pattern STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = StructureType 1000337001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR"-pattern STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = StructureType 1000337000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = StructureType 1000335000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM"-pattern STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = StructureType 1000333000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = StructureType 1000332001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = StructureType 1000332000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = StructureType 1000326002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = StructureType 1000326001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = StructureType 1000326000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = StructureType 1000300001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = StructureType 1000300000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = StructureType 1000297000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = StructureType 1000295002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = StructureType 1000295001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = StructureType 1000295000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = StructureType 1000290000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = StructureType 1000287002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = StructureType 1000287001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = StructureType 1000287000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = StructureType 1000286001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = StructureType 1000286000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT"-pattern STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = StructureType 1000284002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = StructureType 1000284001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = StructureType 1000284000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"-pattern STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = StructureType 1000282001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"-pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = StructureType 1000282000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = StructureType 1000281001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = StructureType 1000281000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = StructureType 1000277007--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"-pattern STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = StructureType 1000277006--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV"-pattern STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = StructureType 1000277005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = StructureType 1000277004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV"-pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = StructureType 1000277003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = StructureType 1000277002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = StructureType 1000277001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = StructureType 1000277000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = StructureType 1000276000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"-pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = StructureType 1000269005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR"-pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = StructureType 1000269004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR"-pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = StructureType 1000269003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR"-pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = StructureType 1000269002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR"-pattern STRUCTURE_TYPE_PIPELINE_INFO_KHR = StructureType 1000269001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = StructureType 1000269000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR"-pattern STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = StructureType 1000268000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = StructureType 1000267000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = StructureType 1000265000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = StructureType 1000260000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = StructureType 1000259002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = StructureType 1000259001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = StructureType 1000259000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = StructureType 1000256000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"-pattern STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = StructureType 1000255001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"-pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = StructureType 1000255002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"-pattern STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = StructureType 1000255000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = StructureType 1000252000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = StructureType 1000251000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"-pattern STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = StructureType 1000250002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = StructureType 1000250001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = StructureType 1000250000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = StructureType 1000249002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV"-pattern STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = StructureType 1000249001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = StructureType 1000249000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT"-pattern STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = StructureType 1000247000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = StructureType 1000245000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = StructureType 1000244002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = StructureType 1000244000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = StructureType 1000240000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR"-pattern STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = StructureType 1000239000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT"-pattern STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = StructureType 1000238001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = StructureType 1000238000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = StructureType 1000237000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = StructureType 1000234000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = StructureType 1000229000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = StructureType 1000227000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = StructureType 1000226004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = StructureType 1000226003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = StructureType 1000226002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = StructureType 1000226001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"-pattern STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = StructureType 1000226000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = StructureType 1000225002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = StructureType 1000225001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = StructureType 1000225000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = StructureType 1000218002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = StructureType 1000218001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = StructureType 1000218000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = StructureType 1000217000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = StructureType 1000215000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA"-pattern STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = StructureType 1000214000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD"-pattern STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = StructureType 1000213001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD"-pattern STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = StructureType 1000213000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = StructureType 1000212000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL"-pattern STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = StructureType 1000210005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL"-pattern STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = StructureType 1000210004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL"-pattern STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = StructureType 1000210003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL"-pattern STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = StructureType 1000210002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL"-pattern STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = StructureType 1000210001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL"-pattern STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = StructureType 1000210000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = StructureType 1000209000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"-pattern STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = StructureType 1000206001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV"-pattern STRUCTURE_TYPE_CHECKPOINT_DATA_NV = StructureType 1000206000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = StructureType 1000205002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = StructureType 1000205000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = StructureType 1000204000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = StructureType 1000203000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = StructureType 1000202001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = StructureType 1000202000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = StructureType 1000201000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = StructureType 1000192000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP"-pattern STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = StructureType 1000191000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = StructureType 1000190002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = StructureType 1000190001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = StructureType 1000190000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD"-pattern STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = StructureType 1000189000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = StructureType 1000185000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT"-pattern STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = StructureType 1000184000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"-pattern STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = StructureType 1000183000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = StructureType 1000181000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = StructureType 1000178002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = StructureType 1000178001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"-pattern STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = StructureType 1000178000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = StructureType 1000174000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = StructureType 1000170001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = StructureType 1000170000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = StructureType 1000166001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = StructureType 1000166000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV"-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = StructureType 1000165012--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = StructureType 1000165011--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = StructureType 1000165009--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = StructureType 1000165008--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV"-pattern STRUCTURE_TYPE_GEOMETRY_AABB_NV = StructureType 1000165005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV"-pattern STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = StructureType 1000165004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_NV"-pattern STRUCTURE_TYPE_GEOMETRY_NV = StructureType 1000165003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = StructureType 1000165001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = StructureType 1000165000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = StructureType 1000164005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = StructureType 1000164002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = StructureType 1000164001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = StructureType 1000164000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = StructureType 1000163001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = StructureType 1000163000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = StructureType 1000160001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = StructureType 1000160000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = StructureType 1000158005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = StructureType 1000158004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = StructureType 1000158003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = StructureType 1000158002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"-pattern STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = StructureType 1000158000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = StructureType 1000154001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = StructureType 1000154000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = StructureType 1000152000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = StructureType 1000150018--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = StructureType 1000150017--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = StructureType 1000150016--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = StructureType 1000150015--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = StructureType 1000150014--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = StructureType 1000150013--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR"-pattern STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = StructureType 1000150012--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR"-pattern STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = StructureType 1000150011--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR"-pattern STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = StructureType 1000150010--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR"-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = StructureType 1000150009--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR"-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = StructureType 1000150008--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR"-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = StructureType 1000150006--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = StructureType 1000150005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = StructureType 1000150004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = StructureType 1000150003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR"-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = StructureType 1000150002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR"-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = StructureType 1000150001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR"-pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = StructureType 1000150000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR"-pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = StructureType 1000165007--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR"-pattern STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = StructureType 1000165006--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = StructureType 1000149000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = StructureType 1000148002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = StructureType 1000148001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = StructureType 1000148000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = StructureType 1000143004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = StructureType 1000143003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = StructureType 1000143002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"-pattern STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = StructureType 1000143001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"-pattern STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = StructureType 1000143000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = StructureType 1000138003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT"-pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = StructureType 1000138002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = StructureType 1000138001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = StructureType 1000138000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"-pattern STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = StructureType 1000129005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"-pattern STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = StructureType 1000129004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"-pattern STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = StructureType 1000129003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"-pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = StructureType 1000129002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"-pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = StructureType 1000129001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"-pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = StructureType 1000129000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = StructureType 1000128004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"-pattern STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = StructureType 1000128003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"-pattern STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = StructureType 1000128002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"-pattern STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = StructureType 1000128001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"-pattern STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = StructureType 1000128000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"-pattern STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = StructureType 1000123000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"-pattern STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = StructureType 1000122000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR"-pattern STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = StructureType 1000121004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR"-pattern STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = StructureType 1000121003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR"-pattern STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = StructureType 1000121002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR"-pattern STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = StructureType 1000121001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR"-pattern STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = StructureType 1000121000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"-pattern STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = StructureType 1000119002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"-pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = StructureType 1000119001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = StructureType 1000119000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR"-pattern STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = StructureType 1000116006--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR"-pattern STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = StructureType 1000116005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR"-pattern STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = StructureType 1000116004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR"-pattern STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = StructureType 1000116003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = StructureType 1000116002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = StructureType 1000116001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = StructureType 1000116000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"-pattern STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = StructureType 1000115001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"-pattern STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = StructureType 1000115000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"-pattern STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = StructureType 1000114002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"-pattern STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = StructureType 1000114001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"-pattern STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = StructureType 1000114000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"-pattern STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = StructureType 1000111000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HDR_METADATA_EXT"-pattern STRUCTURE_TYPE_HDR_METADATA_EXT = StructureType 1000105000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = StructureType 1000102001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = StructureType 1000102000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = StructureType 1000101001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = StructureType 1000101000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = StructureType 1000099001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = StructureType 1000099000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = StructureType 1000098000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = StructureType 1000097000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"-pattern STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = StructureType 1000092000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = StructureType 1000091003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"-pattern STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = StructureType 1000091002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"-pattern STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = StructureType 1000091001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"-pattern STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = StructureType 1000091000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"-pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = StructureType 1000090000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = StructureType 1000087000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"-pattern STRUCTURE_TYPE_PRESENT_REGIONS_KHR = StructureType 1000084000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"-pattern STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = StructureType 1000081002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = StructureType 1000081001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"-pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = StructureType 1000081000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = StructureType 1000080000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"-pattern STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = StructureType 1000079001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"-pattern STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = StructureType 1000079000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"-pattern STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = StructureType 1000078003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"-pattern STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = StructureType 1000078002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"-pattern STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = StructureType 1000078001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"-pattern STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = StructureType 1000078000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"-pattern STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = StructureType 1000075000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"-pattern STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = StructureType 1000074002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"-pattern STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = StructureType 1000074001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"-pattern STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = StructureType 1000074000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"-pattern STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = StructureType 1000073003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"-pattern STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = StructureType 1000073002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"-pattern STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = StructureType 1000073001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"-pattern STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = StructureType 1000073000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = StructureType 1000067001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT"-pattern STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = StructureType 1000067000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = StructureType 1000066000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"-pattern STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = StructureType 1000062000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"-pattern STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = StructureType 1000061000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = StructureType 1000060012--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"-pattern STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = StructureType 1000060011--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"-pattern STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = StructureType 1000060010--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"-pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = StructureType 1000060009--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = StructureType 1000060008--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"-pattern STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = StructureType 1000060007--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"-pattern STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = StructureType 1000058000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"-pattern STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = StructureType 1000057001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"-pattern STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = StructureType 1000057000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"-pattern STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = StructureType 1000056001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = StructureType 1000056000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = StructureType 1000050000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"-pattern STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = StructureType 1000049000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"-pattern STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = StructureType 1000041000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX"-pattern STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = StructureType 1000030001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX"-pattern STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = StructureType 1000030000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = StructureType 1000028002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = StructureType 1000028001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = StructureType 1000028000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"-pattern STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = StructureType 1000026002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = StructureType 1000026001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"-pattern STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = StructureType 1000026000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"-pattern STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = StructureType 1000022002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"-pattern STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = StructureType 1000022001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"-pattern STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = StructureType 1000022000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"-pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = StructureType 1000018000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"-pattern STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = StructureType 1000011000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = StructureType 1000009000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = StructureType 1000008000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = StructureType 1000006000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = StructureType 1000005000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = StructureType 1000004000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"-pattern STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = StructureType 1000003000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = StructureType 1000002001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = StructureType 1000002000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"-pattern STRUCTURE_TYPE_PRESENT_INFO_KHR = StructureType 1000001001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"-pattern STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = StructureType 1000001000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO"-pattern STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = StructureType 1000257004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO"-pattern STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = StructureType 1000257003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"-pattern STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = StructureType 1000257002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"-pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = StructureType 1000244001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = StructureType 1000257000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO"-pattern STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = StructureType 1000207005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO"-pattern STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = StructureType 1000207004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO"-pattern STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = StructureType 1000207003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO"-pattern STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = StructureType 1000207002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = StructureType 1000207001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = StructureType 1000207000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = StructureType 1000261000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"-pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = StructureType 1000241002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"-pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = StructureType 1000241001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = StructureType 1000241000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = StructureType 1000175000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = StructureType 1000253000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO"-pattern STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = StructureType 1000108003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"-pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = StructureType 1000108002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"-pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = StructureType 1000108001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = StructureType 1000108000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = StructureType 1000211000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO"-pattern STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = StructureType 1000130001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = StructureType 1000130000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO"-pattern STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = StructureType 1000246000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = StructureType 1000221000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"-pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = StructureType 1000199001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = StructureType 1000199000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"-pattern STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = StructureType 1000161004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"-pattern STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = StructureType 1000161003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = StructureType 1000161002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = StructureType 1000161001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"-pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = StructureType 1000161000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = StructureType 1000197000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = StructureType 1000082000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = StructureType 1000180000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = StructureType 1000196000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = StructureType 1000177000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_END_INFO"-pattern STRUCTURE_TYPE_SUBPASS_END_INFO = StructureType 1000109006--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO"-pattern STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = StructureType 1000109005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2"-pattern STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = StructureType 1000109004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2"-pattern STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = StructureType 1000109003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2"-pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = StructureType 1000109002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2"-pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = StructureType 1000109001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2"-pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = StructureType 1000109000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO"-pattern STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = StructureType 1000147000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = StructureType 52--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = StructureType 51--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = StructureType 50--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = StructureType 49--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = StructureType 1000063000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"-pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = StructureType 1000168001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = StructureType 1000168000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"-pattern STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = StructureType 1000076001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = StructureType 1000076000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"-pattern STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = StructureType 1000077000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"-pattern STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = StructureType 1000113000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"-pattern STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = StructureType 1000112001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = StructureType 1000112000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"-pattern STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = StructureType 1000072002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"-pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = StructureType 1000072001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"-pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = StructureType 1000072000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = StructureType 1000071004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"-pattern STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = StructureType 1000071003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = StructureType 1000071002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"-pattern STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = StructureType 1000071001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = StructureType 1000071000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"-pattern STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = StructureType 1000085000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"-pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = StructureType 1000156005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = StructureType 1000156004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"-pattern STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = StructureType 1000156003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"-pattern STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = StructureType 1000156002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"-pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = StructureType 1000156001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"-pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = StructureType 1000156000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"-pattern STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = StructureType 1000145003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = StructureType 1000145002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = StructureType 1000145001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"-pattern STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = StructureType 1000145000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = StructureType 1000120000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = StructureType 1000053002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = StructureType 1000053001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"-pattern STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = StructureType 1000053000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"-pattern STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = StructureType 1000117003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"-pattern STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = StructureType 1000117002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"-pattern STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = StructureType 1000117001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = StructureType 1000117000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = StructureType 1000059008--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"-pattern STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = StructureType 1000059007--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = StructureType 1000059006--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"-pattern STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = StructureType 1000059005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = StructureType 1000059004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"-pattern STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = StructureType 1000059003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"-pattern STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = StructureType 1000059002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = StructureType 1000059001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = StructureType 1000059000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"-pattern STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = StructureType 1000146004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"-pattern STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = StructureType 1000146003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"-pattern STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = StructureType 1000146002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"-pattern STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = StructureType 1000146001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"-pattern STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = StructureType 1000146000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"-pattern STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = StructureType 1000070001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = StructureType 1000070000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"-pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = StructureType 1000060014--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"-pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = StructureType 1000060013--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"-pattern STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = StructureType 1000060006--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"-pattern STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = StructureType 1000060005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"-pattern STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = StructureType 1000060004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"-pattern STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = StructureType 1000060003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"-pattern STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = StructureType 1000060000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"-pattern STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = StructureType 1000127001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"-pattern STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = StructureType 1000127000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = StructureType 1000083000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"-pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = StructureType 1000157001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"-pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = StructureType 1000157000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = StructureType 1000094000-{-# complete STRUCTURE_TYPE_APPLICATION_INFO,-             STRUCTURE_TYPE_INSTANCE_CREATE_INFO,-             STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,-             STRUCTURE_TYPE_DEVICE_CREATE_INFO,-             STRUCTURE_TYPE_SUBMIT_INFO,-             STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,-             STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,-             STRUCTURE_TYPE_BIND_SPARSE_INFO,-             STRUCTURE_TYPE_FENCE_CREATE_INFO,-             STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,-             STRUCTURE_TYPE_EVENT_CREATE_INFO,-             STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,-             STRUCTURE_TYPE_BUFFER_CREATE_INFO,-             STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,-             STRUCTURE_TYPE_IMAGE_CREATE_INFO,-             STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,-             STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,-             STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,-             STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,-             STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,-             STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,-             STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,-             STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,-             STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,-             STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,-             STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,-             STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,-             STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,-             STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,-             STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,-             STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,-             STRUCTURE_TYPE_SAMPLER_CREATE_INFO,-             STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,-             STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,-             STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,-             STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,-             STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,-             STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,-             STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,-             STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,-             STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,-             STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,-             STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,-             STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,-             STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,-             STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,-             STRUCTURE_TYPE_MEMORY_BARRIER,-             STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,-             STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,-             STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT,-             STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR,-             STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR,-             STRUCTURE_TYPE_IMAGE_BLIT_2_KHR,-             STRUCTURE_TYPE_IMAGE_COPY_2_KHR,-             STRUCTURE_TYPE_BUFFER_COPY_2_KHR,-             STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR,-             STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR,-             STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR,-             STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR,-             STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR,-             STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT,-             STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT,-             STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV,-             STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT,-             STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT,-             STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT,-             STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT,-             STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT,-             STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT,-             STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT,-             STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM,-             STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV,-             STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV,-             STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV,-             STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV,-             STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV,-             STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV,-             STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT,-             STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR,-             STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR,-             STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR,-             STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR,-             STRUCTURE_TYPE_PIPELINE_INFO_KHR,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR,-             STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT,-             STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT,-             STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT,-             STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT,-             STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT,-             STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT,-             STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV,-             STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV,-             STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV,-             STRUCTURE_TYPE_VALIDATION_FEATURES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT,-             STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV,-             STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR,-             STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR,-             STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR,-             STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT,-             STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT,-             STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT,-             STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR,-             STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA,-             STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD,-             STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT,-             STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL,-             STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL,-             STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL,-             STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL,-             STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL,-             STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL,-             STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV,-             STRUCTURE_TYPE_CHECKPOINT_DATA_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV,-             STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV,-             STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT,-             STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,-             STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,-             STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT,-             STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,-             STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT,-             STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT,-             STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT,-             STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,-             STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV,-             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV,-             STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,-             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV,-             STRUCTURE_TYPE_GEOMETRY_AABB_NV,-             STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV,-             STRUCTURE_TYPE_GEOMETRY_NV,-             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV,-             STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV,-             STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV,-             STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR,-             STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,-             STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT,-             STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,-             STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,-             STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,-             STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV,-             STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,-             STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR,-             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR,-             STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR,-             STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR,-             STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR,-             STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR,-             STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR,-             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR,-             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR,-             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR,-             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR,-             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR,-             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR,-             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR,-             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR,-             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR,-             STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,-             STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR,-             STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,-             STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,-             STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,-             STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,-             STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,-             STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT,-             STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT,-             STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT,-             STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID,-             STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,-             STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,-             STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID,-             STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID,-             STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID,-             STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,-             STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,-             STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT,-             STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT,-             STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT,-             STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK,-             STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,-             STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR,-             STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR,-             STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR,-             STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR,-             STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR,-             STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,-             STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,-             STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR,-             STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR,-             STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR,-             STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR,-             STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR,-             STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR,-             STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,-             STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR,-             STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,-             STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,-             STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,-             STRUCTURE_TYPE_HDR_METADATA_EXT,-             STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT,-             STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,-             STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,-             STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,-             STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,-             STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,-             STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,-             STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,-             STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,-             STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,-             STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,-             STRUCTURE_TYPE_PRESENT_REGIONS_KHR,-             STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,-             STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,-             STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR,-             STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,-             STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,-             STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR,-             STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,-             STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,-             STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,-             STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,-             STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR,-             STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR,-             STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR,-             STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR,-             STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,-             STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT,-             STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT,-             STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,-             STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,-             STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,-             STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR,-             STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR,-             STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,-             STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR,-             STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,-             STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,-             STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,-             STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,-             STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,-             STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,-             STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP,-             STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,-             STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX,-             STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX,-             STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT,-             STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,-             STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,-             STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,-             STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,-             STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,-             STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,-             STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,-             STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,-             STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,-             STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,-             STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,-             STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,-             STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,-             STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,-             STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,-             STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,-             STRUCTURE_TYPE_PRESENT_INFO_KHR,-             STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,-             STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,-             STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,-             STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,-             STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,-             STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,-             STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,-             STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,-             STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,-             STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,-             STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,-             STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,-             STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,-             STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,-             STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,-             STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,-             STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,-             STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,-             STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,-             STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,-             STRUCTURE_TYPE_SUBPASS_END_INFO,-             STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,-             STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,-             STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,-             STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,-             STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,-             STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,-             STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,-             STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,-             STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,-             STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,-             STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,-             STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,-             STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,-             STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,-             STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,-             STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,-             STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,-             STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,-             STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,-             STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,-             STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,-             STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,-             STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,-             STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,-             STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,-             STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,-             STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,-             STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,-             STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,-             STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,-             STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,-             STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,-             STRUCTURE_TYPE_FORMAT_PROPERTIES_2,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,-             STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,-             STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,-             STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,-             STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,-             STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,-             STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,-             STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,-             STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,-             STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,-             STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,-             STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,-             STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,-             STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,-             STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,-             STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,-             STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,-             STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES :: StructureType #-}--instance Show StructureType where-  showsPrec p = \case-    STRUCTURE_TYPE_APPLICATION_INFO -> showString "STRUCTURE_TYPE_APPLICATION_INFO"-    STRUCTURE_TYPE_INSTANCE_CREATE_INFO -> showString "STRUCTURE_TYPE_INSTANCE_CREATE_INFO"-    STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO -> showString "STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"-    STRUCTURE_TYPE_DEVICE_CREATE_INFO -> showString "STRUCTURE_TYPE_DEVICE_CREATE_INFO"-    STRUCTURE_TYPE_SUBMIT_INFO -> showString "STRUCTURE_TYPE_SUBMIT_INFO"-    STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO -> showString "STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"-    STRUCTURE_TYPE_MAPPED_MEMORY_RANGE -> showString "STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"-    STRUCTURE_TYPE_BIND_SPARSE_INFO -> showString "STRUCTURE_TYPE_BIND_SPARSE_INFO"-    STRUCTURE_TYPE_FENCE_CREATE_INFO -> showString "STRUCTURE_TYPE_FENCE_CREATE_INFO"-    STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO -> showString "STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"-    STRUCTURE_TYPE_EVENT_CREATE_INFO -> showString "STRUCTURE_TYPE_EVENT_CREATE_INFO"-    STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO -> showString "STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"-    STRUCTURE_TYPE_BUFFER_CREATE_INFO -> showString "STRUCTURE_TYPE_BUFFER_CREATE_INFO"-    STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO -> showString "STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"-    STRUCTURE_TYPE_IMAGE_CREATE_INFO -> showString "STRUCTURE_TYPE_IMAGE_CREATE_INFO"-    STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO -> showString "STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"-    STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO -> showString "STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"-    STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"-    STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"-    STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"-    STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"-    STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"-    STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"-    STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"-    STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"-    STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"-    STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"-    STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"-    STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO -> showString "STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"-    STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO -> showString "STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"-    STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"-    STRUCTURE_TYPE_SAMPLER_CREATE_INFO -> showString "STRUCTURE_TYPE_SAMPLER_CREATE_INFO"-    STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO -> showString "STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"-    STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO -> showString "STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"-    STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO -> showString "STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"-    STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET -> showString "STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"-    STRUCTURE_TYPE_COPY_DESCRIPTOR_SET -> showString "STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"-    STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO -> showString "STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"-    STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO -> showString "STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"-    STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO -> showString "STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"-    STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO -> showString "STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"-    STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO -> showString "STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"-    STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO -> showString "STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"-    STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO -> showString "STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"-    STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER -> showString "STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"-    STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER -> showString "STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"-    STRUCTURE_TYPE_MEMORY_BARRIER -> showString "STRUCTURE_TYPE_MEMORY_BARRIER"-    STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO -> showString "STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"-    STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO -> showString "STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"-    STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT"-    STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR -> showString "STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR"-    STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR -> showString "STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR"-    STRUCTURE_TYPE_IMAGE_BLIT_2_KHR -> showString "STRUCTURE_TYPE_IMAGE_BLIT_2_KHR"-    STRUCTURE_TYPE_IMAGE_COPY_2_KHR -> showString "STRUCTURE_TYPE_IMAGE_COPY_2_KHR"-    STRUCTURE_TYPE_BUFFER_COPY_2_KHR -> showString "STRUCTURE_TYPE_BUFFER_COPY_2_KHR"-    STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR -> showString "STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR"-    STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR -> showString "STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR"-    STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR -> showString "STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR"-    STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR -> showString "STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR"-    STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR -> showString "STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR"-    STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR -> showString "STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT"-    STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM -> showString "STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT"-    STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV"-    STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT"-    STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT"-    STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT"-    STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"-    STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"-    STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT -> showString "STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT"-    STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT"-    STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM -> showString "STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"-    STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM -> showString "STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"-    STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV -> showString "STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"-    STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV -> showString "STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV"-    STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"-    STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV -> showString "STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV"-    STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV"-    STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"-    STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR -> showString "STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"-    STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR -> showString "STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR"-    STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR -> showString "STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR"-    STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR -> showString "STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR"-    STRUCTURE_TYPE_PIPELINE_INFO_KHR -> showString "STRUCTURE_TYPE_PIPELINE_INFO_KHR"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"-    STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR -> showString "STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT"-    STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT"-    STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT"-    STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT -> showString "STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"-    STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT -> showString "STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"-    STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT -> showString "STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"-    STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV -> showString "STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"-    STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"-    STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV -> showString "STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV"-    STRUCTURE_TYPE_VALIDATION_FEATURES_EXT -> showString "STRUCTURE_TYPE_VALIDATION_FEATURES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT"-    STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"-    STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR -> showString "STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR"-    STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT -> showString "STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR"-    STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR"-    STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR -> showString "STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT"-    STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT"-    STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT"-    STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR"-    STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA -> showString "STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA"-    STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD -> showString "STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD"-    STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD -> showString "STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"-    STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL -> showString "STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL"-    STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL -> showString "STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL"-    STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL -> showString "STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL"-    STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL -> showString "STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL"-    STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL -> showString "STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL"-    STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL -> showString "STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"-    STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV -> showString "STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"-    STRUCTURE_TYPE_CHECKPOINT_DATA_NV -> showString "STRUCTURE_TYPE_CHECKPOINT_DATA_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV"-    STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV"-    STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP -> showString "STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"-    STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"-    STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD -> showString "STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"-    STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT -> showString "STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT"-    STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD -> showString "STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"-    STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"-    STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT -> showString "STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"-    STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"-    STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT"-    STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"-    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV"-    STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"-    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"-    STRUCTURE_TYPE_GEOMETRY_AABB_NV -> showString "STRUCTURE_TYPE_GEOMETRY_AABB_NV"-    STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV -> showString "STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV"-    STRUCTURE_TYPE_GEOMETRY_NV -> showString "STRUCTURE_TYPE_GEOMETRY_NV"-    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV"-    STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV"-    STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV"-    STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR"-    STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"-    STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"-    STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"-    STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"-    STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"-    STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT -> showString "STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"-    STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"-    STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR"-    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR"-    STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"-    STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR"-    STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR -> showString "STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR"-    STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR -> showString "STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR"-    STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR -> showString "STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR"-    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR"-    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR"-    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR"-    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"-    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"-    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"-    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR"-    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR"-    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR"-    STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR -> showString "STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR"-    STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR -> showString "STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR"-    STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"-    STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"-    STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"-    STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"-    STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT -> showString "STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"-    STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT -> showString "STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"-    STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT"-    STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT -> showString "STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT"-    STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID -> showString "STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"-    STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID -> showString "STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"-    STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID -> showString "STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"-    STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID -> showString "STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"-    STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID -> showString "STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"-    STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID -> showString "STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"-    STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"-    STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT -> showString "STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"-    STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT -> showString "STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"-    STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT -> showString "STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"-    STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT -> showString "STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"-    STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK -> showString "STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"-    STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK -> showString "STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"-    STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR -> showString "STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR"-    STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR -> showString "STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR"-    STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR -> showString "STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR"-    STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR -> showString "STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR"-    STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR -> showString "STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR"-    STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR -> showString "STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"-    STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR -> showString "STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"-    STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR -> showString "STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR"-    STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR -> showString "STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR"-    STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR -> showString "STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR"-    STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR -> showString "STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR"-    STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"-    STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR -> showString "STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"-    STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR -> showString "STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"-    STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"-    STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"-    STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"-    STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR -> showString "STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"-    STRUCTURE_TYPE_HDR_METADATA_EXT -> showString "STRUCTURE_TYPE_HDR_METADATA_EXT"-    STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"-    STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"-    STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"-    STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"-    STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE -> showString "STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"-    STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"-    STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT -> showString "STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"-    STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT -> showString "STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"-    STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT -> showString "STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"-    STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT -> showString "STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"-    STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"-    STRUCTURE_TYPE_PRESENT_REGIONS_KHR -> showString "STRUCTURE_TYPE_PRESENT_REGIONS_KHR"-    STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT -> showString "STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"-    STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT -> showString "STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"-    STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR -> showString "STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"-    STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR -> showString "STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"-    STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"-    STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR -> showString "STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"-    STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"-    STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"-    STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR -> showString "STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"-    STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR -> showString "STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"-    STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR -> showString "STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"-    STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR -> showString "STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"-    STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"-    STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR -> showString "STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"-    STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"-    STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT"-    STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT -> showString "STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT"-    STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN -> showString "STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"-    STRUCTURE_TYPE_VALIDATION_FLAGS_EXT -> showString "STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"-    STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"-    STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR -> showString "STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"-    STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR -> showString "STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"-    STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR -> showString "STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"-    STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"-    STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR -> showString "STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"-    STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV -> showString "STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"-    STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV -> showString "STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"-    STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV -> showString "STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"-    STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV -> showString "STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"-    STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"-    STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP -> showString "STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"-    STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD -> showString "STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"-    STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX -> showString "STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX"-    STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX -> showString "STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX"-    STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"-    STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV -> showString "STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"-    STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"-    STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"-    STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT -> showString "STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"-    STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT -> showString "STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"-    STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT -> showString "STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"-    STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD -> showString "STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"-    STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"-    STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"-    STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"-    STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"-    STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"-    STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"-    STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR -> showString "STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"-    STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"-    STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"-    STRUCTURE_TYPE_PRESENT_INFO_KHR -> showString "STRUCTURE_TYPE_PRESENT_INFO_KHR"-    STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"-    STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO -> showString "STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO"-    STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO -> showString "STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO"-    STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO -> showString "STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"-    STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO -> showString "STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"-    STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO -> showString "STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO"-    STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO -> showString "STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO"-    STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO -> showString "STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO"-    STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO -> showString "STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"-    STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT -> showString "STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"-    STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT -> showString "STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"-    STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO -> showString "STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO"-    STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO -> showString "STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"-    STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO -> showString "STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"-    STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO -> showString "STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"-    STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO -> showString "STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"-    STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE -> showString "STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"-    STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT -> showString "STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"-    STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO -> showString "STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"-    STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO -> showString "STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"-    STRUCTURE_TYPE_SUBPASS_END_INFO -> showString "STRUCTURE_TYPE_SUBPASS_END_INFO"-    STRUCTURE_TYPE_SUBPASS_BEGIN_INFO -> showString "STRUCTURE_TYPE_SUBPASS_BEGIN_INFO"-    STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 -> showString "STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2"-    STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 -> showString "STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2"-    STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 -> showString "STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2"-    STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 -> showString "STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2"-    STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 -> showString "STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2"-    STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO -> showString "STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"-    STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT -> showString "STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"-    STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES -> showString "STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"-    STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO -> showString "STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"-    STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO -> showString "STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"-    STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES -> showString "STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"-    STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO -> showString "STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"-    STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO -> showString "STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"-    STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO -> showString "STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"-    STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES -> showString "STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"-    STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES -> showString "STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"-    STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO -> showString "STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"-    STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES -> showString "STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"-    STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO -> showString "STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"-    STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO -> showString "STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"-    STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO -> showString "STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"-    STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO -> showString "STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"-    STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 -> showString "STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"-    STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO -> showString "STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"-    STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO -> showString "STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"-    STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"-    STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO -> showString "STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"-    STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO -> showString "STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"-    STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 -> showString "STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"-    STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 -> showString "STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"-    STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 -> showString "STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"-    STRUCTURE_TYPE_FORMAT_PROPERTIES_2 -> showString "STRUCTURE_TYPE_FORMAT_PROPERTIES_2"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"-    STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 -> showString "STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"-    STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 -> showString "STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"-    STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 -> showString "STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"-    STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 -> showString "STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"-    STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 -> showString "STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"-    STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO -> showString "STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"-    STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO -> showString "STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"-    STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO -> showString "STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"-    STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO -> showString "STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"-    STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO -> showString "STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"-    STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO -> showString "STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"-    STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO -> showString "STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"-    STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO -> showString "STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"-    STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO -> showString "STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"-    STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS -> showString "STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"-    STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO -> showString "STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"-    STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO -> showString "STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"-    STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"-    StructureType x -> showParen (p >= 11) (showString "StructureType " . showsPrec 11 x)--instance Read StructureType where-  readPrec = parens (choose [("STRUCTURE_TYPE_APPLICATION_INFO", pure STRUCTURE_TYPE_APPLICATION_INFO)-                            , ("STRUCTURE_TYPE_INSTANCE_CREATE_INFO", pure STRUCTURE_TYPE_INSTANCE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO", pure STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_DEVICE_CREATE_INFO", pure STRUCTURE_TYPE_DEVICE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_SUBMIT_INFO", pure STRUCTURE_TYPE_SUBMIT_INFO)-                            , ("STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO", pure STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)-                            , ("STRUCTURE_TYPE_MAPPED_MEMORY_RANGE", pure STRUCTURE_TYPE_MAPPED_MEMORY_RANGE)-                            , ("STRUCTURE_TYPE_BIND_SPARSE_INFO", pure STRUCTURE_TYPE_BIND_SPARSE_INFO)-                            , ("STRUCTURE_TYPE_FENCE_CREATE_INFO", pure STRUCTURE_TYPE_FENCE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO", pure STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_EVENT_CREATE_INFO", pure STRUCTURE_TYPE_EVENT_CREATE_INFO)-                            , ("STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO", pure STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO)-                            , ("STRUCTURE_TYPE_BUFFER_CREATE_INFO", pure STRUCTURE_TYPE_BUFFER_CREATE_INFO)-                            , ("STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO", pure STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)-                            , ("STRUCTURE_TYPE_IMAGE_CREATE_INFO", pure STRUCTURE_TYPE_IMAGE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO", pure STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)-                            , ("STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO", pure STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO", pure STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO", pure STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO)-                            , ("STRUCTURE_TYPE_SAMPLER_CREATE_INFO", pure STRUCTURE_TYPE_SAMPLER_CREATE_INFO)-                            , ("STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO", pure STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO)-                            , ("STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO", pure STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)-                            , ("STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO", pure STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO)-                            , ("STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET", pure STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET)-                            , ("STRUCTURE_TYPE_COPY_DESCRIPTOR_SET", pure STRUCTURE_TYPE_COPY_DESCRIPTOR_SET)-                            , ("STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO", pure STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)-                            , ("STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO", pure STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO)-                            , ("STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO", pure STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)-                            , ("STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO", pure STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO)-                            , ("STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO", pure STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO)-                            , ("STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO", pure STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)-                            , ("STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO", pure STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO)-                            , ("STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER", pure STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER)-                            , ("STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER", pure STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER)-                            , ("STRUCTURE_TYPE_MEMORY_BARRIER", pure STRUCTURE_TYPE_MEMORY_BARRIER)-                            , ("STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO", pure STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO", pure STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR", pure STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR)-                            , ("STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR", pure STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR)-                            , ("STRUCTURE_TYPE_IMAGE_BLIT_2_KHR", pure STRUCTURE_TYPE_IMAGE_BLIT_2_KHR)-                            , ("STRUCTURE_TYPE_IMAGE_COPY_2_KHR", pure STRUCTURE_TYPE_IMAGE_COPY_2_KHR)-                            , ("STRUCTURE_TYPE_BUFFER_COPY_2_KHR", pure STRUCTURE_TYPE_BUFFER_COPY_2_KHR)-                            , ("STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR", pure STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR)-                            , ("STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR", pure STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR)-                            , ("STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR", pure STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR)-                            , ("STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR", pure STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR)-                            , ("STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR", pure STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR)-                            , ("STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR", pure STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM", pure STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV)-                            , ("STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV", pure STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT", pure STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR", pure STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT", pure STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT", pure STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT)-                            , ("STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT", pure STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM", pure STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM)-                            , ("STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM", pure STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV)-                            , ("STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV", pure STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV)-                            , ("STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV", pure STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV)-                            , ("STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV", pure STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV", pure STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV)-                            , ("STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV", pure STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV", pure STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR", pure STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR)-                            , ("STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR", pure STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR)-                            , ("STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR", pure STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR)-                            , ("STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR", pure STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR)-                            , ("STRUCTURE_TYPE_PIPELINE_INFO_KHR", pure STRUCTURE_TYPE_PIPELINE_INFO_KHR)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR)-                            , ("STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR", pure STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT", pure STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT)-                            , ("STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT", pure STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT)-                            , ("STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT", pure STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV", pure STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV)-                            , ("STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV)-                            , ("STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV", pure STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV)-                            , ("STRUCTURE_TYPE_VALIDATION_FEATURES_EXT", pure STRUCTURE_TYPE_VALIDATION_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT", pure STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV)-                            , ("STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR", pure STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR)-                            , ("STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT", pure STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR)-                            , ("STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR", pure STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT", pure STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR)-                            , ("STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA", pure STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA)-                            , ("STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD", pure STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD)-                            , ("STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD", pure STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL", pure STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL)-                            , ("STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL", pure STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL)-                            , ("STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL", pure STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL)-                            , ("STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL", pure STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL)-                            , ("STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL", pure STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL)-                            , ("STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL", pure STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL)-                            , ("STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV", pure STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV)-                            , ("STRUCTURE_TYPE_CHECKPOINT_DATA_NV", pure STRUCTURE_TYPE_CHECKPOINT_DATA_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV)-                            , ("STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV)-                            , ("STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP", pure STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD", pure STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD)-                            , ("STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT", pure STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT)-                            , ("STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD", pure STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT", pure STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT", pure STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT)-                            , ("STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT", pure STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT", pure STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT)-                            , ("STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV)-                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)-                            , ("STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV", pure STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)-                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)-                            , ("STRUCTURE_TYPE_GEOMETRY_AABB_NV", pure STRUCTURE_TYPE_GEOMETRY_AABB_NV)-                            , ("STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV", pure STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)-                            , ("STRUCTURE_TYPE_GEOMETRY_NV", pure STRUCTURE_TYPE_GEOMETRY_NV)-                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV", pure STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV)-                            , ("STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR)-                            , ("STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT", pure STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT", pure STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT", pure STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT)-                            , ("STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT", pure STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV)-                            , ("STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR", pure STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR)-                            , ("STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR", pure STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR)-                            , ("STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR", pure STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR)-                            , ("STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR", pure STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR)-                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR)-                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR)-                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR)-                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR)-                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR)-                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR)-                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR)-                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR)-                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR)-                            , ("STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR", pure STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR)-                            , ("STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR", pure STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR)-                            , ("STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT", pure STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT", pure STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT)-                            , ("STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT", pure STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT)-                            , ("STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT", pure STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT", pure STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID", pure STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID)-                            , ("STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID", pure STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID)-                            , ("STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID", pure STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID)-                            , ("STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID", pure STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID)-                            , ("STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID", pure STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID)-                            , ("STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID", pure STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID)-                            , ("STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT", pure STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT", pure STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT)-                            , ("STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT", pure STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT)-                            , ("STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT", pure STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT)-                            , ("STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT", pure STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT)-                            , ("STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK", pure STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK)-                            , ("STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK", pure STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK)-                            , ("STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR", pure STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR)-                            , ("STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR", pure STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR)-                            , ("STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR", pure STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR)-                            , ("STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR", pure STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR)-                            , ("STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR", pure STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR)-                            , ("STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR", pure STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR)-                            , ("STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR", pure STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR)-                            , ("STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR", pure STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR)-                            , ("STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR", pure STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR)-                            , ("STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR", pure STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR)-                            , ("STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR", pure STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR)-                            , ("STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR)-                            , ("STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR", pure STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR)-                            , ("STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR", pure STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR)-                            , ("STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR)-                            , ("STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR)-                            , ("STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR)-                            , ("STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR", pure STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR)-                            , ("STRUCTURE_TYPE_HDR_METADATA_EXT", pure STRUCTURE_TYPE_HDR_METADATA_EXT)-                            , ("STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX)-                            , ("STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE", pure STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE)-                            , ("STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT", pure STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT", pure STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT)-                            , ("STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT", pure STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT)-                            , ("STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT", pure STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT)-                            , ("STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT", pure STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT)-                            , ("STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_PRESENT_REGIONS_KHR", pure STRUCTURE_TYPE_PRESENT_REGIONS_KHR)-                            , ("STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT", pure STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT", pure STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR)-                            , ("STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR", pure STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR)-                            , ("STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR", pure STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR)-                            , ("STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR)-                            , ("STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR", pure STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR)-                            , ("STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR)-                            , ("STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR)-                            , ("STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR", pure STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR)-                            , ("STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR", pure STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR)-                            , ("STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR", pure STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR)-                            , ("STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR", pure STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR)-                            , ("STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR)-                            , ("STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR", pure STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR)-                            , ("STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR)-                            , ("STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT", pure STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN", pure STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN)-                            , ("STRUCTURE_TYPE_VALIDATION_FLAGS_EXT", pure STRUCTURE_TYPE_VALIDATION_FLAGS_EXT)-                            , ("STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR", pure STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR", pure STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR)-                            , ("STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR", pure STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR)-                            , ("STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR", pure STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR)-                            , ("STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR", pure STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR", pure STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR)-                            , ("STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV", pure STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV)-                            , ("STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV", pure STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV)-                            , ("STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV", pure STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV)-                            , ("STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV", pure STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV)-                            , ("STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV", pure STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV)-                            , ("STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP", pure STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP)-                            , ("STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD", pure STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD)-                            , ("STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX", pure STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX)-                            , ("STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX", pure STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX)-                            , ("STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT)-                            , ("STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV", pure STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV)-                            , ("STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV", pure STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV", pure STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT", pure STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT)-                            , ("STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT", pure STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT)-                            , ("STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT", pure STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT)-                            , ("STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD", pure STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD)-                            , ("STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT", pure STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT)-                            , ("STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR", pure STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR)-                            , ("STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_PRESENT_INFO_KHR", pure STRUCTURE_TYPE_PRESENT_INFO_KHR)-                            , ("STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR", pure STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)-                            , ("STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO", pure STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO)-                            , ("STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO", pure STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO)-                            , ("STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO", pure STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO)-                            , ("STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO", pure STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES)-                            , ("STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO", pure STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO)-                            , ("STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO", pure STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO)-                            , ("STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO", pure STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO)-                            , ("STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO", pure STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES)-                            , ("STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT", pure STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT)-                            , ("STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT", pure STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES)-                            , ("STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO", pure STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO)-                            , ("STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO", pure STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO)-                            , ("STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO", pure STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES)-                            , ("STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO", pure STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES)-                            , ("STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO", pure STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES)-                            , ("STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE", pure STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES)-                            , ("STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT", pure STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT)-                            , ("STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO", pure STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES)-                            , ("STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO", pure STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES)-                            , ("STRUCTURE_TYPE_SUBPASS_END_INFO", pure STRUCTURE_TYPE_SUBPASS_END_INFO)-                            , ("STRUCTURE_TYPE_SUBPASS_BEGIN_INFO", pure STRUCTURE_TYPE_SUBPASS_BEGIN_INFO)-                            , ("STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2", pure STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2)-                            , ("STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2", pure STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2)-                            , ("STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2", pure STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2)-                            , ("STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2", pure STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2)-                            , ("STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2", pure STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2)-                            , ("STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO", pure STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES)-                            , ("STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT", pure STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES)-                            , ("STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES", pure STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO)-                            , ("STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO", pure STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO", pure STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES", pure STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO)-                            , ("STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO", pure STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO)-                            , ("STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO", pure STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO", pure STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES)-                            , ("STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES", pure STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO)-                            , ("STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES", pure STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO)-                            , ("STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO", pure STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES", pure STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES)-                            , ("STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO", pure STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO)-                            , ("STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO", pure STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO)-                            , ("STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO", pure STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO)-                            , ("STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO", pure STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO)-                            , ("STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2", pure STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES)-                            , ("STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO", pure STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES)-                            , ("STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO", pure STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO", pure STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO", pure STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2)-                            , ("STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2", pure STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2)-                            , ("STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2", pure STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2)-                            , ("STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2", pure STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2)-                            , ("STRUCTURE_TYPE_FORMAT_PROPERTIES_2", pure STRUCTURE_TYPE_FORMAT_PROPERTIES_2)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2)-                            , ("STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2", pure STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2)-                            , ("STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2", pure STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2)-                            , ("STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2", pure STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2)-                            , ("STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2", pure STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2)-                            , ("STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2", pure STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2)-                            , ("STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO", pure STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES)-                            , ("STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO", pure STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO)-                            , ("STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO", pure STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO)-                            , ("STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO", pure STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO)-                            , ("STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO", pure STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO)-                            , ("STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO", pure STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO)-                            , ("STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO", pure STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO)-                            , ("STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO", pure STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO)-                            , ("STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO", pure STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO)-                            , ("STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS", pure STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES)-                            , ("STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO", pure STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO)-                            , ("STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO", pure STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO)-                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES)]-                     +++-                     prec 10 (do-                       expectP (Ident "StructureType")-                       v <- step readPrec-                       pure (StructureType v)))+-- No documentation found for Chapter "StructureType"+module Vulkan.Core10.Enums.StructureType  (StructureType( STRUCTURE_TYPE_APPLICATION_INFO+                                                        , STRUCTURE_TYPE_INSTANCE_CREATE_INFO+                                                        , STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO+                                                        , STRUCTURE_TYPE_DEVICE_CREATE_INFO+                                                        , STRUCTURE_TYPE_SUBMIT_INFO+                                                        , STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO+                                                        , STRUCTURE_TYPE_MAPPED_MEMORY_RANGE+                                                        , STRUCTURE_TYPE_BIND_SPARSE_INFO+                                                        , STRUCTURE_TYPE_FENCE_CREATE_INFO+                                                        , STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO+                                                        , STRUCTURE_TYPE_EVENT_CREATE_INFO+                                                        , STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO+                                                        , STRUCTURE_TYPE_BUFFER_CREATE_INFO+                                                        , STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO+                                                        , STRUCTURE_TYPE_IMAGE_CREATE_INFO+                                                        , STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO+                                                        , STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO+                                                        , STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO+                                                        , STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO+                                                        , STRUCTURE_TYPE_SAMPLER_CREATE_INFO+                                                        , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO+                                                        , STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO+                                                        , STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO+                                                        , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET+                                                        , STRUCTURE_TYPE_COPY_DESCRIPTOR_SET+                                                        , STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO+                                                        , STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO+                                                        , STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO+                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO+                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO+                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO+                                                        , STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO+                                                        , STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER+                                                        , STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER+                                                        , STRUCTURE_TYPE_MEMORY_BARRIER+                                                        , STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO+                                                        , STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO+                                                        , STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT+                                                        , STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR+                                                        , STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR+                                                        , STRUCTURE_TYPE_IMAGE_BLIT_2_KHR+                                                        , STRUCTURE_TYPE_IMAGE_COPY_2_KHR+                                                        , STRUCTURE_TYPE_BUFFER_COPY_2_KHR+                                                        , STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR+                                                        , STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR+                                                        , STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR+                                                        , STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR+                                                        , STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR+                                                        , STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT+                                                        , STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV+                                                        , STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT+                                                        , STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT+                                                        , STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT+                                                        , STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM+                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV+                                                        , STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV+                                                        , STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV+                                                        , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV+                                                        , STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR+                                                        , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR+                                                        , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR+                                                        , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR+                                                        , STRUCTURE_TYPE_PIPELINE_INFO_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT+                                                        , STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT+                                                        , STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT+                                                        , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT+                                                        , STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV+                                                        , STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV+                                                        , STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV+                                                        , STRUCTURE_TYPE_VALIDATION_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV+                                                        , STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR+                                                        , STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR+                                                        , STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT+                                                        , STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR+                                                        , STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA+                                                        , STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD+                                                        , STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL+                                                        , STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL+                                                        , STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL+                                                        , STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL+                                                        , STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL+                                                        , STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL+                                                        , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV+                                                        , STRUCTURE_TYPE_CHECKPOINT_DATA_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV+                                                        , STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV+                                                        , STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD+                                                        , STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT+                                                        , STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT+                                                        , STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT+                                                        , STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV+                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV+                                                        , STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV+                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV+                                                        , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV+                                                        , STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV+                                                        , STRUCTURE_TYPE_GEOMETRY_AABB_NV+                                                        , STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV+                                                        , STRUCTURE_TYPE_GEOMETRY_NV+                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV+                                                        , STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR+                                                        , STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT+                                                        , STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV+                                                        , STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR+                                                        , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR+                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR+                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR+                                                        , STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR+                                                        , STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR+                                                        , STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR+                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR+                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR+                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR+                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR+                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR+                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR+                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR+                                                        , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR+                                                        , STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT+                                                        , STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT+                                                        , STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT+                                                        , STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT+                                                        , STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID+                                                        , STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID+                                                        , STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID+                                                        , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID+                                                        , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID+                                                        , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID+                                                        , STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT+                                                        , STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT+                                                        , STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT+                                                        , STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT+                                                        , STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK+                                                        , STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK+                                                        , STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR+                                                        , STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR+                                                        , STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR+                                                        , STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR+                                                        , STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR+                                                        , STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR+                                                        , STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR+                                                        , STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR+                                                        , STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR+                                                        , STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR+                                                        , STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR+                                                        , STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR+                                                        , STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR+                                                        , STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR+                                                        , STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR+                                                        , STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR+                                                        , STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR+                                                        , STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR+                                                        , STRUCTURE_TYPE_HDR_METADATA_EXT+                                                        , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX+                                                        , STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE+                                                        , STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT+                                                        , STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT+                                                        , STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT+                                                        , STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT+                                                        , STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_PRESENT_REGIONS_KHR+                                                        , STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT+                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR+                                                        , STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR+                                                        , STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR+                                                        , STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR+                                                        , STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR+                                                        , STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR+                                                        , STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR+                                                        , STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR+                                                        , STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR+                                                        , STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR+                                                        , STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR+                                                        , STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR+                                                        , STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR+                                                        , STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR+                                                        , STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT+                                                        , STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT+                                                        , STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN+                                                        , STRUCTURE_TYPE_VALIDATION_FLAGS_EXT+                                                        , STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR+                                                        , STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR+                                                        , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR+                                                        , STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR+                                                        , STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV+                                                        , STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV+                                                        , STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV+                                                        , STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV+                                                        , STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV+                                                        , STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP+                                                        , STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD+                                                        , STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX+                                                        , STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX+                                                        , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT+                                                        , STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV+                                                        , STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV+                                                        , STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT+                                                        , STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT+                                                        , STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT+                                                        , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD+                                                        , STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT+                                                        , STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR+                                                        , STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_PRESENT_INFO_KHR+                                                        , STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR+                                                        , STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO+                                                        , STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO+                                                        , STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO+                                                        , STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES+                                                        , STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO+                                                        , STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO+                                                        , STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO+                                                        , STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES+                                                        , STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT+                                                        , STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES+                                                        , STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO+                                                        , STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO+                                                        , STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES+                                                        , STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES+                                                        , STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES+                                                        , STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES+                                                        , STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT+                                                        , STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES+                                                        , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES+                                                        , STRUCTURE_TYPE_SUBPASS_END_INFO+                                                        , STRUCTURE_TYPE_SUBPASS_BEGIN_INFO+                                                        , STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2+                                                        , STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2+                                                        , STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2+                                                        , STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2+                                                        , STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2+                                                        , STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES+                                                        , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES+                                                        , STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO+                                                        , STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO+                                                        , STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO+                                                        , STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO+                                                        , STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO+                                                        , STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO+                                                        , STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES+                                                        , STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO+                                                        , STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO+                                                        , STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO+                                                        , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES+                                                        , STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO+                                                        , STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO+                                                        , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO+                                                        , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO+                                                        , STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES+                                                        , STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES+                                                        , STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO+                                                        , STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO+                                                        , STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO+                                                        , STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2+                                                        , STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2+                                                        , STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2+                                                        , STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2+                                                        , STRUCTURE_TYPE_FORMAT_PROPERTIES_2+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2+                                                        , STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2+                                                        , STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2+                                                        , STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2+                                                        , STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2+                                                        , STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2+                                                        , STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES+                                                        , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO+                                                        , STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO+                                                        , STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO+                                                        , STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO+                                                        , STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO+                                                        , STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO+                                                        , STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO+                                                        , STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO+                                                        , STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES+                                                        , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO+                                                        , STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES+                                                        , ..+                                                        )) where++import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec)+import GHC.Show (showsPrec)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec))+import Vulkan.Zero (Zero)+-- | VkStructureType - Vulkan structure types (@sType@)+--+-- = Description+--+-- Each value corresponds to a particular structure with a @sType@ member+-- with a matching name. As a general rule, the name of each+-- 'StructureType' value is obtained by taking the name of the structure,+-- stripping the leading @Vk@, prefixing each capital letter with @_@,+-- converting the entire resulting string to upper case, and prefixing it+-- with @VK_STRUCTURE_TYPE_@. For example, structures of type+-- 'Vulkan.Core10.Image.ImageCreateInfo' correspond to a 'StructureType' of+-- 'STRUCTURE_TYPE_IMAGE_CREATE_INFO', and thus its @sType@ member /must/+-- equal that when it is passed to the API.+--+-- The values 'STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO' and+-- 'STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO' are reserved for internal use+-- by the loader, and do not have corresponding Vulkan structures in this+-- Specification.+--+-- = See Also+--+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildGeometryInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildSizesInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureDeviceAddressInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryAabbsDataKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryInstancesDataKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureInfoNV',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsInfoNV',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureVersionInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_swapchain.AcquireNextImageInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_performance_query.AcquireProfilingLockInfoKHR',+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferUsageANDROID',+-- 'Vulkan.Extensions.VK_KHR_android_surface.AndroidSurfaceCreateInfoKHR',+-- 'Vulkan.Core10.DeviceInitialization.ApplicationInfo',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout',+-- 'Vulkan.CStruct.Extends.BaseInStructure',+-- 'Vulkan.CStruct.Extends.BaseOutStructure',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindBufferMemoryDeviceGroupInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',+-- 'Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo',+-- 'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo',+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.BlitImageInfo2KHR',+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.BufferCopy2KHR',+-- 'Vulkan.Core10.Buffer.BufferCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferDeviceAddressInfo',+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.BufferImageCopy2KHR',+-- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.BufferMemoryRequirementsInfo2',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo',+-- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_calibrated_timestamps.CalibratedTimestampInfoEXT',+-- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.CheckpointDataNV',+-- 'Vulkan.Core10.CommandBuffer.CommandBufferAllocateInfo',+-- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo',+-- 'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',+-- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',+-- 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo',+-- 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',+-- 'Vulkan.Extensions.VK_NV_cooperative_matrix.CooperativeMatrixPropertiesNV',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureToMemoryInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyBufferInfo2KHR',+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyBufferToImageInfo2KHR',+-- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM',+-- 'Vulkan.Core10.DescriptorSet.CopyDescriptorSet',+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyImageInfo2KHR',+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyImageToBufferInfo2KHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyMemoryToAccelerationStructureInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.D3D12FenceSubmitInfoKHR',+-- 'Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerMarkerInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerObjectNameInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerObjectTagInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportCallbackCreateInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsLabelEXT',+-- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCallbackDataEXT',+-- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCreateInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectTagInfoEXT',+-- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV',+-- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV',+-- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV',+-- 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfoEXT',+-- 'Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo',+-- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetLayoutBindingFlagsCreateInfo',+-- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.DescriptorSetLayoutSupport',+-- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountAllocateInfo',+-- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountLayoutSupport',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo',+-- 'Vulkan.Core10.Device.DeviceCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_device_memory_report.DeviceDeviceMemoryReportCreateInfoEXT',+-- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.DeviceDiagnosticsConfigCreateInfoNV',+-- 'Vulkan.Extensions.VK_EXT_display_control.DeviceEventInfoEXT',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupBindSparseInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupCommandBufferBeginInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo',+-- 'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentCapabilitiesKHR',+-- 'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentInfoKHR',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupSubmitInfo',+-- 'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupSwapchainCreateInfoKHR',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.DeviceMemoryOpaqueCaptureAddressInfo',+-- 'Vulkan.Extensions.VK_AMD_memory_overallocation_behavior.DeviceMemoryOverallocationCreateInfoAMD',+-- 'Vulkan.Extensions.VK_EXT_device_memory_report.DeviceMemoryReportCallbackDataEXT',+-- 'Vulkan.Extensions.VK_EXT_private_data.DevicePrivateDataCreateInfoEXT',+-- 'Vulkan.Core10.Device.DeviceQueueCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_global_priority.DeviceQueueGlobalPriorityCreateInfoEXT',+-- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.DeviceQueueInfo2',+-- 'Vulkan.Extensions.VK_EXT_directfb_surface.DirectFBSurfaceCreateInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_display_control.DisplayEventInfoEXT',+-- 'Vulkan.Extensions.VK_KHR_display.DisplayModeCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayModeProperties2KHR',+-- 'Vulkan.Extensions.VK_AMD_display_native_hdr.DisplayNativeHdrSurfaceCapabilitiesAMD',+-- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneCapabilities2KHR',+-- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneInfo2KHR',+-- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneProperties2KHR',+-- 'Vulkan.Extensions.VK_EXT_display_control.DisplayPowerInfoEXT',+-- 'Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayProperties2KHR',+-- 'Vulkan.Extensions.VK_KHR_display.DisplaySurfaceCreateInfoKHR',+-- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesListEXT',+-- 'Vulkan.Core10.Event.EventCreateInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence.ExportFenceCreateInfo',+-- 'Vulkan.Extensions.VK_KHR_external_fence_win32.ExportFenceWin32HandleInfoKHR',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo',+-- 'Vulkan.Extensions.VK_NV_external_memory.ExportMemoryAllocateInfoNV',+-- 'Vulkan.Extensions.VK_KHR_external_memory_win32.ExportMemoryWin32HandleInfoKHR',+-- 'Vulkan.Extensions.VK_NV_external_memory_win32.ExportMemoryWin32HandleInfoNV',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore.ExportSemaphoreCreateInfo',+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.ExportSemaphoreWin32HandleInfoKHR',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.ExternalFenceProperties',+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo',+-- 'Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties',+-- 'Vulkan.Core10.Fence.FenceCreateInfo',+-- 'Vulkan.Extensions.VK_KHR_external_fence_fd.FenceGetFdInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_external_fence_win32.FenceGetWin32HandleInfoKHR',+-- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2',+-- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo',+-- 'Vulkan.Core10.Pass.FramebufferCreateInfo',+-- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.FramebufferMixedSamplesCombinationNV',+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsMemoryRequirementsInfoNV',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV',+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV',+-- 'Vulkan.Extensions.VK_EXT_hdr_metadata.HdrMetadataEXT',+-- 'Vulkan.Extensions.VK_EXT_headless_surface.HeadlessSurfaceCreateInfoEXT',+-- 'Vulkan.Extensions.VK_MVK_ios_surface.IOSSurfaceCreateInfoMVK',+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageBlit2KHR',+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageCopy2KHR',+-- 'Vulkan.Core10.Image.ImageCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierListCreateInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierPropertiesEXT',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2',+-- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageMemoryRequirementsInfo2',+-- 'Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface.ImagePipeSurfaceCreateInfoFUCHSIA',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.ImagePlaneMemoryRequirementsInfo',+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageResolve2KHR',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageSparseMemoryRequirementsInfo2',+-- 'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo',+-- 'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR',+-- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.ImageViewASTCDecodeModeEXT',+-- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',+-- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',+-- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo',+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID',+-- 'Vulkan.Extensions.VK_KHR_external_fence_fd.ImportFenceFdInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_external_fence_win32.ImportFenceWin32HandleInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR',+-- 'Vulkan.Extensions.VK_EXT_external_memory_host.ImportMemoryHostPointerInfoEXT',+-- 'Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR',+-- 'Vulkan.Extensions.VK_NV_external_memory_win32.ImportMemoryWin32HandleInfoNV',+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.ImportSemaphoreFdInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.ImportSemaphoreWin32HandleInfoKHR',+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutCreateInfoNV',+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV',+-- 'Vulkan.Extensions.VK_INTEL_performance_query.InitializePerformanceApiInfoINTEL',+-- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo',+-- 'Vulkan.Extensions.VK_MVK_macos_surface.MacOSSurfaceCreateInfoMVK',+-- 'Vulkan.Core10.Memory.MappedMemoryRange',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo',+-- 'Vulkan.Core10.Memory.MemoryAllocateInfo',+-- 'Vulkan.Core10.OtherTypes.MemoryBarrier',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements',+-- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryFdPropertiesKHR',+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.MemoryGetAndroidHardwareBufferInfoANDROID',+-- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR',+-- 'Vulkan.Extensions.VK_EXT_external_memory_host.MemoryHostPointerPropertiesEXT',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.MemoryOpaqueCaptureAddressAllocateInfo',+-- 'Vulkan.Extensions.VK_EXT_memory_priority.MemoryPriorityAllocateInfoEXT',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2',+-- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryWin32HandlePropertiesKHR',+-- 'Vulkan.Extensions.VK_EXT_metal_surface.MetalSurfaceCreateInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT',+-- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceConfigurationAcquireInfoINTEL',+-- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterDescriptionKHR',+-- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterKHR',+-- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceMarkerInfoINTEL',+-- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceOverrideInfoINTEL',+-- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceQuerySubmitInfoKHR',+-- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceStreamMarkerInfoINTEL',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage.PhysicalDevice16BitStorageFeatures',+-- 'Vulkan.Extensions.VK_EXT_4444_formats.PhysicalDevice4444FormatsFeaturesEXT',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage.PhysicalDevice8BitStorageFeatures',+-- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.PhysicalDeviceASTCDecodeFeaturesEXT',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructureFeaturesKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR',+-- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',+-- 'Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',+-- 'Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD',+-- 'Vulkan.Extensions.VK_NV_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesNV',+-- 'Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',+-- 'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesNV',+-- 'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixPropertiesNV',+-- 'Vulkan.Extensions.VK_NV_corner_sampled_image.PhysicalDeviceCornerSampledImageFeaturesNV',+-- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PhysicalDeviceCoverageReductionModeFeaturesNV',+-- 'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorPropertiesEXT',+-- 'Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing.PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',+-- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',+-- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',+-- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV',+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsPropertiesNV',+-- 'Vulkan.Extensions.VK_EXT_device_memory_report.PhysicalDeviceDeviceMemoryReportFeaturesEXT',+-- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV',+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties',+-- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.PhysicalDeviceExternalFenceInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo',+-- 'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.PhysicalDeviceExternalSemaphoreInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2FeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2PropertiesEXT',+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT',+-- 'Vulkan.Extensions.VK_NV_fragment_shader_barycentric.PhysicalDeviceFragmentShaderBarycentricFeaturesNV',+-- 'Vulkan.Extensions.VK_EXT_fragment_shader_interlock.PhysicalDeviceFragmentShaderInterlockFeaturesEXT',+-- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsFeaturesNV',+-- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsPropertiesNV',+-- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateFeaturesKHR',+-- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateKHR',+-- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRatePropertiesKHR',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties',+-- 'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',+-- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',+-- 'Vulkan.Extensions.VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_filter_cubic.PhysicalDeviceImageViewImageFormatInfoEXT',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',+-- 'Vulkan.Extensions.VK_EXT_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT',+-- 'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationPropertiesEXT',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',+-- 'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',+-- 'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceMemoryProperties2',+-- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',+-- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewFeatures',+-- 'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties',+-- 'Vulkan.Extensions.VK_EXT_pci_bus_info.PhysicalDevicePCIBusInfoPropertiesEXT',+-- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',+-- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR',+-- 'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeaturesEXT',+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',+-- 'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR',+-- 'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetPropertiesKHR',+-- 'Vulkan.Extensions.VK_EXT_private_data.PhysicalDevicePrivateDataFeaturesEXT',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',+-- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',+-- 'Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV',+-- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',+-- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2FeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT',+-- 'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',+-- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures',+-- 'Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout.PhysicalDeviceScalarBlockLayoutFeatures',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.PhysicalDeviceSeparateDepthStencilLayoutsFeatures',+-- 'Vulkan.Extensions.VK_EXT_shader_atomic_float.PhysicalDeviceShaderAtomicFloatFeaturesEXT',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64.PhysicalDeviceShaderAtomicInt64Features',+-- 'Vulkan.Extensions.VK_KHR_shader_clock.PhysicalDeviceShaderClockFeaturesKHR',+-- 'Vulkan.Extensions.VK_AMD_shader_core_properties2.PhysicalDeviceShaderCoreProperties2AMD',+-- 'Vulkan.Extensions.VK_AMD_shader_core_properties.PhysicalDeviceShaderCorePropertiesAMD',+-- 'Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters.PhysicalDeviceShaderDrawParametersFeatures',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8Features',+-- 'Vulkan.Extensions.VK_EXT_shader_image_atomic_int64.PhysicalDeviceShaderImageAtomicInt64FeaturesEXT',+-- 'Vulkan.Extensions.VK_NV_shader_image_footprint.PhysicalDeviceShaderImageFootprintFeaturesNV',+-- 'Vulkan.Extensions.VK_INTEL_shader_integer_functions2.PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL',+-- 'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsFeaturesNV',+-- 'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsPropertiesNV',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types.PhysicalDeviceShaderSubgroupExtendedTypesFeatures',+-- 'Vulkan.Extensions.VK_KHR_shader_terminate_invocation.PhysicalDeviceShaderTerminateInvocationFeaturesKHR',+-- 'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImageFeaturesNV',+-- 'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImagePropertiesNV',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',+-- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties',+-- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlPropertiesEXT',+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR',+-- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',+-- 'Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreFeatures',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreProperties',+-- 'Vulkan.Extensions.VK_EXT_tooling_info.PhysicalDeviceToolPropertiesEXT',+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout.PhysicalDeviceUniformBufferStandardLayoutFeatures',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers.PhysicalDeviceVariablePointersFeatures',+-- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesEXT',+-- 'Vulkan.Core12.PhysicalDeviceVulkan11Features',+-- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',+-- 'Vulkan.Core12.PhysicalDeviceVulkan12Features',+-- 'Vulkan.Core12.PhysicalDeviceVulkan12Properties',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeatures',+-- 'Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',+-- 'Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT',+-- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo',+-- 'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',+-- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',+-- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV',+-- 'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',+-- 'Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT',+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT',+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo',+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInternalRepresentationKHR',+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutablePropertiesKHR',+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableStatisticKHR',+-- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV',+-- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineInfoKHR',+-- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo',+-- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo',+-- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR',+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT',+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo',+-- 'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD',+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT',+-- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV',+-- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT',+-- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PipelineTessellationDomainOriginStateCreateInfo',+-- 'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoEXT',+-- 'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo',+-- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportCoarseSampleOrderStateCreateInfoNV',+-- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV',+-- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV',+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo',+-- 'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV',+-- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV',+-- 'Vulkan.Extensions.VK_GGP_frame_token.PresentFrameTokenGGP',+-- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_incremental_present.PresentRegionsKHR',+-- 'Vulkan.Extensions.VK_GOOGLE_display_timing.PresentTimesInfoGOOGLE',+-- 'Vulkan.Extensions.VK_EXT_private_data.PrivateDataSlotCreateInfoEXT',+-- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.ProtectedSubmitInfo',+-- 'Vulkan.Core10.Query.QueryPoolCreateInfo',+-- 'Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR',+-- 'Vulkan.Extensions.VK_INTEL_performance_query.QueryPoolPerformanceQueryCreateInfoINTEL',+-- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.QueueFamilyCheckpointPropertiesNV',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineInterfaceCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingShaderGroupCreateInfoKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupCreateInfoNV',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo',+-- 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',+-- 'Vulkan.Core10.Pass.RenderPassCreateInfo',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2',+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.RenderPassInputAttachmentAspectCreateInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT',+-- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.ResolveImageInfo2KHR',+-- 'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT',+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT',+-- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionImageFormatProperties',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo',+-- 'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo',+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.SemaphoreGetFdInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.SemaphoreGetWin32HandleInfoKHR',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreSignalInfo',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo',+-- 'Vulkan.Core10.Shader.ShaderModuleCreateInfo',+-- 'Vulkan.Extensions.VK_EXT_validation_cache.ShaderModuleValidationCacheCreateInfoEXT',+-- 'Vulkan.Extensions.VK_KHR_shared_presentable_image.SharedPresentSurfaceCapabilitiesKHR',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.SparseImageFormatProperties2',+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.SparseImageMemoryRequirements2',+-- 'Vulkan.Extensions.VK_GGP_stream_descriptor_surface.StreamDescriptorSurfaceCreateInfoGGP',+-- 'Vulkan.Core10.Queue.SubmitInfo',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassBeginInfo',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassEndInfo',+-- 'Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCapabilities2EXT',+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR',+-- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceCapabilitiesFullScreenExclusiveEXT',+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceFormat2KHR',+-- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT',+-- 'Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR',+-- 'Vulkan.Extensions.VK_EXT_display_control.SwapchainCounterCreateInfoEXT',+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',+-- 'Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD',+-- 'Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.TextureLODGatherFormatPropertiesAMD',+-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo',+-- 'Vulkan.Extensions.VK_EXT_validation_cache.ValidationCacheCreateInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_validation_features.ValidationFeaturesEXT',+-- 'Vulkan.Extensions.VK_EXT_validation_flags.ValidationFlagsEXT',+-- 'Vulkan.Extensions.VK_NN_vi_surface.ViSurfaceCreateInfoNN',+-- 'Vulkan.Extensions.VK_KHR_wayland_surface.WaylandSurfaceCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoKHR',+-- 'Vulkan.Extensions.VK_NV_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoNV',+-- 'Vulkan.Extensions.VK_KHR_win32_surface.Win32SurfaceCreateInfoKHR',+-- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV',+-- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT',+-- 'Vulkan.Extensions.VK_KHR_xcb_surface.XcbSurfaceCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_xlib_surface.XlibSurfaceCreateInfoKHR'+newtype StructureType = StructureType Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_APPLICATION_INFO"+pattern STRUCTURE_TYPE_APPLICATION_INFO                          = StructureType 0+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"+pattern STRUCTURE_TYPE_INSTANCE_CREATE_INFO                      = StructureType 1+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"+pattern STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO                  = StructureType 2+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"+pattern STRUCTURE_TYPE_DEVICE_CREATE_INFO                        = StructureType 3+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBMIT_INFO"+pattern STRUCTURE_TYPE_SUBMIT_INFO                               = StructureType 4+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"+pattern STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO                      = StructureType 5+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"+pattern STRUCTURE_TYPE_MAPPED_MEMORY_RANGE                       = StructureType 6+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"+pattern STRUCTURE_TYPE_BIND_SPARSE_INFO                          = StructureType 7+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"+pattern STRUCTURE_TYPE_FENCE_CREATE_INFO                         = StructureType 8+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"+pattern STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO                     = StructureType 9+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"+pattern STRUCTURE_TYPE_EVENT_CREATE_INFO                         = StructureType 10+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"+pattern STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO                    = StructureType 11+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"+pattern STRUCTURE_TYPE_BUFFER_CREATE_INFO                        = StructureType 12+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"+pattern STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO                   = StructureType 13+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"+pattern STRUCTURE_TYPE_IMAGE_CREATE_INFO                         = StructureType 14+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"+pattern STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO                    = StructureType 15+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"+pattern STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO                 = StructureType 16+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO                = StructureType 17+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO         = StructureType 18+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO   = StructureType 19+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = StructureType 20+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO   = StructureType 21+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO       = StructureType 22+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO  = StructureType 23+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO    = StructureType 24+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO  = StructureType 25+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO    = StructureType 26+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO        = StructureType 27+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"+pattern STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO             = StructureType 28+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"+pattern STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO              = StructureType 29+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO               = StructureType 30+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"+pattern STRUCTURE_TYPE_SAMPLER_CREATE_INFO                       = StructureType 31+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO         = StructureType 32+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"+pattern STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO               = StructureType 33+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO              = StructureType 34+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"+pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET                      = StructureType 35+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"+pattern STRUCTURE_TYPE_COPY_DESCRIPTOR_SET                       = StructureType 36+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"+pattern STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO                   = StructureType 37+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"+pattern STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO                   = StructureType 38+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"+pattern STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO                  = StructureType 39+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"+pattern STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO              = StructureType 40+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"+pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO           = StructureType 41+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"+pattern STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO                 = StructureType 42+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"+pattern STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO                    = StructureType 43+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"+pattern STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER                     = StructureType 44+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"+pattern STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER                      = StructureType 45+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_BARRIER"+pattern STRUCTURE_TYPE_MEMORY_BARRIER                            = StructureType 46+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"+pattern STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO               = StructureType 47+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"+pattern STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO                 = StructureType 48+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT          = StructureType 1000346000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = StructureType 1000340000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR"+pattern STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR                       = StructureType 1000337010+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR"+pattern STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR                   = StructureType 1000337009+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR"+pattern STRUCTURE_TYPE_IMAGE_BLIT_2_KHR                          = StructureType 1000337008+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR"+pattern STRUCTURE_TYPE_IMAGE_COPY_2_KHR                          = StructureType 1000337007+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR"+pattern STRUCTURE_TYPE_BUFFER_COPY_2_KHR                         = StructureType 1000337006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR"+pattern STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR                  = StructureType 1000337005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR"+pattern STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR                     = StructureType 1000337004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR"+pattern STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR           = StructureType 1000337003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR"+pattern STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR           = StructureType 1000337002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR"+pattern STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR                     = StructureType 1000337001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR"+pattern STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR                    = StructureType 1000337000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = StructureType 1000335000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM"+pattern STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM          = StructureType 1000333000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = StructureType 1000332001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = StructureType 1000332000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = StructureType 1000326002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = StructureType 1000326001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = StructureType 1000326000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV  = StructureType 1000300001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = StructureType 1000300000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = StructureType 1000297000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT         = StructureType 1000295002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT       = StructureType 1000295001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = StructureType 1000295000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR          = StructureType 1000290000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = StructureType 1000287002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = StructureType 1000287001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = StructureType 1000287000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = StructureType 1000286001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = StructureType 1000286000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT"+pattern STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT    = StructureType 1000284002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = StructureType 1000284001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = StructureType 1000284000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"+pattern STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM     = StructureType 1000282001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"+pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = StructureType 1000282000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = StructureType 1000281001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = StructureType 1000281000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = StructureType 1000277007+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"+pattern STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = StructureType 1000277006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV"+pattern STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV                = StructureType 1000277005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV   = StructureType 1000277004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV"+pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV         = StructureType 1000277003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = StructureType 1000277002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV      = StructureType 1000277001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = StructureType 1000277000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = StructureType 1000276000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"+pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = StructureType 1000269005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR"+pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR         = StructureType 1000269004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR"+pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR              = StructureType 1000269003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR        = StructureType 1000269002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR"+pattern STRUCTURE_TYPE_PIPELINE_INFO_KHR                         = StructureType 1000269001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = StructureType 1000269000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = StructureType 1000267000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = StructureType 1000265000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = StructureType 1000260000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = StructureType 1000259002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = StructureType 1000259001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = StructureType 1000259000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT          = StructureType 1000256000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"+pattern STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = StructureType 1000255001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"+pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = StructureType 1000255002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"+pattern STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT    = StructureType 1000255000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = StructureType 1000252000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = StructureType 1000251000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"+pattern STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV  = StructureType 1000250002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = StructureType 1000250001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = StructureType 1000250000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = StructureType 1000249002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV"+pattern STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV          = StructureType 1000249001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = StructureType 1000249000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT"+pattern STRUCTURE_TYPE_VALIDATION_FEATURES_EXT                   = StructureType 1000247000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT       = StructureType 1000245000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT     = StructureType 1000244002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = StructureType 1000244000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = StructureType 1000240000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR"+pattern STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR        = StructureType 1000239000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT"+pattern STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT         = StructureType 1000238001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = StructureType 1000238000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = StructureType 1000237000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = StructureType 1000234000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = StructureType 1000229000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = StructureType 1000227000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = StructureType 1000226004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = StructureType 1000226003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = StructureType 1000226002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = StructureType 1000226001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"+pattern STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = StructureType 1000226000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = StructureType 1000225002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = StructureType 1000225001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = StructureType 1000225000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = StructureType 1000218002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = StructureType 1000218001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = StructureType 1000218000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT             = StructureType 1000217000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = StructureType 1000215000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA"+pattern STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA     = StructureType 1000214000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD"+pattern STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = StructureType 1000213001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD"+pattern STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = StructureType 1000213000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = StructureType 1000212000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL"+pattern STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = StructureType 1000210005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL"+pattern STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL           = StructureType 1000210004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL"+pattern STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL      = StructureType 1000210003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL"+pattern STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL             = StructureType 1000210002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL"+pattern STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL     = StructureType 1000210001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL"+pattern STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = StructureType 1000210000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = StructureType 1000209000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"+pattern STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV     = StructureType 1000206001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV"+pattern STRUCTURE_TYPE_CHECKPOINT_DATA_NV                        = StructureType 1000206000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = StructureType 1000205002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = StructureType 1000205000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = StructureType 1000204000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = StructureType 1000203000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = StructureType 1000202001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV   = StructureType 1000202000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = StructureType 1000201000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = StructureType 1000192000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP"+pattern STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP                   = StructureType 1000191000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = StructureType 1000190002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = StructureType 1000190001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = StructureType 1000190000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD"+pattern STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = StructureType 1000189000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = StructureType 1000185000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT"+pattern STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT             = StructureType 1000184000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"+pattern STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = StructureType 1000183000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = StructureType 1000181000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = StructureType 1000178002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT        = StructureType 1000178001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"+pattern STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT       = StructureType 1000178000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = StructureType 1000174000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = StructureType 1000170001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = StructureType 1000170000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = StructureType 1000166001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = StructureType 1000166000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV            = StructureType 1000165012+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV   = StructureType 1000165011+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = StructureType 1000165009+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = StructureType 1000165008+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"+pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = StructureType 1000165007+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"+pattern STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = StructureType 1000165006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV"+pattern STRUCTURE_TYPE_GEOMETRY_AABB_NV                          = StructureType 1000165005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV"+pattern STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV                     = StructureType 1000165004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_NV"+pattern STRUCTURE_TYPE_GEOMETRY_NV                               = StructureType 1000165003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV     = StructureType 1000165001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV       = StructureType 1000165000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = StructureType 1000164005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = StructureType 1000164002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = StructureType 1000164001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = StructureType 1000164000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = StructureType 1000163001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = StructureType 1000163000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = StructureType 1000160001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT          = StructureType 1000160000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT  = StructureType 1000158005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = StructureType 1000158004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = StructureType 1000158003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = StructureType 1000158002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"+pattern STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT   = StructureType 1000158000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = StructureType 1000154001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = StructureType 1000154000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = StructureType 1000152000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR    = StructureType 1000348013+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = StructureType 1000150018+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR  = StructureType 1000150016+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR      = StructureType 1000150015+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = StructureType 1000347001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = StructureType 1000347000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = StructureType 1000150020+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR    = StructureType 1000150017+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = StructureType 1000150014+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = StructureType 1000150013+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR"+pattern STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = StructureType 1000150012+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR"+pattern STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = StructureType 1000150011+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR"+pattern STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR      = StructureType 1000150010+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR   = StructureType 1000150009+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR       = StructureType 1000150006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = StructureType 1000150005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = StructureType 1000150004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = StructureType 1000150003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = StructureType 1000150002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = StructureType 1000150000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR"+pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = StructureType 1000150007+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = StructureType 1000149000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = StructureType 1000148002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = StructureType 1000148001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = StructureType 1000148000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT                = StructureType 1000143004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = StructureType 1000143003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = StructureType 1000143002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"+pattern STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = StructureType 1000143001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"+pattern STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT                 = StructureType 1000143000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = StructureType 1000138003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT"+pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = StructureType 1000138002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = StructureType 1000138001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = StructureType 1000138000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"+pattern STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID                   = StructureType 1000129005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"+pattern STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = StructureType 1000129004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"+pattern STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = StructureType 1000129003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"+pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = StructureType 1000129002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"+pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = StructureType 1000129001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"+pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID     = StructureType 1000129000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT     = StructureType 1000128004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"+pattern STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT   = StructureType 1000128003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"+pattern STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT                     = StructureType 1000128002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"+pattern STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT           = StructureType 1000128001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"+pattern STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT          = StructureType 1000128000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"+pattern STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK             = StructureType 1000123000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"+pattern STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK               = StructureType 1000122000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR"+pattern STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR          = StructureType 1000121004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR"+pattern STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR                  = StructureType 1000121003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR"+pattern STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR             = StructureType 1000121002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR"+pattern STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR            = StructureType 1000121001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR"+pattern STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR                  = StructureType 1000121000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"+pattern STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR                      = StructureType 1000119002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"+pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR                = StructureType 1000119001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR        = StructureType 1000119000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR"+pattern STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR       = StructureType 1000116006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR"+pattern STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR                   = StructureType 1000116005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR"+pattern STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR           = StructureType 1000116004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR"+pattern STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR         = StructureType 1000116003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR    = StructureType 1000116002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = StructureType 1000116001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = StructureType 1000116000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"+pattern STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR                     = StructureType 1000115001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"+pattern STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR                  = StructureType 1000115000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR           = StructureType 1000114002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR        = StructureType 1000114001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR        = StructureType 1000114000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"+pattern STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR   = StructureType 1000111000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HDR_METADATA_EXT"+pattern STRUCTURE_TYPE_HDR_METADATA_EXT                          = StructureType 1000105000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = StructureType 1000102001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = StructureType 1000102000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = StructureType 1000101001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = StructureType 1000101000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = StructureType 1000099001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = StructureType 1000099000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = StructureType 1000098000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = StructureType 1000097000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"+pattern STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE                 = StructureType 1000092000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT         = StructureType 1000091003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"+pattern STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT                    = StructureType 1000091002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"+pattern STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT                     = StructureType 1000091001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"+pattern STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT                    = StructureType 1000091000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"+pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT                = StructureType 1000090000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = StructureType 1000087000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"+pattern STRUCTURE_TYPE_PRESENT_REGIONS_KHR                       = StructureType 1000084000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"+pattern STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT      = StructureType 1000081002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = StructureType 1000081001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"+pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = StructureType 1000081000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = StructureType 1000080000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"+pattern STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR                 = StructureType 1000079001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"+pattern STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR              = StructureType 1000079000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR       = StructureType 1000078003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"+pattern STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR               = StructureType 1000078002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR    = StructureType 1000078001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR    = StructureType 1000078000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"+pattern STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = StructureType 1000075000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"+pattern STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR                    = StructureType 1000074002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR                  = StructureType 1000074001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"+pattern STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR                 = StructureType 1000074000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR          = StructureType 1000073003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR        = StructureType 1000073002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR       = StructureType 1000073001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR       = StructureType 1000073000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT  = StructureType 1000067001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT"+pattern STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT           = StructureType 1000067000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = StructureType 1000066000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"+pattern STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN                 = StructureType 1000062000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"+pattern STRUCTURE_TYPE_VALIDATION_FLAGS_EXT                      = StructureType 1000061000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR    = StructureType 1000060012+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"+pattern STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR             = StructureType 1000060011+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"+pattern STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR               = StructureType 1000060010+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"+pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR      = StructureType 1000060009+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR           = StructureType 1000060008+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"+pattern STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR     = StructureType 1000060007+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"+pattern STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = StructureType 1000058000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"+pattern STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV        = StructureType 1000057001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"+pattern STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV        = StructureType 1000057000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"+pattern STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV            = StructureType 1000056001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV      = StructureType 1000056000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = StructureType 1000050000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"+pattern STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = StructureType 1000049000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"+pattern STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD  = StructureType 1000041000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX"+pattern STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX         = StructureType 1000030001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX"+pattern STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX                = StructureType 1000030000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = StructureType 1000028002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = StructureType 1000028001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = StructureType 1000028000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"+pattern STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = StructureType 1000026002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = StructureType 1000026001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = StructureType 1000026000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"+pattern STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT              = StructureType 1000022002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"+pattern STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT          = StructureType 1000022001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"+pattern STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT         = StructureType 1000022000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = StructureType 1000018000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT     = StructureType 1000011000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR             = StructureType 1000009000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR           = StructureType 1000008000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR           = StructureType 1000006000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR               = StructureType 1000005000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR              = StructureType 1000004000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"+pattern STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR                  = StructureType 1000003000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR           = StructureType 1000002001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR              = StructureType 1000002000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"+pattern STRUCTURE_TYPE_PRESENT_INFO_KHR                          = StructureType 1000001001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR                 = StructureType 1000001000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO"+pattern STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = StructureType 1000257004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO"+pattern STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = StructureType 1000257003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"+pattern STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = StructureType 1000257002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"+pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO                = StructureType 1000244001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = StructureType 1000257000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO"+pattern STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO                     = StructureType 1000207005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO"+pattern STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO                       = StructureType 1000207004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO"+pattern STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO            = StructureType 1000207003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO"+pattern STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO                = StructureType 1000207002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = StructureType 1000207001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = StructureType 1000207000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = StructureType 1000261000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"+pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT     = StructureType 1000241002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"+pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT       = StructureType 1000241001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = StructureType 1000241000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = StructureType 1000175000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = StructureType 1000253000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO"+pattern STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO         = StructureType 1000108003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"+pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO         = StructureType 1000108002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"+pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO       = StructureType 1000108001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = StructureType 1000108000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = StructureType 1000211000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO"+pattern STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO        = StructureType 1000130001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = StructureType 1000130000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO"+pattern STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO           = StructureType 1000246000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = StructureType 1000221000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"+pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = StructureType 1000199001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = StructureType 1000199000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = StructureType 1000161004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = StructureType 1000161003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = StructureType 1000161002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = StructureType 1000161001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = StructureType 1000161000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = StructureType 1000197000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = StructureType 1000082000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = StructureType 1000180000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES         = StructureType 1000196000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES     = StructureType 1000177000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_END_INFO"+pattern STRUCTURE_TYPE_SUBPASS_END_INFO                          = StructureType 1000109006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO"+pattern STRUCTURE_TYPE_SUBPASS_BEGIN_INFO                        = StructureType 1000109005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2"+pattern STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2                 = StructureType 1000109004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2"+pattern STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2                      = StructureType 1000109003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2"+pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2                     = StructureType 1000109002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2"+pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2                    = StructureType 1000109001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2"+pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2                  = StructureType 1000109000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO"+pattern STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO             = StructureType 1000147000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES     = StructureType 52+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES       = StructureType 51+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES     = StructureType 50+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES       = StructureType 49+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = StructureType 1000063000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT             = StructureType 1000168001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES  = StructureType 1000168000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"+pattern STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES             = StructureType 1000076001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO   = StructureType 1000076000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"+pattern STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO              = StructureType 1000077000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"+pattern STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO                  = StructureType 1000113000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"+pattern STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES                 = StructureType 1000112001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO       = StructureType 1000112000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"+pattern STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO               = StructureType 1000072002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"+pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO         = StructureType 1000072001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"+pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO        = StructureType 1000072000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES             = StructureType 1000071004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"+pattern STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES                = StructureType 1000071003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO      = StructureType 1000071002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"+pattern STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES          = StructureType 1000071001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = StructureType 1000071000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"+pattern STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO    = StructureType 1000085000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"+pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = StructureType 1000156005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = StructureType 1000156004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"+pattern STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO      = StructureType 1000156003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"+pattern STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO              = StructureType 1000156002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"+pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO             = StructureType 1000156001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"+pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO      = StructureType 1000156000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"+pattern STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2                       = StructureType 1000145003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = StructureType 1000145002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = StructureType 1000145001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"+pattern STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO                     = StructureType 1000145000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = StructureType 1000120000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES      = StructureType 1000053002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES        = StructureType 1000053001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"+pattern STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO         = StructureType 1000053000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = StructureType 1000117003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"+pattern STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO              = StructureType 1000117002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"+pattern STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = StructureType 1000117001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = StructureType 1000117000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = StructureType 1000059008+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"+pattern STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2          = StructureType 1000059007+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2       = StructureType 1000059006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"+pattern STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2                 = StructureType 1000059005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2       = StructureType 1000059004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"+pattern STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2                 = StructureType 1000059003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"+pattern STRUCTURE_TYPE_FORMAT_PROPERTIES_2                       = StructureType 1000059002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2              = StructureType 1000059001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2                = StructureType 1000059000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"+pattern STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2        = StructureType 1000146004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"+pattern STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2                     = StructureType 1000146003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"+pattern STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2   = StructureType 1000146002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"+pattern STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2          = StructureType 1000146001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"+pattern STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2         = StructureType 1000146000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"+pattern STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO           = StructureType 1000070001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES          = StructureType 1000070000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"+pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO       = StructureType 1000060014+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"+pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO      = StructureType 1000060013+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"+pattern STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO             = StructureType 1000060006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"+pattern STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO                  = StructureType 1000060005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"+pattern STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO    = StructureType 1000060004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"+pattern STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO       = StructureType 1000060003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"+pattern STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO                = StructureType 1000060000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"+pattern STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO            = StructureType 1000127001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"+pattern STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS             = StructureType 1000127000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES    = StructureType 1000083000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"+pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO                    = StructureType 1000157001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"+pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO                   = StructureType 1000157000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES       = StructureType 1000094000+{-# complete STRUCTURE_TYPE_APPLICATION_INFO,+             STRUCTURE_TYPE_INSTANCE_CREATE_INFO,+             STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,+             STRUCTURE_TYPE_DEVICE_CREATE_INFO,+             STRUCTURE_TYPE_SUBMIT_INFO,+             STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,+             STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,+             STRUCTURE_TYPE_BIND_SPARSE_INFO,+             STRUCTURE_TYPE_FENCE_CREATE_INFO,+             STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,+             STRUCTURE_TYPE_EVENT_CREATE_INFO,+             STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,+             STRUCTURE_TYPE_BUFFER_CREATE_INFO,+             STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,+             STRUCTURE_TYPE_IMAGE_CREATE_INFO,+             STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,+             STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,+             STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,+             STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,+             STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,+             STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,+             STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,+             STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,+             STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,+             STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,+             STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,+             STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,+             STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,+             STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,+             STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,+             STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,+             STRUCTURE_TYPE_SAMPLER_CREATE_INFO,+             STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,+             STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,+             STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,+             STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,+             STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,+             STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,+             STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,+             STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,+             STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,+             STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,+             STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,+             STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,+             STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,+             STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,+             STRUCTURE_TYPE_MEMORY_BARRIER,+             STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,+             STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,+             STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT,+             STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR,+             STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR,+             STRUCTURE_TYPE_IMAGE_BLIT_2_KHR,+             STRUCTURE_TYPE_IMAGE_COPY_2_KHR,+             STRUCTURE_TYPE_BUFFER_COPY_2_KHR,+             STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR,+             STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR,+             STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR,+             STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR,+             STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR,+             STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT,+             STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT,+             STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV,+             STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT,+             STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT,+             STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT,+             STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT,+             STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT,+             STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT,+             STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT,+             STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM,+             STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV,+             STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV,+             STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV,+             STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV,+             STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV,+             STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV,+             STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT,+             STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR,+             STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR,+             STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR,+             STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR,+             STRUCTURE_TYPE_PIPELINE_INFO_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT,+             STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT,+             STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT,+             STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT,+             STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT,+             STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT,+             STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV,+             STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV,+             STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV,+             STRUCTURE_TYPE_VALIDATION_FEATURES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT,+             STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV,+             STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR,+             STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR,+             STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR,+             STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT,+             STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT,+             STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT,+             STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR,+             STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA,+             STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD,+             STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT,+             STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL,+             STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL,+             STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL,+             STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL,+             STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL,+             STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL,+             STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV,+             STRUCTURE_TYPE_CHECKPOINT_DATA_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV,+             STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV,+             STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT,+             STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,+             STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,+             STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT,+             STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,+             STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT,+             STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT,+             STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT,+             STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,+             STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV,+             STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV,+             STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV,+             STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV,+             STRUCTURE_TYPE_GEOMETRY_AABB_NV,+             STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV,+             STRUCTURE_TYPE_GEOMETRY_NV,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV,+             STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV,+             STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV,+             STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR,+             STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,+             STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT,+             STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,+             STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,+             STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,+             STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV,+             STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR,+             STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR,+             STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR,+             STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR,+             STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR,+             STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR,+             STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR,+             STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,+             STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,+             STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,+             STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,+             STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,+             STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,+             STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT,+             STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT,+             STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT,+             STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID,+             STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,+             STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,+             STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID,+             STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID,+             STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID,+             STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,+             STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,+             STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT,+             STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT,+             STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT,+             STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK,+             STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,+             STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR,+             STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR,+             STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR,+             STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR,+             STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR,+             STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,+             STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,+             STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR,+             STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR,+             STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR,+             STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR,+             STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR,+             STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR,+             STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,+             STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR,+             STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,+             STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,+             STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,+             STRUCTURE_TYPE_HDR_METADATA_EXT,+             STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT,+             STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,+             STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,+             STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,+             STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,+             STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,+             STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,+             STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,+             STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,+             STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,+             STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,+             STRUCTURE_TYPE_PRESENT_REGIONS_KHR,+             STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,+             STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,+             STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR,+             STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,+             STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,+             STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR,+             STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,+             STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,+             STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,+             STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,+             STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR,+             STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR,+             STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR,+             STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR,+             STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,+             STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT,+             STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT,+             STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,+             STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,+             STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,+             STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR,+             STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR,+             STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,+             STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR,+             STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,+             STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,+             STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,+             STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,+             STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,+             STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,+             STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP,+             STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,+             STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX,+             STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX,+             STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT,+             STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,+             STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,+             STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,+             STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,+             STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,+             STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,+             STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,+             STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,+             STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,+             STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,+             STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,+             STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,+             STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,+             STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,+             STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,+             STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,+             STRUCTURE_TYPE_PRESENT_INFO_KHR,+             STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,+             STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,+             STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,+             STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,+             STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,+             STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,+             STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,+             STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,+             STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,+             STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,+             STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,+             STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,+             STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,+             STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,+             STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,+             STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,+             STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,+             STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,+             STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,+             STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,+             STRUCTURE_TYPE_SUBPASS_END_INFO,+             STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,+             STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,+             STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,+             STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,+             STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,+             STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,+             STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,+             STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,+             STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,+             STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,+             STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,+             STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,+             STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,+             STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,+             STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,+             STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,+             STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,+             STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,+             STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,+             STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,+             STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,+             STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,+             STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,+             STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,+             STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,+             STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,+             STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,+             STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,+             STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,+             STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,+             STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,+             STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,+             STRUCTURE_TYPE_FORMAT_PROPERTIES_2,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,+             STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,+             STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,+             STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,+             STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,+             STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,+             STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,+             STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,+             STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,+             STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,+             STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,+             STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,+             STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,+             STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,+             STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,+             STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,+             STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,+             STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES :: StructureType #-}++conNameStructureType :: String+conNameStructureType = "StructureType"++enumPrefixStructureType :: String+enumPrefixStructureType = "STRUCTURE_TYPE_"++showTableStructureType :: [(StructureType, String)]+showTableStructureType =+  [ (STRUCTURE_TYPE_APPLICATION_INFO                         , "APPLICATION_INFO")+  , (STRUCTURE_TYPE_INSTANCE_CREATE_INFO                     , "INSTANCE_CREATE_INFO")+  , (STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO                 , "DEVICE_QUEUE_CREATE_INFO")+  , (STRUCTURE_TYPE_DEVICE_CREATE_INFO                       , "DEVICE_CREATE_INFO")+  , (STRUCTURE_TYPE_SUBMIT_INFO                              , "SUBMIT_INFO")+  , (STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO                     , "MEMORY_ALLOCATE_INFO")+  , (STRUCTURE_TYPE_MAPPED_MEMORY_RANGE                      , "MAPPED_MEMORY_RANGE")+  , (STRUCTURE_TYPE_BIND_SPARSE_INFO                         , "BIND_SPARSE_INFO")+  , (STRUCTURE_TYPE_FENCE_CREATE_INFO                        , "FENCE_CREATE_INFO")+  , (STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO                    , "SEMAPHORE_CREATE_INFO")+  , (STRUCTURE_TYPE_EVENT_CREATE_INFO                        , "EVENT_CREATE_INFO")+  , (STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO                   , "QUERY_POOL_CREATE_INFO")+  , (STRUCTURE_TYPE_BUFFER_CREATE_INFO                       , "BUFFER_CREATE_INFO")+  , (STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO                  , "BUFFER_VIEW_CREATE_INFO")+  , (STRUCTURE_TYPE_IMAGE_CREATE_INFO                        , "IMAGE_CREATE_INFO")+  , (STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO                   , "IMAGE_VIEW_CREATE_INFO")+  , (STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO                , "SHADER_MODULE_CREATE_INFO")+  , (STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO               , "PIPELINE_CACHE_CREATE_INFO")+  , (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO        , "PIPELINE_SHADER_STAGE_CREATE_INFO")+  , (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO  , "PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO")+  , (STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, "PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO")+  , (STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO  , "PIPELINE_TESSELLATION_STATE_CREATE_INFO")+  , (STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO      , "PIPELINE_VIEWPORT_STATE_CREATE_INFO")+  , (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO , "PIPELINE_RASTERIZATION_STATE_CREATE_INFO")+  , (STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO   , "PIPELINE_MULTISAMPLE_STATE_CREATE_INFO")+  , (STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO , "PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO")+  , (STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO   , "PIPELINE_COLOR_BLEND_STATE_CREATE_INFO")+  , (STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO       , "PIPELINE_DYNAMIC_STATE_CREATE_INFO")+  , (STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO            , "GRAPHICS_PIPELINE_CREATE_INFO")+  , (STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO             , "COMPUTE_PIPELINE_CREATE_INFO")+  , (STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO              , "PIPELINE_LAYOUT_CREATE_INFO")+  , (STRUCTURE_TYPE_SAMPLER_CREATE_INFO                      , "SAMPLER_CREATE_INFO")+  , (STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO        , "DESCRIPTOR_SET_LAYOUT_CREATE_INFO")+  , (STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO              , "DESCRIPTOR_POOL_CREATE_INFO")+  , (STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO             , "DESCRIPTOR_SET_ALLOCATE_INFO")+  , (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET                     , "WRITE_DESCRIPTOR_SET")+  , (STRUCTURE_TYPE_COPY_DESCRIPTOR_SET                      , "COPY_DESCRIPTOR_SET")+  , (STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO                  , "FRAMEBUFFER_CREATE_INFO")+  , (STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO                  , "RENDER_PASS_CREATE_INFO")+  , (STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO                 , "COMMAND_POOL_CREATE_INFO")+  , (STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO             , "COMMAND_BUFFER_ALLOCATE_INFO")+  , (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO          , "COMMAND_BUFFER_INHERITANCE_INFO")+  , (STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO                , "COMMAND_BUFFER_BEGIN_INFO")+  , (STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO                   , "RENDER_PASS_BEGIN_INFO")+  , (STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER                    , "BUFFER_MEMORY_BARRIER")+  , (STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER                     , "IMAGE_MEMORY_BARRIER")+  , (STRUCTURE_TYPE_MEMORY_BARRIER                           , "MEMORY_BARRIER")+  , (STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO              , "LOADER_INSTANCE_CREATE_INFO")+  , (STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO                , "LOADER_DEVICE_CREATE_INFO")+  , (STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT         , "DIRECTFB_SURFACE_CREATE_INFO_EXT")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT, "PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT")+  , (STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR                      , "IMAGE_RESOLVE_2_KHR")+  , (STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR                  , "BUFFER_IMAGE_COPY_2_KHR")+  , (STRUCTURE_TYPE_IMAGE_BLIT_2_KHR                         , "IMAGE_BLIT_2_KHR")+  , (STRUCTURE_TYPE_IMAGE_COPY_2_KHR                         , "IMAGE_COPY_2_KHR")+  , (STRUCTURE_TYPE_BUFFER_COPY_2_KHR                        , "BUFFER_COPY_2_KHR")+  , (STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR                 , "RESOLVE_IMAGE_INFO_2_KHR")+  , (STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR                    , "BLIT_IMAGE_INFO_2_KHR")+  , (STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR          , "COPY_IMAGE_TO_BUFFER_INFO_2_KHR")+  , (STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR          , "COPY_BUFFER_TO_IMAGE_INFO_2_KHR")+  , (STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR                    , "COPY_IMAGE_INFO_2_KHR")+  , (STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR                   , "COPY_BUFFER_INFO_2_KHR")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT, "PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT")+  , (STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM         , "COPY_COMMAND_TRANSFORM_INFO_QCOM")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT+    , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT+    , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT"+    )+  , ( STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV+    , "PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV+    , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV+    , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV"+    )+  , (STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV      , "DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, "PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT+    , "PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT"+    )+  , (STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT        , "PRIVATE_DATA_SLOT_CREATE_INFO_EXT")+  , (STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT      , "DEVICE_PRIVATE_DATA_CREATE_INFO_EXT")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT, "PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT")+  , (STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR         , "PIPELINE_LIBRARY_CREATE_INFO_KHR")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT+    , "PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT+    , "PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"+    )+  , (STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT, "SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT, "PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT  , "PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT")+  , (STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT     , "DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT")+  , (STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT, "DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT+    , "PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT"+    )+  , (STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM, "RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM")+  , ( STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM+    , "COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT+    , "PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT+    , "PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV+    , "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"+    )+  , (STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV, "GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV")+  , (STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV                    , "GENERATED_COMMANDS_INFO_NV")+  , (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV       , "INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV")+  , (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV             , "INDIRECT_COMMANDS_LAYOUT_TOKEN_NV")+  , (STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV, "GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV")+  , (STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV          , "GRAPHICS_SHADER_GROUP_CREATE_INFO_NV")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV+    , "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT+    , "PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"+    )+  , (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR, "PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR")+  , (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR              , "PIPELINE_EXECUTABLE_STATISTIC_KHR")+  , (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR                   , "PIPELINE_EXECUTABLE_INFO_KHR")+  , (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR             , "PIPELINE_EXECUTABLE_PROPERTIES_KHR")+  , (STRUCTURE_TYPE_PIPELINE_INFO_KHR                              , "PIPELINE_INFO_KHR")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR+    , "PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT+    , "PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT"+    )+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT, "PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT+    , "PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT+    , "PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT"+    )+  , ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT+    , "PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT"+    )+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT, "PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT")+  , (STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT               , "HEADLESS_SURFACE_CREATE_INFO_EXT")+  , (STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT   , "SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT")+  , (STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT , "SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT")+  , (STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT         , "SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT, "PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT+    , "PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"+    )+  , (STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV, "FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV")+  , ( STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV+    , "PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV+    , "PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV+    , "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"+    )+  , (STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV              , "COOPERATIVE_MATRIX_PROPERTIES_NV")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV, "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV")+  , (STRUCTURE_TYPE_VALIDATION_FEATURES_EXT                       , "VALIDATION_FEATURES_EXT")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT           , "PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT")+  , (STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT         , "BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT+    , "PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV+    , "PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"+    )+  , (STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR          , "SURFACE_PROTECTED_CAPABILITIES_KHR")+  , (STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT           , "MEMORY_PRIORITY_ALLOCATE_INFO_EXT")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, "PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT, "PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT+    , "PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT"+    )+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, "PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD, "PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR   , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR+    , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR+    , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR"+    )+  , ( STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR+    , "PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR"+    )+  , (STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR, "FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT+    , "PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT"+    )+  , ( STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT+    , "PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT+    , "PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT"+    )+  , ( STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT+    , "RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT+    , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT+    , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT"+    )+  , (STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT, "METAL_SURFACE_CREATE_INFO_EXT")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR+    , "PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR"+    )+  , (STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA         , "IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA")+  , (STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD  , "SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD")+  , (STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD   , "DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT   , "PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT")+  , (STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL  , "PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL")+  , (STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL               , "PERFORMANCE_OVERRIDE_INFO_INTEL")+  , (STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL          , "PERFORMANCE_STREAM_MARKER_INFO_INTEL")+  , (STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL                 , "PERFORMANCE_MARKER_INFO_INTEL")+  , (STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL         , "INITIALIZE_PERFORMANCE_API_INFO_INTEL")+  , (STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL, "QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL+    , "PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"+    )+  , (STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV        , "QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV")+  , (STRUCTURE_TYPE_CHECKPOINT_DATA_NV                           , "CHECKPOINT_DATA_NV")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV, "PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV")+  , ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV+    , "PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV+    , "PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV+    , "PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV"+    )+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV, "PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV  , "PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV+    , "PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV"+    )+  , (STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT, "PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT")+  , (STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP                   , "PRESENT_FRAME_TOKEN_GGP")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT+    , "PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"+    )+  , ( STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT+    , "PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT+    , "PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"+    )+  , (STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD, "DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD  , "PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD")+  , (STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT               , "CALIBRATED_TIMESTAMP_INFO_EXT")+  , (STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD   , "PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR   , "PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT+    , "PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"+    )+  , (STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT          , "MEMORY_HOST_POINTER_PROPERTIES_EXT")+  , (STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT         , "IMPORT_MEMORY_HOST_POINTER_INFO_EXT")+  , (STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT, "DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT")+  , ( STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT+    , "FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT+    , "PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT"+    )+  , ( STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV+    , "PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV+    , "PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"+    )+  , (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV           , "ACCELERATION_STRUCTURE_INFO_NV")+  , (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV  , "RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV, "PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV")+  , ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV+    , "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"+    )+  , (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV, "WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV")+  , (STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV, "BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV")+  , (STRUCTURE_TYPE_GEOMETRY_AABB_NV                     , "GEOMETRY_AABB_NV")+  , (STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV                , "GEOMETRY_TRIANGLES_NV")+  , (STRUCTURE_TYPE_GEOMETRY_NV                          , "GEOMETRY_NV")+  , (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV, "ACCELERATION_STRUCTURE_CREATE_INFO_NV")+  , (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV  , "RAY_TRACING_PIPELINE_CREATE_INFO_NV")+  , ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV+    , "PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV+    , "PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"+    )+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV, "PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV")+  , ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV+    , "PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR+    , "PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR"+    )+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR, "PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR")+  , (STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT , "SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT")+  , (STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT               , "VALIDATION_CACHE_CREATE_INFO_EXT")+  , (STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT       , "IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT")+  , ( STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT+    , "IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"+    )+  , (STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT, "IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT+    , "PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"+    )+  , (STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT, "DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV+    , "PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"+    )+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV, "PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV")+  , ( STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV+    , "PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"+    )+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR        , "PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR")+  , (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR, "RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR")+  , (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR      , "RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR")+  , (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR          , "RAY_TRACING_PIPELINE_CREATE_INFO_KHR")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR+    , "PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR+    , "PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR"+    )+  , (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR, "ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR")+  , (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR     , "ACCELERATION_STRUCTURE_CREATE_INFO_KHR")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR+    , "PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR+    , "PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR"+    )+  , (STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR, "COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR")+  , (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR, "COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR")+  , (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR          , "COPY_ACCELERATION_STRUCTURE_INFO_KHR")+  , (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR       , "ACCELERATION_STRUCTURE_VERSION_INFO_KHR")+  , (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR           , "ACCELERATION_STRUCTURE_GEOMETRY_KHR")+  , ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR+    , "ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"+    )+  , ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR+    , "ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"+    )+  , (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR , "ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR")+  , (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR , "ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR")+  , (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR , "ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR")+  , (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR, "WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR")+  , (STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV, "PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV")+  , ( STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT+    , "PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT+    , "PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT+    , "PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"+    )+  , (STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT                     , "MULTISAMPLE_PROPERTIES_EXT")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT, "PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT")+  , (STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT, "PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT")+  , (STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT    , "RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT")+  , (STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT                      , "SAMPLE_LOCATIONS_INFO_EXT")+  , ( STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT+    , "DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT"+    )+  , (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT, "WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT+    , "PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT+    , "PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT"+    )+  , (STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID                        , "EXTERNAL_FORMAT_ANDROID")+  , (STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID, "MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID")+  , (STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID    , "IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID")+  , ( STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID+    , "ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"+    )+  , (STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID, "ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID")+  , (STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID     , "ANDROID_HARDWARE_BUFFER_USAGE_ANDROID")+  , (STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT     , "DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT")+  , (STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT   , "DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT")+  , (STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT                     , "DEBUG_UTILS_LABEL_EXT")+  , (STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT           , "DEBUG_UTILS_OBJECT_TAG_INFO_EXT")+  , (STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT          , "DEBUG_UTILS_OBJECT_NAME_INFO_EXT")+  , (STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK             , "MACOS_SURFACE_CREATE_INFO_MVK")+  , (STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK               , "IOS_SURFACE_CREATE_INFO_MVK")+  , (STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR          , "DISPLAY_PLANE_CAPABILITIES_2_KHR")+  , (STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR                  , "DISPLAY_PLANE_INFO_2_KHR")+  , (STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR             , "DISPLAY_MODE_PROPERTIES_2_KHR")+  , (STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR            , "DISPLAY_PLANE_PROPERTIES_2_KHR")+  , (STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR                  , "DISPLAY_PROPERTIES_2_KHR")+  , (STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR                      , "SURFACE_FORMAT_2_KHR")+  , (STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR                , "SURFACE_CAPABILITIES_2_KHR")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR        , "PHYSICAL_DEVICE_SURFACE_INFO_2_KHR")+  , (STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR       , "PERFORMANCE_COUNTER_DESCRIPTION_KHR")+  , (STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR                   , "PERFORMANCE_COUNTER_KHR")+  , (STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR           , "ACQUIRE_PROFILING_LOCK_INFO_KHR")+  , (STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR         , "PERFORMANCE_QUERY_SUBMIT_INFO_KHR")+  , (STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR    , "QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR+    , "PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"+    )+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR, "PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR")+  , (STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR                         , "FENCE_GET_FD_INFO_KHR")+  , (STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR                      , "IMPORT_FENCE_FD_INFO_KHR")+  , (STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR               , "FENCE_GET_WIN32_HANDLE_INFO_KHR")+  , (STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR            , "EXPORT_FENCE_WIN32_HANDLE_INFO_KHR")+  , (STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR            , "IMPORT_FENCE_WIN32_HANDLE_INFO_KHR")+  , (STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR       , "SHARED_PRESENT_SURFACE_CAPABILITIES_KHR")+  , (STRUCTURE_TYPE_HDR_METADATA_EXT                              , "HDR_METADATA_EXT")+  , ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT+    , "PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"+    )+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, "PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT")+  , ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT+    , "PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT+    , "PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"+    )+  , ( STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT+    , "PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT+    , "PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"+    )+  , (STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV, "PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX+    , "PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"+    )+  , (STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE        , "PRESENT_TIMES_INFO_GOOGLE")+  , (STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT, "SWAPCHAIN_COUNTER_CREATE_INFO_EXT")+  , (STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT           , "DISPLAY_EVENT_INFO_EXT")+  , (STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT            , "DEVICE_EVENT_INFO_EXT")+  , (STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT           , "DISPLAY_POWER_INFO_EXT")+  , (STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT       , "SURFACE_CAPABILITIES_2_EXT")+  , ( STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV+    , "PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"+    )+  , (STRUCTURE_TYPE_PRESENT_REGIONS_KHR                 , "PRESENT_REGIONS_KHR")+  , (STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT, "CONDITIONAL_RENDERING_BEGIN_INFO_EXT")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT+    , "PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"+    )+  , ( STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT+    , "COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"+    )+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR, "PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR")+  , (STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR                     , "SEMAPHORE_GET_FD_INFO_KHR")+  , (STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR                  , "IMPORT_SEMAPHORE_FD_INFO_KHR")+  , (STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR           , "SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR")+  , (STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR                   , "D3D12_FENCE_SUBMIT_INFO_KHR")+  , (STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR        , "EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR")+  , (STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR        , "IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR")+  , (STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR    , "WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR")+  , (STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR                        , "MEMORY_GET_FD_INFO_KHR")+  , (STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR                      , "MEMORY_FD_PROPERTIES_KHR")+  , (STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR                     , "IMPORT_MEMORY_FD_INFO_KHR")+  , (STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR              , "MEMORY_GET_WIN32_HANDLE_INFO_KHR")+  , (STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR            , "MEMORY_WIN32_HANDLE_PROPERTIES_KHR")+  , (STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR           , "EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR")+  , (STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR           , "IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT      , "PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT")+  , (STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT               , "IMAGE_VIEW_ASTC_DECODE_MODE_EXT")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT+    , "PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT"+    )+  , (STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN                , "VI_SURFACE_CREATE_INFO_NN")+  , (STRUCTURE_TYPE_VALIDATION_FLAGS_EXT                     , "VALIDATION_FLAGS_EXT")+  , (STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR   , "DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR")+  , (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR            , "DEVICE_GROUP_PRESENT_INFO_KHR")+  , (STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR              , "ACQUIRE_NEXT_IMAGE_INFO_KHR")+  , (STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR     , "BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR")+  , (STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR          , "IMAGE_SWAPCHAIN_CREATE_INFO_KHR")+  , (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR    , "DEVICE_GROUP_PRESENT_CAPABILITIES_KHR")+  , (STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV, "WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV")+  , (STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV       , "EXPORT_MEMORY_WIN32_HANDLE_INFO_NV")+  , (STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV       , "IMPORT_MEMORY_WIN32_HANDLE_INFO_NV")+  , (STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV           , "EXPORT_MEMORY_ALLOCATE_INFO_NV")+  , (STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV     , "EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV+    , "PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"+    )+  , (STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP, "STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP")+  , (STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD , "TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD")+  , (STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX        , "IMAGE_VIEW_ADDRESS_PROPERTIES_NVX")+  , (STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX               , "IMAGE_VIEW_HANDLE_INFO_NVX")+  , ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT+    , "PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT+    , "PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"+    )+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, "PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT")+  , (STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV   , "DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV")+  , (STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV     , "DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV")+  , (STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV      , "DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV")+  , (STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT                   , "DEBUG_MARKER_MARKER_INFO_EXT")+  , (STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT               , "DEBUG_MARKER_OBJECT_TAG_INFO_EXT")+  , (STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT              , "DEBUG_MARKER_OBJECT_NAME_INFO_EXT")+  , ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD+    , "PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"+    )+  , (STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT         , "DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT")+  , (STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR                 , "WIN32_SURFACE_CREATE_INFO_KHR")+  , (STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR               , "ANDROID_SURFACE_CREATE_INFO_KHR")+  , (STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR               , "WAYLAND_SURFACE_CREATE_INFO_KHR")+  , (STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR                   , "XCB_SURFACE_CREATE_INFO_KHR")+  , (STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR                  , "XLIB_SURFACE_CREATE_INFO_KHR")+  , (STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR                      , "DISPLAY_PRESENT_INFO_KHR")+  , (STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR               , "DISPLAY_SURFACE_CREATE_INFO_KHR")+  , (STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR                  , "DISPLAY_MODE_CREATE_INFO_KHR")+  , (STRUCTURE_TYPE_PRESENT_INFO_KHR                              , "PRESENT_INFO_KHR")+  , (STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR                     , "SWAPCHAIN_CREATE_INFO_KHR")+  , (STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO     , "DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO")+  , (STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO   , "MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO")+  , (STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO     , "BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO")+  , (STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO                    , "BUFFER_DEVICE_ADDRESS_INFO")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, "PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES")+  , (STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO                         , "SEMAPHORE_SIGNAL_INFO")+  , (STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO                           , "SEMAPHORE_WAIT_INFO")+  , (STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO                , "TIMELINE_SEMAPHORE_SUBMIT_INFO")+  , (STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO                    , "SEMAPHORE_TYPE_CREATE_INFO")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES , "PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES   , "PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES     , "PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES")+  , (STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT         , "ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT")+  , (STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT           , "ATTACHMENT_REFERENCE_STENCIL_LAYOUT")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES+    , "PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES+    , "PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES+    , "PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"+    )+  , (STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO             , "RENDER_PASS_ATTACHMENT_BEGIN_INFO")+  , (STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO             , "FRAMEBUFFER_ATTACHMENT_IMAGE_INFO")+  , (STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO           , "FRAMEBUFFER_ATTACHMENTS_CREATE_INFO")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, "PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES  , "PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES")+  , (STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO            , "SAMPLER_REDUCTION_MODE_CREATE_INFO")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES+    , "PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"+    )+  , (STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO             , "IMAGE_STENCIL_USAGE_CREATE_INFO")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, "PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES")+  , (STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE   , "SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE")+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES+    , "PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"+    )+  , ( STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT+    , "DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"+    )+  , ( STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO+    , "DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"+    )+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, "PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES  , "PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES")+  , (STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO, "DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES     , "PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES  , "PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES  , "PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES             , "PHYSICAL_DEVICE_DRIVER_PROPERTIES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES         , "PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES")+  , (STRUCTURE_TYPE_SUBPASS_END_INFO                              , "SUBPASS_END_INFO")+  , (STRUCTURE_TYPE_SUBPASS_BEGIN_INFO                            , "SUBPASS_BEGIN_INFO")+  , (STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2                     , "RENDER_PASS_CREATE_INFO_2")+  , (STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2                          , "SUBPASS_DEPENDENCY_2")+  , (STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2                         , "SUBPASS_DESCRIPTION_2")+  , (STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2                        , "ATTACHMENT_REFERENCE_2")+  , (STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2                      , "ATTACHMENT_DESCRIPTION_2")+  , (STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO                 , "IMAGE_FORMAT_LIST_CREATE_INFO")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES         , "PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES           , "PHYSICAL_DEVICE_VULKAN_1_2_FEATURES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES         , "PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES           , "PHYSICAL_DEVICE_VULKAN_1_1_FEATURES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, "PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES")+  , (STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT                 , "DESCRIPTOR_SET_LAYOUT_SUPPORT")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES      , "PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES")+  , (STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES                 , "EXTERNAL_SEMAPHORE_PROPERTIES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO       , "PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO")+  , (STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO                  , "EXPORT_SEMAPHORE_CREATE_INFO")+  , (STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO                      , "EXPORT_FENCE_CREATE_INFO")+  , (STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES                     , "EXTERNAL_FENCE_PROPERTIES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO           , "PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO")+  , (STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO                   , "EXPORT_MEMORY_ALLOCATE_INFO")+  , (STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO             , "EXTERNAL_MEMORY_IMAGE_CREATE_INFO")+  , (STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO            , "EXTERNAL_MEMORY_BUFFER_CREATE_INFO")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES                 , "PHYSICAL_DEVICE_ID_PROPERTIES")+  , (STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES                    , "EXTERNAL_BUFFER_PROPERTIES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO          , "PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO")+  , (STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES              , "EXTERNAL_IMAGE_FORMAT_PROPERTIES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO    , "PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO")+  , (STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO        , "DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO")+  , ( STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES+    , "SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"+    )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES+    , "PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"+    )+  , (STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO       , "IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO")+  , (STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO               , "BIND_IMAGE_PLANE_MEMORY_INFO")+  , (STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO              , "SAMPLER_YCBCR_CONVERSION_INFO")+  , (STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO       , "SAMPLER_YCBCR_CONVERSION_CREATE_INFO")+  , (STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2                        , "DEVICE_QUEUE_INFO_2")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES, "PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES  , "PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES")+  , (STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO                      , "PROTECTED_SUBMIT_INFO")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES , "PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES       , "PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES         , "PHYSICAL_DEVICE_MULTIVIEW_FEATURES")+  , (STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO          , "RENDER_PASS_MULTIVIEW_CREATE_INFO")+  , ( STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO+    , "PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"+    )+  , (STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO                   , "IMAGE_VIEW_USAGE_CREATE_INFO")+  , (STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO, "RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES      , "PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2     , "PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2")+  , (STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2               , "SPARSE_IMAGE_FORMAT_PROPERTIES_2")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2            , "PHYSICAL_DEVICE_MEMORY_PROPERTIES_2")+  , (STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2                      , "QUEUE_FAMILY_PROPERTIES_2")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2            , "PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2")+  , (STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2                      , "IMAGE_FORMAT_PROPERTIES_2")+  , (STRUCTURE_TYPE_FORMAT_PROPERTIES_2                            , "FORMAT_PROPERTIES_2")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2                   , "PHYSICAL_DEVICE_PROPERTIES_2")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2                     , "PHYSICAL_DEVICE_FEATURES_2")+  , (STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2             , "SPARSE_IMAGE_MEMORY_REQUIREMENTS_2")+  , (STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2                          , "MEMORY_REQUIREMENTS_2")+  , (STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2        , "IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2")+  , (STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2               , "IMAGE_MEMORY_REQUIREMENTS_INFO_2")+  , (STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2              , "BUFFER_MEMORY_REQUIREMENTS_INFO_2")+  , (STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO                , "DEVICE_GROUP_DEVICE_CREATE_INFO")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES               , "PHYSICAL_DEVICE_GROUP_PROPERTIES")+  , (STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO            , "BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO")+  , (STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO           , "BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO")+  , (STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO                  , "DEVICE_GROUP_BIND_SPARSE_INFO")+  , (STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO                       , "DEVICE_GROUP_SUBMIT_INFO")+  , (STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO         , "DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO")+  , (STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO            , "DEVICE_GROUP_RENDER_PASS_BEGIN_INFO")+  , (STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO                     , "MEMORY_ALLOCATE_FLAGS_INFO")+  , (STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO                 , "MEMORY_DEDICATED_ALLOCATE_INFO")+  , (STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS                  , "MEMORY_DEDICATED_REQUIREMENTS")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES         , "PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES")+  , (STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO                         , "BIND_IMAGE_MEMORY_INFO")+  , (STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO                        , "BIND_BUFFER_MEMORY_INFO")+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES            , "PHYSICAL_DEVICE_SUBGROUP_PROPERTIES")+  ]++instance Show StructureType where+  showsPrec = enumShowsPrec enumPrefixStructureType+                            showTableStructureType+                            conNameStructureType+                            (\(StructureType x) -> x)+                            (showsPrec 11)++instance Read StructureType where+  readPrec = enumReadPrec enumPrefixStructureType showTableStructureType conNameStructureType StructureType 
src/Vulkan/Core10/Enums/SubpassContents.hs view
@@ -1,22 +1,17 @@ {-# language CPP #-}+-- No documentation found for Chapter "SubpassContents" module Vulkan.Core10.Enums.SubpassContents  (SubpassContents( SUBPASS_CONTENTS_INLINE                                                             , SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS                                                             , ..                                                             )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkSubpassContents - Specify how commands in the first subpass of a -- render pass are provided@@ -32,7 +27,7 @@ -- | 'SUBPASS_CONTENTS_INLINE' specifies that the contents of the subpass -- will be recorded inline in the primary command buffer, and secondary -- command buffers /must/ not be executed within the subpass.-pattern SUBPASS_CONTENTS_INLINE = SubpassContents 0+pattern SUBPASS_CONTENTS_INLINE                    = SubpassContents 0 -- | 'SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS' specifies that the contents -- are recorded in secondary command buffers that will be called from the -- primary command buffer, and@@ -44,18 +39,23 @@ {-# complete SUBPASS_CONTENTS_INLINE,              SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS :: SubpassContents #-} +conNameSubpassContents :: String+conNameSubpassContents = "SubpassContents"++enumPrefixSubpassContents :: String+enumPrefixSubpassContents = "SUBPASS_CONTENTS_"++showTableSubpassContents :: [(SubpassContents, String)]+showTableSubpassContents =+  [(SUBPASS_CONTENTS_INLINE, "INLINE"), (SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS, "SECONDARY_COMMAND_BUFFERS")]+ instance Show SubpassContents where-  showsPrec p = \case-    SUBPASS_CONTENTS_INLINE -> showString "SUBPASS_CONTENTS_INLINE"-    SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS -> showString "SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS"-    SubpassContents x -> showParen (p >= 11) (showString "SubpassContents " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixSubpassContents+                            showTableSubpassContents+                            conNameSubpassContents+                            (\(SubpassContents x) -> x)+                            (showsPrec 11)  instance Read SubpassContents where-  readPrec = parens (choose [("SUBPASS_CONTENTS_INLINE", pure SUBPASS_CONTENTS_INLINE)-                            , ("SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS", pure SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS)]-                     +++-                     prec 10 (do-                       expectP (Ident "SubpassContents")-                       v <- step readPrec-                       pure (SubpassContents v)))+  readPrec = enumReadPrec enumPrefixSubpassContents showTableSubpassContents conNameSubpassContents SubpassContents 
src/Vulkan/Core10/Enums/SubpassContents.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "SubpassContents" module Vulkan.Core10.Enums.SubpassContents  (SubpassContents) where  
src/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs view
@@ -1,29 +1,27 @@ {-# language CPP #-}-module Vulkan.Core10.Enums.SubpassDescriptionFlagBits  ( SubpassDescriptionFlagBits( SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM+-- No documentation found for Chapter "SubpassDescriptionFlagBits"+module Vulkan.Core10.Enums.SubpassDescriptionFlagBits  ( SubpassDescriptionFlags+                                                       , SubpassDescriptionFlagBits( SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM                                                                                    , SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM                                                                                    , SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX                                                                                    , SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX                                                                                    , ..                                                                                    )-                                                       , SubpassDescriptionFlags                                                        ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type SubpassDescriptionFlags = SubpassDescriptionFlagBits+ -- | VkSubpassDescriptionFlagBits - Bitmask specifying usage of a subpass -- -- = Description@@ -45,13 +43,13 @@  -- | 'SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM' specifies that the subpass -- performs shader resolve operations.-pattern SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = SubpassDescriptionFlagBits 0x00000008+pattern SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM          = SubpassDescriptionFlagBits 0x00000008 -- | 'SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM' specifies that the -- framebuffer region is the fragment region, that is, the minimum region -- dependencies are by pixel rather than by sample, such that any fragment -- shader invocation /can/ access any sample associated with that fragment -- shader invocation.-pattern SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = SubpassDescriptionFlagBits 0x00000004+pattern SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM         = SubpassDescriptionFlagBits 0x00000004 -- | 'SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX' specifies that -- shaders compiled for this subpass use per-view positions which only -- differ in value in the x component. Per-view viewport mask /can/ also be@@ -63,26 +61,32 @@ -- against a subpass that includes this bit /must/ write per-view -- attributes to the @*PerViewNV[]@ shader outputs, in addition to the -- non-per-view (e.g. @Position@) outputs.-pattern SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = SubpassDescriptionFlagBits 0x00000001+pattern SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX      = SubpassDescriptionFlagBits 0x00000001 -type SubpassDescriptionFlags = SubpassDescriptionFlagBits+conNameSubpassDescriptionFlagBits :: String+conNameSubpassDescriptionFlagBits = "SubpassDescriptionFlagBits" +enumPrefixSubpassDescriptionFlagBits :: String+enumPrefixSubpassDescriptionFlagBits = "SUBPASS_DESCRIPTION_"++showTableSubpassDescriptionFlagBits :: [(SubpassDescriptionFlagBits, String)]+showTableSubpassDescriptionFlagBits =+  [ (SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM         , "SHADER_RESOLVE_BIT_QCOM")+  , (SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM        , "FRAGMENT_REGION_BIT_QCOM")+  , (SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX, "PER_VIEW_POSITION_X_ONLY_BIT_NVX")+  , (SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX     , "PER_VIEW_ATTRIBUTES_BIT_NVX")+  ]+ instance Show SubpassDescriptionFlagBits where-  showsPrec p = \case-    SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM -> showString "SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM"-    SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM -> showString "SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM"-    SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX -> showString "SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"-    SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX -> showString "SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"-    SubpassDescriptionFlagBits x -> showParen (p >= 11) (showString "SubpassDescriptionFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixSubpassDescriptionFlagBits+                            showTableSubpassDescriptionFlagBits+                            conNameSubpassDescriptionFlagBits+                            (\(SubpassDescriptionFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read SubpassDescriptionFlagBits where-  readPrec = parens (choose [("SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM", pure SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM)-                            , ("SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM", pure SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM)-                            , ("SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX", pure SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX)-                            , ("SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX", pure SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX)]-                     +++-                     prec 10 (do-                       expectP (Ident "SubpassDescriptionFlagBits")-                       v <- step readPrec-                       pure (SubpassDescriptionFlagBits v)))+  readPrec = enumReadPrec enumPrefixSubpassDescriptionFlagBits+                          showTableSubpassDescriptionFlagBits+                          conNameSubpassDescriptionFlagBits+                          SubpassDescriptionFlagBits 
src/Vulkan/Core10/Enums/SystemAllocationScope.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "SystemAllocationScope" module Vulkan.Core10.Enums.SystemAllocationScope  (SystemAllocationScope( SYSTEM_ALLOCATION_SCOPE_COMMAND                                                                         , SYSTEM_ALLOCATION_SCOPE_OBJECT                                                                         , SYSTEM_ALLOCATION_SCOPE_CACHE@@ -7,19 +8,13 @@                                                                         , ..                                                                         )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkSystemAllocationScope - Allocation scope --@@ -95,13 +90,13 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"-pattern SYSTEM_ALLOCATION_SCOPE_COMMAND = SystemAllocationScope 0+pattern SYSTEM_ALLOCATION_SCOPE_COMMAND  = SystemAllocationScope 0 -- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"-pattern SYSTEM_ALLOCATION_SCOPE_OBJECT = SystemAllocationScope 1+pattern SYSTEM_ALLOCATION_SCOPE_OBJECT   = SystemAllocationScope 1 -- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_CACHE"-pattern SYSTEM_ALLOCATION_SCOPE_CACHE = SystemAllocationScope 2+pattern SYSTEM_ALLOCATION_SCOPE_CACHE    = SystemAllocationScope 2 -- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"-pattern SYSTEM_ALLOCATION_SCOPE_DEVICE = SystemAllocationScope 3+pattern SYSTEM_ALLOCATION_SCOPE_DEVICE   = SystemAllocationScope 3 -- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE" pattern SYSTEM_ALLOCATION_SCOPE_INSTANCE = SystemAllocationScope 4 {-# complete SYSTEM_ALLOCATION_SCOPE_COMMAND,@@ -110,24 +105,31 @@              SYSTEM_ALLOCATION_SCOPE_DEVICE,              SYSTEM_ALLOCATION_SCOPE_INSTANCE :: SystemAllocationScope #-} +conNameSystemAllocationScope :: String+conNameSystemAllocationScope = "SystemAllocationScope"++enumPrefixSystemAllocationScope :: String+enumPrefixSystemAllocationScope = "SYSTEM_ALLOCATION_SCOPE_"++showTableSystemAllocationScope :: [(SystemAllocationScope, String)]+showTableSystemAllocationScope =+  [ (SYSTEM_ALLOCATION_SCOPE_COMMAND , "COMMAND")+  , (SYSTEM_ALLOCATION_SCOPE_OBJECT  , "OBJECT")+  , (SYSTEM_ALLOCATION_SCOPE_CACHE   , "CACHE")+  , (SYSTEM_ALLOCATION_SCOPE_DEVICE  , "DEVICE")+  , (SYSTEM_ALLOCATION_SCOPE_INSTANCE, "INSTANCE")+  ]+ instance Show SystemAllocationScope where-  showsPrec p = \case-    SYSTEM_ALLOCATION_SCOPE_COMMAND -> showString "SYSTEM_ALLOCATION_SCOPE_COMMAND"-    SYSTEM_ALLOCATION_SCOPE_OBJECT -> showString "SYSTEM_ALLOCATION_SCOPE_OBJECT"-    SYSTEM_ALLOCATION_SCOPE_CACHE -> showString "SYSTEM_ALLOCATION_SCOPE_CACHE"-    SYSTEM_ALLOCATION_SCOPE_DEVICE -> showString "SYSTEM_ALLOCATION_SCOPE_DEVICE"-    SYSTEM_ALLOCATION_SCOPE_INSTANCE -> showString "SYSTEM_ALLOCATION_SCOPE_INSTANCE"-    SystemAllocationScope x -> showParen (p >= 11) (showString "SystemAllocationScope " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixSystemAllocationScope+                            showTableSystemAllocationScope+                            conNameSystemAllocationScope+                            (\(SystemAllocationScope x) -> x)+                            (showsPrec 11)  instance Read SystemAllocationScope where-  readPrec = parens (choose [("SYSTEM_ALLOCATION_SCOPE_COMMAND", pure SYSTEM_ALLOCATION_SCOPE_COMMAND)-                            , ("SYSTEM_ALLOCATION_SCOPE_OBJECT", pure SYSTEM_ALLOCATION_SCOPE_OBJECT)-                            , ("SYSTEM_ALLOCATION_SCOPE_CACHE", pure SYSTEM_ALLOCATION_SCOPE_CACHE)-                            , ("SYSTEM_ALLOCATION_SCOPE_DEVICE", pure SYSTEM_ALLOCATION_SCOPE_DEVICE)-                            , ("SYSTEM_ALLOCATION_SCOPE_INSTANCE", pure SYSTEM_ALLOCATION_SCOPE_INSTANCE)]-                     +++-                     prec 10 (do-                       expectP (Ident "SystemAllocationScope")-                       v <- step readPrec-                       pure (SystemAllocationScope v)))+  readPrec = enumReadPrec enumPrefixSystemAllocationScope+                          showTableSystemAllocationScope+                          conNameSystemAllocationScope+                          SystemAllocationScope 
src/Vulkan/Core10/Enums/VendorId.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "VendorId" module Vulkan.Core10.Enums.VendorId  (VendorId( VENDOR_ID_VIV                                               , VENDOR_ID_VSI                                               , VENDOR_ID_KAZAN@@ -7,19 +8,13 @@                                               , ..                                               )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkVendorId - Khronos vendor IDs --@@ -44,39 +39,39 @@ -- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error  -- No documentation found for Nested "VkVendorId" "VK_VENDOR_ID_VIV"-pattern VENDOR_ID_VIV = VendorId 65537+pattern VENDOR_ID_VIV      = VendorId 65537 -- No documentation found for Nested "VkVendorId" "VK_VENDOR_ID_VSI"-pattern VENDOR_ID_VSI = VendorId 65538+pattern VENDOR_ID_VSI      = VendorId 65538 -- No documentation found for Nested "VkVendorId" "VK_VENDOR_ID_KAZAN"-pattern VENDOR_ID_KAZAN = VendorId 65539+pattern VENDOR_ID_KAZAN    = VendorId 65539 -- No documentation found for Nested "VkVendorId" "VK_VENDOR_ID_CODEPLAY" pattern VENDOR_ID_CODEPLAY = VendorId 65540 -- No documentation found for Nested "VkVendorId" "VK_VENDOR_ID_MESA"-pattern VENDOR_ID_MESA = VendorId 65541+pattern VENDOR_ID_MESA     = VendorId 65541 {-# complete VENDOR_ID_VIV,              VENDOR_ID_VSI,              VENDOR_ID_KAZAN,              VENDOR_ID_CODEPLAY,              VENDOR_ID_MESA :: VendorId #-} +conNameVendorId :: String+conNameVendorId = "VendorId"++enumPrefixVendorId :: String+enumPrefixVendorId = "VENDOR_ID_"++showTableVendorId :: [(VendorId, String)]+showTableVendorId =+  [ (VENDOR_ID_VIV     , "VIV")+  , (VENDOR_ID_VSI     , "VSI")+  , (VENDOR_ID_KAZAN   , "KAZAN")+  , (VENDOR_ID_CODEPLAY, "CODEPLAY")+  , (VENDOR_ID_MESA    , "MESA")+  ]+ instance Show VendorId where-  showsPrec p = \case-    VENDOR_ID_VIV -> showString "VENDOR_ID_VIV"-    VENDOR_ID_VSI -> showString "VENDOR_ID_VSI"-    VENDOR_ID_KAZAN -> showString "VENDOR_ID_KAZAN"-    VENDOR_ID_CODEPLAY -> showString "VENDOR_ID_CODEPLAY"-    VENDOR_ID_MESA -> showString "VENDOR_ID_MESA"-    VendorId x -> showParen (p >= 11) (showString "VendorId " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixVendorId showTableVendorId conNameVendorId (\(VendorId x) -> x) (showsPrec 11)  instance Read VendorId where-  readPrec = parens (choose [("VENDOR_ID_VIV", pure VENDOR_ID_VIV)-                            , ("VENDOR_ID_VSI", pure VENDOR_ID_VSI)-                            , ("VENDOR_ID_KAZAN", pure VENDOR_ID_KAZAN)-                            , ("VENDOR_ID_CODEPLAY", pure VENDOR_ID_CODEPLAY)-                            , ("VENDOR_ID_MESA", pure VENDOR_ID_MESA)]-                     +++-                     prec 10 (do-                       expectP (Ident "VendorId")-                       v <- step readPrec-                       pure (VendorId v)))+  readPrec = enumReadPrec enumPrefixVendorId showTableVendorId conNameVendorId VendorId 
src/Vulkan/Core10/Enums/VertexInputRate.hs view
@@ -1,22 +1,17 @@ {-# language CPP #-}+-- No documentation found for Chapter "VertexInputRate" module Vulkan.Core10.Enums.VertexInputRate  (VertexInputRate( VERTEX_INPUT_RATE_VERTEX                                                             , VERTEX_INPUT_RATE_INSTANCE                                                             , ..                                                             )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkVertexInputRate - Specify rate at which vertex attributes are pulled -- from buffers@@ -29,25 +24,29 @@  -- | 'VERTEX_INPUT_RATE_VERTEX' specifies that vertex attribute addressing is -- a function of the vertex index.-pattern VERTEX_INPUT_RATE_VERTEX = VertexInputRate 0+pattern VERTEX_INPUT_RATE_VERTEX   = VertexInputRate 0 -- | 'VERTEX_INPUT_RATE_INSTANCE' specifies that vertex attribute addressing -- is a function of the instance index. pattern VERTEX_INPUT_RATE_INSTANCE = VertexInputRate 1 {-# complete VERTEX_INPUT_RATE_VERTEX,              VERTEX_INPUT_RATE_INSTANCE :: VertexInputRate #-} +conNameVertexInputRate :: String+conNameVertexInputRate = "VertexInputRate"++enumPrefixVertexInputRate :: String+enumPrefixVertexInputRate = "VERTEX_INPUT_RATE_"++showTableVertexInputRate :: [(VertexInputRate, String)]+showTableVertexInputRate = [(VERTEX_INPUT_RATE_VERTEX, "VERTEX"), (VERTEX_INPUT_RATE_INSTANCE, "INSTANCE")]+ instance Show VertexInputRate where-  showsPrec p = \case-    VERTEX_INPUT_RATE_VERTEX -> showString "VERTEX_INPUT_RATE_VERTEX"-    VERTEX_INPUT_RATE_INSTANCE -> showString "VERTEX_INPUT_RATE_INSTANCE"-    VertexInputRate x -> showParen (p >= 11) (showString "VertexInputRate " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixVertexInputRate+                            showTableVertexInputRate+                            conNameVertexInputRate+                            (\(VertexInputRate x) -> x)+                            (showsPrec 11)  instance Read VertexInputRate where-  readPrec = parens (choose [("VERTEX_INPUT_RATE_VERTEX", pure VERTEX_INPUT_RATE_VERTEX)-                            , ("VERTEX_INPUT_RATE_INSTANCE", pure VERTEX_INPUT_RATE_INSTANCE)]-                     +++-                     prec 10 (do-                       expectP (Ident "VertexInputRate")-                       v <- step readPrec-                       pure (VertexInputRate v)))+  readPrec = enumReadPrec enumPrefixVertexInputRate showTableVertexInputRate conNameVertexInputRate VertexInputRate 
src/Vulkan/Core10/Event.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Event" module Vulkan.Core10.Event  ( createEvent                             , withEvent                             , destroyEvent@@ -149,10 +150,10 @@ -- -- To ensure that 'destroyEvent' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withEvent :: forall io r . MonadIO io => Device -> EventCreateInfo -> Maybe AllocationCallbacks -> (io (Event) -> ((Event) -> io ()) -> r) -> r+withEvent :: forall io r . MonadIO io => Device -> EventCreateInfo -> Maybe AllocationCallbacks -> (io Event -> (Event -> io ()) -> r) -> r withEvent device pCreateInfo pAllocator b =   b (createEvent device pCreateInfo pAllocator)     (\(o0) -> destroyEvent device o0 pAllocator)
src/Vulkan/Core10/Event.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Event" module Vulkan.Core10.Event  (EventCreateInfo) where  import Data.Kind (Type)
src/Vulkan/Core10/ExtensionDiscovery.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "ExtensionDiscovery" module Vulkan.Core10.ExtensionDiscovery  ( enumerateInstanceExtensionProperties                                          , enumerateDeviceExtensionProperties                                          , ExtensionProperties(..)
src/Vulkan/Core10/ExtensionDiscovery.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "ExtensionDiscovery" module Vulkan.Core10.ExtensionDiscovery  (ExtensionProperties) where  import Data.Kind (Type)
src/Vulkan/Core10/Fence.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Fence" module Vulkan.Core10.Fence  ( createFence                             , withFence                             , destroyFence@@ -159,10 +160,10 @@ -- -- To ensure that 'destroyFence' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withFence :: forall a io r . (Extendss FenceCreateInfo a, PokeChain a, MonadIO io) => Device -> FenceCreateInfo a -> Maybe AllocationCallbacks -> (io (Fence) -> ((Fence) -> io ()) -> r) -> r+withFence :: forall a io r . (Extendss FenceCreateInfo a, PokeChain a, MonadIO io) => Device -> FenceCreateInfo a -> Maybe AllocationCallbacks -> (io Fence -> (Fence -> io ()) -> r) -> r withFence device pCreateInfo pAllocator b =   b (createFence device pCreateInfo pAllocator)     (\(o0) -> destroyFence device o0 pAllocator)
src/Vulkan/Core10/Fence.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Fence" module Vulkan.Core10.Fence  (FenceCreateInfo) where  import Data.Kind (Type)
src/Vulkan/Core10/FuncPointers.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "FuncPointers" module Vulkan.Core10.FuncPointers  ( PFN_vkInternalAllocationNotification                                    , FN_vkInternalAllocationNotification                                    , PFN_vkInternalFreeNotification
src/Vulkan/Core10/FuncPointers.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "FuncPointers" module Vulkan.Core10.FuncPointers  ( PFN_vkVoidFunction                                    , FN_vkVoidFunction                                    ) where
src/Vulkan/Core10/FundamentalTypes.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "FundamentalTypes" module Vulkan.Core10.FundamentalTypes  ( boolToBool32                                        , bool32ToBool                                        , Offset2D(..)@@ -18,20 +19,12 @@                                        , Result(..)                                        ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Data.Bool (bool) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step)-import Control.Monad.Trans.Class (lift)-import Control.Monad.Trans.Cont (evalContT) import Data.Typeable (Typeable) import Foreign.Storable (Storable) import Foreign.Storable (Storable(peek))@@ -41,11 +34,10 @@ import Data.Int (Int32) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32) import Data.Word (Word64)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type)-import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.CStruct (FromCStruct) import Vulkan.CStruct (FromCStruct(..)) import Vulkan.CStruct (ToCStruct)@@ -341,16 +333,16 @@  instance ToCStruct Rect2D where   withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p Rect2D{..} f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Offset2D)) (offset) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (extent) . ($ ())-    lift $ f+  pokeCStruct p Rect2D{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Offset2D)) (offset)+    poke ((p `plusPtr` 8 :: Ptr Extent2D)) (extent)+    f   cStructSize = 16   cStructAlignment = 4-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Offset2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Offset2D)) (zero)+    poke ((p `plusPtr` 8 :: Ptr Extent2D)) (zero)+    f  instance FromCStruct Rect2D where   peekCStruct p = do@@ -359,6 +351,12 @@     pure $ Rect2D              offset extent +instance Storable Rect2D where+  sizeOf ~_ = 16+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero Rect2D where   zero = Rect2D            zero@@ -380,9 +378,7 @@ -- -- = See Also ----- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureBuildGeometryInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateGeometryTypeInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryInstancesDataKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryInstancesDataKHR', -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT', -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo', -- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV',@@ -400,6 +396,7 @@ -- 'Vulkan.Extensions.VK_EXT_4444_formats.PhysicalDevice4444FormatsFeaturesEXT', -- 'Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage.PhysicalDevice8BitStorageFeatures', -- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.PhysicalDeviceASTCDecodeFeaturesEXT',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructureFeaturesKHR', -- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedFeaturesEXT', -- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT', -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',@@ -454,7 +451,8 @@ -- 'Vulkan.Extensions.VK_EXT_private_data.PhysicalDevicePrivateDataFeaturesEXT', -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures', -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingFeaturesKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR', -- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV', -- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2FeaturesEXT', -- 'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',@@ -533,24 +531,24 @@ -- No documentation found for Nested "VkBool32" "VK_FALSE" pattern FALSE = Bool32 0 -- No documentation found for Nested "VkBool32" "VK_TRUE"-pattern TRUE = Bool32 1+pattern TRUE  = Bool32 1 {-# complete FALSE,              TRUE :: Bool32 #-} +conNameBool32 :: String+conNameBool32 = "Bool32"++enumPrefixBool32 :: String+enumPrefixBool32 = ""++showTableBool32 :: [(Bool32, String)]+showTableBool32 = [(FALSE, "FALSE"), (TRUE, "TRUE")]+ instance Show Bool32 where-  showsPrec p = \case-    FALSE -> showString "FALSE"-    TRUE -> showString "TRUE"-    Bool32 x -> showParen (p >= 11) (showString "Bool32 " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixBool32 showTableBool32 conNameBool32 (\(Bool32 x) -> x) (showsPrec 11)  instance Read Bool32 where-  readPrec = parens (choose [("FALSE", pure FALSE)-                            , ("TRUE", pure TRUE)]-                     +++-                     prec 10 (do-                       expectP (Ident "Bool32")-                       v <- step readPrec-                       pure (Bool32 v)))+  readPrec = enumReadPrec enumPrefixBool32 showTableBool32 conNameBool32 Bool32   -- | VkSampleMask - Mask of sample coverage information@@ -610,12 +608,13 @@ -- -- = See Also ----- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildSizesInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryAabbsDataKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryTrianglesDataKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryAabbsDataKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR', -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.BindAccelerationStructureMemoryInfoKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV', -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo', -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo', -- 'Vulkan.Core10.CommandBufferBuilding.BufferCopy',@@ -649,7 +648,7 @@ -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind', -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements', -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.StridedBufferRegionKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR', -- 'Vulkan.Core10.Image.SubresourceLayout', -- 'Vulkan.Core10.MemoryManagement.bindBufferMemory', -- 'Vulkan.Core10.MemoryManagement.bindImageMemory',@@ -658,7 +657,6 @@ -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT', -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureIndirectKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV', -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults', -- 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',@@ -675,7 +673,6 @@ -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV', -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT', -- 'Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysIndirectKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV', -- 'Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer', -- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',@@ -689,12 +686,15 @@ -- -- = See Also ----- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindIndexBufferIndirectCommandNV', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindVertexBufferIndirectCommandNV', -- 'Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressConstKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressKHR',--- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX'+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR',+-- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresIndirectKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysIndirectKHR' type DeviceAddress = Word64 
src/Vulkan/Core10/FundamentalTypes.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "FundamentalTypes" module Vulkan.Core10.FundamentalTypes  ( Extent2D                                        , Extent3D                                        , Offset2D@@ -60,13 +61,16 @@ -- -- = See Also ----- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindIndexBufferIndirectCommandNV', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindVertexBufferIndirectCommandNV', -- 'Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressConstKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressKHR',--- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX'+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR',+-- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresIndirectKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysIndirectKHR' type DeviceAddress = Word64  @@ -74,12 +78,13 @@ -- -- = See Also ----- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildSizesInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryAabbsDataKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryTrianglesDataKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryAabbsDataKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR', -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.BindAccelerationStructureMemoryInfoKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV', -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo', -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo', -- 'Vulkan.Core10.CommandBufferBuilding.BufferCopy',@@ -113,7 +118,7 @@ -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind', -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements', -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.StridedBufferRegionKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR', -- 'Vulkan.Core10.Image.SubresourceLayout', -- 'Vulkan.Core10.MemoryManagement.bindBufferMemory', -- 'Vulkan.Core10.MemoryManagement.bindImageMemory',@@ -122,7 +127,6 @@ -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT', -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureIndirectKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV', -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults', -- 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',@@ -139,7 +143,6 @@ -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV', -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT', -- 'Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysIndirectKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV', -- 'Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer', -- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',
src/Vulkan/Core10/Handles.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Handles" module Vulkan.Core10.Handles  ( Instance(..)                               , Instance_T                               , PhysicalDevice(..)@@ -215,7 +216,6 @@ -- 'Vulkan.Core10.CommandBuffer.allocateCommandBuffers', -- 'Vulkan.Core10.DescriptorSet.allocateDescriptorSets', -- 'Vulkan.Core10.Memory.allocateMemory',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.bindAccelerationStructureMemoryKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.bindAccelerationStructureMemoryNV', -- 'Vulkan.Core10.MemoryManagement.bindBufferMemory', -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindBufferMemory2',@@ -223,12 +223,12 @@ -- 'Vulkan.Core10.MemoryManagement.bindImageMemory', -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindImageMemory2', -- 'Vulkan.Extensions.VK_KHR_bind_memory2.bindImageMemory2KHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.buildAccelerationStructureKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.buildAccelerationStructuresKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.copyAccelerationStructureKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.copyAccelerationStructureToMemoryKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.copyMemoryToAccelerationStructureKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.createAccelerationStructureKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.copyAccelerationStructureKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.copyAccelerationStructureToMemoryKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.copyMemoryToAccelerationStructureKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.createAccelerationStructureKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV', -- 'Vulkan.Core10.Buffer.createBuffer', -- 'Vulkan.Core10.BufferView.createBufferView',@@ -250,7 +250,7 @@ -- 'Vulkan.Core10.PipelineLayout.createPipelineLayout', -- 'Vulkan.Extensions.VK_EXT_private_data.createPrivateDataSlotEXT', -- 'Vulkan.Core10.Query.createQueryPool',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.createRayTracingPipelinesKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV', -- 'Vulkan.Core10.Pass.createRenderPass', -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.createRenderPass2',@@ -266,7 +266,7 @@ -- 'Vulkan.Extensions.VK_EXT_debug_marker.debugMarkerSetObjectNameEXT', -- 'Vulkan.Extensions.VK_EXT_debug_marker.debugMarkerSetObjectTagEXT', -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.deferredOperationJoinKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.destroyAccelerationStructureKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.destroyAccelerationStructureKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.destroyAccelerationStructureNV', -- 'Vulkan.Core10.Buffer.destroyBuffer', -- 'Vulkan.Core10.BufferView.destroyBufferView',@@ -301,9 +301,9 @@ -- 'Vulkan.Core10.CommandBuffer.freeCommandBuffers', -- 'Vulkan.Core10.DescriptorSet.freeDescriptorSets', -- 'Vulkan.Core10.Memory.freeMemory',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.getAccelerationStructureDeviceAddressKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureBuildSizesKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.getAccelerationStructureMemoryRequirementsKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureMemoryRequirementsNV', -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getAndroidHardwareBufferPropertiesANDROID', -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress',@@ -319,7 +319,7 @@ -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.getDeferredOperationResultKHR', -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport', -- 'Vulkan.Extensions.VK_KHR_maintenance3.getDescriptorSetLayoutSupportKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.getDeviceAccelerationStructureCompatibilityKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.getDeviceAccelerationStructureCompatibilityKHR', -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.getDeviceGroupPeerMemoryFeatures', -- 'Vulkan.Extensions.VK_KHR_device_group.getDeviceGroupPeerMemoryFeaturesKHR', -- 'Vulkan.Extensions.VK_KHR_swapchain.getDeviceGroupPresentCapabilitiesKHR',@@ -361,9 +361,10 @@ -- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableStatisticsKHR', -- 'Vulkan.Extensions.VK_EXT_private_data.getPrivateDataEXT', -- 'Vulkan.Core10.Query.getQueryPoolResults',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.getRayTracingCaptureReplayShaderGroupHandlesKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.getRayTracingShaderGroupHandlesKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingCaptureReplayShaderGroupHandlesKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingShaderGroupHandlesKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.getRayTracingShaderGroupHandlesNV',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingShaderGroupStackSizeKHR', -- 'Vulkan.Extensions.VK_GOOGLE_display_timing.getRefreshCycleDurationGOOGLE', -- 'Vulkan.Core10.Pass.getRenderAreaGranularity', -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.getSemaphoreCounterValue',@@ -412,7 +413,7 @@ -- 'Vulkan.Core10.Fence.waitForFences', -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.waitSemaphores', -- 'Vulkan.Extensions.VK_KHR_timeline_semaphore.waitSemaphoresKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.writeAccelerationStructuresPropertiesKHR'+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.writeAccelerationStructuresPropertiesKHR' data Device = Device   { deviceHandle :: Ptr Device_T   , deviceCmds :: DeviceCmds@@ -480,15 +481,15 @@ -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT', -- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage', -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureIndirectKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresIndirectKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresKHR', -- 'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments', -- 'Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage', -- 'Vulkan.Core10.CommandBufferBuilding.cmdClearDepthStencilImage',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdCopyAccelerationStructureKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyAccelerationStructureKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdCopyAccelerationStructureToMemoryKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyAccelerationStructureToMemoryKHR', -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBuffer', -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyBuffer2KHR', -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',@@ -497,7 +498,7 @@ -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImage2KHR', -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer', -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImageToBuffer2KHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdCopyMemoryToAccelerationStructureKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyMemoryToAccelerationStructureKHR', -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults', -- 'Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerBeginEXT', -- 'Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerEndEXT',@@ -568,6 +569,7 @@ -- 'Vulkan.Extensions.VK_INTEL_performance_query.cmdSetPerformanceOverrideINTEL', -- 'Vulkan.Extensions.VK_INTEL_performance_query.cmdSetPerformanceStreamMarkerINTEL', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdSetRayTracingPipelineStackSizeKHR', -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT', -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT',@@ -580,12 +582,12 @@ -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV', -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysIndirectKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysIndirectKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV', -- 'Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer', -- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdWriteAccelerationStructuresPropertiesKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV', -- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD', -- 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp',@@ -608,7 +610,7 @@ -- -- = See Also ----- 'Vulkan.Extensions.VK_KHR_ray_tracing.BindAccelerationStructureMemoryInfoKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV', -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo', -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo', -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.DeviceMemoryOpaqueCaptureAddressInfo',@@ -660,6 +662,7 @@ -- -- = See Also --+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR', -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo', -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferDeviceAddressInfo', -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',@@ -677,14 +680,12 @@ -- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV', -- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo', -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseBufferMemoryBindInfo',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.StridedBufferRegionKHR', -- 'Vulkan.Core10.MemoryManagement.bindBufferMemory', -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT', -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer', -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT', -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureIndirectKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV', -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBuffer', -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',@@ -704,7 +705,6 @@ -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV', -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT', -- 'Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysIndirectKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV', -- 'Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer', -- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',@@ -826,19 +826,20 @@ -- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInfoKHR', -- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineInfoKHR', -- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV', -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdBindPipelineShaderGroupNV', -- 'Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV', -- 'Vulkan.Core10.Pipeline.createComputePipelines', -- 'Vulkan.Core10.Pipeline.createGraphicsPipelines',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.createRayTracingPipelinesKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV', -- 'Vulkan.Core10.Pipeline.destroyPipeline',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.getRayTracingCaptureReplayShaderGroupHandlesKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.getRayTracingShaderGroupHandlesKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingCaptureReplayShaderGroupHandlesKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingShaderGroupHandlesKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.getRayTracingShaderGroupHandlesNV',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingShaderGroupStackSizeKHR', -- 'Vulkan.Extensions.VK_AMD_shader_info.getShaderInfoAMD' newtype Pipeline = Pipeline Word64   deriving newtype (Eq, Ord, Storable, Zero)@@ -857,7 +858,7 @@ -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo', -- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV', -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', -- 'Vulkan.Core10.CommandBufferBuilding.cmdPushConstants',@@ -1031,7 +1032,7 @@ -- 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery', -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT', -- 'Vulkan.Core10.CommandBufferBuilding.cmdResetQueryPool',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdWriteAccelerationStructuresPropertiesKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV', -- 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp', -- 'Vulkan.Core10.Query.createQueryPool',@@ -1094,7 +1095,7 @@ -- 'Vulkan.Core10.Pipeline.createComputePipelines', -- 'Vulkan.Core10.Pipeline.createGraphicsPipelines', -- 'Vulkan.Core10.PipelineCache.createPipelineCache',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.createRayTracingPipelinesKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV', -- 'Vulkan.Core10.PipelineCache.destroyPipelineCache', -- 'Vulkan.Core10.PipelineCache.getPipelineCacheData',
src/Vulkan/Core10/Handles.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Handles" module Vulkan.Core10.Handles  ( Buffer                               , BufferView                               , CommandBuffer
src/Vulkan/Core10/Image.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Image" module Vulkan.Core10.Image  ( createImage                             , withImage                             , destroyImage@@ -180,10 +181,10 @@ -- -- To ensure that 'destroyImage' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withImage :: forall a io r . (Extendss ImageCreateInfo a, PokeChain a, MonadIO io) => Device -> ImageCreateInfo a -> Maybe AllocationCallbacks -> (io (Image) -> ((Image) -> io ()) -> r) -> r+withImage :: forall a io r . (Extendss ImageCreateInfo a, PokeChain a, MonadIO io) => Device -> ImageCreateInfo a -> Maybe AllocationCallbacks -> (io Image -> (Image -> io ()) -> r) -> r withImage device pCreateInfo pAllocator b =   b (createImage device pCreateInfo pAllocator)     (\(o0) -> destroyImage device o0 pAllocator)@@ -1439,7 +1440,7 @@     lift $ poke ((p `plusPtr` 16 :: Ptr ImageCreateFlags)) (flags)     lift $ poke ((p `plusPtr` 20 :: Ptr ImageType)) (imageType)     lift $ poke ((p `plusPtr` 24 :: Ptr Format)) (format)-    ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr Extent3D)) (extent) . ($ ())+    lift $ poke ((p `plusPtr` 28 :: Ptr Extent3D)) (extent)     lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (mipLevels)     lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (arrayLayers)     lift $ poke ((p `plusPtr` 48 :: Ptr SampleCountFlagBits)) (samples)@@ -1460,7 +1461,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'     lift $ poke ((p `plusPtr` 20 :: Ptr ImageType)) (zero)     lift $ poke ((p `plusPtr` 24 :: Ptr Format)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr Extent3D)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 28 :: Ptr Extent3D)) (zero)     lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)     lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)     lift $ poke ((p `plusPtr` 48 :: Ptr SampleCountFlagBits)) (zero)
src/Vulkan/Core10/Image.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Image" module Vulkan.Core10.Image  ( ImageCreateInfo                             , SubresourceLayout                             ) where
src/Vulkan/Core10/ImageView.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "ImageView" module Vulkan.Core10.ImageView  ( createImageView                                 , withImageView                                 , destroyImageView@@ -159,10 +160,10 @@ -- -- To ensure that 'destroyImageView' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withImageView :: forall a io r . (Extendss ImageViewCreateInfo a, PokeChain a, MonadIO io) => Device -> ImageViewCreateInfo a -> Maybe AllocationCallbacks -> (io (ImageView) -> ((ImageView) -> io ()) -> r) -> r+withImageView :: forall a io r . (Extendss ImageViewCreateInfo a, PokeChain a, MonadIO io) => Device -> ImageViewCreateInfo a -> Maybe AllocationCallbacks -> (io ImageView -> (ImageView -> io ()) -> r) -> r withImageView device pCreateInfo pAllocator b =   b (createImageView device pCreateInfo pAllocator)     (\(o0) -> destroyImageView device o0 pAllocator)@@ -1231,8 +1232,8 @@     lift $ poke ((p `plusPtr` 24 :: Ptr Image)) (image)     lift $ poke ((p `plusPtr` 32 :: Ptr ImageViewType)) (viewType)     lift $ poke ((p `plusPtr` 36 :: Ptr Format)) (format)-    ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr ComponentMapping)) (components) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr ImageSubresourceRange)) (subresourceRange) . ($ ())+    lift $ poke ((p `plusPtr` 40 :: Ptr ComponentMapping)) (components)+    lift $ poke ((p `plusPtr` 56 :: Ptr ImageSubresourceRange)) (subresourceRange)     lift $ f   cStructSize = 80   cStructAlignment = 8@@ -1243,8 +1244,8 @@     lift $ poke ((p `plusPtr` 24 :: Ptr Image)) (zero)     lift $ poke ((p `plusPtr` 32 :: Ptr ImageViewType)) (zero)     lift $ poke ((p `plusPtr` 36 :: Ptr Format)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr ComponentMapping)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr ImageSubresourceRange)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 40 :: Ptr ComponentMapping)) (zero)+    lift $ poke ((p `plusPtr` 56 :: Ptr ImageSubresourceRange)) (zero)     lift $ f  instance (Extendss ImageViewCreateInfo es, PeekChain es) => FromCStruct (ImageViewCreateInfo es) where
src/Vulkan/Core10/ImageView.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "ImageView" module Vulkan.Core10.ImageView  ( ComponentMapping                                 , ImageSubresourceRange                                 , ImageViewCreateInfo
src/Vulkan/Core10/LayerDiscovery.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "LayerDiscovery" module Vulkan.Core10.LayerDiscovery  ( enumerateInstanceLayerProperties                                      , enumerateDeviceLayerProperties                                      , LayerProperties(..)
src/Vulkan/Core10/LayerDiscovery.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "LayerDiscovery" module Vulkan.Core10.LayerDiscovery  (LayerProperties) where  import Data.Kind (Type)
src/Vulkan/Core10/Memory.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Memory" module Vulkan.Core10.Memory  ( allocateMemory                              , withMemory                              , freeMemory@@ -263,10 +264,10 @@ -- -- To ensure that 'freeMemory' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withMemory :: forall a io r . (Extendss MemoryAllocateInfo a, PokeChain a, MonadIO io) => Device -> MemoryAllocateInfo a -> Maybe AllocationCallbacks -> (io (DeviceMemory) -> ((DeviceMemory) -> io ()) -> r) -> r+withMemory :: forall a io r . (Extendss MemoryAllocateInfo a, PokeChain a, MonadIO io) => Device -> MemoryAllocateInfo a -> Maybe AllocationCallbacks -> (io DeviceMemory -> (DeviceMemory -> io ()) -> r) -> r withMemory device pAllocateInfo pAllocator b =   b (allocateMemory device pAllocateInfo pAllocator)     (\(o0) -> freeMemory device o0 pAllocator)@@ -514,10 +515,10 @@ -- -- To ensure that 'unmapMemory' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withMappedMemory :: forall io r . MonadIO io => Device -> DeviceMemory -> DeviceSize -> DeviceSize -> MemoryMapFlags -> (io (Ptr ()) -> ((Ptr ()) -> io ()) -> r) -> r+withMappedMemory :: forall io r . MonadIO io => Device -> DeviceMemory -> DeviceSize -> DeviceSize -> MemoryMapFlags -> (io (Ptr ()) -> (Ptr () -> io ()) -> r) -> r withMappedMemory device memory offset size flags b =   b (mapMemory device memory offset size flags)     (\(_) -> unmapMemory device memory)@@ -646,7 +647,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkFlushMappedMemoryRanges is null" Nothing Nothing   let vkFlushMappedMemoryRanges' = mkVkFlushMappedMemoryRanges vkFlushMappedMemoryRangesPtr   pPMemoryRanges <- ContT $ allocaBytesAligned @MappedMemoryRange ((Data.Vector.length (memoryRanges)) * 40) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPMemoryRanges `plusPtr` (40 * (i)) :: Ptr MappedMemoryRange) (e) . ($ ())) (memoryRanges)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryRanges `plusPtr` (40 * (i)) :: Ptr MappedMemoryRange) (e)) (memoryRanges)   r <- lift $ vkFlushMappedMemoryRanges' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (memoryRanges)) :: Word32)) (pPMemoryRanges)   lift $ when (r < SUCCESS) (throwIO (VulkanException r)) @@ -718,7 +719,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkInvalidateMappedMemoryRanges is null" Nothing Nothing   let vkInvalidateMappedMemoryRanges' = mkVkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRangesPtr   pPMemoryRanges <- ContT $ allocaBytesAligned @MappedMemoryRange ((Data.Vector.length (memoryRanges)) * 40) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPMemoryRanges `plusPtr` (40 * (i)) :: Ptr MappedMemoryRange) (e) . ($ ())) (memoryRanges)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryRanges `plusPtr` (40 * (i)) :: Ptr MappedMemoryRange) (e)) (memoryRanges)   r <- lift $ vkInvalidateMappedMemoryRanges' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (memoryRanges)) :: Word32)) (pPMemoryRanges)   lift $ when (r < SUCCESS) (throwIO (VulkanException r)) 
src/Vulkan/Core10/Memory.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Memory" module Vulkan.Core10.Memory  ( MappedMemoryRange                              , MemoryAllocateInfo                              ) where
src/Vulkan/Core10/MemoryManagement.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "MemoryManagement" module Vulkan.Core10.MemoryManagement  ( getBufferMemoryRequirements                                        , bindBufferMemory                                        , getImageMemoryRequirements
src/Vulkan/Core10/MemoryManagement.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "MemoryManagement" module Vulkan.Core10.MemoryManagement  (MemoryRequirements) where  import Data.Kind (Type)
src/Vulkan/Core10/OtherTypes.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "OtherTypes" module Vulkan.Core10.OtherTypes  ( MemoryBarrier(..)                                  , BufferMemoryBarrier(..)                                  , ImageMemoryBarrier(..)@@ -739,7 +740,7 @@     lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (srcQueueFamilyIndex)     lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (dstQueueFamilyIndex)     lift $ poke ((p `plusPtr` 40 :: Ptr Image)) (image)-    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr ImageSubresourceRange)) (subresourceRange) . ($ ())+    lift $ poke ((p `plusPtr` 48 :: Ptr ImageSubresourceRange)) (subresourceRange)     lift $ f   cStructSize = 72   cStructAlignment = 8@@ -754,7 +755,7 @@     lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)     lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)     lift $ poke ((p `plusPtr` 40 :: Ptr Image)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr ImageSubresourceRange)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 48 :: Ptr ImageSubresourceRange)) (zero)     lift $ f  instance (Extendss ImageMemoryBarrier es, PeekChain es) => FromCStruct (ImageMemoryBarrier es) where
src/Vulkan/Core10/OtherTypes.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "OtherTypes" module Vulkan.Core10.OtherTypes  ( BufferMemoryBarrier                                  , DispatchIndirectCommand                                  , DrawIndexedIndirectCommand
src/Vulkan/Core10/Pass.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Pass" module Vulkan.Core10.Pass  ( createFramebuffer                            , withFramebuffer                            , destroyFramebuffer@@ -223,10 +224,10 @@ -- -- To ensure that 'destroyFramebuffer' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withFramebuffer :: forall a io r . (Extendss FramebufferCreateInfo a, PokeChain a, MonadIO io) => Device -> FramebufferCreateInfo a -> Maybe AllocationCallbacks -> (io (Framebuffer) -> ((Framebuffer) -> io ()) -> r) -> r+withFramebuffer :: forall a io r . (Extendss FramebufferCreateInfo a, PokeChain a, MonadIO io) => Device -> FramebufferCreateInfo a -> Maybe AllocationCallbacks -> (io Framebuffer -> (Framebuffer -> io ()) -> r) -> r withFramebuffer device pCreateInfo pAllocator b =   b (createFramebuffer device pCreateInfo pAllocator)     (\(o0) -> destroyFramebuffer device o0 pAllocator)@@ -377,10 +378,10 @@ -- -- To ensure that 'destroyRenderPass' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withRenderPass :: forall a io r . (Extendss RenderPassCreateInfo a, PokeChain a, MonadIO io) => Device -> RenderPassCreateInfo a -> Maybe AllocationCallbacks -> (io (RenderPass) -> ((RenderPass) -> io ()) -> r) -> r+withRenderPass :: forall a io r . (Extendss RenderPassCreateInfo a, PokeChain a, MonadIO io) => Device -> RenderPassCreateInfo a -> Maybe AllocationCallbacks -> (io RenderPass -> (RenderPass -> io ()) -> r) -> r withRenderPass device pCreateInfo pAllocator b =   b (createRenderPass device pCreateInfo pAllocator)     (\(o0) -> destroyRenderPass device o0 pAllocator)@@ -1342,7 +1343,7 @@     lift $ poke ((p `plusPtr` 4 :: Ptr PipelineBindPoint)) (pipelineBindPoint)     lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (inputAttachments)) :: Word32))     pPInputAttachments' <- ContT $ allocaBytesAligned @AttachmentReference ((Data.Vector.length (inputAttachments)) * 8) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInputAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e) . ($ ())) (inputAttachments)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPInputAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e)) (inputAttachments)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr AttachmentReference))) (pPInputAttachments')     let pColorAttachmentsLength = Data.Vector.length $ (colorAttachments)     let pResolveAttachmentsLength = Data.Vector.length $ (resolveAttachments)@@ -1350,13 +1351,13 @@       throwIO $ IOError Nothing InvalidArgument "" "pResolveAttachments and pColorAttachments must have the same length" Nothing Nothing     lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral pColorAttachmentsLength :: Word32))     pPColorAttachments' <- ContT $ allocaBytesAligned @AttachmentReference ((Data.Vector.length (colorAttachments)) * 8) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPColorAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e) . ($ ())) (colorAttachments)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPColorAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e)) (colorAttachments)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr AttachmentReference))) (pPColorAttachments')     pResolveAttachments'' <- if Data.Vector.null (resolveAttachments)       then pure nullPtr       else do         pPResolveAttachments <- ContT $ allocaBytesAligned @AttachmentReference (((Data.Vector.length (resolveAttachments))) * 8) 4-        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPResolveAttachments `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e) . ($ ())) ((resolveAttachments))+        lift $ Data.Vector.imapM_ (\i e -> poke (pPResolveAttachments `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e)) ((resolveAttachments))         pure $ pPResolveAttachments     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr AttachmentReference))) pResolveAttachments''     pDepthStencilAttachment'' <- case (depthStencilAttachment) of@@ -1373,10 +1374,10 @@   pokeZeroCStruct p f = evalContT $ do     lift $ poke ((p `plusPtr` 4 :: Ptr PipelineBindPoint)) (zero)     pPInputAttachments' <- ContT $ allocaBytesAligned @AttachmentReference ((Data.Vector.length (mempty)) * 8) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInputAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPInputAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e)) (mempty)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr AttachmentReference))) (pPInputAttachments')     pPColorAttachments' <- ContT $ allocaBytesAligned @AttachmentReference ((Data.Vector.length (mempty)) * 8) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPColorAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPColorAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e)) (mempty)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr AttachmentReference))) (pPColorAttachments')     pPPreserveAttachments' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4     lift $ Data.Vector.imapM_ (\i e -> poke (pPPreserveAttachments' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)@@ -1958,7 +1959,7 @@     lift $ poke ((p `plusPtr` 16 :: Ptr RenderPassCreateFlags)) (flags)     lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (attachments)) :: Word32))     pPAttachments' <- ContT $ allocaBytesAligned @AttachmentDescription ((Data.Vector.length (attachments)) * 36) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments' `plusPtr` (36 * (i)) :: Ptr AttachmentDescription) (e) . ($ ())) (attachments)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPAttachments' `plusPtr` (36 * (i)) :: Ptr AttachmentDescription) (e)) (attachments)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AttachmentDescription))) (pPAttachments')     lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (subpasses)) :: Word32))     pPSubpasses' <- ContT $ allocaBytesAligned @SubpassDescription ((Data.Vector.length (subpasses)) * 72) 8@@ -1966,7 +1967,7 @@     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SubpassDescription))) (pPSubpasses')     lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (dependencies)) :: Word32))     pPDependencies' <- ContT $ allocaBytesAligned @SubpassDependency ((Data.Vector.length (dependencies)) * 28) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDependencies' `plusPtr` (28 * (i)) :: Ptr SubpassDependency) (e) . ($ ())) (dependencies)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDependencies' `plusPtr` (28 * (i)) :: Ptr SubpassDependency) (e)) (dependencies)     lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr SubpassDependency))) (pPDependencies')     lift $ f   cStructSize = 64@@ -1976,13 +1977,13 @@     pNext' <- fmap castPtr . ContT $ withZeroChain @es     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'     pPAttachments' <- ContT $ allocaBytesAligned @AttachmentDescription ((Data.Vector.length (mempty)) * 36) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments' `plusPtr` (36 * (i)) :: Ptr AttachmentDescription) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPAttachments' `plusPtr` (36 * (i)) :: Ptr AttachmentDescription) (e)) (mempty)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AttachmentDescription))) (pPAttachments')     pPSubpasses' <- ContT $ allocaBytesAligned @SubpassDescription ((Data.Vector.length (mempty)) * 72) 8     Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSubpasses' `plusPtr` (72 * (i)) :: Ptr SubpassDescription) (e) . ($ ())) (mempty)     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SubpassDescription))) (pPSubpasses')     pPDependencies' <- ContT $ allocaBytesAligned @SubpassDependency ((Data.Vector.length (mempty)) * 28) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDependencies' `plusPtr` (28 * (i)) :: Ptr SubpassDependency) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDependencies' `plusPtr` (28 * (i)) :: Ptr SubpassDependency) (e)) (mempty)     lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr SubpassDependency))) (pPDependencies')     lift $ f 
src/Vulkan/Core10/Pass.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Pass" module Vulkan.Core10.Pass  ( AttachmentDescription                            , AttachmentReference                            , FramebufferCreateInfo
src/Vulkan/Core10/Pipeline.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Pipeline" module Vulkan.Core10.Pipeline  ( createGraphicsPipelines                                , withGraphicsPipelines                                , createComputePipelines@@ -384,8 +385,8 @@ -- -- To ensure that 'destroyPipeline' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. -- withGraphicsPipelines :: forall io r . MonadIO io => Device -> PipelineCache -> Vector (SomeStruct GraphicsPipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r withGraphicsPipelines device pipelineCache pCreateInfos pAllocator b =@@ -513,8 +514,8 @@ -- -- To ensure that 'destroyPipeline' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. -- withComputePipelines :: forall io r . MonadIO io => Device -> PipelineCache -> Vector (SomeStruct ComputePipelineCreateInfo) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r withComputePipelines device pipelineCache pCreateInfos pAllocator b =@@ -873,7 +874,7 @@   pokeCStruct p SpecializationInfo{..} f = evalContT $ do     lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (mapEntries)) :: Word32))     pPMapEntries' <- ContT $ allocaBytesAligned @SpecializationMapEntry ((Data.Vector.length (mapEntries)) * 16) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPMapEntries' `plusPtr` (16 * (i)) :: Ptr SpecializationMapEntry) (e) . ($ ())) (mapEntries)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPMapEntries' `plusPtr` (16 * (i)) :: Ptr SpecializationMapEntry) (e)) (mapEntries)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr SpecializationMapEntry))) (pPMapEntries')     lift $ poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (dataSize))     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (data')@@ -882,7 +883,7 @@   cStructAlignment = 8   pokeZeroCStruct p f = evalContT $ do     pPMapEntries' <- ContT $ allocaBytesAligned @SpecializationMapEntry ((Data.Vector.length (mempty)) * 16) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPMapEntries' `plusPtr` (16 * (i)) :: Ptr SpecializationMapEntry) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPMapEntries' `plusPtr` (16 * (i)) :: Ptr SpecializationMapEntry) (e)) (mempty)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr SpecializationMapEntry))) (pPMapEntries')     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)     lift $ f@@ -1146,7 +1147,7 @@ -- 'ComputePipelineCreateInfo', 'GraphicsPipelineCreateInfo', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV', -- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlags',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV', -- 'Vulkan.Core10.Handles.ShaderModule', -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits',@@ -1325,6 +1326,10 @@ --     include --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR' --+-- -   #VUID-VkComputePipelineCreateInfo-flags-03576# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'+-- -- -   #VUID-VkComputePipelineCreateInfo-flags-02874# @flags@ /must/ not --     include --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'@@ -1734,11 +1739,11 @@     lift $ poke ((p `plusPtr` 16 :: Ptr PipelineVertexInputStateCreateFlags)) (flags)     lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexBindingDescriptions)) :: Word32))     pPVertexBindingDescriptions' <- ContT $ allocaBytesAligned @VertexInputBindingDescription ((Data.Vector.length (vertexBindingDescriptions)) * 12) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPVertexBindingDescriptions' `plusPtr` (12 * (i)) :: Ptr VertexInputBindingDescription) (e) . ($ ())) (vertexBindingDescriptions)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexBindingDescriptions' `plusPtr` (12 * (i)) :: Ptr VertexInputBindingDescription) (e)) (vertexBindingDescriptions)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDescription))) (pPVertexBindingDescriptions')     lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexAttributeDescriptions)) :: Word32))     pPVertexAttributeDescriptions' <- ContT $ allocaBytesAligned @VertexInputAttributeDescription ((Data.Vector.length (vertexAttributeDescriptions)) * 16) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPVertexAttributeDescriptions' `plusPtr` (16 * (i)) :: Ptr VertexInputAttributeDescription) (e) . ($ ())) (vertexAttributeDescriptions)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexAttributeDescriptions' `plusPtr` (16 * (i)) :: Ptr VertexInputAttributeDescription) (e)) (vertexAttributeDescriptions)     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr VertexInputAttributeDescription))) (pPVertexAttributeDescriptions')     lift $ f   cStructSize = 48@@ -1748,10 +1753,10 @@     pNext' <- fmap castPtr . ContT $ withZeroChain @es     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'     pPVertexBindingDescriptions' <- ContT $ allocaBytesAligned @VertexInputBindingDescription ((Data.Vector.length (mempty)) * 12) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPVertexBindingDescriptions' `plusPtr` (12 * (i)) :: Ptr VertexInputBindingDescription) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexBindingDescriptions' `plusPtr` (12 * (i)) :: Ptr VertexInputBindingDescription) (e)) (mempty)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDescription))) (pPVertexBindingDescriptions')     pPVertexAttributeDescriptions' <- ContT $ allocaBytesAligned @VertexInputAttributeDescription ((Data.Vector.length (mempty)) * 16) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPVertexAttributeDescriptions' `plusPtr` (16 * (i)) :: Ptr VertexInputAttributeDescription) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexAttributeDescriptions' `plusPtr` (16 * (i)) :: Ptr VertexInputAttributeDescription) (e)) (mempty)     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr VertexInputAttributeDescription))) (pPVertexAttributeDescriptions')     lift $ f @@ -2151,7 +2156,7 @@       then pure nullPtr       else do         pPViewports <- ContT $ allocaBytesAligned @Viewport (((Data.Vector.length (viewports))) * 24) 4-        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e) . ($ ())) ((viewports))+        lift $ Data.Vector.imapM_ (\i e -> poke (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e)) ((viewports))         pure $ pPViewports     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Viewport))) pViewports''     let pScissorsLength = Data.Vector.length $ (scissors)@@ -2166,7 +2171,7 @@       then pure nullPtr       else do         pPScissors <- ContT $ allocaBytesAligned @Rect2D (((Data.Vector.length (scissors))) * 16) 4-        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) ((scissors))+        lift $ Data.Vector.imapM_ (\i e -> poke (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) ((scissors))         pure $ pPScissors     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Rect2D))) pScissors''     lift $ f@@ -2968,7 +2973,7 @@     lift $ poke ((p `plusPtr` 24 :: Ptr LogicOp)) (logicOp)     lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (attachments)) :: Word32))     pPAttachments' <- ContT $ allocaBytesAligned @PipelineColorBlendAttachmentState ((Data.Vector.length (attachments)) * 32) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments' `plusPtr` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState) (e) . ($ ())) (attachments)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPAttachments' `plusPtr` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState) (e)) (attachments)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState))) (pPAttachments')     let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))     lift $ case (blendConstants) of@@ -2987,7 +2992,7 @@     lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))     lift $ poke ((p `plusPtr` 24 :: Ptr LogicOp)) (zero)     pPAttachments' <- ContT $ allocaBytesAligned @PipelineColorBlendAttachmentState ((Data.Vector.length (mempty)) * 32) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments' `plusPtr` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPAttachments' `plusPtr` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState) (e)) (mempty)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState))) (pPAttachments')     let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))     lift $ case ((zero, zero, zero, zero)) of@@ -3056,6 +3061,7 @@ -- 'Vulkan.Core10.Enums.DynamicState.DynamicState', -- 'GraphicsPipelineCreateInfo', -- 'Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags.PipelineDynamicStateCreateFlags',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR', -- 'Vulkan.Core10.Enums.StructureType.StructureType' data PipelineDynamicStateCreateInfo = PipelineDynamicStateCreateInfo   { -- | @flags@ is reserved for future use.@@ -3306,35 +3312,35 @@  instance ToCStruct PipelineDepthStencilStateCreateInfo where   withCStruct x f = allocaBytesAligned 104 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PipelineDepthStencilStateCreateInfo{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineDepthStencilStateCreateFlags)) (flags)-    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (depthTestEnable))-    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (depthWriteEnable))-    lift $ poke ((p `plusPtr` 28 :: Ptr CompareOp)) (depthCompareOp)-    lift $ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (depthBoundsTestEnable))-    lift $ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (stencilTestEnable))-    ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr StencilOpState)) (front) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 68 :: Ptr StencilOpState)) (back) . ($ ())-    lift $ poke ((p `plusPtr` 96 :: Ptr CFloat)) (CFloat (minDepthBounds))-    lift $ poke ((p `plusPtr` 100 :: Ptr CFloat)) (CFloat (maxDepthBounds))-    lift $ f+  pokeCStruct p PipelineDepthStencilStateCreateInfo{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr PipelineDepthStencilStateCreateFlags)) (flags)+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (depthTestEnable))+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (depthWriteEnable))+    poke ((p `plusPtr` 28 :: Ptr CompareOp)) (depthCompareOp)+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (depthBoundsTestEnable))+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (stencilTestEnable))+    poke ((p `plusPtr` 40 :: Ptr StencilOpState)) (front)+    poke ((p `plusPtr` 68 :: Ptr StencilOpState)) (back)+    poke ((p `plusPtr` 96 :: Ptr CFloat)) (CFloat (minDepthBounds))+    poke ((p `plusPtr` 100 :: Ptr CFloat)) (CFloat (maxDepthBounds))+    f   cStructSize = 104   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 28 :: Ptr CompareOp)) (zero)-    lift $ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))-    ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr StencilOpState)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 68 :: Ptr StencilOpState)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 96 :: Ptr CFloat)) (CFloat (zero))-    lift $ poke ((p `plusPtr` 100 :: Ptr CFloat)) (CFloat (zero))-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 28 :: Ptr CompareOp)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 40 :: Ptr StencilOpState)) (zero)+    poke ((p `plusPtr` 68 :: Ptr StencilOpState)) (zero)+    poke ((p `plusPtr` 96 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 100 :: Ptr CFloat)) (CFloat (zero))+    f  instance FromCStruct PipelineDepthStencilStateCreateInfo where   peekCStruct p = do@@ -3351,6 +3357,12 @@     pure $ PipelineDepthStencilStateCreateInfo              flags (bool32ToBool depthTestEnable) (bool32ToBool depthWriteEnable) depthCompareOp (bool32ToBool depthBoundsTestEnable) (bool32ToBool stencilTestEnable) front back ((\(CFloat a) -> a) minDepthBounds) ((\(CFloat a) -> a) maxDepthBounds) +instance Storable PipelineDepthStencilStateCreateInfo where+  sizeOf ~_ = 104+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero PipelineDepthStencilStateCreateInfo where   zero = PipelineDepthStencilStateCreateInfo            zero@@ -3887,6 +3899,10 @@ --     include --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR' --+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-03577# @flags@ /must/ not+--     include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'+-- -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03378# If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState> --     feature is not enabled, there /must/ be no element of the@@ -4109,6 +4125,11 @@ --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::shadingRate --     /must/ not be equal to --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV'.+--+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03578# All+--     elements of the @pDynamicStates@ member of @pDynamicState@ /must/+--     not be+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR' -- -- == Valid Usage (Implicit) --
src/Vulkan/Core10/Pipeline.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Pipeline" module Vulkan.Core10.Pipeline  ( ComputePipelineCreateInfo                                , GraphicsPipelineCreateInfo                                , PipelineColorBlendAttachmentState
src/Vulkan/Core10/PipelineCache.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineCache" module Vulkan.Core10.PipelineCache  ( createPipelineCache                                     , withPipelineCache                                     , destroyPipelineCache@@ -96,7 +97,7 @@ -- -- Once created, a pipeline cache /can/ be passed to the -- 'Vulkan.Core10.Pipeline.createGraphicsPipelines'--- 'Vulkan.Extensions.VK_KHR_ray_tracing.createRayTracingPipelinesKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV', and -- 'Vulkan.Core10.Pipeline.createComputePipelines' commands. If the -- pipeline cache passed into these commands is not@@ -184,10 +185,10 @@ -- -- To ensure that 'destroyPipelineCache' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withPipelineCache :: forall io r . MonadIO io => Device -> PipelineCacheCreateInfo -> Maybe AllocationCallbacks -> (io (PipelineCache) -> ((PipelineCache) -> io ()) -> r) -> r+withPipelineCache :: forall io r . MonadIO io => Device -> PipelineCacheCreateInfo -> Maybe AllocationCallbacks -> (io PipelineCache -> (PipelineCache -> io ()) -> r) -> r withPipelineCache device pCreateInfo pAllocator b =   b (createPipelineCache device pCreateInfo pAllocator)     (\(o0) -> destroyPipelineCache device o0 pAllocator)
src/Vulkan/Core10/PipelineCache.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineCache" module Vulkan.Core10.PipelineCache  (PipelineCacheCreateInfo) where  import Data.Kind (Type)
src/Vulkan/Core10/PipelineLayout.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineLayout" module Vulkan.Core10.PipelineLayout  ( createPipelineLayout                                      , withPipelineLayout                                      , destroyPipelineLayout@@ -138,10 +139,10 @@ -- -- To ensure that 'destroyPipelineLayout' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withPipelineLayout :: forall io r . MonadIO io => Device -> PipelineLayoutCreateInfo -> Maybe AllocationCallbacks -> (io (PipelineLayout) -> ((PipelineLayout) -> io ()) -> r) -> r+withPipelineLayout :: forall io r . MonadIO io => Device -> PipelineLayoutCreateInfo -> Maybe AllocationCallbacks -> (io PipelineLayout -> (PipelineLayout -> io ()) -> r) -> r withPipelineLayout device pCreateInfo pAllocator b =   b (createPipelineLayout device pCreateInfo pAllocator)     (\(o0) -> destroyPipelineLayout device o0 pAllocator)@@ -615,13 +616,45 @@ --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR' --     set ----- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-02381# The total+-- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03571# The total+--     number of bindings in descriptor set layouts created without the+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+--     bit set with a @descriptorType@ of+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'+--     accessible to any given shader stage across all elements of+--     @pSetLayouts@ /must/ be less than or equal to+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxPerStageDescriptorAccelerationStructures@+--+-- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03572# The total --     number of bindings with a @descriptorType@ of --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'+--     to any given shader stage across all elements of @pSetLayouts@+--     /must/ be less than or equal to+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxPerStageDescriptorUpdateAfterBindAccelerationStructures@+--+-- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03573# The total+--     number of bindings in descriptor set layouts created without the+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+--     bit set with a @descriptorType@ of+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR' --     accessible across all shader stages and across all elements of --     @pSetLayouts@ /must/ be less than or equal to---     'Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR'::@maxDescriptorSetAccelerationStructures@+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxDescriptorSetAccelerationStructures@ --+-- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03574# The total+--     number of bindings with a @descriptorType@ of+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'+--     accessible across all shader stages and across all elements of+--     @pSetLayouts@ /must/ be less than or equal to+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxDescriptorSetUpdateAfterBindAccelerationStructures@+--+-- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-02381# The total+--     number of bindings with a @descriptorType@ of+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV'+--     accessible across all shader stages and across all elements of+--     @pSetLayouts@ /must/ be less than or equal to+--     'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'::@maxDescriptorSetAccelerationStructures@+-- -- -   #VUID-VkPipelineLayoutCreateInfo-pImmutableSamplers-03566# The total --     number of @pImmutableSamplers@ created with @flags@ containing --     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT'@@ -694,7 +727,7 @@     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DescriptorSetLayout))) (pPSetLayouts')     lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (pushConstantRanges)) :: Word32))     pPPushConstantRanges' <- ContT $ allocaBytesAligned @PushConstantRange ((Data.Vector.length (pushConstantRanges)) * 12) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPPushConstantRanges' `plusPtr` (12 * (i)) :: Ptr PushConstantRange) (e) . ($ ())) (pushConstantRanges)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPPushConstantRanges' `plusPtr` (12 * (i)) :: Ptr PushConstantRange) (e)) (pushConstantRanges)     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr PushConstantRange))) (pPPushConstantRanges')     lift $ f   cStructSize = 48@@ -706,7 +739,7 @@     lift $ Data.Vector.imapM_ (\i e -> poke (pPSetLayouts' `plusPtr` (8 * (i)) :: Ptr DescriptorSetLayout) (e)) (mempty)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DescriptorSetLayout))) (pPSetLayouts')     pPPushConstantRanges' <- ContT $ allocaBytesAligned @PushConstantRange ((Data.Vector.length (mempty)) * 12) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPPushConstantRanges' `plusPtr` (12 * (i)) :: Ptr PushConstantRange) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPPushConstantRanges' `plusPtr` (12 * (i)) :: Ptr PushConstantRange) (e)) (mempty)     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr PushConstantRange))) (pPPushConstantRanges')     lift $ f 
src/Vulkan/Core10/PipelineLayout.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "PipelineLayout" module Vulkan.Core10.PipelineLayout  ( PipelineLayoutCreateInfo                                      , PushConstantRange                                      ) where
src/Vulkan/Core10/Query.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Query" module Vulkan.Core10.Query  ( createQueryPool                             , withQueryPool                             , destroyQueryPool@@ -164,10 +165,10 @@ -- -- To ensure that 'destroyQueryPool' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withQueryPool :: forall a io r . (Extendss QueryPoolCreateInfo a, PokeChain a, MonadIO io) => Device -> QueryPoolCreateInfo a -> Maybe AllocationCallbacks -> (io (QueryPool) -> ((QueryPool) -> io ()) -> r) -> r+withQueryPool :: forall a io r . (Extendss QueryPoolCreateInfo a, PokeChain a, MonadIO io) => Device -> QueryPoolCreateInfo a -> Maybe AllocationCallbacks -> (io QueryPool -> (QueryPool -> io ()) -> r) -> r withQueryPool device pCreateInfo pAllocator b =   b (createQueryPool device pCreateInfo pAllocator)     (\(o0) -> destroyQueryPool device o0 pAllocator)
src/Vulkan/Core10/Query.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Query" module Vulkan.Core10.Query  (QueryPoolCreateInfo) where  import Data.Kind (Type)
src/Vulkan/Core10/Queue.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Queue" module Vulkan.Core10.Queue  ( getDeviceQueue                             , queueSubmit                             , queueWaitIdle
src/Vulkan/Core10/Queue.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Queue" module Vulkan.Core10.Queue  (SubmitInfo) where  import Data.Kind (Type)
src/Vulkan/Core10/QueueSemaphore.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "QueueSemaphore" module Vulkan.Core10.QueueSemaphore  ( createSemaphore                                      , withSemaphore                                      , destroySemaphore@@ -143,10 +144,10 @@ -- -- To ensure that 'destroySemaphore' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withSemaphore :: forall a io r . (Extendss SemaphoreCreateInfo a, PokeChain a, MonadIO io) => Device -> SemaphoreCreateInfo a -> Maybe AllocationCallbacks -> (io (Semaphore) -> ((Semaphore) -> io ()) -> r) -> r+withSemaphore :: forall a io r . (Extendss SemaphoreCreateInfo a, PokeChain a, MonadIO io) => Device -> SemaphoreCreateInfo a -> Maybe AllocationCallbacks -> (io Semaphore -> (Semaphore -> io ()) -> r) -> r withSemaphore device pCreateInfo pAllocator b =   b (createSemaphore device pCreateInfo pAllocator)     (\(o0) -> destroySemaphore device o0 pAllocator)
src/Vulkan/Core10/QueueSemaphore.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "QueueSemaphore" module Vulkan.Core10.QueueSemaphore  (SemaphoreCreateInfo) where  import Data.Kind (Type)
src/Vulkan/Core10/Sampler.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Sampler" module Vulkan.Core10.Sampler  ( createSampler                               , withSampler                               , destroySampler@@ -170,10 +171,10 @@ -- -- To ensure that 'destroySampler' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withSampler :: forall a io r . (Extendss SamplerCreateInfo a, PokeChain a, MonadIO io) => Device -> SamplerCreateInfo a -> Maybe AllocationCallbacks -> (io (Sampler) -> ((Sampler) -> io ()) -> r) -> r+withSampler :: forall a io r . (Extendss SamplerCreateInfo a, PokeChain a, MonadIO io) => Device -> SamplerCreateInfo a -> Maybe AllocationCallbacks -> (io Sampler -> (Sampler -> io ()) -> r) -> r withSampler device pCreateInfo pAllocator b =   b (createSampler device pCreateInfo pAllocator)     (\(o0) -> destroySampler device o0 pAllocator)
src/Vulkan/Core10/Sampler.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Sampler" module Vulkan.Core10.Sampler  (SamplerCreateInfo) where  import Data.Kind (Type)
src/Vulkan/Core10/Shader.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Shader" module Vulkan.Core10.Shader  ( createShaderModule                              , withShaderModule                              , destroyShaderModule@@ -170,10 +171,10 @@ -- -- To ensure that 'destroyShaderModule' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withShaderModule :: forall a io r . (Extendss ShaderModuleCreateInfo a, PokeChain a, MonadIO io) => Device -> ShaderModuleCreateInfo a -> Maybe AllocationCallbacks -> (io (ShaderModule) -> ((ShaderModule) -> io ()) -> r) -> r+withShaderModule :: forall a io r . (Extendss ShaderModuleCreateInfo a, PokeChain a, MonadIO io) => Device -> ShaderModuleCreateInfo a -> Maybe AllocationCallbacks -> (io ShaderModule -> (ShaderModule -> io ()) -> r) -> r withShaderModule device pCreateInfo pAllocator b =   b (createShaderModule device pCreateInfo pAllocator)     (\(o0) -> destroyShaderModule device o0 pAllocator)
src/Vulkan/Core10/Shader.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Shader" module Vulkan.Core10.Shader  (ShaderModuleCreateInfo) where  import Data.Kind (Type)
src/Vulkan/Core10/SparseResourceMemoryManagement.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "SparseResourceMemoryManagement" module Vulkan.Core10.SparseResourceMemoryManagement  ( getImageSparseMemoryRequirements                                                      , getPhysicalDeviceSparseImageFormatProperties                                                      , queueBindSparse@@ -525,16 +526,16 @@  instance ToCStruct SparseImageFormatProperties where   withCStruct x f = allocaBytesAligned 20 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p SparseImageFormatProperties{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (aspectMask)-    ContT $ pokeCStruct ((p `plusPtr` 4 :: Ptr Extent3D)) (imageGranularity) . ($ ())-    lift $ poke ((p `plusPtr` 16 :: Ptr SparseImageFormatFlags)) (flags)-    lift $ f+  pokeCStruct p SparseImageFormatProperties{..} f = do+    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (aspectMask)+    poke ((p `plusPtr` 4 :: Ptr Extent3D)) (imageGranularity)+    poke ((p `plusPtr` 16 :: Ptr SparseImageFormatFlags)) (flags)+    f   cStructSize = 20   cStructAlignment = 4-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 4 :: Ptr Extent3D)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 4 :: Ptr Extent3D)) (zero)+    f  instance FromCStruct SparseImageFormatProperties where   peekCStruct p = do@@ -544,6 +545,12 @@     pure $ SparseImageFormatProperties              aspectMask imageGranularity flags +instance Storable SparseImageFormatProperties where+  sizeOf ~_ = 20+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero SparseImageFormatProperties where   zero = SparseImageFormatProperties            zero@@ -590,22 +597,22 @@  instance ToCStruct SparseImageMemoryRequirements where   withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p SparseImageMemoryRequirements{..} f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr SparseImageFormatProperties)) (formatProperties) . ($ ())-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (imageMipTailFirstLod)-    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (imageMipTailSize)-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (imageMipTailOffset)-    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (imageMipTailStride)-    lift $ f+  pokeCStruct p SparseImageMemoryRequirements{..} f = do+    poke ((p `plusPtr` 0 :: Ptr SparseImageFormatProperties)) (formatProperties)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (imageMipTailFirstLod)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (imageMipTailSize)+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (imageMipTailOffset)+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (imageMipTailStride)+    f   cStructSize = 48   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr SparseImageFormatProperties)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)-    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr SparseImageFormatProperties)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)+    f  instance FromCStruct SparseImageMemoryRequirements where   peekCStruct p = do@@ -617,6 +624,12 @@     pure $ SparseImageMemoryRequirements              formatProperties imageMipTailFirstLod imageMipTailSize imageMipTailOffset imageMipTailStride +instance Storable SparseImageMemoryRequirements where+  sizeOf ~_ = 48+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero SparseImageMemoryRequirements where   zero = SparseImageMemoryRequirements            zero@@ -968,22 +981,22 @@  instance ToCStruct SparseImageMemoryBind where   withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p SparseImageMemoryBind{..} f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresource)) (subresource) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 12 :: Ptr Offset3D)) (offset) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent3D)) (extent) . ($ ())-    lift $ poke ((p `plusPtr` 40 :: Ptr DeviceMemory)) (memory)-    lift $ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (memoryOffset)-    lift $ poke ((p `plusPtr` 56 :: Ptr SparseMemoryBindFlags)) (flags)-    lift $ f+  pokeCStruct p SparseImageMemoryBind{..} f = do+    poke ((p `plusPtr` 0 :: Ptr ImageSubresource)) (subresource)+    poke ((p `plusPtr` 12 :: Ptr Offset3D)) (offset)+    poke ((p `plusPtr` 24 :: Ptr Extent3D)) (extent)+    poke ((p `plusPtr` 40 :: Ptr DeviceMemory)) (memory)+    poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (memoryOffset)+    poke ((p `plusPtr` 56 :: Ptr SparseMemoryBindFlags)) (flags)+    f   cStructSize = 64   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresource)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 12 :: Ptr Offset3D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent3D)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (zero)-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr ImageSubresource)) (zero)+    poke ((p `plusPtr` 12 :: Ptr Offset3D)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Extent3D)) (zero)+    poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (zero)+    f  instance FromCStruct SparseImageMemoryBind where   peekCStruct p = do@@ -996,6 +1009,12 @@     pure $ SparseImageMemoryBind              subresource offset extent memory memoryOffset flags +instance Storable SparseImageMemoryBind where+  sizeOf ~_ = 64+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero SparseImageMemoryBind where   zero = SparseImageMemoryBind            zero@@ -1039,7 +1058,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr Buffer)) (buffer)     lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (binds)) :: Word32))     pPBinds' <- ContT $ allocaBytesAligned @SparseMemoryBind ((Data.Vector.length (binds)) * 40) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBinds' `plusPtr` (40 * (i)) :: Ptr SparseMemoryBind) (e) . ($ ())) (binds)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPBinds' `plusPtr` (40 * (i)) :: Ptr SparseMemoryBind) (e)) (binds)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr SparseMemoryBind))) (pPBinds')     lift $ f   cStructSize = 24@@ -1047,7 +1066,7 @@   pokeZeroCStruct p f = evalContT $ do     lift $ poke ((p `plusPtr` 0 :: Ptr Buffer)) (zero)     pPBinds' <- ContT $ allocaBytesAligned @SparseMemoryBind ((Data.Vector.length (mempty)) * 40) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBinds' `plusPtr` (40 * (i)) :: Ptr SparseMemoryBind) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPBinds' `plusPtr` (40 * (i)) :: Ptr SparseMemoryBind) (e)) (mempty)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr SparseMemoryBind))) (pPBinds')     lift $ f @@ -1110,7 +1129,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr Image)) (image)     lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (binds)) :: Word32))     pPBinds' <- ContT $ allocaBytesAligned @SparseMemoryBind ((Data.Vector.length (binds)) * 40) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBinds' `plusPtr` (40 * (i)) :: Ptr SparseMemoryBind) (e) . ($ ())) (binds)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPBinds' `plusPtr` (40 * (i)) :: Ptr SparseMemoryBind) (e)) (binds)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr SparseMemoryBind))) (pPBinds')     lift $ f   cStructSize = 24@@ -1118,7 +1137,7 @@   pokeZeroCStruct p f = evalContT $ do     lift $ poke ((p `plusPtr` 0 :: Ptr Image)) (zero)     pPBinds' <- ContT $ allocaBytesAligned @SparseMemoryBind ((Data.Vector.length (mempty)) * 40) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBinds' `plusPtr` (40 * (i)) :: Ptr SparseMemoryBind) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPBinds' `plusPtr` (40 * (i)) :: Ptr SparseMemoryBind) (e)) (mempty)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr SparseMemoryBind))) (pPBinds')     lift $ f @@ -1190,7 +1209,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr Image)) (image)     lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (binds)) :: Word32))     pPBinds' <- ContT $ allocaBytesAligned @SparseImageMemoryBind ((Data.Vector.length (binds)) * 64) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBinds' `plusPtr` (64 * (i)) :: Ptr SparseImageMemoryBind) (e) . ($ ())) (binds)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPBinds' `plusPtr` (64 * (i)) :: Ptr SparseImageMemoryBind) (e)) (binds)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr SparseImageMemoryBind))) (pPBinds')     lift $ f   cStructSize = 24@@ -1198,7 +1217,7 @@   pokeZeroCStruct p f = evalContT $ do     lift $ poke ((p `plusPtr` 0 :: Ptr Image)) (zero)     pPBinds' <- ContT $ allocaBytesAligned @SparseImageMemoryBind ((Data.Vector.length (mempty)) * 64) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBinds' `plusPtr` (64 * (i)) :: Ptr SparseImageMemoryBind) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPBinds' `plusPtr` (64 * (i)) :: Ptr SparseImageMemoryBind) (e)) (mempty)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr SparseImageMemoryBind))) (pPBinds')     lift $ f 
src/Vulkan/Core10/SparseResourceMemoryManagement.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "SparseResourceMemoryManagement" module Vulkan.Core10.SparseResourceMemoryManagement  ( BindSparseInfo                                                      , ImageSubresource                                                      , SparseBufferMemoryBindInfo
src/Vulkan/Core11.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Core11" module Vulkan.Core11  ( pattern API_VERSION_1_1                       , module Vulkan.Core11.DeviceInitialization                       , module Vulkan.Core11.Enums
src/Vulkan/Core11/DeviceInitialization.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "DeviceInitialization" module Vulkan.Core11.DeviceInitialization  (enumerateInstanceVersion) where  import Control.Exception.Base (bracket)
src/Vulkan/Core11/Enums.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Enums" module Vulkan.Core11.Enums  ( module Vulkan.Core11.Enums.ChromaLocation                             , module Vulkan.Core11.Enums.CommandPoolTrimFlags                             , module Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags
src/Vulkan/Core11/Enums/ChromaLocation.hs view
@@ -1,22 +1,17 @@ {-# language CPP #-}+-- No documentation found for Chapter "ChromaLocation" module Vulkan.Core11.Enums.ChromaLocation  (ChromaLocation( CHROMA_LOCATION_COSITED_EVEN                                                           , CHROMA_LOCATION_MIDPOINT                                                           , ..                                                           )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkChromaLocation - Position of downsampled chroma samples --@@ -33,22 +28,26 @@ -- | 'CHROMA_LOCATION_MIDPOINT' specifies that downsampled chroma samples are -- located half way between each even luma sample and the nearest higher -- odd luma sample.-pattern CHROMA_LOCATION_MIDPOINT = ChromaLocation 1+pattern CHROMA_LOCATION_MIDPOINT     = ChromaLocation 1 {-# complete CHROMA_LOCATION_COSITED_EVEN,              CHROMA_LOCATION_MIDPOINT :: ChromaLocation #-} +conNameChromaLocation :: String+conNameChromaLocation = "ChromaLocation"++enumPrefixChromaLocation :: String+enumPrefixChromaLocation = "CHROMA_LOCATION_"++showTableChromaLocation :: [(ChromaLocation, String)]+showTableChromaLocation = [(CHROMA_LOCATION_COSITED_EVEN, "COSITED_EVEN"), (CHROMA_LOCATION_MIDPOINT, "MIDPOINT")]+ instance Show ChromaLocation where-  showsPrec p = \case-    CHROMA_LOCATION_COSITED_EVEN -> showString "CHROMA_LOCATION_COSITED_EVEN"-    CHROMA_LOCATION_MIDPOINT -> showString "CHROMA_LOCATION_MIDPOINT"-    ChromaLocation x -> showParen (p >= 11) (showString "ChromaLocation " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixChromaLocation+                            showTableChromaLocation+                            conNameChromaLocation+                            (\(ChromaLocation x) -> x)+                            (showsPrec 11)  instance Read ChromaLocation where-  readPrec = parens (choose [("CHROMA_LOCATION_COSITED_EVEN", pure CHROMA_LOCATION_COSITED_EVEN)-                            , ("CHROMA_LOCATION_MIDPOINT", pure CHROMA_LOCATION_MIDPOINT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ChromaLocation")-                       v <- step readPrec-                       pure (ChromaLocation v)))+  readPrec = enumReadPrec enumPrefixChromaLocation showTableChromaLocation conNameChromaLocation ChromaLocation 
src/Vulkan/Core11/Enums/ChromaLocation.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "ChromaLocation" module Vulkan.Core11.Enums.ChromaLocation  (ChromaLocation) where  
src/Vulkan/Core11/Enums/CommandPoolTrimFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "CommandPoolTrimFlags" module Vulkan.Core11.Enums.CommandPoolTrimFlags  (CommandPoolTrimFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkCommandPoolTrimFlags - Reserved for future use@@ -33,15 +29,25 @@   +conNameCommandPoolTrimFlags :: String+conNameCommandPoolTrimFlags = "CommandPoolTrimFlags"++enumPrefixCommandPoolTrimFlags :: String+enumPrefixCommandPoolTrimFlags = ""++showTableCommandPoolTrimFlags :: [(CommandPoolTrimFlags, String)]+showTableCommandPoolTrimFlags = []+ instance Show CommandPoolTrimFlags where-  showsPrec p = \case-    CommandPoolTrimFlags x -> showParen (p >= 11) (showString "CommandPoolTrimFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixCommandPoolTrimFlags+                            showTableCommandPoolTrimFlags+                            conNameCommandPoolTrimFlags+                            (\(CommandPoolTrimFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read CommandPoolTrimFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "CommandPoolTrimFlags")-                       v <- step readPrec-                       pure (CommandPoolTrimFlags v)))+  readPrec = enumReadPrec enumPrefixCommandPoolTrimFlags+                          showTableCommandPoolTrimFlags+                          conNameCommandPoolTrimFlags+                          CommandPoolTrimFlags 
src/Vulkan/Core11/Enums/CommandPoolTrimFlags.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "CommandPoolTrimFlags" module Vulkan.Core11.Enums.CommandPoolTrimFlags  (CommandPoolTrimFlags) where  
src/Vulkan/Core11/Enums/DescriptorUpdateTemplateCreateFlags.hs view
@@ -1,20 +1,16 @@ {-# language CPP #-}+-- No documentation found for Chapter "DescriptorUpdateTemplateCreateFlags" module Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags  (DescriptorUpdateTemplateCreateFlags(..)) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkDescriptorUpdateTemplateCreateFlags - Reserved for future use@@ -32,15 +28,25 @@   +conNameDescriptorUpdateTemplateCreateFlags :: String+conNameDescriptorUpdateTemplateCreateFlags = "DescriptorUpdateTemplateCreateFlags"++enumPrefixDescriptorUpdateTemplateCreateFlags :: String+enumPrefixDescriptorUpdateTemplateCreateFlags = ""++showTableDescriptorUpdateTemplateCreateFlags :: [(DescriptorUpdateTemplateCreateFlags, String)]+showTableDescriptorUpdateTemplateCreateFlags = []+ instance Show DescriptorUpdateTemplateCreateFlags where-  showsPrec p = \case-    DescriptorUpdateTemplateCreateFlags x -> showParen (p >= 11) (showString "DescriptorUpdateTemplateCreateFlags 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDescriptorUpdateTemplateCreateFlags+                            showTableDescriptorUpdateTemplateCreateFlags+                            conNameDescriptorUpdateTemplateCreateFlags+                            (\(DescriptorUpdateTemplateCreateFlags x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DescriptorUpdateTemplateCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "DescriptorUpdateTemplateCreateFlags")-                       v <- step readPrec-                       pure (DescriptorUpdateTemplateCreateFlags v)))+  readPrec = enumReadPrec enumPrefixDescriptorUpdateTemplateCreateFlags+                          showTableDescriptorUpdateTemplateCreateFlags+                          conNameDescriptorUpdateTemplateCreateFlags+                          DescriptorUpdateTemplateCreateFlags 
src/Vulkan/Core11/Enums/DescriptorUpdateTemplateCreateFlags.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "DescriptorUpdateTemplateCreateFlags" module Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags  (DescriptorUpdateTemplateCreateFlags) where  
src/Vulkan/Core11/Enums/DescriptorUpdateTemplateType.hs view
@@ -1,22 +1,17 @@ {-# language CPP #-}+-- No documentation found for Chapter "DescriptorUpdateTemplateType" module Vulkan.Core11.Enums.DescriptorUpdateTemplateType  (DescriptorUpdateTemplateType( DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET                                                                                       , DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR                                                                                       , ..                                                                                       )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkDescriptorUpdateTemplateType - Indicates the valid usage of the -- descriptor update template@@ -29,7 +24,7 @@  -- | 'DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET' specifies that the -- descriptor update template will be used for descriptor set updates only.-pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = DescriptorUpdateTemplateType 0+pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET       = DescriptorUpdateTemplateType 0 -- | 'DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR' specifies that -- the descriptor update template will be used for push descriptor updates -- only.@@ -37,18 +32,28 @@ {-# complete DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,              DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR :: DescriptorUpdateTemplateType #-} +conNameDescriptorUpdateTemplateType :: String+conNameDescriptorUpdateTemplateType = "DescriptorUpdateTemplateType"++enumPrefixDescriptorUpdateTemplateType :: String+enumPrefixDescriptorUpdateTemplateType = "DESCRIPTOR_UPDATE_TEMPLATE_TYPE_"++showTableDescriptorUpdateTemplateType :: [(DescriptorUpdateTemplateType, String)]+showTableDescriptorUpdateTemplateType =+  [ (DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET      , "DESCRIPTOR_SET")+  , (DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR, "PUSH_DESCRIPTORS_KHR")+  ]+ instance Show DescriptorUpdateTemplateType where-  showsPrec p = \case-    DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET -> showString "DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"-    DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR -> showString "DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR"-    DescriptorUpdateTemplateType x -> showParen (p >= 11) (showString "DescriptorUpdateTemplateType " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixDescriptorUpdateTemplateType+                            showTableDescriptorUpdateTemplateType+                            conNameDescriptorUpdateTemplateType+                            (\(DescriptorUpdateTemplateType x) -> x)+                            (showsPrec 11)  instance Read DescriptorUpdateTemplateType where-  readPrec = parens (choose [("DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET", pure DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET)-                            , ("DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR", pure DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "DescriptorUpdateTemplateType")-                       v <- step readPrec-                       pure (DescriptorUpdateTemplateType v)))+  readPrec = enumReadPrec enumPrefixDescriptorUpdateTemplateType+                          showTableDescriptorUpdateTemplateType+                          conNameDescriptorUpdateTemplateType+                          DescriptorUpdateTemplateType 
src/Vulkan/Core11/Enums/DescriptorUpdateTemplateType.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "DescriptorUpdateTemplateType" module Vulkan.Core11.Enums.DescriptorUpdateTemplateType  (DescriptorUpdateTemplateType) where  
src/Vulkan/Core11/Enums/ExternalFenceFeatureFlagBits.hs view
@@ -1,27 +1,25 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits  ( ExternalFenceFeatureFlagBits( EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT+-- No documentation found for Chapter "ExternalFenceFeatureFlagBits"+module Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits  ( ExternalFenceFeatureFlags+                                                         , ExternalFenceFeatureFlagBits( EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT                                                                                        , EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT                                                                                        , ..                                                                                        )-                                                         , ExternalFenceFeatureFlags                                                          ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type ExternalFenceFeatureFlags = ExternalFenceFeatureFlagBits+ -- | VkExternalFenceFeatureFlagBits - Bitfield describing features of an -- external fence handle type --@@ -38,20 +36,26 @@ -- /can/ be imported to Vulkan fence objects. pattern EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = ExternalFenceFeatureFlagBits 0x00000002 -type ExternalFenceFeatureFlags = ExternalFenceFeatureFlagBits+conNameExternalFenceFeatureFlagBits :: String+conNameExternalFenceFeatureFlagBits = "ExternalFenceFeatureFlagBits" +enumPrefixExternalFenceFeatureFlagBits :: String+enumPrefixExternalFenceFeatureFlagBits = "EXTERNAL_FENCE_FEATURE_"++showTableExternalFenceFeatureFlagBits :: [(ExternalFenceFeatureFlagBits, String)]+showTableExternalFenceFeatureFlagBits =+  [(EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT, "EXPORTABLE_BIT"), (EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT, "IMPORTABLE_BIT")]+ instance Show ExternalFenceFeatureFlagBits where-  showsPrec p = \case-    EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT -> showString "EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"-    EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT -> showString "EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"-    ExternalFenceFeatureFlagBits x -> showParen (p >= 11) (showString "ExternalFenceFeatureFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixExternalFenceFeatureFlagBits+                            showTableExternalFenceFeatureFlagBits+                            conNameExternalFenceFeatureFlagBits+                            (\(ExternalFenceFeatureFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ExternalFenceFeatureFlagBits where-  readPrec = parens (choose [("EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT", pure EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT)-                            , ("EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT", pure EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ExternalFenceFeatureFlagBits")-                       v <- step readPrec-                       pure (ExternalFenceFeatureFlagBits v)))+  readPrec = enumReadPrec enumPrefixExternalFenceFeatureFlagBits+                          showTableExternalFenceFeatureFlagBits+                          conNameExternalFenceFeatureFlagBits+                          ExternalFenceFeatureFlagBits 
src/Vulkan/Core11/Enums/ExternalFenceFeatureFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits  ( ExternalFenceFeatureFlagBits-                                                         , ExternalFenceFeatureFlags+-- No documentation found for Chapter "ExternalFenceFeatureFlagBits"+module Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits  ( ExternalFenceFeatureFlags+                                                         , ExternalFenceFeatureFlagBits                                                          ) where   -data ExternalFenceFeatureFlagBits- type ExternalFenceFeatureFlags = ExternalFenceFeatureFlagBits++data ExternalFenceFeatureFlagBits 
src/Vulkan/Core11/Enums/ExternalFenceHandleTypeFlagBits.hs view
@@ -1,29 +1,27 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits  ( ExternalFenceHandleTypeFlagBits( EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT+-- No documentation found for Chapter "ExternalFenceHandleTypeFlagBits"+module Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits  ( ExternalFenceHandleTypeFlags+                                                            , ExternalFenceHandleTypeFlagBits( EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT                                                                                              , EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT                                                                                              , EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT                                                                                              , EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT                                                                                              , ..                                                                                              )-                                                            , ExternalFenceHandleTypeFlags                                                             ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type ExternalFenceHandleTypeFlags = ExternalFenceHandleTypeFlagBits+ -- | VkExternalFenceHandleTypeFlagBits - Bitmask of valid external fence -- handle types --@@ -65,14 +63,14 @@ -- Additionally, it /must/ be transportable over a socket using an -- @SCM_RIGHTS@ control message. It owns a reference to the underlying -- synchronization primitive represented by its Vulkan fence object.-pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = ExternalFenceHandleTypeFlagBits 0x00000001+pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT        = ExternalFenceHandleTypeFlagBits 0x00000001 -- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT' specifies an NT handle -- that has only limited valid usage outside of Vulkan and other compatible -- APIs. It /must/ be compatible with the functions @DuplicateHandle@, -- @CloseHandle@, @CompareObjectHandles@, @GetHandleInformation@, and -- @SetHandleInformation@. It owns a reference to the underlying -- synchronization primitive represented by its Vulkan fence object.-pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = ExternalFenceHandleTypeFlagBits 0x00000002+pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT     = ExternalFenceHandleTypeFlagBits 0x00000002 -- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' specifies a global -- share handle that has only limited valid usage outside of Vulkan and -- other compatible APIs. It is not compatible with any native APIs. It@@ -87,26 +85,32 @@ -- with the file descriptor. Implementations which support importing this -- handle type /must/ accept any type of sync or fence FD supported by the -- native system they are running on.-pattern EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = ExternalFenceHandleTypeFlagBits 0x00000008+pattern EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT          = ExternalFenceHandleTypeFlagBits 0x00000008 -type ExternalFenceHandleTypeFlags = ExternalFenceHandleTypeFlagBits+conNameExternalFenceHandleTypeFlagBits :: String+conNameExternalFenceHandleTypeFlagBits = "ExternalFenceHandleTypeFlagBits" +enumPrefixExternalFenceHandleTypeFlagBits :: String+enumPrefixExternalFenceHandleTypeFlagBits = "EXTERNAL_FENCE_HANDLE_TYPE_"++showTableExternalFenceHandleTypeFlagBits :: [(ExternalFenceHandleTypeFlagBits, String)]+showTableExternalFenceHandleTypeFlagBits =+  [ (EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT       , "OPAQUE_FD_BIT")+  , (EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT    , "OPAQUE_WIN32_BIT")+  , (EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, "OPAQUE_WIN32_KMT_BIT")+  , (EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT         , "SYNC_FD_BIT")+  ]+ instance Show ExternalFenceHandleTypeFlagBits where-  showsPrec p = \case-    EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT -> showString "EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"-    EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT -> showString "EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"-    EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT -> showString "EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"-    EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT -> showString "EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"-    ExternalFenceHandleTypeFlagBits x -> showParen (p >= 11) (showString "ExternalFenceHandleTypeFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixExternalFenceHandleTypeFlagBits+                            showTableExternalFenceHandleTypeFlagBits+                            conNameExternalFenceHandleTypeFlagBits+                            (\(ExternalFenceHandleTypeFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ExternalFenceHandleTypeFlagBits where-  readPrec = parens (choose [("EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT", pure EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT)-                            , ("EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT", pure EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT)-                            , ("EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT", pure EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT)-                            , ("EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT", pure EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ExternalFenceHandleTypeFlagBits")-                       v <- step readPrec-                       pure (ExternalFenceHandleTypeFlagBits v)))+  readPrec = enumReadPrec enumPrefixExternalFenceHandleTypeFlagBits+                          showTableExternalFenceHandleTypeFlagBits+                          conNameExternalFenceHandleTypeFlagBits+                          ExternalFenceHandleTypeFlagBits 
src/Vulkan/Core11/Enums/ExternalFenceHandleTypeFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits  ( ExternalFenceHandleTypeFlagBits-                                                            , ExternalFenceHandleTypeFlags+-- No documentation found for Chapter "ExternalFenceHandleTypeFlagBits"+module Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits  ( ExternalFenceHandleTypeFlags+                                                            , ExternalFenceHandleTypeFlagBits                                                             ) where   -data ExternalFenceHandleTypeFlagBits- type ExternalFenceHandleTypeFlags = ExternalFenceHandleTypeFlagBits++data ExternalFenceHandleTypeFlagBits 
src/Vulkan/Core11/Enums/ExternalMemoryFeatureFlagBits.hs view
@@ -1,28 +1,26 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits  ( ExternalMemoryFeatureFlagBits( EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT+-- No documentation found for Chapter "ExternalMemoryFeatureFlagBits"+module Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits  ( ExternalMemoryFeatureFlags+                                                          , ExternalMemoryFeatureFlagBits( EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT                                                                                          , EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT                                                                                          , EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT                                                                                          , ..                                                                                          )-                                                          , ExternalMemoryFeatureFlags                                                           ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type ExternalMemoryFeatureFlags = ExternalMemoryFeatureFlagBits+ -- | VkExternalMemoryFeatureFlagBits - Bitmask specifying features of an -- external memory handle type --@@ -60,27 +58,34 @@ pattern EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = ExternalMemoryFeatureFlagBits 0x00000001 -- | 'EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT' specifies that handles of this -- type /can/ be exported from Vulkan memory objects.-pattern EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = ExternalMemoryFeatureFlagBits 0x00000002+pattern EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT     = ExternalMemoryFeatureFlagBits 0x00000002 -- | 'EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT' specifies that handles of this -- type /can/ be imported as Vulkan memory objects.-pattern EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = ExternalMemoryFeatureFlagBits 0x00000004+pattern EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT     = ExternalMemoryFeatureFlagBits 0x00000004 -type ExternalMemoryFeatureFlags = ExternalMemoryFeatureFlagBits+conNameExternalMemoryFeatureFlagBits :: String+conNameExternalMemoryFeatureFlagBits = "ExternalMemoryFeatureFlagBits" +enumPrefixExternalMemoryFeatureFlagBits :: String+enumPrefixExternalMemoryFeatureFlagBits = "EXTERNAL_MEMORY_FEATURE_"++showTableExternalMemoryFeatureFlagBits :: [(ExternalMemoryFeatureFlagBits, String)]+showTableExternalMemoryFeatureFlagBits =+  [ (EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT, "DEDICATED_ONLY_BIT")+  , (EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT    , "EXPORTABLE_BIT")+  , (EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT    , "IMPORTABLE_BIT")+  ]+ instance Show ExternalMemoryFeatureFlagBits where-  showsPrec p = \case-    EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT -> showString "EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"-    EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT -> showString "EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"-    EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT -> showString "EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"-    ExternalMemoryFeatureFlagBits x -> showParen (p >= 11) (showString "ExternalMemoryFeatureFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixExternalMemoryFeatureFlagBits+                            showTableExternalMemoryFeatureFlagBits+                            conNameExternalMemoryFeatureFlagBits+                            (\(ExternalMemoryFeatureFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ExternalMemoryFeatureFlagBits where-  readPrec = parens (choose [("EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT", pure EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT)-                            , ("EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT", pure EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT)-                            , ("EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT", pure EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ExternalMemoryFeatureFlagBits")-                       v <- step readPrec-                       pure (ExternalMemoryFeatureFlagBits v)))+  readPrec = enumReadPrec enumPrefixExternalMemoryFeatureFlagBits+                          showTableExternalMemoryFeatureFlagBits+                          conNameExternalMemoryFeatureFlagBits+                          ExternalMemoryFeatureFlagBits 
src/Vulkan/Core11/Enums/ExternalMemoryFeatureFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits  ( ExternalMemoryFeatureFlagBits-                                                          , ExternalMemoryFeatureFlags+-- No documentation found for Chapter "ExternalMemoryFeatureFlagBits"+module Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits  ( ExternalMemoryFeatureFlags+                                                          , ExternalMemoryFeatureFlagBits                                                           ) where   -data ExternalMemoryFeatureFlagBits- type ExternalMemoryFeatureFlags = ExternalMemoryFeatureFlagBits++data ExternalMemoryFeatureFlagBits 
src/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits  ( ExternalMemoryHandleTypeFlagBits( EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT+-- No documentation found for Chapter "ExternalMemoryHandleTypeFlagBits"+module Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits  ( ExternalMemoryHandleTypeFlags+                                                             , ExternalMemoryHandleTypeFlagBits( EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@@ -12,25 +14,21 @@                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT                                                                                                , ..                                                                                                )-                                                             , ExternalMemoryHandleTypeFlags                                                              ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type ExternalMemoryHandleTypeFlags = ExternalMemoryHandleTypeFlagBits+ -- | VkExternalMemoryHandleTypeFlagBits - Bit specifying external memory -- handle types --@@ -112,54 +110,54 @@ -- Additionally, it /must/ be transportable over a socket using an -- @SCM_RIGHTS@ control message. It owns a reference to the underlying -- memory resource represented by its Vulkan memory object.-pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = ExternalMemoryHandleTypeFlagBits 0x00000001+pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT                       = ExternalMemoryHandleTypeFlagBits 0x00000001 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT' specifies an NT handle -- that has only limited valid usage outside of Vulkan and other compatible -- APIs. It /must/ be compatible with the functions @DuplicateHandle@, -- @CloseHandle@, @CompareObjectHandles@, @GetHandleInformation@, and -- @SetHandleInformation@. It owns a reference to the underlying memory -- resource represented by its Vulkan memory object.-pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = ExternalMemoryHandleTypeFlagBits 0x00000002+pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT                    = ExternalMemoryHandleTypeFlagBits 0x00000002 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' specifies a global -- share handle that has only limited valid usage outside of Vulkan and -- other compatible APIs. It is not compatible with any native APIs. It -- does not own a reference to the underlying memory resource represented -- its Vulkan memory object, and will therefore become invalid when all -- Vulkan memory objects associated with it are destroyed.-pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = ExternalMemoryHandleTypeFlagBits 0x00000004+pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT                = ExternalMemoryHandleTypeFlagBits 0x00000004 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT' specifies an NT handle -- returned by @IDXGIResource1@::@CreateSharedHandle@ referring to a -- Direct3D 10 or 11 texture resource. It owns a reference to the memory -- used by the Direct3D resource.-pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = ExternalMemoryHandleTypeFlagBits 0x00000008+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT                   = ExternalMemoryHandleTypeFlagBits 0x00000008 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT' specifies a global -- share handle returned by @IDXGIResource@::@GetSharedHandle@ referring to -- a Direct3D 10 or 11 texture resource. It does not own a reference to the -- underlying Direct3D resource, and will therefore become invalid when all -- Vulkan memory objects and Direct3D resources associated with it are -- destroyed.-pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = ExternalMemoryHandleTypeFlagBits 0x00000010+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT               = ExternalMemoryHandleTypeFlagBits 0x00000010 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT' specifies an NT handle -- returned by @ID3D12Device@::@CreateSharedHandle@ referring to a Direct3D -- 12 heap resource. It owns a reference to the resources used by the -- Direct3D heap.-pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = ExternalMemoryHandleTypeFlagBits 0x00000020+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT                      = ExternalMemoryHandleTypeFlagBits 0x00000020 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT' specifies an NT handle -- returned by @ID3D12Device@::@CreateSharedHandle@ referring to a Direct3D -- 12 committed resource. It owns a reference to the memory used by the -- Direct3D resource.-pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = ExternalMemoryHandleTypeFlagBits 0x00000040+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT                  = ExternalMemoryHandleTypeFlagBits 0x00000040 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT' -- specifies a host pointer to /host mapped foreign memory/. It does not -- own a reference to the underlying memory resource, and will therefore -- become invalid if the foreign memory is unmapped or otherwise becomes no -- longer available.-pattern EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00000100+pattern EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT  = ExternalMemoryHandleTypeFlagBits 0x00000100 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT' specifies a host -- pointer returned by a host memory allocation command. It does not own a -- reference to the underlying memory resource, and will therefore become -- invalid if the host memory is freed.-pattern EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00000080+pattern EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT             = ExternalMemoryHandleTypeFlagBits 0x00000080 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID' -- specifies an -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AHardwareBuffer'@@ -170,40 +168,39 @@ -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT' is a file descriptor for a -- Linux dma_buf. It owns a reference to the underlying memory resource -- represented by its Vulkan memory object.-pattern EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00000200+pattern EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT                     = ExternalMemoryHandleTypeFlagBits 0x00000200 -type ExternalMemoryHandleTypeFlags = ExternalMemoryHandleTypeFlagBits+conNameExternalMemoryHandleTypeFlagBits :: String+conNameExternalMemoryHandleTypeFlagBits = "ExternalMemoryHandleTypeFlagBits" +enumPrefixExternalMemoryHandleTypeFlagBits :: String+enumPrefixExternalMemoryHandleTypeFlagBits = "EXTERNAL_MEMORY_HANDLE_TYPE_"++showTableExternalMemoryHandleTypeFlagBits :: [(ExternalMemoryHandleTypeFlagBits, String)]+showTableExternalMemoryHandleTypeFlagBits =+  [ (EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT                      , "OPAQUE_FD_BIT")+  , (EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT                   , "OPAQUE_WIN32_BIT")+  , (EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT               , "OPAQUE_WIN32_KMT_BIT")+  , (EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT                  , "D3D11_TEXTURE_BIT")+  , (EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT              , "D3D11_TEXTURE_KMT_BIT")+  , (EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT                     , "D3D12_HEAP_BIT")+  , (EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT                 , "D3D12_RESOURCE_BIT")+  , (EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT , "HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT")+  , (EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT            , "HOST_ALLOCATION_BIT_EXT")+  , (EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, "ANDROID_HARDWARE_BUFFER_BIT_ANDROID")+  , (EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT                    , "DMA_BUF_BIT_EXT")+  ]+ instance Show ExternalMemoryHandleTypeFlagBits where-  showsPrec p = \case-    EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"-    EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"-    EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"-    EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"-    EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"-    EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"-    EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"-    EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"-    EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"-    EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"-    EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"-    ExternalMemoryHandleTypeFlagBits x -> showParen (p >= 11) (showString "ExternalMemoryHandleTypeFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixExternalMemoryHandleTypeFlagBits+                            showTableExternalMemoryHandleTypeFlagBits+                            conNameExternalMemoryHandleTypeFlagBits+                            (\(ExternalMemoryHandleTypeFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ExternalMemoryHandleTypeFlagBits where-  readPrec = parens (choose [("EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT", pure EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT)-                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT", pure EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT)-                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT", pure EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT)-                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT", pure EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT)-                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT", pure EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT)-                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT", pure EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT)-                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT", pure EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT)-                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT", pure EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT)-                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT", pure EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT)-                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID", pure EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID)-                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT", pure EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ExternalMemoryHandleTypeFlagBits")-                       v <- step readPrec-                       pure (ExternalMemoryHandleTypeFlagBits v)))+  readPrec = enumReadPrec enumPrefixExternalMemoryHandleTypeFlagBits+                          showTableExternalMemoryHandleTypeFlagBits+                          conNameExternalMemoryHandleTypeFlagBits+                          ExternalMemoryHandleTypeFlagBits 
src/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits  ( ExternalMemoryHandleTypeFlagBits-                                                             , ExternalMemoryHandleTypeFlags+-- No documentation found for Chapter "ExternalMemoryHandleTypeFlagBits"+module Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits  ( ExternalMemoryHandleTypeFlags+                                                             , ExternalMemoryHandleTypeFlagBits                                                              ) where   -data ExternalMemoryHandleTypeFlagBits- type ExternalMemoryHandleTypeFlags = ExternalMemoryHandleTypeFlagBits++data ExternalMemoryHandleTypeFlagBits 
src/Vulkan/Core11/Enums/ExternalSemaphoreFeatureFlagBits.hs view
@@ -1,27 +1,25 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits  ( ExternalSemaphoreFeatureFlagBits( EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT+-- No documentation found for Chapter "ExternalSemaphoreFeatureFlagBits"+module Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits  ( ExternalSemaphoreFeatureFlags+                                                             , ExternalSemaphoreFeatureFlagBits( EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT                                                                                                , EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT                                                                                                , ..                                                                                                )-                                                             , ExternalSemaphoreFeatureFlags                                                              ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type ExternalSemaphoreFeatureFlags = ExternalSemaphoreFeatureFlagBits+ -- | VkExternalSemaphoreFeatureFlagBits - Bitfield describing features of an -- external semaphore handle type --@@ -38,20 +36,28 @@ -- this type /can/ be imported as Vulkan semaphore objects. pattern EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = ExternalSemaphoreFeatureFlagBits 0x00000002 -type ExternalSemaphoreFeatureFlags = ExternalSemaphoreFeatureFlagBits+conNameExternalSemaphoreFeatureFlagBits :: String+conNameExternalSemaphoreFeatureFlagBits = "ExternalSemaphoreFeatureFlagBits" +enumPrefixExternalSemaphoreFeatureFlagBits :: String+enumPrefixExternalSemaphoreFeatureFlagBits = "EXTERNAL_SEMAPHORE_FEATURE_"++showTableExternalSemaphoreFeatureFlagBits :: [(ExternalSemaphoreFeatureFlagBits, String)]+showTableExternalSemaphoreFeatureFlagBits =+  [ (EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT, "EXPORTABLE_BIT")+  , (EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT, "IMPORTABLE_BIT")+  ]+ instance Show ExternalSemaphoreFeatureFlagBits where-  showsPrec p = \case-    EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT -> showString "EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"-    EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT -> showString "EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"-    ExternalSemaphoreFeatureFlagBits x -> showParen (p >= 11) (showString "ExternalSemaphoreFeatureFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixExternalSemaphoreFeatureFlagBits+                            showTableExternalSemaphoreFeatureFlagBits+                            conNameExternalSemaphoreFeatureFlagBits+                            (\(ExternalSemaphoreFeatureFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ExternalSemaphoreFeatureFlagBits where-  readPrec = parens (choose [("EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT", pure EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT)-                            , ("EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT", pure EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ExternalSemaphoreFeatureFlagBits")-                       v <- step readPrec-                       pure (ExternalSemaphoreFeatureFlagBits v)))+  readPrec = enumReadPrec enumPrefixExternalSemaphoreFeatureFlagBits+                          showTableExternalSemaphoreFeatureFlagBits+                          conNameExternalSemaphoreFeatureFlagBits+                          ExternalSemaphoreFeatureFlagBits 
src/Vulkan/Core11/Enums/ExternalSemaphoreFeatureFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits  ( ExternalSemaphoreFeatureFlagBits-                                                             , ExternalSemaphoreFeatureFlags+-- No documentation found for Chapter "ExternalSemaphoreFeatureFlagBits"+module Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits  ( ExternalSemaphoreFeatureFlags+                                                             , ExternalSemaphoreFeatureFlagBits                                                              ) where   -data ExternalSemaphoreFeatureFlagBits- type ExternalSemaphoreFeatureFlags = ExternalSemaphoreFeatureFlagBits++data ExternalSemaphoreFeatureFlagBits 
src/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}+-- No documentation found for Chapter "ExternalSemaphoreHandleTypeFlagBits" module Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits  ( pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT+                                                                , ExternalSemaphoreHandleTypeFlags                                                                 , ExternalSemaphoreHandleTypeFlagBits( EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT                                                                                                      , EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT                                                                                                      , EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@@ -7,29 +9,25 @@                                                                                                      , EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT                                                                                                      , ..                                                                                                      )-                                                                , ExternalSemaphoreHandleTypeFlags                                                                 ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- No documentation found for TopLevel "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT" pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT  +type ExternalSemaphoreHandleTypeFlags = ExternalSemaphoreHandleTypeFlagBits+ -- | VkExternalSemaphoreHandleTypeFlagBits - Bitmask of valid external -- semaphore handle types --@@ -83,14 +81,14 @@ -- Additionally, it /must/ be transportable over a socket using an -- @SCM_RIGHTS@ control message. It owns a reference to the underlying -- synchronization primitive represented by its Vulkan semaphore object.-pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = ExternalSemaphoreHandleTypeFlagBits 0x00000001+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT        = ExternalSemaphoreHandleTypeFlagBits 0x00000001 -- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT' specifies an NT handle -- that has only limited valid usage outside of Vulkan and other compatible -- APIs. It /must/ be compatible with the functions @DuplicateHandle@, -- @CloseHandle@, @CompareObjectHandles@, @GetHandleInformation@, and -- @SetHandleInformation@. It owns a reference to the underlying -- synchronization primitive represented by its Vulkan semaphore object.-pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = ExternalSemaphoreHandleTypeFlagBits 0x00000002+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT     = ExternalSemaphoreHandleTypeFlagBits 0x00000002 -- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' specifies a global -- share handle that has only limited valid usage outside of Vulkan and -- other compatible APIs. It is not compatible with any native APIs. It@@ -104,7 +102,7 @@ -- 12 fence, or @ID3D11Device5@::'Vulkan.Core10.Fence.createFence' by a -- Direct3D 11 fence. It owns a reference to the underlying synchronization -- primitive associated with the Direct3D fence.-pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = ExternalSemaphoreHandleTypeFlagBits 0x00000008+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT      = ExternalSemaphoreHandleTypeFlagBits 0x00000008 -- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT' specifies a POSIX file -- descriptor handle to a Linux Sync File or Android Fence object. It can -- be used with any native API accepting a valid sync file or fence as@@ -112,28 +110,33 @@ -- associated with the file descriptor. Implementations which support -- importing this handle type /must/ accept any type of sync or fence FD -- supported by the native system they are running on.-pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = ExternalSemaphoreHandleTypeFlagBits 0x00000010+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT          = ExternalSemaphoreHandleTypeFlagBits 0x00000010 -type ExternalSemaphoreHandleTypeFlags = ExternalSemaphoreHandleTypeFlagBits+conNameExternalSemaphoreHandleTypeFlagBits :: String+conNameExternalSemaphoreHandleTypeFlagBits = "ExternalSemaphoreHandleTypeFlagBits" +enumPrefixExternalSemaphoreHandleTypeFlagBits :: String+enumPrefixExternalSemaphoreHandleTypeFlagBits = "EXTERNAL_SEMAPHORE_HANDLE_TYPE_"++showTableExternalSemaphoreHandleTypeFlagBits :: [(ExternalSemaphoreHandleTypeFlagBits, String)]+showTableExternalSemaphoreHandleTypeFlagBits =+  [ (EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT       , "OPAQUE_FD_BIT")+  , (EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT    , "OPAQUE_WIN32_BIT")+  , (EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, "OPAQUE_WIN32_KMT_BIT")+  , (EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT     , "D3D12_FENCE_BIT")+  , (EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT         , "SYNC_FD_BIT")+  ]+ instance Show ExternalSemaphoreHandleTypeFlagBits where-  showsPrec p = \case-    EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT -> showString "EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"-    EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT -> showString "EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"-    EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT -> showString "EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"-    EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT -> showString "EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"-    EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT -> showString "EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"-    ExternalSemaphoreHandleTypeFlagBits x -> showParen (p >= 11) (showString "ExternalSemaphoreHandleTypeFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixExternalSemaphoreHandleTypeFlagBits+                            showTableExternalSemaphoreHandleTypeFlagBits+                            conNameExternalSemaphoreHandleTypeFlagBits+                            (\(ExternalSemaphoreHandleTypeFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ExternalSemaphoreHandleTypeFlagBits where-  readPrec = parens (choose [("EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT", pure EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT)-                            , ("EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT", pure EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT)-                            , ("EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT", pure EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT)-                            , ("EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT", pure EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT)-                            , ("EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT", pure EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ExternalSemaphoreHandleTypeFlagBits")-                       v <- step readPrec-                       pure (ExternalSemaphoreHandleTypeFlagBits v)))+  readPrec = enumReadPrec enumPrefixExternalSemaphoreHandleTypeFlagBits+                          showTableExternalSemaphoreHandleTypeFlagBits+                          conNameExternalSemaphoreHandleTypeFlagBits+                          ExternalSemaphoreHandleTypeFlagBits 
src/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits  ( ExternalSemaphoreHandleTypeFlagBits-                                                                , ExternalSemaphoreHandleTypeFlags+-- No documentation found for Chapter "ExternalSemaphoreHandleTypeFlagBits"+module Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits  ( ExternalSemaphoreHandleTypeFlags+                                                                , ExternalSemaphoreHandleTypeFlagBits                                                                 ) where   -data ExternalSemaphoreHandleTypeFlagBits- type ExternalSemaphoreHandleTypeFlags = ExternalSemaphoreHandleTypeFlagBits++data ExternalSemaphoreHandleTypeFlagBits 
src/Vulkan/Core11/Enums/FenceImportFlagBits.hs view
@@ -1,26 +1,24 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.FenceImportFlagBits  ( FenceImportFlagBits( FENCE_IMPORT_TEMPORARY_BIT+-- No documentation found for Chapter "FenceImportFlagBits"+module Vulkan.Core11.Enums.FenceImportFlagBits  ( FenceImportFlags+                                                , FenceImportFlagBits( FENCE_IMPORT_TEMPORARY_BIT                                                                      , ..                                                                      )-                                                , FenceImportFlags                                                 ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type FenceImportFlags = FenceImportFlagBits+ -- | VkFenceImportFlagBits - Bitmask specifying additional parameters of -- fence payload import --@@ -36,18 +34,25 @@ -- regardless of the permanence of @handleType@. pattern FENCE_IMPORT_TEMPORARY_BIT = FenceImportFlagBits 0x00000001 -type FenceImportFlags = FenceImportFlagBits+conNameFenceImportFlagBits :: String+conNameFenceImportFlagBits = "FenceImportFlagBits" +enumPrefixFenceImportFlagBits :: String+enumPrefixFenceImportFlagBits = "FENCE_IMPORT_TEMPORARY_BIT"++showTableFenceImportFlagBits :: [(FenceImportFlagBits, String)]+showTableFenceImportFlagBits = [(FENCE_IMPORT_TEMPORARY_BIT, "")]+ instance Show FenceImportFlagBits where-  showsPrec p = \case-    FENCE_IMPORT_TEMPORARY_BIT -> showString "FENCE_IMPORT_TEMPORARY_BIT"-    FenceImportFlagBits x -> showParen (p >= 11) (showString "FenceImportFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixFenceImportFlagBits+                            showTableFenceImportFlagBits+                            conNameFenceImportFlagBits+                            (\(FenceImportFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read FenceImportFlagBits where-  readPrec = parens (choose [("FENCE_IMPORT_TEMPORARY_BIT", pure FENCE_IMPORT_TEMPORARY_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "FenceImportFlagBits")-                       v <- step readPrec-                       pure (FenceImportFlagBits v)))+  readPrec = enumReadPrec enumPrefixFenceImportFlagBits+                          showTableFenceImportFlagBits+                          conNameFenceImportFlagBits+                          FenceImportFlagBits 
src/Vulkan/Core11/Enums/FenceImportFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.FenceImportFlagBits  ( FenceImportFlagBits-                                                , FenceImportFlags+-- No documentation found for Chapter "FenceImportFlagBits"+module Vulkan.Core11.Enums.FenceImportFlagBits  ( FenceImportFlags+                                                , FenceImportFlagBits                                                 ) where   -data FenceImportFlagBits- type FenceImportFlags = FenceImportFlagBits++data FenceImportFlagBits 
src/Vulkan/Core11/Enums/MemoryAllocateFlagBits.hs view
@@ -1,28 +1,26 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.MemoryAllocateFlagBits  ( MemoryAllocateFlagBits( MEMORY_ALLOCATE_DEVICE_MASK_BIT+-- No documentation found for Chapter "MemoryAllocateFlagBits"+module Vulkan.Core11.Enums.MemoryAllocateFlagBits  ( MemoryAllocateFlags+                                                   , MemoryAllocateFlagBits( MEMORY_ALLOCATE_DEVICE_MASK_BIT                                                                            , MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT                                                                            , MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT                                                                            , ..                                                                            )-                                                   , MemoryAllocateFlags                                                    ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type MemoryAllocateFlags = MemoryAllocateFlagBits+ -- | VkMemoryAllocateFlagBits - Bitmask specifying flags for a device memory -- allocation --@@ -35,7 +33,7 @@ -- | 'MEMORY_ALLOCATE_DEVICE_MASK_BIT' specifies that memory will be -- allocated for the devices in -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo'::@deviceMask@.-pattern MEMORY_ALLOCATE_DEVICE_MASK_BIT = MemoryAllocateFlagBits 0x00000001+pattern MEMORY_ALLOCATE_DEVICE_MASK_BIT                   = MemoryAllocateFlagBits 0x00000001 -- | 'MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT' specifies that the -- memory’s address /can/ be saved and reused on a subsequent run (e.g. for -- trace capture and replay), see@@ -48,24 +46,31 @@ -- bit set in @usage@, and that the memory handle /can/ be used to retrieve -- an opaque address via -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getDeviceMemoryOpaqueCaptureAddress'.-pattern MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = MemoryAllocateFlagBits 0x00000002+pattern MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT                = MemoryAllocateFlagBits 0x00000002 -type MemoryAllocateFlags = MemoryAllocateFlagBits+conNameMemoryAllocateFlagBits :: String+conNameMemoryAllocateFlagBits = "MemoryAllocateFlagBits" +enumPrefixMemoryAllocateFlagBits :: String+enumPrefixMemoryAllocateFlagBits = "MEMORY_ALLOCATE_DEVICE_"++showTableMemoryAllocateFlagBits :: [(MemoryAllocateFlagBits, String)]+showTableMemoryAllocateFlagBits =+  [ (MEMORY_ALLOCATE_DEVICE_MASK_BIT                  , "MASK_BIT")+  , (MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, "ADDRESS_CAPTURE_REPLAY_BIT")+  , (MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT               , "ADDRESS_BIT")+  ]+ instance Show MemoryAllocateFlagBits where-  showsPrec p = \case-    MEMORY_ALLOCATE_DEVICE_MASK_BIT -> showString "MEMORY_ALLOCATE_DEVICE_MASK_BIT"-    MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT -> showString "MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"-    MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT -> showString "MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT"-    MemoryAllocateFlagBits x -> showParen (p >= 11) (showString "MemoryAllocateFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixMemoryAllocateFlagBits+                            showTableMemoryAllocateFlagBits+                            conNameMemoryAllocateFlagBits+                            (\(MemoryAllocateFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read MemoryAllocateFlagBits where-  readPrec = parens (choose [("MEMORY_ALLOCATE_DEVICE_MASK_BIT", pure MEMORY_ALLOCATE_DEVICE_MASK_BIT)-                            , ("MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT", pure MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT)-                            , ("MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT", pure MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "MemoryAllocateFlagBits")-                       v <- step readPrec-                       pure (MemoryAllocateFlagBits v)))+  readPrec = enumReadPrec enumPrefixMemoryAllocateFlagBits+                          showTableMemoryAllocateFlagBits+                          conNameMemoryAllocateFlagBits+                          MemoryAllocateFlagBits 
src/Vulkan/Core11/Enums/MemoryAllocateFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.MemoryAllocateFlagBits  ( MemoryAllocateFlagBits-                                                   , MemoryAllocateFlags+-- No documentation found for Chapter "MemoryAllocateFlagBits"+module Vulkan.Core11.Enums.MemoryAllocateFlagBits  ( MemoryAllocateFlags+                                                   , MemoryAllocateFlagBits                                                    ) where   -data MemoryAllocateFlagBits- type MemoryAllocateFlags = MemoryAllocateFlagBits++data MemoryAllocateFlagBits 
src/Vulkan/Core11/Enums/PeerMemoryFeatureFlagBits.hs view
@@ -1,29 +1,27 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits  ( PeerMemoryFeatureFlagBits( PEER_MEMORY_FEATURE_COPY_SRC_BIT+-- No documentation found for Chapter "PeerMemoryFeatureFlagBits"+module Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits  ( PeerMemoryFeatureFlags+                                                      , PeerMemoryFeatureFlagBits( PEER_MEMORY_FEATURE_COPY_SRC_BIT                                                                                  , PEER_MEMORY_FEATURE_COPY_DST_BIT                                                                                  , PEER_MEMORY_FEATURE_GENERIC_SRC_BIT                                                                                  , PEER_MEMORY_FEATURE_GENERIC_DST_BIT                                                                                  , ..                                                                                  )-                                                      , PeerMemoryFeatureFlags                                                       ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type PeerMemoryFeatureFlags = PeerMemoryFeatureFlagBits+ -- | VkPeerMemoryFeatureFlagBits - Bitmask specifying supported peer memory -- features --@@ -54,10 +52,10 @@  -- | 'PEER_MEMORY_FEATURE_COPY_SRC_BIT' specifies that the memory /can/ be -- accessed as the source of any @vkCmdCopy*@ command.-pattern PEER_MEMORY_FEATURE_COPY_SRC_BIT = PeerMemoryFeatureFlagBits 0x00000001+pattern PEER_MEMORY_FEATURE_COPY_SRC_BIT    = PeerMemoryFeatureFlagBits 0x00000001 -- | 'PEER_MEMORY_FEATURE_COPY_DST_BIT' specifies that the memory /can/ be -- accessed as the destination of any @vkCmdCopy*@ command.-pattern PEER_MEMORY_FEATURE_COPY_DST_BIT = PeerMemoryFeatureFlagBits 0x00000002+pattern PEER_MEMORY_FEATURE_COPY_DST_BIT    = PeerMemoryFeatureFlagBits 0x00000002 -- | 'PEER_MEMORY_FEATURE_GENERIC_SRC_BIT' specifies that the memory /can/ be -- read as any memory access type. pattern PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = PeerMemoryFeatureFlagBits 0x00000004@@ -66,24 +64,30 @@ -- writes. pattern PEER_MEMORY_FEATURE_GENERIC_DST_BIT = PeerMemoryFeatureFlagBits 0x00000008 -type PeerMemoryFeatureFlags = PeerMemoryFeatureFlagBits+conNamePeerMemoryFeatureFlagBits :: String+conNamePeerMemoryFeatureFlagBits = "PeerMemoryFeatureFlagBits" +enumPrefixPeerMemoryFeatureFlagBits :: String+enumPrefixPeerMemoryFeatureFlagBits = "PEER_MEMORY_FEATURE_"++showTablePeerMemoryFeatureFlagBits :: [(PeerMemoryFeatureFlagBits, String)]+showTablePeerMemoryFeatureFlagBits =+  [ (PEER_MEMORY_FEATURE_COPY_SRC_BIT   , "COPY_SRC_BIT")+  , (PEER_MEMORY_FEATURE_COPY_DST_BIT   , "COPY_DST_BIT")+  , (PEER_MEMORY_FEATURE_GENERIC_SRC_BIT, "GENERIC_SRC_BIT")+  , (PEER_MEMORY_FEATURE_GENERIC_DST_BIT, "GENERIC_DST_BIT")+  ]+ instance Show PeerMemoryFeatureFlagBits where-  showsPrec p = \case-    PEER_MEMORY_FEATURE_COPY_SRC_BIT -> showString "PEER_MEMORY_FEATURE_COPY_SRC_BIT"-    PEER_MEMORY_FEATURE_COPY_DST_BIT -> showString "PEER_MEMORY_FEATURE_COPY_DST_BIT"-    PEER_MEMORY_FEATURE_GENERIC_SRC_BIT -> showString "PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"-    PEER_MEMORY_FEATURE_GENERIC_DST_BIT -> showString "PEER_MEMORY_FEATURE_GENERIC_DST_BIT"-    PeerMemoryFeatureFlagBits x -> showParen (p >= 11) (showString "PeerMemoryFeatureFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPeerMemoryFeatureFlagBits+                            showTablePeerMemoryFeatureFlagBits+                            conNamePeerMemoryFeatureFlagBits+                            (\(PeerMemoryFeatureFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PeerMemoryFeatureFlagBits where-  readPrec = parens (choose [("PEER_MEMORY_FEATURE_COPY_SRC_BIT", pure PEER_MEMORY_FEATURE_COPY_SRC_BIT)-                            , ("PEER_MEMORY_FEATURE_COPY_DST_BIT", pure PEER_MEMORY_FEATURE_COPY_DST_BIT)-                            , ("PEER_MEMORY_FEATURE_GENERIC_SRC_BIT", pure PEER_MEMORY_FEATURE_GENERIC_SRC_BIT)-                            , ("PEER_MEMORY_FEATURE_GENERIC_DST_BIT", pure PEER_MEMORY_FEATURE_GENERIC_DST_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "PeerMemoryFeatureFlagBits")-                       v <- step readPrec-                       pure (PeerMemoryFeatureFlagBits v)))+  readPrec = enumReadPrec enumPrefixPeerMemoryFeatureFlagBits+                          showTablePeerMemoryFeatureFlagBits+                          conNamePeerMemoryFeatureFlagBits+                          PeerMemoryFeatureFlagBits 
src/Vulkan/Core11/Enums/PeerMemoryFeatureFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits  ( PeerMemoryFeatureFlagBits-                                                      , PeerMemoryFeatureFlags+-- No documentation found for Chapter "PeerMemoryFeatureFlagBits"+module Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits  ( PeerMemoryFeatureFlags+                                                      , PeerMemoryFeatureFlagBits                                                       ) where   -data PeerMemoryFeatureFlagBits- type PeerMemoryFeatureFlags = PeerMemoryFeatureFlagBits++data PeerMemoryFeatureFlagBits 
src/Vulkan/Core11/Enums/PointClippingBehavior.hs view
@@ -1,22 +1,17 @@ {-# language CPP #-}+-- No documentation found for Chapter "PointClippingBehavior" module Vulkan.Core11.Enums.PointClippingBehavior  (PointClippingBehavior( POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES                                                                         , POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY                                                                         , ..                                                                         )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkPointClippingBehavior - Enum specifying the point clipping behavior --@@ -30,7 +25,7 @@ -- | 'POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES' specifies that the primitive -- is discarded if the vertex lies outside any clip plane, including the -- planes bounding the view volume.-pattern POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = PointClippingBehavior 0+pattern POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES       = PointClippingBehavior 0 -- | 'POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY' specifies that the -- primitive is discarded only if the vertex lies outside any user clip -- plane.@@ -38,18 +33,28 @@ {-# complete POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,              POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY :: PointClippingBehavior #-} +conNamePointClippingBehavior :: String+conNamePointClippingBehavior = "PointClippingBehavior"++enumPrefixPointClippingBehavior :: String+enumPrefixPointClippingBehavior = "POINT_CLIPPING_BEHAVIOR_"++showTablePointClippingBehavior :: [(PointClippingBehavior, String)]+showTablePointClippingBehavior =+  [ (POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES      , "ALL_CLIP_PLANES")+  , (POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY, "USER_CLIP_PLANES_ONLY")+  ]+ instance Show PointClippingBehavior where-  showsPrec p = \case-    POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES -> showString "POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"-    POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY -> showString "POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"-    PointClippingBehavior x -> showParen (p >= 11) (showString "PointClippingBehavior " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixPointClippingBehavior+                            showTablePointClippingBehavior+                            conNamePointClippingBehavior+                            (\(PointClippingBehavior x) -> x)+                            (showsPrec 11)  instance Read PointClippingBehavior where-  readPrec = parens (choose [("POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES", pure POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES)-                            , ("POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY", pure POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY)]-                     +++-                     prec 10 (do-                       expectP (Ident "PointClippingBehavior")-                       v <- step readPrec-                       pure (PointClippingBehavior v)))+  readPrec = enumReadPrec enumPrefixPointClippingBehavior+                          showTablePointClippingBehavior+                          conNamePointClippingBehavior+                          PointClippingBehavior 
src/Vulkan/Core11/Enums/PointClippingBehavior.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "PointClippingBehavior" module Vulkan.Core11.Enums.PointClippingBehavior  (PointClippingBehavior) where  
src/Vulkan/Core11/Enums/SamplerYcbcrModelConversion.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "SamplerYcbcrModelConversion" module Vulkan.Core11.Enums.SamplerYcbcrModelConversion  (SamplerYcbcrModelConversion( SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY                                                                                     , SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY                                                                                     , SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709@@ -7,19 +8,13 @@                                                                                     , ..                                                                                     )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkSamplerYcbcrModelConversion - Color model component of a color space --@@ -91,39 +86,46 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- No documentation found for Nested "VkSamplerYcbcrModelConversion" "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"-pattern SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = SamplerYcbcrModelConversion 0+pattern SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY   = SamplerYcbcrModelConversion 0 -- No documentation found for Nested "VkSamplerYcbcrModelConversion" "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY" pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = SamplerYcbcrModelConversion 1 -- No documentation found for Nested "VkSamplerYcbcrModelConversion" "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709"-pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = SamplerYcbcrModelConversion 2+pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709      = SamplerYcbcrModelConversion 2 -- No documentation found for Nested "VkSamplerYcbcrModelConversion" "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601"-pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = SamplerYcbcrModelConversion 3+pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601      = SamplerYcbcrModelConversion 3 -- No documentation found for Nested "VkSamplerYcbcrModelConversion" "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020"-pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = SamplerYcbcrModelConversion 4+pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020     = SamplerYcbcrModelConversion 4 {-# complete SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,              SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY,              SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,              SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,              SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 :: SamplerYcbcrModelConversion #-} +conNameSamplerYcbcrModelConversion :: String+conNameSamplerYcbcrModelConversion = "SamplerYcbcrModelConversion"++enumPrefixSamplerYcbcrModelConversion :: String+enumPrefixSamplerYcbcrModelConversion = "SAMPLER_YCBCR_MODEL_CONVERSION_"++showTableSamplerYcbcrModelConversion :: [(SamplerYcbcrModelConversion, String)]+showTableSamplerYcbcrModelConversion =+  [ (SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY  , "RGB_IDENTITY")+  , (SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY, "YCBCR_IDENTITY")+  , (SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709     , "YCBCR_709")+  , (SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601     , "YCBCR_601")+  , (SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020    , "YCBCR_2020")+  ]+ instance Show SamplerYcbcrModelConversion where-  showsPrec p = \case-    SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY -> showString "SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"-    SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY -> showString "SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY"-    SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 -> showString "SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709"-    SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 -> showString "SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601"-    SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 -> showString "SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020"-    SamplerYcbcrModelConversion x -> showParen (p >= 11) (showString "SamplerYcbcrModelConversion " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixSamplerYcbcrModelConversion+                            showTableSamplerYcbcrModelConversion+                            conNameSamplerYcbcrModelConversion+                            (\(SamplerYcbcrModelConversion x) -> x)+                            (showsPrec 11)  instance Read SamplerYcbcrModelConversion where-  readPrec = parens (choose [("SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY", pure SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY)-                            , ("SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY", pure SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY)-                            , ("SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709", pure SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709)-                            , ("SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601", pure SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601)-                            , ("SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020", pure SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020)]-                     +++-                     prec 10 (do-                       expectP (Ident "SamplerYcbcrModelConversion")-                       v <- step readPrec-                       pure (SamplerYcbcrModelConversion v)))+  readPrec = enumReadPrec enumPrefixSamplerYcbcrModelConversion+                          showTableSamplerYcbcrModelConversion+                          conNameSamplerYcbcrModelConversion+                          SamplerYcbcrModelConversion 
src/Vulkan/Core11/Enums/SamplerYcbcrModelConversion.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "SamplerYcbcrModelConversion" module Vulkan.Core11.Enums.SamplerYcbcrModelConversion  (SamplerYcbcrModelConversion) where  
src/Vulkan/Core11/Enums/SamplerYcbcrRange.hs view
@@ -1,22 +1,17 @@ {-# language CPP #-}+-- No documentation found for Chapter "SamplerYcbcrRange" module Vulkan.Core11.Enums.SamplerYcbcrRange  (SamplerYcbcrRange( SAMPLER_YCBCR_RANGE_ITU_FULL                                                                 , SAMPLER_YCBCR_RANGE_ITU_NARROW                                                                 , ..                                                                 )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkSamplerYcbcrRange - Range of encoded values in a color space --@@ -44,7 +39,7 @@ -- | 'SAMPLER_YCBCR_RANGE_ITU_FULL' specifies that the full range of the -- encoded values are valid and interpreted according to the ITU “full -- range” quantization rules.-pattern SAMPLER_YCBCR_RANGE_ITU_FULL = SamplerYcbcrRange 0+pattern SAMPLER_YCBCR_RANGE_ITU_FULL   = SamplerYcbcrRange 0 -- | 'SAMPLER_YCBCR_RANGE_ITU_NARROW' specifies that headroom and foot room -- are reserved in the numerical range of encoded values, and the remaining -- values are expanded according to the ITU “narrow range” quantization@@ -53,18 +48,23 @@ {-# complete SAMPLER_YCBCR_RANGE_ITU_FULL,              SAMPLER_YCBCR_RANGE_ITU_NARROW :: SamplerYcbcrRange #-} +conNameSamplerYcbcrRange :: String+conNameSamplerYcbcrRange = "SamplerYcbcrRange"++enumPrefixSamplerYcbcrRange :: String+enumPrefixSamplerYcbcrRange = "SAMPLER_YCBCR_RANGE_ITU_"++showTableSamplerYcbcrRange :: [(SamplerYcbcrRange, String)]+showTableSamplerYcbcrRange = [(SAMPLER_YCBCR_RANGE_ITU_FULL, "FULL"), (SAMPLER_YCBCR_RANGE_ITU_NARROW, "NARROW")]+ instance Show SamplerYcbcrRange where-  showsPrec p = \case-    SAMPLER_YCBCR_RANGE_ITU_FULL -> showString "SAMPLER_YCBCR_RANGE_ITU_FULL"-    SAMPLER_YCBCR_RANGE_ITU_NARROW -> showString "SAMPLER_YCBCR_RANGE_ITU_NARROW"-    SamplerYcbcrRange x -> showParen (p >= 11) (showString "SamplerYcbcrRange " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixSamplerYcbcrRange+                            showTableSamplerYcbcrRange+                            conNameSamplerYcbcrRange+                            (\(SamplerYcbcrRange x) -> x)+                            (showsPrec 11)  instance Read SamplerYcbcrRange where-  readPrec = parens (choose [("SAMPLER_YCBCR_RANGE_ITU_FULL", pure SAMPLER_YCBCR_RANGE_ITU_FULL)-                            , ("SAMPLER_YCBCR_RANGE_ITU_NARROW", pure SAMPLER_YCBCR_RANGE_ITU_NARROW)]-                     +++-                     prec 10 (do-                       expectP (Ident "SamplerYcbcrRange")-                       v <- step readPrec-                       pure (SamplerYcbcrRange v)))+  readPrec =+    enumReadPrec enumPrefixSamplerYcbcrRange showTableSamplerYcbcrRange conNameSamplerYcbcrRange SamplerYcbcrRange 
src/Vulkan/Core11/Enums/SamplerYcbcrRange.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "SamplerYcbcrRange" module Vulkan.Core11.Enums.SamplerYcbcrRange  (SamplerYcbcrRange) where  
src/Vulkan/Core11/Enums/SemaphoreImportFlagBits.hs view
@@ -1,26 +1,24 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.SemaphoreImportFlagBits  ( SemaphoreImportFlagBits( SEMAPHORE_IMPORT_TEMPORARY_BIT+-- No documentation found for Chapter "SemaphoreImportFlagBits"+module Vulkan.Core11.Enums.SemaphoreImportFlagBits  ( SemaphoreImportFlags+                                                    , SemaphoreImportFlagBits( SEMAPHORE_IMPORT_TEMPORARY_BIT                                                                              , ..                                                                              )-                                                    , SemaphoreImportFlags                                                     ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type SemaphoreImportFlags = SemaphoreImportFlagBits+ -- | VkSemaphoreImportFlagBits - Bitmask specifying additional parameters of -- semaphore payload import --@@ -40,18 +38,25 @@ -- regardless of the permanence of @handleType@. pattern SEMAPHORE_IMPORT_TEMPORARY_BIT = SemaphoreImportFlagBits 0x00000001 -type SemaphoreImportFlags = SemaphoreImportFlagBits+conNameSemaphoreImportFlagBits :: String+conNameSemaphoreImportFlagBits = "SemaphoreImportFlagBits" +enumPrefixSemaphoreImportFlagBits :: String+enumPrefixSemaphoreImportFlagBits = "SEMAPHORE_IMPORT_TEMPORARY_BIT"++showTableSemaphoreImportFlagBits :: [(SemaphoreImportFlagBits, String)]+showTableSemaphoreImportFlagBits = [(SEMAPHORE_IMPORT_TEMPORARY_BIT, "")]+ instance Show SemaphoreImportFlagBits where-  showsPrec p = \case-    SEMAPHORE_IMPORT_TEMPORARY_BIT -> showString "SEMAPHORE_IMPORT_TEMPORARY_BIT"-    SemaphoreImportFlagBits x -> showParen (p >= 11) (showString "SemaphoreImportFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixSemaphoreImportFlagBits+                            showTableSemaphoreImportFlagBits+                            conNameSemaphoreImportFlagBits+                            (\(SemaphoreImportFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read SemaphoreImportFlagBits where-  readPrec = parens (choose [("SEMAPHORE_IMPORT_TEMPORARY_BIT", pure SEMAPHORE_IMPORT_TEMPORARY_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "SemaphoreImportFlagBits")-                       v <- step readPrec-                       pure (SemaphoreImportFlagBits v)))+  readPrec = enumReadPrec enumPrefixSemaphoreImportFlagBits+                          showTableSemaphoreImportFlagBits+                          conNameSemaphoreImportFlagBits+                          SemaphoreImportFlagBits 
src/Vulkan/Core11/Enums/SemaphoreImportFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.SemaphoreImportFlagBits  ( SemaphoreImportFlagBits-                                                    , SemaphoreImportFlags+-- No documentation found for Chapter "SemaphoreImportFlagBits"+module Vulkan.Core11.Enums.SemaphoreImportFlagBits  ( SemaphoreImportFlags+                                                    , SemaphoreImportFlagBits                                                     ) where   -data SemaphoreImportFlagBits- type SemaphoreImportFlags = SemaphoreImportFlagBits++data SemaphoreImportFlagBits 
src/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}-module Vulkan.Core11.Enums.SubgroupFeatureFlagBits  ( SubgroupFeatureFlagBits( SUBGROUP_FEATURE_BASIC_BIT+-- No documentation found for Chapter "SubgroupFeatureFlagBits"+module Vulkan.Core11.Enums.SubgroupFeatureFlagBits  ( SubgroupFeatureFlags+                                                    , SubgroupFeatureFlagBits( SUBGROUP_FEATURE_BASIC_BIT                                                                              , SUBGROUP_FEATURE_VOTE_BIT                                                                              , SUBGROUP_FEATURE_ARITHMETIC_BIT                                                                              , SUBGROUP_FEATURE_BALLOT_BIT@@ -10,25 +12,21 @@                                                                              , SUBGROUP_FEATURE_PARTITIONED_BIT_NV                                                                              , ..                                                                              )-                                                    , SubgroupFeatureFlags                                                     ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type SubgroupFeatureFlags = SubgroupFeatureFlagBits+ -- | VkSubgroupFeatureFlagBits - Enum describing what group operations are -- supported with subgroup scope --@@ -41,23 +39,23 @@ -- | #features-subgroup-basic# 'SUBGROUP_FEATURE_BASIC_BIT' specifies the -- device will accept SPIR-V shader modules containing the -- @GroupNonUniform@ capability.-pattern SUBGROUP_FEATURE_BASIC_BIT = SubgroupFeatureFlagBits 0x00000001+pattern SUBGROUP_FEATURE_BASIC_BIT            = SubgroupFeatureFlagBits 0x00000001 -- | #features-subgroup-vote# 'SUBGROUP_FEATURE_VOTE_BIT' specifies the -- device will accept SPIR-V shader modules containing the -- @GroupNonUniformVote@ capability.-pattern SUBGROUP_FEATURE_VOTE_BIT = SubgroupFeatureFlagBits 0x00000002+pattern SUBGROUP_FEATURE_VOTE_BIT             = SubgroupFeatureFlagBits 0x00000002 -- | #features-subgroup-arithmetic# 'SUBGROUP_FEATURE_ARITHMETIC_BIT' -- specifies the device will accept SPIR-V shader modules containing the -- @GroupNonUniformArithmetic@ capability.-pattern SUBGROUP_FEATURE_ARITHMETIC_BIT = SubgroupFeatureFlagBits 0x00000004+pattern SUBGROUP_FEATURE_ARITHMETIC_BIT       = SubgroupFeatureFlagBits 0x00000004 -- | #features-subgroup-ballot# 'SUBGROUP_FEATURE_BALLOT_BIT' specifies the -- device will accept SPIR-V shader modules containing the -- @GroupNonUniformBallot@ capability.-pattern SUBGROUP_FEATURE_BALLOT_BIT = SubgroupFeatureFlagBits 0x00000008+pattern SUBGROUP_FEATURE_BALLOT_BIT           = SubgroupFeatureFlagBits 0x00000008 -- | #features-subgroup-shuffle# 'SUBGROUP_FEATURE_SHUFFLE_BIT' specifies the -- device will accept SPIR-V shader modules containing the -- @GroupNonUniformShuffle@ capability.-pattern SUBGROUP_FEATURE_SHUFFLE_BIT = SubgroupFeatureFlagBits 0x00000010+pattern SUBGROUP_FEATURE_SHUFFLE_BIT          = SubgroupFeatureFlagBits 0x00000010 -- | #features-subgroup-shuffle-relative# -- 'SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT' specifies the device will accept -- SPIR-V shader modules containing the @GroupNonUniformShuffleRelative@@@ -66,44 +64,45 @@ -- | #features-subgroup-clustered# 'SUBGROUP_FEATURE_CLUSTERED_BIT' specifies -- the device will accept SPIR-V shader modules containing the -- @GroupNonUniformClustered@ capability.-pattern SUBGROUP_FEATURE_CLUSTERED_BIT = SubgroupFeatureFlagBits 0x00000040+pattern SUBGROUP_FEATURE_CLUSTERED_BIT        = SubgroupFeatureFlagBits 0x00000040 -- | #features-subgroup-quad# 'SUBGROUP_FEATURE_QUAD_BIT' specifies the -- device will accept SPIR-V shader modules containing the -- @GroupNonUniformQuad@ capability.-pattern SUBGROUP_FEATURE_QUAD_BIT = SubgroupFeatureFlagBits 0x00000080+pattern SUBGROUP_FEATURE_QUAD_BIT             = SubgroupFeatureFlagBits 0x00000080 -- | #features-subgroup-partitioned# 'SUBGROUP_FEATURE_PARTITIONED_BIT_NV' -- specifies the device will accept SPIR-V shader modules containing the -- @GroupNonUniformPartitionedNV@ capability.-pattern SUBGROUP_FEATURE_PARTITIONED_BIT_NV = SubgroupFeatureFlagBits 0x00000100+pattern SUBGROUP_FEATURE_PARTITIONED_BIT_NV   = SubgroupFeatureFlagBits 0x00000100 -type SubgroupFeatureFlags = SubgroupFeatureFlagBits+conNameSubgroupFeatureFlagBits :: String+conNameSubgroupFeatureFlagBits = "SubgroupFeatureFlagBits" +enumPrefixSubgroupFeatureFlagBits :: String+enumPrefixSubgroupFeatureFlagBits = "SUBGROUP_FEATURE_"++showTableSubgroupFeatureFlagBits :: [(SubgroupFeatureFlagBits, String)]+showTableSubgroupFeatureFlagBits =+  [ (SUBGROUP_FEATURE_BASIC_BIT           , "BASIC_BIT")+  , (SUBGROUP_FEATURE_VOTE_BIT            , "VOTE_BIT")+  , (SUBGROUP_FEATURE_ARITHMETIC_BIT      , "ARITHMETIC_BIT")+  , (SUBGROUP_FEATURE_BALLOT_BIT          , "BALLOT_BIT")+  , (SUBGROUP_FEATURE_SHUFFLE_BIT         , "SHUFFLE_BIT")+  , (SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT, "SHUFFLE_RELATIVE_BIT")+  , (SUBGROUP_FEATURE_CLUSTERED_BIT       , "CLUSTERED_BIT")+  , (SUBGROUP_FEATURE_QUAD_BIT            , "QUAD_BIT")+  , (SUBGROUP_FEATURE_PARTITIONED_BIT_NV  , "PARTITIONED_BIT_NV")+  ]+ instance Show SubgroupFeatureFlagBits where-  showsPrec p = \case-    SUBGROUP_FEATURE_BASIC_BIT -> showString "SUBGROUP_FEATURE_BASIC_BIT"-    SUBGROUP_FEATURE_VOTE_BIT -> showString "SUBGROUP_FEATURE_VOTE_BIT"-    SUBGROUP_FEATURE_ARITHMETIC_BIT -> showString "SUBGROUP_FEATURE_ARITHMETIC_BIT"-    SUBGROUP_FEATURE_BALLOT_BIT -> showString "SUBGROUP_FEATURE_BALLOT_BIT"-    SUBGROUP_FEATURE_SHUFFLE_BIT -> showString "SUBGROUP_FEATURE_SHUFFLE_BIT"-    SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT -> showString "SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"-    SUBGROUP_FEATURE_CLUSTERED_BIT -> showString "SUBGROUP_FEATURE_CLUSTERED_BIT"-    SUBGROUP_FEATURE_QUAD_BIT -> showString "SUBGROUP_FEATURE_QUAD_BIT"-    SUBGROUP_FEATURE_PARTITIONED_BIT_NV -> showString "SUBGROUP_FEATURE_PARTITIONED_BIT_NV"-    SubgroupFeatureFlagBits x -> showParen (p >= 11) (showString "SubgroupFeatureFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixSubgroupFeatureFlagBits+                            showTableSubgroupFeatureFlagBits+                            conNameSubgroupFeatureFlagBits+                            (\(SubgroupFeatureFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read SubgroupFeatureFlagBits where-  readPrec = parens (choose [("SUBGROUP_FEATURE_BASIC_BIT", pure SUBGROUP_FEATURE_BASIC_BIT)-                            , ("SUBGROUP_FEATURE_VOTE_BIT", pure SUBGROUP_FEATURE_VOTE_BIT)-                            , ("SUBGROUP_FEATURE_ARITHMETIC_BIT", pure SUBGROUP_FEATURE_ARITHMETIC_BIT)-                            , ("SUBGROUP_FEATURE_BALLOT_BIT", pure SUBGROUP_FEATURE_BALLOT_BIT)-                            , ("SUBGROUP_FEATURE_SHUFFLE_BIT", pure SUBGROUP_FEATURE_SHUFFLE_BIT)-                            , ("SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT", pure SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT)-                            , ("SUBGROUP_FEATURE_CLUSTERED_BIT", pure SUBGROUP_FEATURE_CLUSTERED_BIT)-                            , ("SUBGROUP_FEATURE_QUAD_BIT", pure SUBGROUP_FEATURE_QUAD_BIT)-                            , ("SUBGROUP_FEATURE_PARTITIONED_BIT_NV", pure SUBGROUP_FEATURE_PARTITIONED_BIT_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "SubgroupFeatureFlagBits")-                       v <- step readPrec-                       pure (SubgroupFeatureFlagBits v)))+  readPrec = enumReadPrec enumPrefixSubgroupFeatureFlagBits+                          showTableSubgroupFeatureFlagBits+                          conNameSubgroupFeatureFlagBits+                          SubgroupFeatureFlagBits 
src/Vulkan/Core11/Enums/TessellationDomainOrigin.hs view
@@ -1,22 +1,17 @@ {-# language CPP #-}+-- No documentation found for Chapter "TessellationDomainOrigin" module Vulkan.Core11.Enums.TessellationDomainOrigin  (TessellationDomainOrigin( TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT                                                                               , TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT                                                                               , ..                                                                               )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkTessellationDomainOrigin - Enum describing tessellation domain origin --@@ -43,18 +38,26 @@ {-# complete TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,              TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT :: TessellationDomainOrigin #-} +conNameTessellationDomainOrigin :: String+conNameTessellationDomainOrigin = "TessellationDomainOrigin"++enumPrefixTessellationDomainOrigin :: String+enumPrefixTessellationDomainOrigin = "TESSELLATION_DOMAIN_ORIGIN_"++showTableTessellationDomainOrigin :: [(TessellationDomainOrigin, String)]+showTableTessellationDomainOrigin =+  [(TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, "UPPER_LEFT"), (TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT, "LOWER_LEFT")]+ instance Show TessellationDomainOrigin where-  showsPrec p = \case-    TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT -> showString "TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"-    TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT -> showString "TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"-    TessellationDomainOrigin x -> showParen (p >= 11) (showString "TessellationDomainOrigin " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixTessellationDomainOrigin+                            showTableTessellationDomainOrigin+                            conNameTessellationDomainOrigin+                            (\(TessellationDomainOrigin x) -> x)+                            (showsPrec 11)  instance Read TessellationDomainOrigin where-  readPrec = parens (choose [("TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT", pure TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT)-                            , ("TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT", pure TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT)]-                     +++-                     prec 10 (do-                       expectP (Ident "TessellationDomainOrigin")-                       v <- step readPrec-                       pure (TessellationDomainOrigin v)))+  readPrec = enumReadPrec enumPrefixTessellationDomainOrigin+                          showTableTessellationDomainOrigin+                          conNameTessellationDomainOrigin+                          TessellationDomainOrigin 
src/Vulkan/Core11/Enums/TessellationDomainOrigin.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "TessellationDomainOrigin" module Vulkan.Core11.Enums.TessellationDomainOrigin  (TessellationDomainOrigin) where  
src/Vulkan/Core11/Handles.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Handles" module Vulkan.Core11.Handles  ( DescriptorUpdateTemplate(..)                               , SamplerYcbcrConversion(..)                               , Instance(..)
src/Vulkan/Core11/Handles.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Handles" module Vulkan.Core11.Handles  ( DescriptorUpdateTemplate                               , SamplerYcbcrConversion                               ) where
src/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Originally_Based_On_VK_KHR_protected_memory" module Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory  ( getDeviceQueue2                                                                   , ProtectedSubmitInfo(..)                                                                   , PhysicalDeviceProtectedMemoryFeatures(..)
src/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Originally_Based_On_VK_KHR_protected_memory" module Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory  ( DeviceQueueInfo2                                                                   , PhysicalDeviceProtectedMemoryFeatures                                                                   , PhysicalDeviceProtectedMemoryProperties
src/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Originally_Based_On_VK_KHR_subgroup" module Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup  ( PhysicalDeviceSubgroupProperties(..)                                                           , StructureType(..)                                                           , SubgroupFeatureFlagBits(..)
src/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Originally_Based_On_VK_KHR_subgroup" module Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup  (PhysicalDeviceSubgroupProperties) where  import Data.Kind (Type)
src/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_16bit_storage" module Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage  ( PhysicalDevice16BitStorageFeatures(..)                                                          , StructureType(..)                                                          ) where@@ -36,22 +37,23 @@ -- 'Vulkan.Core10.Enums.StructureType.StructureType' data PhysicalDevice16BitStorageFeatures = PhysicalDevice16BitStorageFeatures   { -- | #extension-features-storageBuffer16BitAccess# @storageBuffer16BitAccess@-    -- specifies whether objects in the @StorageBuffer@ or-    -- @PhysicalStorageBuffer@ storage class with the @Block@ decoration /can/-    -- have 16-bit integer and 16-bit floating-point members. If this feature-    -- is not enabled, 16-bit integer or 16-bit floating-point members /must/-    -- not be used in such objects. This also specifies whether shader modules-    -- /can/ declare the @StorageBuffer16BitAccess@ capability.+    -- specifies whether objects in the @StorageBuffer@,+    -- @ShaderRecordBufferKHR@, or @PhysicalStorageBuffer@ storage class with+    -- the @Block@ decoration /can/ have 16-bit integer and 16-bit+    -- floating-point members. If this feature is not enabled, 16-bit integer+    -- or 16-bit floating-point members /must/ not be used in such objects.+    -- This also specifies whether shader modules /can/ declare the+    -- @StorageBuffer16BitAccess@ capability.     storageBuffer16BitAccess :: Bool   , -- | #extension-features-uniformAndStorageBuffer16BitAccess#     -- @uniformAndStorageBuffer16BitAccess@ specifies whether objects in the     -- @Uniform@ storage class with the @Block@ decoration and in the-    -- @StorageBuffer@ or @PhysicalStorageBuffer@ storage class with the same-    -- decoration /can/ have 16-bit integer and 16-bit floating-point members.-    -- If this feature is not enabled, 16-bit integer or 16-bit floating-point-    -- members /must/ not be used in such objects. This also specifies whether-    -- shader modules /can/ declare the @UniformAndStorageBuffer16BitAccess@-    -- capability.+    -- @StorageBuffer@, @ShaderRecordBufferKHR@, or @PhysicalStorageBuffer@+    -- storage class with the same decoration /can/ have 16-bit integer and+    -- 16-bit floating-point members. If this feature is not enabled, 16-bit+    -- integer or 16-bit floating-point members /must/ not be used in such+    -- objects. This also specifies whether shader modules /can/ declare the+    -- @UniformAndStorageBuffer16BitAccess@ capability.     uniformAndStorageBuffer16BitAccess :: Bool   , -- | #extension-features-storagePushConstant16# @storagePushConstant16@     -- specifies whether objects in the @PushConstant@ storage class /can/ have
src/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_16bit_storage" module Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage  (PhysicalDevice16BitStorageFeatures) where  import Data.Kind (Type)
src/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_bind_memory2" module Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2  ( bindBufferMemory2                                                         , bindImageMemory2                                                         , BindBufferMemoryInfo(..)
src/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_bind_memory2" module Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2  ( BindBufferMemoryInfo                                                         , BindImageMemoryInfo                                                         ) where
src/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_dedicated_allocation" module Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation  ( MemoryDedicatedRequirements(..)                                                                 , MemoryDedicatedAllocateInfo(..)                                                                 , StructureType(..)
src/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_dedicated_allocation" module Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation  ( MemoryDedicatedAllocateInfo                                                                 , MemoryDedicatedRequirements                                                                 ) where
src/Vulkan/Core11/Promoted_From_VK_KHR_descriptor_update_template.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_descriptor_update_template" module Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template  ( createDescriptorUpdateTemplate                                                                       , withDescriptorUpdateTemplate                                                                       , destroyDescriptorUpdateTemplate@@ -162,10 +163,10 @@ -- -- To ensure that 'destroyDescriptorUpdateTemplate' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withDescriptorUpdateTemplate :: forall io r . MonadIO io => Device -> DescriptorUpdateTemplateCreateInfo -> Maybe AllocationCallbacks -> (io (DescriptorUpdateTemplate) -> ((DescriptorUpdateTemplate) -> io ()) -> r) -> r+withDescriptorUpdateTemplate :: forall io r . MonadIO io => Device -> DescriptorUpdateTemplateCreateInfo -> Maybe AllocationCallbacks -> (io DescriptorUpdateTemplate -> (DescriptorUpdateTemplate -> io ()) -> r) -> r withDescriptorUpdateTemplate device pCreateInfo pAllocator b =   b (createDescriptorUpdateTemplate device pCreateInfo pAllocator)     (\(o0) -> destroyDescriptorUpdateTemplate device o0 pAllocator)@@ -288,7 +289,7 @@ -- -- -   Host access to @descriptorSet@ /must/ be externally synchronized ----- __API example.__+-- __API example__ -- -- > struct AppBufferView { -- >     VkBufferView bufferView;@@ -386,8 +387,8 @@                                    -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo', or                                    -- 'Vulkan.Core10.Handles.BufferView' structures or                                    -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' or-                                   -- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureNV' handles-                                   -- used to write the descriptors.+                                   -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' handles used to+                                   -- write the descriptors.                                    ("data" ::: Ptr ())                                 -> io () updateDescriptorSetWithTemplate device descriptorSet descriptorUpdateTemplate data' = liftIO $ do@@ -662,7 +663,7 @@     lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorUpdateTemplateCreateFlags)) (flags)     lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (descriptorUpdateEntries)) :: Word32))     pPDescriptorUpdateEntries' <- ContT $ allocaBytesAligned @DescriptorUpdateTemplateEntry ((Data.Vector.length (descriptorUpdateEntries)) * 32) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDescriptorUpdateEntries' `plusPtr` (32 * (i)) :: Ptr DescriptorUpdateTemplateEntry) (e) . ($ ())) (descriptorUpdateEntries)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptorUpdateEntries' `plusPtr` (32 * (i)) :: Ptr DescriptorUpdateTemplateEntry) (e)) (descriptorUpdateEntries)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DescriptorUpdateTemplateEntry))) (pPDescriptorUpdateEntries')     lift $ poke ((p `plusPtr` 32 :: Ptr DescriptorUpdateTemplateType)) (templateType)     lift $ poke ((p `plusPtr` 40 :: Ptr DescriptorSetLayout)) (descriptorSetLayout)@@ -676,7 +677,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     pPDescriptorUpdateEntries' <- ContT $ allocaBytesAligned @DescriptorUpdateTemplateEntry ((Data.Vector.length (mempty)) * 32) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDescriptorUpdateEntries' `plusPtr` (32 * (i)) :: Ptr DescriptorUpdateTemplateEntry) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptorUpdateEntries' `plusPtr` (32 * (i)) :: Ptr DescriptorUpdateTemplateEntry) (e)) (mempty)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DescriptorUpdateTemplateEntry))) (pPDescriptorUpdateEntries')     lift $ poke ((p `plusPtr` 32 :: Ptr DescriptorUpdateTemplateType)) (zero)     lift $ poke ((p `plusPtr` 40 :: Ptr DescriptorSetLayout)) (zero)
src/Vulkan/Core11/Promoted_From_VK_KHR_descriptor_update_template.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_descriptor_update_template" module Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template  ( DescriptorUpdateTemplateCreateInfo                                                                       , DescriptorUpdateTemplateEntry                                                                       ) where
src/Vulkan/Core11/Promoted_From_VK_KHR_device_group.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_device_group" module Vulkan.Core11.Promoted_From_VK_KHR_device_group  ( getDeviceGroupPeerMemoryFeatures                                                         , cmdSetDeviceMask                                                         , cmdDispatchBase@@ -756,7 +757,7 @@     lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (deviceMask)     lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (deviceRenderAreas)) :: Word32))     pPDeviceRenderAreas' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (deviceRenderAreas)) * 16) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDeviceRenderAreas' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (deviceRenderAreas)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceRenderAreas' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (deviceRenderAreas)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Rect2D))) (pPDeviceRenderAreas')     lift $ f   cStructSize = 32@@ -766,7 +767,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)     pPDeviceRenderAreas' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (mempty)) * 16) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDeviceRenderAreas' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceRenderAreas' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (mempty)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Rect2D))) (pPDeviceRenderAreas')     lift $ f 
src/Vulkan/Core11/Promoted_From_VK_KHR_device_group.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_device_group" module Vulkan.Core11.Promoted_From_VK_KHR_device_group  ( DeviceGroupBindSparseInfo                                                         , DeviceGroupCommandBufferBeginInfo                                                         , DeviceGroupRenderPassBeginInfo
src/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2" module Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2  ( BindBufferMemoryDeviceGroupInfo(..)                                                                               , BindImageMemoryDeviceGroupInfo(..)                                                                               , StructureType(..)@@ -294,7 +295,7 @@     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPDeviceIndices')     lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (splitInstanceBindRegions)) :: Word32))     pPSplitInstanceBindRegions' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (splitInstanceBindRegions)) * 16) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSplitInstanceBindRegions' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (splitInstanceBindRegions)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPSplitInstanceBindRegions' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (splitInstanceBindRegions)     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Rect2D))) (pPSplitInstanceBindRegions')     lift $ f   cStructSize = 48@@ -306,7 +307,7 @@     lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPDeviceIndices')     pPSplitInstanceBindRegions' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (mempty)) * 16) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSplitInstanceBindRegions' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPSplitInstanceBindRegions' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (mempty)     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Rect2D))) (pPSplitInstanceBindRegions')     lift $ f 
src/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2" module Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2  ( BindBufferMemoryDeviceGroupInfo                                                                               , BindImageMemoryDeviceGroupInfo                                                                               ) where
src/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_device_group_creation" module Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation  ( enumeratePhysicalDeviceGroups                                                                  , PhysicalDeviceGroupProperties(..)                                                                  , DeviceGroupDeviceCreateInfo(..)
src/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_device_group_creation" module Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation  ( DeviceGroupDeviceCreateInfo                                                                  , PhysicalDeviceGroupProperties                                                                  ) where
src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_external_fence" module Vulkan.Core11.Promoted_From_VK_KHR_external_fence  ( ExportFenceCreateInfo(..)                                                           , StructureType(..)                                                           , FenceImportFlagBits(..)
src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_external_fence" module Vulkan.Core11.Promoted_From_VK_KHR_external_fence  (ExportFenceCreateInfo) where  import Data.Kind (Type)
src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence_capabilities.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_external_fence_capabilities" module Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities  ( getPhysicalDeviceExternalFenceProperties                                                                        , PhysicalDeviceExternalFenceInfo(..)                                                                        , ExternalFenceProperties(..)
src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence_capabilities.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_external_fence_capabilities" module Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities  ( ExternalFenceProperties                                                                        , PhysicalDeviceExternalFenceInfo                                                                        ) where
src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_external_memory" module Vulkan.Core11.Promoted_From_VK_KHR_external_memory  ( ExternalMemoryImageCreateInfo(..)                                                            , ExternalMemoryBufferCreateInfo(..)                                                            , ExportMemoryAllocateInfo(..)
src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_external_memory" module Vulkan.Core11.Promoted_From_VK_KHR_external_memory  ( ExportMemoryAllocateInfo                                                            , ExternalMemoryBufferCreateInfo                                                            , ExternalMemoryImageCreateInfo
src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_external_memory_capabilities" module Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities  ( getPhysicalDeviceExternalBufferProperties                                                                         , ExternalMemoryProperties(..)                                                                         , PhysicalDeviceExternalImageFormatInfo(..)@@ -295,18 +296,18 @@  instance ToCStruct ExternalImageFormatProperties where   withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ExternalImageFormatProperties{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties)) (externalMemoryProperties) . ($ ())-    lift $ f+  pokeCStruct p ExternalImageFormatProperties{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties)) (externalMemoryProperties)+    f   cStructSize = 32   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties)) (zero)+    f  instance FromCStruct ExternalImageFormatProperties where   peekCStruct p = do@@ -314,6 +315,12 @@     pure $ ExternalImageFormatProperties              externalMemoryProperties +instance Storable ExternalImageFormatProperties where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero ExternalImageFormatProperties where   zero = ExternalImageFormatProperties            zero@@ -434,24 +441,30 @@  instance ToCStruct ExternalBufferProperties where   withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ExternalBufferProperties{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties)) (externalMemoryProperties) . ($ ())-    lift $ f+  pokeCStruct p ExternalBufferProperties{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties)) (externalMemoryProperties)+    f   cStructSize = 32   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties)) (zero)+    f  instance FromCStruct ExternalBufferProperties where   peekCStruct p = do     externalMemoryProperties <- peekCStruct @ExternalMemoryProperties ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties))     pure $ ExternalBufferProperties              externalMemoryProperties++instance Storable ExternalBufferProperties where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())  instance Zero ExternalBufferProperties where   zero = ExternalBufferProperties
src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_external_memory_capabilities" module Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities  ( ExternalBufferProperties                                                                         , ExternalImageFormatProperties                                                                         , ExternalMemoryProperties
src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_external_semaphore" module Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore  ( ExportSemaphoreCreateInfo(..)                                                               , StructureType(..)                                                               , SemaphoreImportFlagBits(..)
src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_external_semaphore" module Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore  (ExportSemaphoreCreateInfo) where  import Data.Kind (Type)
src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore_capabilities.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_external_semaphore_capabilities" module Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities  ( getPhysicalDeviceExternalSemaphoreProperties                                                                            , PhysicalDeviceExternalSemaphoreInfo(..)                                                                            , ExternalSemaphoreProperties(..)
src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore_capabilities.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_external_semaphore_capabilities" module Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities  ( ExternalSemaphoreProperties                                                                            , PhysicalDeviceExternalSemaphoreInfo                                                                            ) where
src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_get_memory_requirements2" module Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2  ( getBufferMemoryRequirements2                                                                     , getImageMemoryRequirements2                                                                     , getImageSparseMemoryRequirements2@@ -463,7 +464,6 @@ -- -- 'Vulkan.Core10.MemoryManagement.MemoryRequirements', -- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.getAccelerationStructureMemoryRequirementsKHR', -- 'getBufferMemoryRequirements2', -- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2KHR', -- 'Vulkan.Extensions.VK_NV_device_generated_commands.getGeneratedCommandsMemoryRequirementsNV',@@ -498,7 +498,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2)     pNext'' <- fmap castPtr . ContT $ withChain (next)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr MemoryRequirements)) (memoryRequirements) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr MemoryRequirements)) (memoryRequirements)     lift $ f   cStructSize = 40   cStructAlignment = 8@@ -506,7 +506,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2)     pNext' <- fmap castPtr . ContT $ withZeroChain @es     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr MemoryRequirements)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr MemoryRequirements)) (zero)     lift $ f  instance (Extendss MemoryRequirements2 es, PeekChain es) => FromCStruct (MemoryRequirements2 es) where@@ -546,24 +546,30 @@  instance ToCStruct SparseImageMemoryRequirements2 where   withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p SparseImageMemoryRequirements2{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SparseImageMemoryRequirements)) (memoryRequirements) . ($ ())-    lift $ f+  pokeCStruct p SparseImageMemoryRequirements2{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SparseImageMemoryRequirements)) (memoryRequirements)+    f   cStructSize = 64   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SparseImageMemoryRequirements)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SparseImageMemoryRequirements)) (zero)+    f  instance FromCStruct SparseImageMemoryRequirements2 where   peekCStruct p = do     memoryRequirements <- peekCStruct @SparseImageMemoryRequirements ((p `plusPtr` 16 :: Ptr SparseImageMemoryRequirements))     pure $ SparseImageMemoryRequirements2              memoryRequirements++instance Storable SparseImageMemoryRequirements2 where+  sizeOf ~_ = 64+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())  instance Zero SparseImageMemoryRequirements2 where   zero = SparseImageMemoryRequirements2
src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_get_memory_requirements2" module Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2  ( BufferMemoryRequirementsInfo2                                                                     , ImageMemoryRequirementsInfo2                                                                     , ImageSparseMemoryRequirementsInfo2
src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_get_physical_device_properties2" module Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2  ( getPhysicalDeviceFeatures2                                                                            , getPhysicalDeviceProperties2                                                                            , getPhysicalDeviceFormatProperties2@@ -88,6 +89,8 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_4444_formats (PhysicalDevice4444FormatsFeaturesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage (PhysicalDevice8BitStorageFeatures) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_astc_decode_mode (PhysicalDeviceASTCDecodeFeaturesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (PhysicalDeviceAccelerationStructureFeaturesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (PhysicalDeviceAccelerationStructurePropertiesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PhysicalDeviceBlendOperationAdvancedFeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PhysicalDeviceBlendOperationAdvancedPropertiesEXT) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeatures)@@ -162,8 +165,9 @@ import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures) import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryProperties) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_push_descriptor (PhysicalDevicePushDescriptorPropertiesKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (PhysicalDeviceRayTracingFeaturesKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (PhysicalDeviceRayTracingPropertiesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelinePropertiesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (PhysicalDeviceRayTracingPropertiesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PhysicalDeviceRepresentativeFragmentTestFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_robustness2 (PhysicalDeviceRobustness2FeaturesEXT)@@ -706,7 +710,9 @@     | Just Refl <- eqT @e @PhysicalDeviceScalarBlockLayoutFeatures = Just f     | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMap2FeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapFeaturesEXT = Just f-    | Just Refl <- eqT @e @PhysicalDeviceRayTracingFeaturesKHR = Just f+    | Just Refl <- eqT @e @PhysicalDeviceRayQueryFeaturesKHR = Just f+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingPipelineFeaturesKHR = Just f+    | Just Refl <- eqT @e @PhysicalDeviceAccelerationStructureFeaturesKHR = Just f     | Just Refl <- eqT @e @PhysicalDeviceMeshShaderFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceShadingRateImageFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = Just f@@ -748,7 +754,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2)     pNext'' <- fmap castPtr . ContT $ withChain (next)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr PhysicalDeviceFeatures)) (features) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceFeatures)) (features)     lift $ f   cStructSize = 240   cStructAlignment = 8@@ -756,7 +762,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2)     pNext' <- fmap castPtr . ContT $ withZeroChain @es     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr PhysicalDeviceFeatures)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceFeatures)) (zero)     lift $ f  instance (Extendss PhysicalDeviceFeatures2 es, PeekChain es) => FromCStruct (PhysicalDeviceFeatures2 es) where@@ -789,6 +795,7 @@ -- -   #VUID-VkPhysicalDeviceProperties2-pNext-pNext# Each @pNext@ member --     of any structure (including this one) in the @pNext@ chain /must/ be --     either @NULL@ or a pointer to a valid instance of+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR', --     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT', --     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT', --     'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixPropertiesNV',@@ -817,7 +824,7 @@ --     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetPropertiesKHR', --     'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties', --     'Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR',---     'Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR',+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR', --     'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV', --     'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT', --     'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',@@ -882,7 +889,8 @@     | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMap2PropertiesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapPropertiesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceRayTracingPropertiesNV = Just f-    | Just Refl <- eqT @e @PhysicalDeviceRayTracingPropertiesKHR = Just f+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingPipelinePropertiesKHR = Just f+    | Just Refl <- eqT @e @PhysicalDeviceAccelerationStructurePropertiesKHR = Just f     | Just Refl <- eqT @e @PhysicalDeviceMeshShaderPropertiesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceShadingRateImagePropertiesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceTransformFeedbackPropertiesEXT = Just f@@ -919,7 +927,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2)     pNext'' <- fmap castPtr . ContT $ withChain (next)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr PhysicalDeviceProperties)) (properties) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceProperties)) (properties)     lift $ f   cStructSize = 840   cStructAlignment = 8@@ -927,7 +935,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2)     pNext' <- fmap castPtr . ContT $ withZeroChain @es     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr PhysicalDeviceProperties)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceProperties)) (zero)     lift $ f  instance (Extendss PhysicalDeviceProperties2 es, PeekChain es) => FromCStruct (PhysicalDeviceProperties2 es) where@@ -993,7 +1001,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FORMAT_PROPERTIES_2)     pNext'' <- fmap castPtr . ContT $ withChain (next)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr FormatProperties)) (formatProperties) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr FormatProperties)) (formatProperties)     lift $ f   cStructSize = 32   cStructAlignment = 8@@ -1001,7 +1009,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FORMAT_PROPERTIES_2)     pNext' <- fmap castPtr . ContT $ withZeroChain @es     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr FormatProperties)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr FormatProperties)) (zero)     lift $ f  instance (Extendss FormatProperties2 es, PeekChain es) => FromCStruct (FormatProperties2 es) where@@ -1097,7 +1105,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2)     pNext'' <- fmap castPtr . ContT $ withChain (next)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ImageFormatProperties)) (imageFormatProperties) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr ImageFormatProperties)) (imageFormatProperties)     lift $ f   cStructSize = 48   cStructAlignment = 8@@ -1105,7 +1113,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2)     pNext' <- fmap castPtr . ContT $ withZeroChain @es     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ImageFormatProperties)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr ImageFormatProperties)) (zero)     lift $ f  instance (Extendss ImageFormatProperties2 es, PeekChain es) => FromCStruct (ImageFormatProperties2 es) where@@ -1343,7 +1351,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2)     pNext'' <- fmap castPtr . ContT $ withChain (next)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr QueueFamilyProperties)) (queueFamilyProperties) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr QueueFamilyProperties)) (queueFamilyProperties)     lift $ f   cStructSize = 40   cStructAlignment = 8@@ -1351,7 +1359,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2)     pNext' <- fmap castPtr . ContT $ withZeroChain @es     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr QueueFamilyProperties)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr QueueFamilyProperties)) (zero)     lift $ f  instance (Extendss QueueFamilyProperties2 es, PeekChain es) => FromCStruct (QueueFamilyProperties2 es) where@@ -1420,7 +1428,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2)     pNext'' <- fmap castPtr . ContT $ withChain (next)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr PhysicalDeviceMemoryProperties)) (memoryProperties) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceMemoryProperties)) (memoryProperties)     lift $ f   cStructSize = 536   cStructAlignment = 8@@ -1428,7 +1436,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2)     pNext' <- fmap castPtr . ContT $ withZeroChain @es     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr PhysicalDeviceMemoryProperties)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceMemoryProperties)) (zero)     lift $ f  instance (Extendss PhysicalDeviceMemoryProperties2 es, PeekChain es) => FromCStruct (PhysicalDeviceMemoryProperties2 es) where@@ -1470,24 +1478,30 @@  instance ToCStruct SparseImageFormatProperties2 where   withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p SparseImageFormatProperties2{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SparseImageFormatProperties)) (properties) . ($ ())-    lift $ f+  pokeCStruct p SparseImageFormatProperties2{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SparseImageFormatProperties)) (properties)+    f   cStructSize = 40   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SparseImageFormatProperties)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SparseImageFormatProperties)) (zero)+    f  instance FromCStruct SparseImageFormatProperties2 where   peekCStruct p = do     properties <- peekCStruct @SparseImageFormatProperties ((p `plusPtr` 16 :: Ptr SparseImageFormatProperties))     pure $ SparseImageFormatProperties2              properties++instance Storable SparseImageFormatProperties2 where+  sizeOf ~_ = 40+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())  instance Zero SparseImageFormatProperties2 where   zero = SparseImageFormatProperties2
src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_get_physical_device_properties2" module Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2  ( FormatProperties2                                                                            , ImageFormatProperties2                                                                            , PhysicalDeviceFeatures2
src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance1.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_maintenance1" module Vulkan.Core11.Promoted_From_VK_KHR_maintenance1  ( trimCommandPool                                                         , CommandPoolTrimFlags(..)                                                         , Result(..)
src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance2.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_maintenance2" module Vulkan.Core11.Promoted_From_VK_KHR_maintenance2  ( InputAttachmentAspectReference(..)                                                         , RenderPassInputAttachmentAspectCreateInfo(..)                                                         , PhysicalDevicePointClippingProperties(..)@@ -168,7 +169,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (aspectReferences)) :: Word32))     pPAspectReferences' <- ContT $ allocaBytesAligned @InputAttachmentAspectReference ((Data.Vector.length (aspectReferences)) * 12) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAspectReferences' `plusPtr` (12 * (i)) :: Ptr InputAttachmentAspectReference) (e) . ($ ())) (aspectReferences)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPAspectReferences' `plusPtr` (12 * (i)) :: Ptr InputAttachmentAspectReference) (e)) (aspectReferences)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr InputAttachmentAspectReference))) (pPAspectReferences')     lift $ f   cStructSize = 32@@ -177,7 +178,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     pPAspectReferences' <- ContT $ allocaBytesAligned @InputAttachmentAspectReference ((Data.Vector.length (mempty)) * 12) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAspectReferences' `plusPtr` (12 * (i)) :: Ptr InputAttachmentAspectReference) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPAspectReferences' `plusPtr` (12 * (i)) :: Ptr InputAttachmentAspectReference) (e)) (mempty)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr InputAttachmentAspectReference))) (pPAspectReferences')     lift $ f 
src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance2.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_maintenance2" module Vulkan.Core11.Promoted_From_VK_KHR_maintenance2  ( ImageViewUsageCreateInfo                                                         , InputAttachmentAspectReference                                                         , PhysicalDevicePointClippingProperties
src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_maintenance3" module Vulkan.Core11.Promoted_From_VK_KHR_maintenance3  ( getDescriptorSetLayoutSupport                                                         , PhysicalDeviceMaintenance3Properties(..)                                                         , DescriptorSetLayoutSupport(..)
src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_maintenance3" module Vulkan.Core11.Promoted_From_VK_KHR_maintenance3  ( DescriptorSetLayoutSupport                                                         , PhysicalDeviceMaintenance3Properties                                                         ) where
src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_multiview" module Vulkan.Core11.Promoted_From_VK_KHR_multiview  ( PhysicalDeviceMultiviewFeatures(..)                                                      , PhysicalDeviceMultiviewProperties(..)                                                      , RenderPassMultiviewCreateInfo(..)
src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_multiview" module Vulkan.Core11.Promoted_From_VK_KHR_multiview  ( PhysicalDeviceMultiviewFeatures                                                      , PhysicalDeviceMultiviewProperties                                                      , RenderPassMultiviewCreateInfo
src/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_sampler_ycbcr_conversion" module Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion  ( createSamplerYcbcrConversion                                                                     , withSamplerYcbcrConversion                                                                     , destroySamplerYcbcrConversion@@ -205,10 +206,10 @@ -- -- To ensure that 'destroySamplerYcbcrConversion' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withSamplerYcbcrConversion :: forall a io r . (Extendss SamplerYcbcrConversionCreateInfo a, PokeChain a, MonadIO io) => Device -> SamplerYcbcrConversionCreateInfo a -> Maybe AllocationCallbacks -> (io (SamplerYcbcrConversion) -> ((SamplerYcbcrConversion) -> io ()) -> r) -> r+withSamplerYcbcrConversion :: forall a io r . (Extendss SamplerYcbcrConversionCreateInfo a, PokeChain a, MonadIO io) => Device -> SamplerYcbcrConversionCreateInfo a -> Maybe AllocationCallbacks -> (io SamplerYcbcrConversion -> (SamplerYcbcrConversion -> io ()) -> r) -> r withSamplerYcbcrConversion device pCreateInfo pAllocator b =   b (createSamplerYcbcrConversion device pCreateInfo pAllocator)     (\(o0) -> destroySamplerYcbcrConversion device o0 pAllocator)@@ -575,7 +576,7 @@     lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (format)     lift $ poke ((p `plusPtr` 20 :: Ptr SamplerYcbcrModelConversion)) (ycbcrModel)     lift $ poke ((p `plusPtr` 24 :: Ptr SamplerYcbcrRange)) (ycbcrRange)-    ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr ComponentMapping)) (components) . ($ ())+    lift $ poke ((p `plusPtr` 28 :: Ptr ComponentMapping)) (components)     lift $ poke ((p `plusPtr` 44 :: Ptr ChromaLocation)) (xChromaOffset)     lift $ poke ((p `plusPtr` 48 :: Ptr ChromaLocation)) (yChromaOffset)     lift $ poke ((p `plusPtr` 52 :: Ptr Filter)) (chromaFilter)@@ -590,7 +591,7 @@     lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)     lift $ poke ((p `plusPtr` 20 :: Ptr SamplerYcbcrModelConversion)) (zero)     lift $ poke ((p `plusPtr` 24 :: Ptr SamplerYcbcrRange)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr ComponentMapping)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 28 :: Ptr ComponentMapping)) (zero)     lift $ poke ((p `plusPtr` 44 :: Ptr ChromaLocation)) (zero)     lift $ poke ((p `plusPtr` 48 :: Ptr ChromaLocation)) (zero)     lift $ poke ((p `plusPtr` 52 :: Ptr Filter)) (zero)
src/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_sampler_ycbcr_conversion" module Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion  ( BindImagePlaneMemoryInfo                                                                     , ImagePlaneMemoryRequirementsInfo                                                                     , PhysicalDeviceSamplerYcbcrConversionFeatures
src/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_draw_parameters" module Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES                                                                   , PhysicalDeviceShaderDrawParametersFeatures(..)                                                                   , PhysicalDeviceShaderDrawParameterFeatures
src/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_draw_parameters" module Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters  (PhysicalDeviceShaderDrawParametersFeatures) where  import Data.Kind (Type)
src/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_variable_pointers" module Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES                                                              , PhysicalDeviceVariablePointersFeatures(..)                                                              , PhysicalDeviceVariablePointerFeatures
src/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_variable_pointers" module Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers  (PhysicalDeviceVariablePointersFeatures) where  import Data.Kind (Type)
src/Vulkan/Core12.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Core12" module Vulkan.Core12  ( pattern API_VERSION_1_2                       , PhysicalDeviceVulkan11Features(..)                       , PhysicalDeviceVulkan11Properties(..)@@ -55,8 +56,6 @@ import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr) import Data.ByteString (packCString)-import Control.Monad.Trans.Class (lift)-import Control.Monad.Trans.Cont (evalContT) import Data.Typeable (Typeable) import Foreign.C.Types (CChar) import Foreign.Storable (Storable)@@ -70,7 +69,6 @@ import Data.Word (Word8) import Data.ByteString (ByteString) import Data.Kind (Type)-import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.Core10.FundamentalTypes (bool32ToBool) import Vulkan.Core10.FundamentalTypes (boolToBool32) import Vulkan.CStruct.Utils (lowerArrayPtr)@@ -132,22 +130,22 @@ -- 'Vulkan.Core10.Enums.StructureType.StructureType' data PhysicalDeviceVulkan11Features = PhysicalDeviceVulkan11Features   { -- | #features-storageBuffer16BitAccess# @storageBuffer16BitAccess@ specifies-    -- whether objects in the @StorageBuffer@ or @PhysicalStorageBuffer@-    -- storage class with the @Block@ decoration /can/ have 16-bit integer and-    -- 16-bit floating-point members. If this feature is not enabled, 16-bit-    -- integer or 16-bit floating-point members /must/ not be used in such-    -- objects. This also specifies whether shader modules /can/ declare the-    -- @StorageBuffer16BitAccess@ capability.+    -- whether objects in the @StorageBuffer@, @ShaderRecordBufferKHR@, or+    -- @PhysicalStorageBuffer@ storage class with the @Block@ decoration /can/+    -- have 16-bit integer and 16-bit floating-point members. If this feature+    -- is not enabled, 16-bit integer or 16-bit floating-point members /must/+    -- not be used in such objects. This also specifies whether shader modules+    -- /can/ declare the @StorageBuffer16BitAccess@ capability.     storageBuffer16BitAccess :: Bool   , -- | #features-uniformAndStorageBuffer16BitAccess#     -- @uniformAndStorageBuffer16BitAccess@ specifies whether objects in the     -- @Uniform@ storage class with the @Block@ decoration and in the-    -- @StorageBuffer@ or @PhysicalStorageBuffer@ storage class with the same-    -- decoration /can/ have 16-bit integer and 16-bit floating-point members.-    -- If this feature is not enabled, 16-bit integer or 16-bit floating-point-    -- members /must/ not be used in such objects. This also specifies whether-    -- shader modules /can/ declare the @UniformAndStorageBuffer16BitAccess@-    -- capability.+    -- @StorageBuffer@, @ShaderRecordBufferKHR@, or @PhysicalStorageBuffer@+    -- storage class with the same decoration /can/ have 16-bit integer and+    -- 16-bit floating-point members. If this feature is not enabled, 16-bit+    -- integer or 16-bit floating-point members /must/ not be used in such+    -- objects. This also specifies whether shader modules /can/ declare the+    -- @UniformAndStorageBuffer16BitAccess@ capability.     uniformAndStorageBuffer16BitAccess :: Bool   , -- | #features-storagePushConstant16# @storagePushConstant16@ specifies     -- whether objects in the @PushConstant@ storage class /can/ have 16-bit@@ -522,21 +520,22 @@ --     not be used. -- -- -   #features-storageBuffer8BitAccess# @storageBuffer8BitAccess@---     indicates whether objects in the @StorageBuffer@ or---     @PhysicalStorageBuffer@ storage class with the @Block@ decoration---     /can/ have 8-bit integer members. If this feature is not enabled,---     8-bit integer members /must/ not be used in such objects. This also---     indicates whether shader modules /can/ declare the---     @StorageBuffer8BitAccess@ capability.+--     indicates whether objects in the @StorageBuffer@,+--     @ShaderRecordBufferKHR@, or @PhysicalStorageBuffer@ storage class+--     with the @Block@ decoration /can/ have 8-bit integer members. If+--     this feature is not enabled, 8-bit integer members /must/ not be+--     used in such objects. This also indicates whether shader modules+--     /can/ declare the @StorageBuffer8BitAccess@ capability. -- -- -   #features-uniformAndStorageBuffer8BitAccess# --     @uniformAndStorageBuffer8BitAccess@ indicates whether objects in the --     @Uniform@ storage class with the @Block@ decoration and in the---     @StorageBuffer@ or @PhysicalStorageBuffer@ storage class with the---     same decoration /can/ have 8-bit integer members. If this feature is---     not enabled, 8-bit integer members /must/ not be used in such---     objects. This also indicates whether shader modules /can/ declare---     the @UniformAndStorageBuffer8BitAccess@ capability.+--     @StorageBuffer@, @ShaderRecordBufferKHR@, or @PhysicalStorageBuffer@+--     storage class with the same decoration /can/ have 8-bit integer+--     members. If this feature is not enabled, 8-bit integer members+--     /must/ not be used in such objects. This also indicates whether+--     shader modules /can/ declare the @UniformAndStorageBuffer8BitAccess@+--     capability. -- -- -   #features-storagePushConstant8# @storagePushConstant8@ indicates --     whether objects in the @PushConstant@ storage class /can/ have 8-bit@@ -850,11 +849,11 @@ -- -- -   #features-bufferDeviceAddressMultiDevice# --     @bufferDeviceAddressMultiDevice@ indicates that the implementation---     supports the @bufferDeviceAddress@ and @rayTracing@ features for---     logical devices created with multiple physical devices. If this---     feature is not supported, buffer and acceleration structure---     addresses /must/ not be queried on a logical device created with---     more than one physical device.+--     supports the @bufferDeviceAddress@ , @rayTracingPipeline@ and+--     @rayQuery@ features for logical devices created with multiple+--     physical devices. If this feature is not supported, buffer and+--     acceleration structure addresses /must/ not be queried on a logical+--     device created with more than one physical device. -- -- -   #features-vulkanMemoryModel# @vulkanMemoryModel@ indicates whether --     the Vulkan Memory Model is supported, as defined in@@ -1629,119 +1628,119 @@  instance ToCStruct PhysicalDeviceVulkan12Properties where   withCStruct x f = allocaBytesAligned 736 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PhysicalDeviceVulkan12Properties{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr DriverId)) (driverID)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))) (driverName)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))) (driverInfo)-    ContT $ pokeCStruct ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (conformanceVersion) . ($ ())-    lift $ poke ((p `plusPtr` 536 :: Ptr ShaderFloatControlsIndependence)) (denormBehaviorIndependence)-    lift $ poke ((p `plusPtr` 540 :: Ptr ShaderFloatControlsIndependence)) (roundingModeIndependence)-    lift $ poke ((p `plusPtr` 544 :: Ptr Bool32)) (boolToBool32 (shaderSignedZeroInfNanPreserveFloat16))-    lift $ poke ((p `plusPtr` 548 :: Ptr Bool32)) (boolToBool32 (shaderSignedZeroInfNanPreserveFloat32))-    lift $ poke ((p `plusPtr` 552 :: Ptr Bool32)) (boolToBool32 (shaderSignedZeroInfNanPreserveFloat64))-    lift $ poke ((p `plusPtr` 556 :: Ptr Bool32)) (boolToBool32 (shaderDenormPreserveFloat16))-    lift $ poke ((p `plusPtr` 560 :: Ptr Bool32)) (boolToBool32 (shaderDenormPreserveFloat32))-    lift $ poke ((p `plusPtr` 564 :: Ptr Bool32)) (boolToBool32 (shaderDenormPreserveFloat64))-    lift $ poke ((p `plusPtr` 568 :: Ptr Bool32)) (boolToBool32 (shaderDenormFlushToZeroFloat16))-    lift $ poke ((p `plusPtr` 572 :: Ptr Bool32)) (boolToBool32 (shaderDenormFlushToZeroFloat32))-    lift $ poke ((p `plusPtr` 576 :: Ptr Bool32)) (boolToBool32 (shaderDenormFlushToZeroFloat64))-    lift $ poke ((p `plusPtr` 580 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTEFloat16))-    lift $ poke ((p `plusPtr` 584 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTEFloat32))-    lift $ poke ((p `plusPtr` 588 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTEFloat64))-    lift $ poke ((p `plusPtr` 592 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTZFloat16))-    lift $ poke ((p `plusPtr` 596 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTZFloat32))-    lift $ poke ((p `plusPtr` 600 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTZFloat64))-    lift $ poke ((p `plusPtr` 604 :: Ptr Word32)) (maxUpdateAfterBindDescriptorsInAllPools)-    lift $ poke ((p `plusPtr` 608 :: Ptr Bool32)) (boolToBool32 (shaderUniformBufferArrayNonUniformIndexingNative))-    lift $ poke ((p `plusPtr` 612 :: Ptr Bool32)) (boolToBool32 (shaderSampledImageArrayNonUniformIndexingNative))-    lift $ poke ((p `plusPtr` 616 :: Ptr Bool32)) (boolToBool32 (shaderStorageBufferArrayNonUniformIndexingNative))-    lift $ poke ((p `plusPtr` 620 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageArrayNonUniformIndexingNative))-    lift $ poke ((p `plusPtr` 624 :: Ptr Bool32)) (boolToBool32 (shaderInputAttachmentArrayNonUniformIndexingNative))-    lift $ poke ((p `plusPtr` 628 :: Ptr Bool32)) (boolToBool32 (robustBufferAccessUpdateAfterBind))-    lift $ poke ((p `plusPtr` 632 :: Ptr Bool32)) (boolToBool32 (quadDivergentImplicitLod))-    lift $ poke ((p `plusPtr` 636 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindSamplers)-    lift $ poke ((p `plusPtr` 640 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindUniformBuffers)-    lift $ poke ((p `plusPtr` 644 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindStorageBuffers)-    lift $ poke ((p `plusPtr` 648 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindSampledImages)-    lift $ poke ((p `plusPtr` 652 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindStorageImages)-    lift $ poke ((p `plusPtr` 656 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindInputAttachments)-    lift $ poke ((p `plusPtr` 660 :: Ptr Word32)) (maxPerStageUpdateAfterBindResources)-    lift $ poke ((p `plusPtr` 664 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindSamplers)-    lift $ poke ((p `plusPtr` 668 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindUniformBuffers)-    lift $ poke ((p `plusPtr` 672 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindUniformBuffersDynamic)-    lift $ poke ((p `plusPtr` 676 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindStorageBuffers)-    lift $ poke ((p `plusPtr` 680 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindStorageBuffersDynamic)-    lift $ poke ((p `plusPtr` 684 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindSampledImages)-    lift $ poke ((p `plusPtr` 688 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindStorageImages)-    lift $ poke ((p `plusPtr` 692 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindInputAttachments)-    lift $ poke ((p `plusPtr` 696 :: Ptr ResolveModeFlags)) (supportedDepthResolveModes)-    lift $ poke ((p `plusPtr` 700 :: Ptr ResolveModeFlags)) (supportedStencilResolveModes)-    lift $ poke ((p `plusPtr` 704 :: Ptr Bool32)) (boolToBool32 (independentResolveNone))-    lift $ poke ((p `plusPtr` 708 :: Ptr Bool32)) (boolToBool32 (independentResolve))-    lift $ poke ((p `plusPtr` 712 :: Ptr Bool32)) (boolToBool32 (filterMinmaxSingleComponentFormats))-    lift $ poke ((p `plusPtr` 716 :: Ptr Bool32)) (boolToBool32 (filterMinmaxImageComponentMapping))-    lift $ poke ((p `plusPtr` 720 :: Ptr Word64)) (maxTimelineSemaphoreValueDifference)-    lift $ poke ((p `plusPtr` 728 :: Ptr SampleCountFlags)) (framebufferIntegerColorSampleCounts)-    lift $ f+  pokeCStruct p PhysicalDeviceVulkan12Properties{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DriverId)) (driverID)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))) (driverName)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))) (driverInfo)+    poke ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (conformanceVersion)+    poke ((p `plusPtr` 536 :: Ptr ShaderFloatControlsIndependence)) (denormBehaviorIndependence)+    poke ((p `plusPtr` 540 :: Ptr ShaderFloatControlsIndependence)) (roundingModeIndependence)+    poke ((p `plusPtr` 544 :: Ptr Bool32)) (boolToBool32 (shaderSignedZeroInfNanPreserveFloat16))+    poke ((p `plusPtr` 548 :: Ptr Bool32)) (boolToBool32 (shaderSignedZeroInfNanPreserveFloat32))+    poke ((p `plusPtr` 552 :: Ptr Bool32)) (boolToBool32 (shaderSignedZeroInfNanPreserveFloat64))+    poke ((p `plusPtr` 556 :: Ptr Bool32)) (boolToBool32 (shaderDenormPreserveFloat16))+    poke ((p `plusPtr` 560 :: Ptr Bool32)) (boolToBool32 (shaderDenormPreserveFloat32))+    poke ((p `plusPtr` 564 :: Ptr Bool32)) (boolToBool32 (shaderDenormPreserveFloat64))+    poke ((p `plusPtr` 568 :: Ptr Bool32)) (boolToBool32 (shaderDenormFlushToZeroFloat16))+    poke ((p `plusPtr` 572 :: Ptr Bool32)) (boolToBool32 (shaderDenormFlushToZeroFloat32))+    poke ((p `plusPtr` 576 :: Ptr Bool32)) (boolToBool32 (shaderDenormFlushToZeroFloat64))+    poke ((p `plusPtr` 580 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTEFloat16))+    poke ((p `plusPtr` 584 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTEFloat32))+    poke ((p `plusPtr` 588 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTEFloat64))+    poke ((p `plusPtr` 592 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTZFloat16))+    poke ((p `plusPtr` 596 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTZFloat32))+    poke ((p `plusPtr` 600 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTZFloat64))+    poke ((p `plusPtr` 604 :: Ptr Word32)) (maxUpdateAfterBindDescriptorsInAllPools)+    poke ((p `plusPtr` 608 :: Ptr Bool32)) (boolToBool32 (shaderUniformBufferArrayNonUniformIndexingNative))+    poke ((p `plusPtr` 612 :: Ptr Bool32)) (boolToBool32 (shaderSampledImageArrayNonUniformIndexingNative))+    poke ((p `plusPtr` 616 :: Ptr Bool32)) (boolToBool32 (shaderStorageBufferArrayNonUniformIndexingNative))+    poke ((p `plusPtr` 620 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageArrayNonUniformIndexingNative))+    poke ((p `plusPtr` 624 :: Ptr Bool32)) (boolToBool32 (shaderInputAttachmentArrayNonUniformIndexingNative))+    poke ((p `plusPtr` 628 :: Ptr Bool32)) (boolToBool32 (robustBufferAccessUpdateAfterBind))+    poke ((p `plusPtr` 632 :: Ptr Bool32)) (boolToBool32 (quadDivergentImplicitLod))+    poke ((p `plusPtr` 636 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindSamplers)+    poke ((p `plusPtr` 640 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindUniformBuffers)+    poke ((p `plusPtr` 644 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindStorageBuffers)+    poke ((p `plusPtr` 648 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindSampledImages)+    poke ((p `plusPtr` 652 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindStorageImages)+    poke ((p `plusPtr` 656 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindInputAttachments)+    poke ((p `plusPtr` 660 :: Ptr Word32)) (maxPerStageUpdateAfterBindResources)+    poke ((p `plusPtr` 664 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindSamplers)+    poke ((p `plusPtr` 668 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindUniformBuffers)+    poke ((p `plusPtr` 672 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindUniformBuffersDynamic)+    poke ((p `plusPtr` 676 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindStorageBuffers)+    poke ((p `plusPtr` 680 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindStorageBuffersDynamic)+    poke ((p `plusPtr` 684 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindSampledImages)+    poke ((p `plusPtr` 688 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindStorageImages)+    poke ((p `plusPtr` 692 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindInputAttachments)+    poke ((p `plusPtr` 696 :: Ptr ResolveModeFlags)) (supportedDepthResolveModes)+    poke ((p `plusPtr` 700 :: Ptr ResolveModeFlags)) (supportedStencilResolveModes)+    poke ((p `plusPtr` 704 :: Ptr Bool32)) (boolToBool32 (independentResolveNone))+    poke ((p `plusPtr` 708 :: Ptr Bool32)) (boolToBool32 (independentResolve))+    poke ((p `plusPtr` 712 :: Ptr Bool32)) (boolToBool32 (filterMinmaxSingleComponentFormats))+    poke ((p `plusPtr` 716 :: Ptr Bool32)) (boolToBool32 (filterMinmaxImageComponentMapping))+    poke ((p `plusPtr` 720 :: Ptr Word64)) (maxTimelineSemaphoreValueDifference)+    poke ((p `plusPtr` 728 :: Ptr SampleCountFlags)) (framebufferIntegerColorSampleCounts)+    f   cStructSize = 736   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr DriverId)) (zero)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))) (mempty)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))) (mempty)-    ContT $ pokeCStruct ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 536 :: Ptr ShaderFloatControlsIndependence)) (zero)-    lift $ poke ((p `plusPtr` 540 :: Ptr ShaderFloatControlsIndependence)) (zero)-    lift $ poke ((p `plusPtr` 544 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 548 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 552 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 556 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 560 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 564 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 568 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 572 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 576 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 580 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 584 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 588 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 592 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 596 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 600 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 604 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 608 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 612 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 616 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 620 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 624 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 628 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 632 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 636 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 640 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 644 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 648 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 652 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 656 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 660 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 664 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 668 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 672 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 676 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 680 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 684 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 688 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 692 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 696 :: Ptr ResolveModeFlags)) (zero)-    lift $ poke ((p `plusPtr` 700 :: Ptr ResolveModeFlags)) (zero)-    lift $ poke ((p `plusPtr` 704 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 708 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 712 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 716 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 720 :: Ptr Word64)) (zero)-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DriverId)) (zero)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))) (mempty)+    poke ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (zero)+    poke ((p `plusPtr` 536 :: Ptr ShaderFloatControlsIndependence)) (zero)+    poke ((p `plusPtr` 540 :: Ptr ShaderFloatControlsIndependence)) (zero)+    poke ((p `plusPtr` 544 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 548 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 552 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 556 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 560 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 564 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 568 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 572 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 576 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 580 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 584 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 588 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 592 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 596 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 600 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 604 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 608 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 612 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 616 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 620 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 624 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 628 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 632 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 636 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 640 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 644 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 648 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 652 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 656 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 660 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 664 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 668 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 672 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 676 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 680 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 684 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 688 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 692 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 696 :: Ptr ResolveModeFlags)) (zero)+    poke ((p `plusPtr` 700 :: Ptr ResolveModeFlags)) (zero)+    poke ((p `plusPtr` 704 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 708 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 712 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 716 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 720 :: Ptr Word64)) (zero)+    f  instance FromCStruct PhysicalDeviceVulkan12Properties where   peekCStruct p = do@@ -1799,6 +1798,12 @@     framebufferIntegerColorSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 728 :: Ptr SampleCountFlags))     pure $ PhysicalDeviceVulkan12Properties              driverID driverName driverInfo conformanceVersion denormBehaviorIndependence roundingModeIndependence (bool32ToBool shaderSignedZeroInfNanPreserveFloat16) (bool32ToBool shaderSignedZeroInfNanPreserveFloat32) (bool32ToBool shaderSignedZeroInfNanPreserveFloat64) (bool32ToBool shaderDenormPreserveFloat16) (bool32ToBool shaderDenormPreserveFloat32) (bool32ToBool shaderDenormPreserveFloat64) (bool32ToBool shaderDenormFlushToZeroFloat16) (bool32ToBool shaderDenormFlushToZeroFloat32) (bool32ToBool shaderDenormFlushToZeroFloat64) (bool32ToBool shaderRoundingModeRTEFloat16) (bool32ToBool shaderRoundingModeRTEFloat32) (bool32ToBool shaderRoundingModeRTEFloat64) (bool32ToBool shaderRoundingModeRTZFloat16) (bool32ToBool shaderRoundingModeRTZFloat32) (bool32ToBool shaderRoundingModeRTZFloat64) maxUpdateAfterBindDescriptorsInAllPools (bool32ToBool shaderUniformBufferArrayNonUniformIndexingNative) (bool32ToBool shaderSampledImageArrayNonUniformIndexingNative) (bool32ToBool shaderStorageBufferArrayNonUniformIndexingNative) (bool32ToBool shaderStorageImageArrayNonUniformIndexingNative) (bool32ToBool shaderInputAttachmentArrayNonUniformIndexingNative) (bool32ToBool robustBufferAccessUpdateAfterBind) (bool32ToBool quadDivergentImplicitLod) maxPerStageDescriptorUpdateAfterBindSamplers maxPerStageDescriptorUpdateAfterBindUniformBuffers maxPerStageDescriptorUpdateAfterBindStorageBuffers maxPerStageDescriptorUpdateAfterBindSampledImages maxPerStageDescriptorUpdateAfterBindStorageImages maxPerStageDescriptorUpdateAfterBindInputAttachments maxPerStageUpdateAfterBindResources maxDescriptorSetUpdateAfterBindSamplers maxDescriptorSetUpdateAfterBindUniformBuffers maxDescriptorSetUpdateAfterBindUniformBuffersDynamic maxDescriptorSetUpdateAfterBindStorageBuffers maxDescriptorSetUpdateAfterBindStorageBuffersDynamic maxDescriptorSetUpdateAfterBindSampledImages maxDescriptorSetUpdateAfterBindStorageImages maxDescriptorSetUpdateAfterBindInputAttachments supportedDepthResolveModes supportedStencilResolveModes (bool32ToBool independentResolveNone) (bool32ToBool independentResolve) (bool32ToBool filterMinmaxSingleComponentFormats) (bool32ToBool filterMinmaxImageComponentMapping) maxTimelineSemaphoreValueDifference framebufferIntegerColorSampleCounts++instance Storable PhysicalDeviceVulkan12Properties where+  sizeOf ~_ = 736+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())  instance Zero PhysicalDeviceVulkan12Properties where   zero = PhysicalDeviceVulkan12Properties
src/Vulkan/Core12.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Core12" module Vulkan.Core12  ( PhysicalDeviceVulkan11Features                       , PhysicalDeviceVulkan11Properties                       , PhysicalDeviceVulkan12Features
src/Vulkan/Core12/Enums.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Enums" module Vulkan.Core12.Enums  ( module Vulkan.Core12.Enums.DescriptorBindingFlagBits                             , module Vulkan.Core12.Enums.DriverId                             , module Vulkan.Core12.Enums.ResolveModeFlagBits
src/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs view
@@ -1,29 +1,27 @@ {-# language CPP #-}-module Vulkan.Core12.Enums.DescriptorBindingFlagBits  ( DescriptorBindingFlagBits( DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT+-- No documentation found for Chapter "DescriptorBindingFlagBits"+module Vulkan.Core12.Enums.DescriptorBindingFlagBits  ( DescriptorBindingFlags+                                                      , DescriptorBindingFlagBits( DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT                                                                                  , DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT                                                                                  , DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT                                                                                  , DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT                                                                                  , ..                                                                                  )-                                                      , DescriptorBindingFlags                                                       ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type DescriptorBindingFlags = DescriptorBindingFlagBits+ -- | VkDescriptorBindingFlagBits - Bitmask specifying descriptor set layout -- binding properties --@@ -59,7 +57,7 @@ -- concurrently by two threads. Descriptors with this flag set /can/ be -- updated concurrently with the set being bound to a command buffer in -- another thread, but not concurrently with the set being reset or freed.-pattern DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = DescriptorBindingFlagBits 0x00000001+pattern DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT           = DescriptorBindingFlagBits 0x00000001 -- | 'DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT' indicates that -- descriptors in this binding /can/ be updated after a command buffer has -- bound this descriptor set, or while a command buffer that uses this@@ -76,7 +74,7 @@ -- descriptors at the time the descriptors are consumed. A descriptor is -- dynamically used if any shader invocation executes an instruction that -- performs any memory access using the descriptor.-pattern DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = DescriptorBindingFlagBits 0x00000004+pattern DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT             = DescriptorBindingFlagBits 0x00000004 -- | 'DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT' indicates that this -- descriptor binding has a variable size that will be specified when a -- descriptor set is allocated using this layout. The value of@@ -91,26 +89,32 @@ -- the binding, thus it counts against the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxInlineUniformBlockSize maxInlineUniformBlockSize> -- limit instead. .-pattern DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = DescriptorBindingFlagBits 0x00000008+pattern DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT   = DescriptorBindingFlagBits 0x00000008 -type DescriptorBindingFlags = DescriptorBindingFlagBits+conNameDescriptorBindingFlagBits :: String+conNameDescriptorBindingFlagBits = "DescriptorBindingFlagBits" +enumPrefixDescriptorBindingFlagBits :: String+enumPrefixDescriptorBindingFlagBits = "DESCRIPTOR_BINDING_"++showTableDescriptorBindingFlagBits :: [(DescriptorBindingFlagBits, String)]+showTableDescriptorBindingFlagBits =+  [ (DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT          , "UPDATE_AFTER_BIND_BIT")+  , (DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT, "UPDATE_UNUSED_WHILE_PENDING_BIT")+  , (DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT            , "PARTIALLY_BOUND_BIT")+  , (DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT  , "VARIABLE_DESCRIPTOR_COUNT_BIT")+  ]+ instance Show DescriptorBindingFlagBits where-  showsPrec p = \case-    DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT -> showString "DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT"-    DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT -> showString "DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT"-    DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT -> showString "DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT"-    DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT -> showString "DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT"-    DescriptorBindingFlagBits x -> showParen (p >= 11) (showString "DescriptorBindingFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDescriptorBindingFlagBits+                            showTableDescriptorBindingFlagBits+                            conNameDescriptorBindingFlagBits+                            (\(DescriptorBindingFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DescriptorBindingFlagBits where-  readPrec = parens (choose [("DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT", pure DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT)-                            , ("DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT", pure DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT)-                            , ("DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT", pure DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT)-                            , ("DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT", pure DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "DescriptorBindingFlagBits")-                       v <- step readPrec-                       pure (DescriptorBindingFlagBits v)))+  readPrec = enumReadPrec enumPrefixDescriptorBindingFlagBits+                          showTableDescriptorBindingFlagBits+                          conNameDescriptorBindingFlagBits+                          DescriptorBindingFlagBits 
src/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core12.Enums.DescriptorBindingFlagBits  ( DescriptorBindingFlagBits-                                                      , DescriptorBindingFlags+-- No documentation found for Chapter "DescriptorBindingFlagBits"+module Vulkan.Core12.Enums.DescriptorBindingFlagBits  ( DescriptorBindingFlags+                                                      , DescriptorBindingFlagBits                                                       ) where   -data DescriptorBindingFlagBits- type DescriptorBindingFlags = DescriptorBindingFlagBits++data DescriptorBindingFlagBits 
src/Vulkan/Core12/Enums/DriverId.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "DriverId" module Vulkan.Core12.Enums.DriverId  (DriverId( DRIVER_ID_AMD_PROPRIETARY                                               , DRIVER_ID_AMD_OPEN_SOURCE                                               , DRIVER_ID_MESA_RADV@@ -16,19 +17,13 @@                                               , ..                                               )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkDriverId - Khronos driver IDs --@@ -56,33 +51,33 @@ -- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error  -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_AMD_PROPRIETARY"-pattern DRIVER_ID_AMD_PROPRIETARY = DriverId 1+pattern DRIVER_ID_AMD_PROPRIETARY           = DriverId 1 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_AMD_OPEN_SOURCE"-pattern DRIVER_ID_AMD_OPEN_SOURCE = DriverId 2+pattern DRIVER_ID_AMD_OPEN_SOURCE           = DriverId 2 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_MESA_RADV"-pattern DRIVER_ID_MESA_RADV = DriverId 3+pattern DRIVER_ID_MESA_RADV                 = DriverId 3 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_NVIDIA_PROPRIETARY"-pattern DRIVER_ID_NVIDIA_PROPRIETARY = DriverId 4+pattern DRIVER_ID_NVIDIA_PROPRIETARY        = DriverId 4 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS" pattern DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = DriverId 5 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA"-pattern DRIVER_ID_INTEL_OPEN_SOURCE_MESA = DriverId 6+pattern DRIVER_ID_INTEL_OPEN_SOURCE_MESA    = DriverId 6 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_IMAGINATION_PROPRIETARY"-pattern DRIVER_ID_IMAGINATION_PROPRIETARY = DriverId 7+pattern DRIVER_ID_IMAGINATION_PROPRIETARY   = DriverId 7 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_QUALCOMM_PROPRIETARY"-pattern DRIVER_ID_QUALCOMM_PROPRIETARY = DriverId 8+pattern DRIVER_ID_QUALCOMM_PROPRIETARY      = DriverId 8 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_ARM_PROPRIETARY"-pattern DRIVER_ID_ARM_PROPRIETARY = DriverId 9+pattern DRIVER_ID_ARM_PROPRIETARY           = DriverId 9 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_GOOGLE_SWIFTSHADER"-pattern DRIVER_ID_GOOGLE_SWIFTSHADER = DriverId 10+pattern DRIVER_ID_GOOGLE_SWIFTSHADER        = DriverId 10 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_GGP_PROPRIETARY"-pattern DRIVER_ID_GGP_PROPRIETARY = DriverId 11+pattern DRIVER_ID_GGP_PROPRIETARY           = DriverId 11 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_BROADCOM_PROPRIETARY"-pattern DRIVER_ID_BROADCOM_PROPRIETARY = DriverId 12+pattern DRIVER_ID_BROADCOM_PROPRIETARY      = DriverId 12 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_MESA_LLVMPIPE"-pattern DRIVER_ID_MESA_LLVMPIPE = DriverId 13+pattern DRIVER_ID_MESA_LLVMPIPE             = DriverId 13 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_MOLTENVK"-pattern DRIVER_ID_MOLTENVK = DriverId 14+pattern DRIVER_ID_MOLTENVK                  = DriverId 14 {-# complete DRIVER_ID_AMD_PROPRIETARY,              DRIVER_ID_AMD_OPEN_SOURCE,              DRIVER_ID_MESA_RADV,@@ -98,42 +93,33 @@              DRIVER_ID_MESA_LLVMPIPE,              DRIVER_ID_MOLTENVK :: DriverId #-} +conNameDriverId :: String+conNameDriverId = "DriverId"++enumPrefixDriverId :: String+enumPrefixDriverId = "DRIVER_ID_"++showTableDriverId :: [(DriverId, String)]+showTableDriverId =+  [ (DRIVER_ID_AMD_PROPRIETARY          , "AMD_PROPRIETARY")+  , (DRIVER_ID_AMD_OPEN_SOURCE          , "AMD_OPEN_SOURCE")+  , (DRIVER_ID_MESA_RADV                , "MESA_RADV")+  , (DRIVER_ID_NVIDIA_PROPRIETARY       , "NVIDIA_PROPRIETARY")+  , (DRIVER_ID_INTEL_PROPRIETARY_WINDOWS, "INTEL_PROPRIETARY_WINDOWS")+  , (DRIVER_ID_INTEL_OPEN_SOURCE_MESA   , "INTEL_OPEN_SOURCE_MESA")+  , (DRIVER_ID_IMAGINATION_PROPRIETARY  , "IMAGINATION_PROPRIETARY")+  , (DRIVER_ID_QUALCOMM_PROPRIETARY     , "QUALCOMM_PROPRIETARY")+  , (DRIVER_ID_ARM_PROPRIETARY          , "ARM_PROPRIETARY")+  , (DRIVER_ID_GOOGLE_SWIFTSHADER       , "GOOGLE_SWIFTSHADER")+  , (DRIVER_ID_GGP_PROPRIETARY          , "GGP_PROPRIETARY")+  , (DRIVER_ID_BROADCOM_PROPRIETARY     , "BROADCOM_PROPRIETARY")+  , (DRIVER_ID_MESA_LLVMPIPE            , "MESA_LLVMPIPE")+  , (DRIVER_ID_MOLTENVK                 , "MOLTENVK")+  ]+ instance Show DriverId where-  showsPrec p = \case-    DRIVER_ID_AMD_PROPRIETARY -> showString "DRIVER_ID_AMD_PROPRIETARY"-    DRIVER_ID_AMD_OPEN_SOURCE -> showString "DRIVER_ID_AMD_OPEN_SOURCE"-    DRIVER_ID_MESA_RADV -> showString "DRIVER_ID_MESA_RADV"-    DRIVER_ID_NVIDIA_PROPRIETARY -> showString "DRIVER_ID_NVIDIA_PROPRIETARY"-    DRIVER_ID_INTEL_PROPRIETARY_WINDOWS -> showString "DRIVER_ID_INTEL_PROPRIETARY_WINDOWS"-    DRIVER_ID_INTEL_OPEN_SOURCE_MESA -> showString "DRIVER_ID_INTEL_OPEN_SOURCE_MESA"-    DRIVER_ID_IMAGINATION_PROPRIETARY -> showString "DRIVER_ID_IMAGINATION_PROPRIETARY"-    DRIVER_ID_QUALCOMM_PROPRIETARY -> showString "DRIVER_ID_QUALCOMM_PROPRIETARY"-    DRIVER_ID_ARM_PROPRIETARY -> showString "DRIVER_ID_ARM_PROPRIETARY"-    DRIVER_ID_GOOGLE_SWIFTSHADER -> showString "DRIVER_ID_GOOGLE_SWIFTSHADER"-    DRIVER_ID_GGP_PROPRIETARY -> showString "DRIVER_ID_GGP_PROPRIETARY"-    DRIVER_ID_BROADCOM_PROPRIETARY -> showString "DRIVER_ID_BROADCOM_PROPRIETARY"-    DRIVER_ID_MESA_LLVMPIPE -> showString "DRIVER_ID_MESA_LLVMPIPE"-    DRIVER_ID_MOLTENVK -> showString "DRIVER_ID_MOLTENVK"-    DriverId x -> showParen (p >= 11) (showString "DriverId " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixDriverId showTableDriverId conNameDriverId (\(DriverId x) -> x) (showsPrec 11)  instance Read DriverId where-  readPrec = parens (choose [("DRIVER_ID_AMD_PROPRIETARY", pure DRIVER_ID_AMD_PROPRIETARY)-                            , ("DRIVER_ID_AMD_OPEN_SOURCE", pure DRIVER_ID_AMD_OPEN_SOURCE)-                            , ("DRIVER_ID_MESA_RADV", pure DRIVER_ID_MESA_RADV)-                            , ("DRIVER_ID_NVIDIA_PROPRIETARY", pure DRIVER_ID_NVIDIA_PROPRIETARY)-                            , ("DRIVER_ID_INTEL_PROPRIETARY_WINDOWS", pure DRIVER_ID_INTEL_PROPRIETARY_WINDOWS)-                            , ("DRIVER_ID_INTEL_OPEN_SOURCE_MESA", pure DRIVER_ID_INTEL_OPEN_SOURCE_MESA)-                            , ("DRIVER_ID_IMAGINATION_PROPRIETARY", pure DRIVER_ID_IMAGINATION_PROPRIETARY)-                            , ("DRIVER_ID_QUALCOMM_PROPRIETARY", pure DRIVER_ID_QUALCOMM_PROPRIETARY)-                            , ("DRIVER_ID_ARM_PROPRIETARY", pure DRIVER_ID_ARM_PROPRIETARY)-                            , ("DRIVER_ID_GOOGLE_SWIFTSHADER", pure DRIVER_ID_GOOGLE_SWIFTSHADER)-                            , ("DRIVER_ID_GGP_PROPRIETARY", pure DRIVER_ID_GGP_PROPRIETARY)-                            , ("DRIVER_ID_BROADCOM_PROPRIETARY", pure DRIVER_ID_BROADCOM_PROPRIETARY)-                            , ("DRIVER_ID_MESA_LLVMPIPE", pure DRIVER_ID_MESA_LLVMPIPE)-                            , ("DRIVER_ID_MOLTENVK", pure DRIVER_ID_MOLTENVK)]-                     +++-                     prec 10 (do-                       expectP (Ident "DriverId")-                       v <- step readPrec-                       pure (DriverId v)))+  readPrec = enumReadPrec enumPrefixDriverId showTableDriverId conNameDriverId DriverId 
src/Vulkan/Core12/Enums/DriverId.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "DriverId" module Vulkan.Core12.Enums.DriverId  (DriverId) where  
src/Vulkan/Core12/Enums/ResolveModeFlagBits.hs view
@@ -1,30 +1,28 @@ {-# language CPP #-}-module Vulkan.Core12.Enums.ResolveModeFlagBits  ( ResolveModeFlagBits( RESOLVE_MODE_NONE+-- No documentation found for Chapter "ResolveModeFlagBits"+module Vulkan.Core12.Enums.ResolveModeFlagBits  ( ResolveModeFlags+                                                , ResolveModeFlagBits( RESOLVE_MODE_NONE                                                                      , RESOLVE_MODE_SAMPLE_ZERO_BIT                                                                      , RESOLVE_MODE_AVERAGE_BIT                                                                      , RESOLVE_MODE_MIN_BIT                                                                      , RESOLVE_MODE_MAX_BIT                                                                      , ..                                                                      )-                                                , ResolveModeFlags                                                 ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type ResolveModeFlags = ResolveModeFlagBits+ -- | VkResolveModeFlagBits - Bitmask indicating supported depth and stencil -- resolve modes --@@ -36,40 +34,45 @@   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)  -- | 'RESOLVE_MODE_NONE' indicates that no resolve operation is done.-pattern RESOLVE_MODE_NONE = ResolveModeFlagBits 0x00000000+pattern RESOLVE_MODE_NONE            = ResolveModeFlagBits 0x00000000 -- | 'RESOLVE_MODE_SAMPLE_ZERO_BIT' indicates that result of the resolve -- operation is equal to the value of sample 0. pattern RESOLVE_MODE_SAMPLE_ZERO_BIT = ResolveModeFlagBits 0x00000001 -- | 'RESOLVE_MODE_AVERAGE_BIT' indicates that result of the resolve -- operation is the average of the sample values.-pattern RESOLVE_MODE_AVERAGE_BIT = ResolveModeFlagBits 0x00000002+pattern RESOLVE_MODE_AVERAGE_BIT     = ResolveModeFlagBits 0x00000002 -- | 'RESOLVE_MODE_MIN_BIT' indicates that result of the resolve operation is -- the minimum of the sample values.-pattern RESOLVE_MODE_MIN_BIT = ResolveModeFlagBits 0x00000004+pattern RESOLVE_MODE_MIN_BIT         = ResolveModeFlagBits 0x00000004 -- | 'RESOLVE_MODE_MAX_BIT' indicates that result of the resolve operation is -- the maximum of the sample values.-pattern RESOLVE_MODE_MAX_BIT = ResolveModeFlagBits 0x00000008+pattern RESOLVE_MODE_MAX_BIT         = ResolveModeFlagBits 0x00000008 -type ResolveModeFlags = ResolveModeFlagBits+conNameResolveModeFlagBits :: String+conNameResolveModeFlagBits = "ResolveModeFlagBits" +enumPrefixResolveModeFlagBits :: String+enumPrefixResolveModeFlagBits = "RESOLVE_MODE_"++showTableResolveModeFlagBits :: [(ResolveModeFlagBits, String)]+showTableResolveModeFlagBits =+  [ (RESOLVE_MODE_NONE           , "NONE")+  , (RESOLVE_MODE_SAMPLE_ZERO_BIT, "SAMPLE_ZERO_BIT")+  , (RESOLVE_MODE_AVERAGE_BIT    , "AVERAGE_BIT")+  , (RESOLVE_MODE_MIN_BIT        , "MIN_BIT")+  , (RESOLVE_MODE_MAX_BIT        , "MAX_BIT")+  ]+ instance Show ResolveModeFlagBits where-  showsPrec p = \case-    RESOLVE_MODE_NONE -> showString "RESOLVE_MODE_NONE"-    RESOLVE_MODE_SAMPLE_ZERO_BIT -> showString "RESOLVE_MODE_SAMPLE_ZERO_BIT"-    RESOLVE_MODE_AVERAGE_BIT -> showString "RESOLVE_MODE_AVERAGE_BIT"-    RESOLVE_MODE_MIN_BIT -> showString "RESOLVE_MODE_MIN_BIT"-    RESOLVE_MODE_MAX_BIT -> showString "RESOLVE_MODE_MAX_BIT"-    ResolveModeFlagBits x -> showParen (p >= 11) (showString "ResolveModeFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixResolveModeFlagBits+                            showTableResolveModeFlagBits+                            conNameResolveModeFlagBits+                            (\(ResolveModeFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ResolveModeFlagBits where-  readPrec = parens (choose [("RESOLVE_MODE_NONE", pure RESOLVE_MODE_NONE)-                            , ("RESOLVE_MODE_SAMPLE_ZERO_BIT", pure RESOLVE_MODE_SAMPLE_ZERO_BIT)-                            , ("RESOLVE_MODE_AVERAGE_BIT", pure RESOLVE_MODE_AVERAGE_BIT)-                            , ("RESOLVE_MODE_MIN_BIT", pure RESOLVE_MODE_MIN_BIT)-                            , ("RESOLVE_MODE_MAX_BIT", pure RESOLVE_MODE_MAX_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ResolveModeFlagBits")-                       v <- step readPrec-                       pure (ResolveModeFlagBits v)))+  readPrec = enumReadPrec enumPrefixResolveModeFlagBits+                          showTableResolveModeFlagBits+                          conNameResolveModeFlagBits+                          ResolveModeFlagBits 
src/Vulkan/Core12/Enums/ResolveModeFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core12.Enums.ResolveModeFlagBits  ( ResolveModeFlagBits-                                                , ResolveModeFlags+-- No documentation found for Chapter "ResolveModeFlagBits"+module Vulkan.Core12.Enums.ResolveModeFlagBits  ( ResolveModeFlags+                                                , ResolveModeFlagBits                                                 ) where   -data ResolveModeFlagBits- type ResolveModeFlags = ResolveModeFlagBits++data ResolveModeFlagBits 
src/Vulkan/Core12/Enums/SamplerReductionMode.hs view
@@ -1,23 +1,18 @@ {-# language CPP #-}+-- No documentation found for Chapter "SamplerReductionMode" module Vulkan.Core12.Enums.SamplerReductionMode  (SamplerReductionMode( SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE                                                                       , SAMPLER_REDUCTION_MODE_MIN                                                                       , SAMPLER_REDUCTION_MODE_MAX                                                                       , ..                                                                       )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkSamplerReductionMode - Specify reduction mode for texture filtering --@@ -35,29 +30,38 @@ -- | 'SAMPLER_REDUCTION_MODE_MIN' specifies that texel values are combined by -- taking the component-wise minimum of values in the footprint with -- non-zero weights.-pattern SAMPLER_REDUCTION_MODE_MIN = SamplerReductionMode 1+pattern SAMPLER_REDUCTION_MODE_MIN              = SamplerReductionMode 1 -- | 'SAMPLER_REDUCTION_MODE_MAX' specifies that texel values are combined by -- taking the component-wise maximum of values in the footprint with -- non-zero weights.-pattern SAMPLER_REDUCTION_MODE_MAX = SamplerReductionMode 2+pattern SAMPLER_REDUCTION_MODE_MAX              = SamplerReductionMode 2 {-# complete SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,              SAMPLER_REDUCTION_MODE_MIN,              SAMPLER_REDUCTION_MODE_MAX :: SamplerReductionMode #-} +conNameSamplerReductionMode :: String+conNameSamplerReductionMode = "SamplerReductionMode"++enumPrefixSamplerReductionMode :: String+enumPrefixSamplerReductionMode = "SAMPLER_REDUCTION_MODE_"++showTableSamplerReductionMode :: [(SamplerReductionMode, String)]+showTableSamplerReductionMode =+  [ (SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, "WEIGHTED_AVERAGE")+  , (SAMPLER_REDUCTION_MODE_MIN             , "MIN")+  , (SAMPLER_REDUCTION_MODE_MAX             , "MAX")+  ]+ instance Show SamplerReductionMode where-  showsPrec p = \case-    SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE -> showString "SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE"-    SAMPLER_REDUCTION_MODE_MIN -> showString "SAMPLER_REDUCTION_MODE_MIN"-    SAMPLER_REDUCTION_MODE_MAX -> showString "SAMPLER_REDUCTION_MODE_MAX"-    SamplerReductionMode x -> showParen (p >= 11) (showString "SamplerReductionMode " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixSamplerReductionMode+                            showTableSamplerReductionMode+                            conNameSamplerReductionMode+                            (\(SamplerReductionMode x) -> x)+                            (showsPrec 11)  instance Read SamplerReductionMode where-  readPrec = parens (choose [("SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE", pure SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE)-                            , ("SAMPLER_REDUCTION_MODE_MIN", pure SAMPLER_REDUCTION_MODE_MIN)-                            , ("SAMPLER_REDUCTION_MODE_MAX", pure SAMPLER_REDUCTION_MODE_MAX)]-                     +++-                     prec 10 (do-                       expectP (Ident "SamplerReductionMode")-                       v <- step readPrec-                       pure (SamplerReductionMode v)))+  readPrec = enumReadPrec enumPrefixSamplerReductionMode+                          showTableSamplerReductionMode+                          conNameSamplerReductionMode+                          SamplerReductionMode 
src/Vulkan/Core12/Enums/SamplerReductionMode.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "SamplerReductionMode" module Vulkan.Core12.Enums.SamplerReductionMode  (SamplerReductionMode) where  
src/Vulkan/Core12/Enums/SemaphoreType.hs view
@@ -1,22 +1,17 @@ {-# language CPP #-}+-- No documentation found for Chapter "SemaphoreType" module Vulkan.Core12.Enums.SemaphoreType  (SemaphoreType( SEMAPHORE_TYPE_BINARY                                                         , SEMAPHORE_TYPE_TIMELINE                                                         , ..                                                         )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkSemaphoreType - Sepcifies the type of a semaphore object --@@ -29,7 +24,7 @@ -- | 'SEMAPHORE_TYPE_BINARY' specifies a /binary semaphore/ type that has a -- boolean payload indicating whether the semaphore is currently signaled -- or unsignaled. When created, the semaphore is in the unsignaled state.-pattern SEMAPHORE_TYPE_BINARY = SemaphoreType 0+pattern SEMAPHORE_TYPE_BINARY   = SemaphoreType 0 -- | 'SEMAPHORE_TYPE_TIMELINE' specifies a /timeline semaphore/ type that has -- a monotonically increasing 64-bit unsigned integer payload indicating -- whether the semaphore is signaled with respect to a particular reference@@ -40,18 +35,22 @@ {-# complete SEMAPHORE_TYPE_BINARY,              SEMAPHORE_TYPE_TIMELINE :: SemaphoreType #-} +conNameSemaphoreType :: String+conNameSemaphoreType = "SemaphoreType"++enumPrefixSemaphoreType :: String+enumPrefixSemaphoreType = "SEMAPHORE_TYPE_"++showTableSemaphoreType :: [(SemaphoreType, String)]+showTableSemaphoreType = [(SEMAPHORE_TYPE_BINARY, "BINARY"), (SEMAPHORE_TYPE_TIMELINE, "TIMELINE")]+ instance Show SemaphoreType where-  showsPrec p = \case-    SEMAPHORE_TYPE_BINARY -> showString "SEMAPHORE_TYPE_BINARY"-    SEMAPHORE_TYPE_TIMELINE -> showString "SEMAPHORE_TYPE_TIMELINE"-    SemaphoreType x -> showParen (p >= 11) (showString "SemaphoreType " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixSemaphoreType+                            showTableSemaphoreType+                            conNameSemaphoreType+                            (\(SemaphoreType x) -> x)+                            (showsPrec 11)  instance Read SemaphoreType where-  readPrec = parens (choose [("SEMAPHORE_TYPE_BINARY", pure SEMAPHORE_TYPE_BINARY)-                            , ("SEMAPHORE_TYPE_TIMELINE", pure SEMAPHORE_TYPE_TIMELINE)]-                     +++-                     prec 10 (do-                       expectP (Ident "SemaphoreType")-                       v <- step readPrec-                       pure (SemaphoreType v)))+  readPrec = enumReadPrec enumPrefixSemaphoreType showTableSemaphoreType conNameSemaphoreType SemaphoreType 
src/Vulkan/Core12/Enums/SemaphoreType.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "SemaphoreType" module Vulkan.Core12.Enums.SemaphoreType  (SemaphoreType) where  
src/Vulkan/Core12/Enums/SemaphoreWaitFlagBits.hs view
@@ -1,26 +1,24 @@ {-# language CPP #-}-module Vulkan.Core12.Enums.SemaphoreWaitFlagBits  ( SemaphoreWaitFlagBits( SEMAPHORE_WAIT_ANY_BIT+-- No documentation found for Chapter "SemaphoreWaitFlagBits"+module Vulkan.Core12.Enums.SemaphoreWaitFlagBits  ( SemaphoreWaitFlags+                                                  , SemaphoreWaitFlagBits( SEMAPHORE_WAIT_ANY_BIT                                                                          , ..                                                                          )-                                                  , SemaphoreWaitFlags                                                   ) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero)+type SemaphoreWaitFlags = SemaphoreWaitFlagBits+ -- | VkSemaphoreWaitFlagBits - Bitmask specifying additional parameters of a -- semaphore wait operation --@@ -42,18 +40,25 @@ -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pValues@. pattern SEMAPHORE_WAIT_ANY_BIT = SemaphoreWaitFlagBits 0x00000001 -type SemaphoreWaitFlags = SemaphoreWaitFlagBits+conNameSemaphoreWaitFlagBits :: String+conNameSemaphoreWaitFlagBits = "SemaphoreWaitFlagBits" +enumPrefixSemaphoreWaitFlagBits :: String+enumPrefixSemaphoreWaitFlagBits = "SEMAPHORE_WAIT_ANY_BIT"++showTableSemaphoreWaitFlagBits :: [(SemaphoreWaitFlagBits, String)]+showTableSemaphoreWaitFlagBits = [(SEMAPHORE_WAIT_ANY_BIT, "")]+ instance Show SemaphoreWaitFlagBits where-  showsPrec p = \case-    SEMAPHORE_WAIT_ANY_BIT -> showString "SEMAPHORE_WAIT_ANY_BIT"-    SemaphoreWaitFlagBits x -> showParen (p >= 11) (showString "SemaphoreWaitFlagBits 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixSemaphoreWaitFlagBits+                            showTableSemaphoreWaitFlagBits+                            conNameSemaphoreWaitFlagBits+                            (\(SemaphoreWaitFlagBits x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read SemaphoreWaitFlagBits where-  readPrec = parens (choose [("SEMAPHORE_WAIT_ANY_BIT", pure SEMAPHORE_WAIT_ANY_BIT)]-                     +++-                     prec 10 (do-                       expectP (Ident "SemaphoreWaitFlagBits")-                       v <- step readPrec-                       pure (SemaphoreWaitFlagBits v)))+  readPrec = enumReadPrec enumPrefixSemaphoreWaitFlagBits+                          showTableSemaphoreWaitFlagBits+                          conNameSemaphoreWaitFlagBits+                          SemaphoreWaitFlagBits 
src/Vulkan/Core12/Enums/SemaphoreWaitFlagBits.hs-boot view
@@ -1,11 +1,12 @@ {-# language CPP #-}-module Vulkan.Core12.Enums.SemaphoreWaitFlagBits  ( SemaphoreWaitFlagBits-                                                  , SemaphoreWaitFlags+-- No documentation found for Chapter "SemaphoreWaitFlagBits"+module Vulkan.Core12.Enums.SemaphoreWaitFlagBits  ( SemaphoreWaitFlags+                                                  , SemaphoreWaitFlagBits                                                   ) where   -data SemaphoreWaitFlagBits- type SemaphoreWaitFlags = SemaphoreWaitFlagBits++data SemaphoreWaitFlagBits 
src/Vulkan/Core12/Enums/ShaderFloatControlsIndependence.hs view
@@ -1,23 +1,18 @@ {-# language CPP #-}+-- No documentation found for Chapter "ShaderFloatControlsIndependence" module Vulkan.Core12.Enums.ShaderFloatControlsIndependence  (ShaderFloatControlsIndependence( SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY                                                                                             , SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL                                                                                             , SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE                                                                                             , ..                                                                                             )) where -import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Foreign.Storable (Storable) import Data.Int (Int32) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Vulkan.Zero (Zero) -- | VkShaderFloatControlsIndependence - Enum specifying whether, and how, -- shader float controls can be set separately@@ -35,28 +30,37 @@ pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = ShaderFloatControlsIndependence 0 -- | 'SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL' specifies that shader float -- controls for all bit widths /can/ be set independently.-pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = ShaderFloatControlsIndependence 1+pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL         = ShaderFloatControlsIndependence 1 -- | 'SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE' specifies that shader float -- controls for all bit widths /must/ be set identically.-pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = ShaderFloatControlsIndependence 2+pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE        = ShaderFloatControlsIndependence 2 {-# complete SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,              SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,              SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE :: ShaderFloatControlsIndependence #-} +conNameShaderFloatControlsIndependence :: String+conNameShaderFloatControlsIndependence = "ShaderFloatControlsIndependence"++enumPrefixShaderFloatControlsIndependence :: String+enumPrefixShaderFloatControlsIndependence = "SHADER_FLOAT_CONTROLS_INDEPENDENCE_"++showTableShaderFloatControlsIndependence :: [(ShaderFloatControlsIndependence, String)]+showTableShaderFloatControlsIndependence =+  [ (SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY, "32_BIT_ONLY")+  , (SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL        , "ALL")+  , (SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE       , "NONE")+  ]+ instance Show ShaderFloatControlsIndependence where-  showsPrec p = \case-    SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY -> showString "SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY"-    SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL -> showString "SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL"-    SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE -> showString "SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE"-    ShaderFloatControlsIndependence x -> showParen (p >= 11) (showString "ShaderFloatControlsIndependence " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixShaderFloatControlsIndependence+                            showTableShaderFloatControlsIndependence+                            conNameShaderFloatControlsIndependence+                            (\(ShaderFloatControlsIndependence x) -> x)+                            (showsPrec 11)  instance Read ShaderFloatControlsIndependence where-  readPrec = parens (choose [("SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY", pure SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY)-                            , ("SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL", pure SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL)-                            , ("SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE", pure SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE)]-                     +++-                     prec 10 (do-                       expectP (Ident "ShaderFloatControlsIndependence")-                       v <- step readPrec-                       pure (ShaderFloatControlsIndependence v)))+  readPrec = enumReadPrec enumPrefixShaderFloatControlsIndependence+                          showTableShaderFloatControlsIndependence+                          conNameShaderFloatControlsIndependence+                          ShaderFloatControlsIndependence 
src/Vulkan/Core12/Enums/ShaderFloatControlsIndependence.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "ShaderFloatControlsIndependence" module Vulkan.Core12.Enums.ShaderFloatControlsIndependence  (ShaderFloatControlsIndependence) where  
src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_EXT_descriptor_indexing" module Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing  ( PhysicalDeviceDescriptorIndexingFeatures(..)                                                                , PhysicalDeviceDescriptorIndexingProperties(..)                                                                , DescriptorSetLayoutBindingFlagsCreateInfo(..)@@ -805,6 +806,16 @@ --     'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT'::@descriptorBindingInlineUniformBlockUpdateAfterBind@ --     is not enabled, all bindings with descriptor type --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+--     /must/ not use+--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+--+-- -   #VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingAccelerationStructureUpdateAfterBind-03570#+--     If+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructureFeaturesKHR'::@descriptorBindingAccelerationStructureUpdateAfterBind@+--     is not enabled, all bindings with descriptor type+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'+--     or+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV' --     /must/ not use --     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT' --
src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_EXT_descriptor_indexing" module Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing  ( DescriptorSetLayoutBindingFlagsCreateInfo                                                                , DescriptorSetVariableDescriptorCountAllocateInfo                                                                , DescriptorSetVariableDescriptorCountLayoutSupport
src/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_EXT_host_query_reset" module Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset  ( resetQueryPool                                                             , PhysicalDeviceHostQueryResetFeatures(..)                                                             , StructureType(..)
src/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_EXT_host_query_reset" module Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset  (PhysicalDeviceHostQueryResetFeatures) where  import Data.Kind (Type)
src/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_EXT_sampler_filter_minmax" module Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax  ( PhysicalDeviceSamplerFilterMinmaxProperties(..)                                                                  , SamplerReductionModeCreateInfo(..)                                                                  , StructureType(..)
src/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_EXT_sampler_filter_minmax" module Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax  ( PhysicalDeviceSamplerFilterMinmaxProperties                                                                  , SamplerReductionModeCreateInfo                                                                  ) where
src/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_EXT_scalar_block_layout" module Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout  ( PhysicalDeviceScalarBlockLayoutFeatures(..)                                                                , StructureType(..)                                                                ) where
src/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_EXT_scalar_block_layout" module Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout  (PhysicalDeviceScalarBlockLayoutFeatures) where  import Data.Kind (Type)
src/Vulkan/Core12/Promoted_From_VK_EXT_separate_stencil_usage.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_EXT_separate_stencil_usage" module Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage  ( ImageStencilUsageCreateInfo(..)                                                                   , StructureType(..)                                                                   ) where
src/Vulkan/Core12/Promoted_From_VK_EXT_separate_stencil_usage.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_EXT_separate_stencil_usage" module Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage  (ImageStencilUsageCreateInfo) where  import Data.Kind (Type)
src/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_8bit_storage" module Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage  ( PhysicalDevice8BitStorageFeatures(..)                                                         , StructureType(..)                                                         ) where@@ -36,21 +37,21 @@ -- 'Vulkan.Core10.Enums.StructureType.StructureType' data PhysicalDevice8BitStorageFeatures = PhysicalDevice8BitStorageFeatures   { -- | #extension-features-storageBuffer8BitAccess# @storageBuffer8BitAccess@-    -- indicates whether objects in the @StorageBuffer@ or-    -- @PhysicalStorageBuffer@ storage class with the @Block@ decoration /can/-    -- have 8-bit integer members. If this feature is not enabled, 8-bit-    -- integer members /must/ not be used in such objects. This also indicates-    -- whether shader modules /can/ declare the @StorageBuffer8BitAccess@-    -- capability.+    -- indicates whether objects in the @StorageBuffer@,+    -- @ShaderRecordBufferKHR@, or @PhysicalStorageBuffer@ storage class with+    -- the @Block@ decoration /can/ have 8-bit integer members. If this feature+    -- is not enabled, 8-bit integer members /must/ not be used in such+    -- objects. This also indicates whether shader modules /can/ declare the+    -- @StorageBuffer8BitAccess@ capability.     storageBuffer8BitAccess :: Bool   , -- | #extension-features-uniformAndStorageBuffer8BitAccess#     -- @uniformAndStorageBuffer8BitAccess@ indicates whether objects in the     -- @Uniform@ storage class with the @Block@ decoration and in the-    -- @StorageBuffer@ or @PhysicalStorageBuffer@ storage class with the same-    -- decoration /can/ have 8-bit integer members. If this feature is not-    -- enabled, 8-bit integer members /must/ not be used in such objects. This-    -- also indicates whether shader modules /can/ declare the-    -- @UniformAndStorageBuffer8BitAccess@ capability.+    -- @StorageBuffer@, @ShaderRecordBufferKHR@, or @PhysicalStorageBuffer@+    -- storage class with the same decoration /can/ have 8-bit integer members.+    -- If this feature is not enabled, 8-bit integer members /must/ not be used+    -- in such objects. This also indicates whether shader modules /can/+    -- declare the @UniformAndStorageBuffer8BitAccess@ capability.     uniformAndStorageBuffer8BitAccess :: Bool   , -- | #extension-features-storagePushConstant8# @storagePushConstant8@     -- indicates whether objects in the @PushConstant@ storage class /can/ have
src/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_8bit_storage" module Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage  (PhysicalDevice8BitStorageFeatures) where  import Data.Kind (Type)
src/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_buffer_device_address" module Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address  ( getBufferOpaqueCaptureAddress                                                                  , getBufferDeviceAddress                                                                  , getDeviceMemoryOpaqueCaptureAddress@@ -315,10 +316,11 @@     bufferDeviceAddressCaptureReplay :: Bool   , -- | #extension-features-bufferDeviceAddressMultiDevice#     -- @bufferDeviceAddressMultiDevice@ indicates that the implementation-    -- supports the @bufferDeviceAddress@ and @rayTracing@ features for logical-    -- devices created with multiple physical devices. If this feature is not-    -- supported, buffer and acceleration structure addresses /must/ not be-    -- queried on a logical device created with more than one physical device.+    -- supports the @bufferDeviceAddress@ , @rayTracingPipeline@ and @rayQuery@+    -- features for logical devices created with multiple physical devices. If+    -- this feature is not supported, buffer and acceleration structure+    -- addresses /must/ not be queried on a logical device created with more+    -- than one physical device.     bufferDeviceAddressMultiDevice :: Bool   }   deriving (Typeable, Eq)
src/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_buffer_device_address" module Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address  ( BufferDeviceAddressInfo                                                                  , BufferOpaqueCaptureAddressCreateInfo                                                                  , DeviceMemoryOpaqueCaptureAddressInfo
src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_create_renderpass2" module Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2  ( createRenderPass2                                                               , cmdBeginRenderPass2                                                               , cmdUseRenderPass2@@ -1953,7 +1954,7 @@     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (SubpassDescription2 _)))) (pPSubpasses')     lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (dependencies)) :: Word32))     pPDependencies' <- ContT $ allocaBytesAligned @SubpassDependency2 ((Data.Vector.length (dependencies)) * 48) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDependencies' `plusPtr` (48 * (i)) :: Ptr SubpassDependency2) (e) . ($ ())) (dependencies)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDependencies' `plusPtr` (48 * (i)) :: Ptr SubpassDependency2) (e)) (dependencies)     lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr SubpassDependency2))) (pPDependencies')     lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (correlatedViewMasks)) :: Word32))     pPCorrelatedViewMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (correlatedViewMasks)) * 4) 4@@ -1973,7 +1974,7 @@     Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPSubpasses' `plusPtr` (88 * (i)) :: Ptr (SubpassDescription2 _))) (e) . ($ ())) (mempty)     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (SubpassDescription2 _)))) (pPSubpasses')     pPDependencies' <- ContT $ allocaBytesAligned @SubpassDependency2 ((Data.Vector.length (mempty)) * 48) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDependencies' `plusPtr` (48 * (i)) :: Ptr SubpassDependency2) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDependencies' `plusPtr` (48 * (i)) :: Ptr SubpassDependency2) (e)) (mempty)     lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr SubpassDependency2))) (pPDependencies')     pPCorrelatedViewMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4     lift $ Data.Vector.imapM_ (\i e -> poke (pPCorrelatedViewMasks' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)
src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_create_renderpass2" module Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2  ( AttachmentDescription2                                                               , AttachmentReference2                                                               , RenderPassCreateInfo2
src/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_depth_stencil_resolve" module Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve  ( PhysicalDeviceDepthStencilResolveProperties(..)                                                                  , SubpassDescriptionDepthStencilResolve(..)                                                                  , StructureType(..)@@ -224,19 +225,23 @@ --     one of them /must/ be --     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE' ----- == Valid Usage (Implicit)------ -   #VUID-VkSubpassDescriptionDepthStencilResolve-sType-sType# @sType@---     /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE'------ -   #VUID-VkSubpassDescriptionDepthStencilResolve-depthResolveMode-parameter#+-- -   #VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-04588#+--     If the 'Vulkan.Core10.Enums.Format.Format' of+--     @pDepthStencilResolveAttachment@ has a depth component, --     @depthResolveMode@ /must/ be a valid --     'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value ----- -   #VUID-VkSubpassDescriptionDepthStencilResolve-stencilResolveMode-parameter#+-- -   #VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-04589#+--     If the 'Vulkan.Core10.Enums.Format.Format' of+--     @pDepthStencilResolveAttachment@ has a stencil component, --     @stencilResolveMode@ /must/ be a valid --     'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkSubpassDescriptionDepthStencilResolve-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE' -- -- -   #VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-parameter# --     If @pDepthStencilResolveAttachment@ is not @NULL@,
src/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_depth_stencil_resolve" module Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve  ( PhysicalDeviceDepthStencilResolveProperties                                                                  , SubpassDescriptionDepthStencilResolve                                                                  ) where
src/Vulkan/Core12/Promoted_From_VK_KHR_draw_indirect_count.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_draw_indirect_count" module Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count  ( cmdDrawIndirectCount                                                                , cmdDrawIndexedIndirectCount                                                                ) where
src/Vulkan/Core12/Promoted_From_VK_KHR_driver_properties.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_driver_properties" module Vulkan.Core12.Promoted_From_VK_KHR_driver_properties  ( ConformanceVersion(..)                                                              , PhysicalDeviceDriverProperties(..)                                                              , StructureType(..)@@ -14,8 +15,6 @@ import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr) import Data.ByteString (packCString)-import Control.Monad.Trans.Class (lift)-import Control.Monad.Trans.Cont (evalContT) import Data.Typeable (Typeable) import Foreign.C.Types (CChar) import Foreign.Storable (Storable)@@ -27,7 +26,6 @@ import Data.Word (Word8) import Data.ByteString (ByteString) import Data.Kind (Type)-import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.CStruct.Utils (lowerArrayPtr) import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString) import Vulkan.Core12.Enums.DriverId (DriverId)@@ -147,24 +145,24 @@  instance ToCStruct PhysicalDeviceDriverProperties where   withCStruct x f = allocaBytesAligned 536 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PhysicalDeviceDriverProperties{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr DriverId)) (driverID)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))) (driverName)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))) (driverInfo)-    ContT $ pokeCStruct ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (conformanceVersion) . ($ ())-    lift $ f+  pokeCStruct p PhysicalDeviceDriverProperties{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DriverId)) (driverID)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))) (driverName)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))) (driverInfo)+    poke ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (conformanceVersion)+    f   cStructSize = 536   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr DriverId)) (zero)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))) (mempty)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))) (mempty)-    ContT $ pokeCStruct ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DriverId)) (zero)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))) (mempty)+    poke ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (zero)+    f  instance FromCStruct PhysicalDeviceDriverProperties where   peekCStruct p = do@@ -174,6 +172,12 @@     conformanceVersion <- peekCStruct @ConformanceVersion ((p `plusPtr` 532 :: Ptr ConformanceVersion))     pure $ PhysicalDeviceDriverProperties              driverID driverName driverInfo conformanceVersion++instance Storable PhysicalDeviceDriverProperties where+  sizeOf ~_ = 536+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())  instance Zero PhysicalDeviceDriverProperties where   zero = PhysicalDeviceDriverProperties
src/Vulkan/Core12/Promoted_From_VK_KHR_driver_properties.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_driver_properties" module Vulkan.Core12.Promoted_From_VK_KHR_driver_properties  ( ConformanceVersion                                                              , PhysicalDeviceDriverProperties                                                              ) where
src/Vulkan/Core12/Promoted_From_VK_KHR_image_format_list.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_image_format_list" module Vulkan.Core12.Promoted_From_VK_KHR_image_format_list  ( ImageFormatListCreateInfo(..)                                                              , StructureType(..)                                                              ) where
src/Vulkan/Core12/Promoted_From_VK_KHR_image_format_list.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_image_format_list" module Vulkan.Core12.Promoted_From_VK_KHR_image_format_list  (ImageFormatListCreateInfo) where  import Data.Kind (Type)
src/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_imageless_framebuffer" module Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer  ( PhysicalDeviceImagelessFramebufferFeatures(..)                                                                  , FramebufferAttachmentsCreateInfo(..)                                                                  , FramebufferAttachmentImageInfo(..)
src/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_imageless_framebuffer" module Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer  ( FramebufferAttachmentImageInfo                                                                  , FramebufferAttachmentsCreateInfo                                                                  , PhysicalDeviceImagelessFramebufferFeatures
src/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_separate_depth_stencil_layouts" module Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts  ( PhysicalDeviceSeparateDepthStencilLayoutsFeatures(..)                                                                           , AttachmentReferenceStencilLayout(..)                                                                           , AttachmentDescriptionStencilLayout(..)
src/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_separate_depth_stencil_layouts" module Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts  ( AttachmentDescriptionStencilLayout                                                                           , AttachmentReferenceStencilLayout                                                                           , PhysicalDeviceSeparateDepthStencilLayoutsFeatures
src/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_atomic_int64" module Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64  ( PhysicalDeviceShaderAtomicInt64Features(..)                                                                , StructureType(..)                                                                ) where
src/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_atomic_int64" module Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64  (PhysicalDeviceShaderAtomicInt64Features) where  import Data.Kind (Type)
src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_float16_int8" module Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8  ( PhysicalDeviceShaderFloat16Int8Features(..)                                                                , StructureType(..)                                                                ) where
src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_float16_int8" module Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8  (PhysicalDeviceShaderFloat16Int8Features) where  import Data.Kind (Type)
src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_float_controls" module Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls  ( PhysicalDeviceFloatControlsProperties(..)                                                                  , StructureType(..)                                                                  , ShaderFloatControlsIndependence(..)
src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_float_controls" module Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls  (PhysicalDeviceFloatControlsProperties) where  import Data.Kind (Type)
src/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_subgroup_extended_types" module Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types  ( PhysicalDeviceShaderSubgroupExtendedTypesFeatures(..)                                                                           , StructureType(..)                                                                           ) where
src/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_subgroup_extended_types" module Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types  (PhysicalDeviceShaderSubgroupExtendedTypesFeatures) where  import Data.Kind (Type)
src/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_timeline_semaphore" module Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore  ( getSemaphoreCounterValue                                                               , waitSemaphores                                                               , waitSemaphoresSafe
src/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_timeline_semaphore" module Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore  ( PhysicalDeviceTimelineSemaphoreFeatures                                                               , PhysicalDeviceTimelineSemaphoreProperties                                                               , SemaphoreSignalInfo
src/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_uniform_buffer_standard_layout" module Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout  ( PhysicalDeviceUniformBufferStandardLayoutFeatures(..)                                                                           , StructureType(..)                                                                           ) where
src/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_uniform_buffer_standard_layout" module Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout  (PhysicalDeviceUniformBufferStandardLayoutFeatures) where  import Data.Kind (Type)
src/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_vulkan_memory_model" module Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model  ( PhysicalDeviceVulkanMemoryModelFeatures(..)                                                                , StructureType(..)                                                                ) where
src/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Promoted_From_VK_KHR_vulkan_memory_model" module Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model  (PhysicalDeviceVulkanMemoryModelFeatures) where  import Data.Kind (Type)
src/Vulkan/Dynamic.hs view
@@ -1,5 +1,6 @@ {-# language CPP #-} {-# language NoDuplicateRecordFields #-}+-- No documentation found for Chapter "Dynamic" module Vulkan.Dynamic  ( InstanceCmds(..)                        , getInstanceProcAddr'                        , initInstanceCmds@@ -24,23 +25,25 @@ import Data.Word (Word64) import Vulkan.NamedType ((:::)) import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AHardwareBuffer)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureBuildGeometryInfoKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureBuildOffsetInfoKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureCreateInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildGeometryInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildRangeInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildSizesInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildTypeKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCompatibilityKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCreateInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureCreateInfoNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureDeviceAddressInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureDeviceAddressInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureInfoNV) import {-# SOURCE #-} Vulkan.Extensions.Handles (AccelerationStructureKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureMemoryRequirementsInfoNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureVersionKHR)+import {-# SOURCE #-} Vulkan.Extensions.Handles (AccelerationStructureNV)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureVersionInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (AcquireNextImageInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (AcquireProfilingLockInfoKHR) import {-# SOURCE #-} Vulkan.Core10.AllocationCallbacks (AllocationCallbacks) import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferPropertiesANDROID) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_android_surface (AndroidSurfaceCreateInfoKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (BindAccelerationStructureMemoryInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (BindAccelerationStructureMemoryInfoNV) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindBufferMemoryInfo) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindImageMemoryInfo) import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (BindSparseInfo)@@ -75,15 +78,15 @@ import {-# SOURCE #-} Vulkan.Core10.Pipeline (ComputePipelineCreateInfo) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (ConditionalRenderingBeginInfoEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (CooperativeMatrixPropertiesNV)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureInfoKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureToMemoryInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureToMemoryInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyBufferInfo2KHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyBufferToImageInfo2KHR) import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (CopyDescriptorSet) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyImageInfo2KHR) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyImageToBufferInfo2KHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (CopyMemoryToAccelerationStructureInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyMemoryToAccelerationStructureInfoKHR) import {-# SOURCE #-} Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlags) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerMarkerInfoEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectNameInfoEXT)@@ -277,7 +280,7 @@ import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (QueueFamilyProperties2) import {-# SOURCE #-} Vulkan.Core10.Handles (Queue_T) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_acquire_xlib_display (RROutput)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingPipelineCreateInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingPipelineCreateInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (RayTracingPipelineCreateInfoNV) import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Rect2D) import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (RefreshCycleDurationGOOGLE)@@ -299,6 +302,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_win32 (SemaphoreGetWin32HandleInfoKHR) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreSignalInfo) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreWaitInfo)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (ShaderGroupShaderKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_shader_info (ShaderInfoTypeAMD) import {-# SOURCE #-} Vulkan.Core10.Handles (ShaderModule) import {-# SOURCE #-} Vulkan.Core10.Shader (ShaderModuleCreateInfo)@@ -313,7 +317,7 @@ import {-# SOURCE #-} Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlags) import {-# SOURCE #-} Vulkan.Core10.Enums.StencilOp (StencilOp) import {-# SOURCE #-} Vulkan.Extensions.VK_GGP_stream_descriptor_surface (StreamDescriptorSurfaceCreateInfoGGP)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (StridedBufferRegionKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (StridedDeviceAddressRegionKHR) import {-# SOURCE #-} Vulkan.Core10.Queue (SubmitInfo) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassBeginInfo) import {-# SOURCE #-} Vulkan.Core10.Enums.SubpassContents (SubpassContents)@@ -860,28 +864,31 @@   , pVkCompileDeferredNV :: FunPtr (Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result)   , pVkCreateAccelerationStructureNV :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV) -> IO Result)   , pVkDestroyAccelerationStructureKHR :: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())-  , pVkGetAccelerationStructureMemoryRequirementsKHR :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoKHR) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ())+  , pVkDestroyAccelerationStructureNV :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())   , pVkGetAccelerationStructureMemoryRequirementsNV :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2KHR)) -> IO ())-  , pVkBindAccelerationStructureMemoryKHR :: FunPtr (Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindAccelerationStructureMemoryInfoKHR) -> IO Result)-  , pVkCmdCopyAccelerationStructureNV :: FunPtr (Ptr CommandBuffer_T -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> CopyAccelerationStructureModeKHR -> IO ())-  , pVkCmdCopyAccelerationStructureKHR :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (SomeStruct CopyAccelerationStructureInfoKHR)) -> IO ())-  , pVkCopyAccelerationStructureKHR :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr (SomeStruct CopyAccelerationStructureInfoKHR)) -> IO Result)-  , pVkCmdCopyAccelerationStructureToMemoryKHR :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (SomeStruct CopyAccelerationStructureToMemoryInfoKHR)) -> IO ())-  , pVkCopyAccelerationStructureToMemoryKHR :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr (SomeStruct CopyAccelerationStructureToMemoryInfoKHR)) -> IO Result)-  , pVkCmdCopyMemoryToAccelerationStructureKHR :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (SomeStruct CopyMemoryToAccelerationStructureInfoKHR)) -> IO ())-  , pVkCopyMemoryToAccelerationStructureKHR :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr (SomeStruct CopyMemoryToAccelerationStructureInfoKHR)) -> IO Result)+  , pVkBindAccelerationStructureMemoryNV :: FunPtr (Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindAccelerationStructureMemoryInfoNV) -> IO Result)+  , pVkCmdCopyAccelerationStructureNV :: FunPtr (Ptr CommandBuffer_T -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> CopyAccelerationStructureModeKHR -> IO ())+  , pVkCmdCopyAccelerationStructureKHR :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr CopyAccelerationStructureInfoKHR) -> IO ())+  , pVkCopyAccelerationStructureKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> ("pInfo" ::: Ptr CopyAccelerationStructureInfoKHR) -> IO Result)+  , pVkCmdCopyAccelerationStructureToMemoryKHR :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr CopyAccelerationStructureToMemoryInfoKHR) -> IO ())+  , pVkCopyAccelerationStructureToMemoryKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> ("pInfo" ::: Ptr CopyAccelerationStructureToMemoryInfoKHR) -> IO Result)+  , pVkCmdCopyMemoryToAccelerationStructureKHR :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr CopyMemoryToAccelerationStructureInfoKHR) -> IO ())+  , pVkCopyMemoryToAccelerationStructureKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> ("pInfo" ::: Ptr CopyMemoryToAccelerationStructureInfoKHR) -> IO Result)   , pVkCmdWriteAccelerationStructuresPropertiesKHR :: FunPtr (Ptr CommandBuffer_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureKHR) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> IO ())-  , pVkCmdBuildAccelerationStructureNV :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr AccelerationStructureInfoNV) -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool32) -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> IO ())+  , pVkCmdWriteAccelerationStructuresPropertiesNV :: FunPtr (Ptr CommandBuffer_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureNV) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> IO ())+  , pVkCmdBuildAccelerationStructureNV :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr AccelerationStructureInfoNV) -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool32) -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> IO ())   , pVkWriteAccelerationStructuresPropertiesKHR :: FunPtr (Ptr Device_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureKHR) -> QueryType -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: CSize) -> IO Result)-  , pVkCmdTraceRaysKHR :: FunPtr (Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ())+  , pVkCmdTraceRaysKHR :: FunPtr (Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ())   , pVkCmdTraceRaysNV :: FunPtr (Ptr CommandBuffer_T -> ("raygenShaderBindingTableBuffer" ::: Buffer) -> ("raygenShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingTableBuffer" ::: Buffer) -> ("missShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingStride" ::: DeviceSize) -> ("hitShaderBindingTableBuffer" ::: Buffer) -> ("hitShaderBindingOffset" ::: DeviceSize) -> ("hitShaderBindingStride" ::: DeviceSize) -> ("callableShaderBindingTableBuffer" ::: Buffer) -> ("callableShaderBindingOffset" ::: DeviceSize) -> ("callableShaderBindingStride" ::: DeviceSize) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ())   , pVkGetRayTracingShaderGroupHandlesKHR :: FunPtr (Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result)   , pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR :: FunPtr (Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result)-  , pVkGetAccelerationStructureHandleNV :: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result)+  , pVkGetAccelerationStructureHandleNV :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result)   , pVkCreateRayTracingPipelinesNV :: FunPtr (Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (SomeStruct RayTracingPipelineCreateInfoNV)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result)-  , pVkCreateRayTracingPipelinesKHR :: FunPtr (Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (SomeStruct RayTracingPipelineCreateInfoKHR)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result)-  , pVkCmdTraceRaysIndirectKHR :: FunPtr (Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> Buffer -> ("offset" ::: DeviceSize) -> IO ())-  , pVkGetDeviceAccelerationStructureCompatibilityKHR :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureVersionKHR -> IO Result)+  , pVkCreateRayTracingPipelinesKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (SomeStruct RayTracingPipelineCreateInfoKHR)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result)+  , pVkCmdTraceRaysIndirectKHR :: FunPtr (Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("indirectDeviceAddress" ::: DeviceAddress) -> IO ())+  , pVkGetDeviceAccelerationStructureCompatibilityKHR :: FunPtr (Ptr Device_T -> ("pVersionInfo" ::: Ptr AccelerationStructureVersionInfoKHR) -> ("pCompatibility" ::: Ptr AccelerationStructureCompatibilityKHR) -> IO ())+  , pVkGetRayTracingShaderGroupStackSizeKHR :: FunPtr (Ptr Device_T -> Pipeline -> ("group" ::: Word32) -> ShaderGroupShaderKHR -> IO DeviceSize)+  , pVkCmdSetRayTracingPipelineStackSizeKHR :: FunPtr (Ptr CommandBuffer_T -> ("pipelineStackSize" ::: Word32) -> IO ())   , pVkGetImageViewHandleNVX :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr ImageViewHandleInfoNVX) -> IO Word32)   , pVkGetImageViewAddressNVX :: FunPtr (Ptr Device_T -> ImageView -> ("pProperties" ::: Ptr ImageViewAddressPropertiesNVX) -> IO Result)   , pVkGetDeviceGroupSurfacePresentModes2EXT :: FunPtr (Ptr Device_T -> ("pSurfaceInfo" ::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR)) -> ("pModes" ::: Ptr DeviceGroupPresentModeFlagsKHR) -> IO Result)@@ -907,9 +914,9 @@   , pVkGetPipelineExecutableInternalRepresentationsKHR :: FunPtr (Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pInternalRepresentationCount" ::: Ptr Word32) -> ("pInternalRepresentations" ::: Ptr PipelineExecutableInternalRepresentationKHR) -> IO Result)   , pVkCmdSetLineStippleEXT :: FunPtr (Ptr CommandBuffer_T -> ("lineStippleFactor" ::: Word32) -> ("lineStipplePattern" ::: Word16) -> IO ())   , pVkCreateAccelerationStructureKHR :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureKHR) -> IO Result)-  , pVkCmdBuildAccelerationStructureKHR :: FunPtr (Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr (SomeStruct AccelerationStructureBuildGeometryInfoKHR)) -> ("ppOffsetInfos" ::: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) -> IO ())-  , pVkCmdBuildAccelerationStructureIndirectKHR :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (SomeStruct AccelerationStructureBuildGeometryInfoKHR)) -> ("indirectBuffer" ::: Buffer) -> ("indirectOffset" ::: DeviceSize) -> ("indirectStride" ::: Word32) -> IO ())-  , pVkBuildAccelerationStructureKHR :: FunPtr (Ptr Device_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr (SomeStruct AccelerationStructureBuildGeometryInfoKHR)) -> ("ppOffsetInfos" ::: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) -> IO Result)+  , pVkCmdBuildAccelerationStructuresKHR :: FunPtr (Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("ppBuildRangeInfos" ::: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) -> IO ())+  , pVkCmdBuildAccelerationStructuresIndirectKHR :: FunPtr (Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("pIndirectDeviceAddresses" ::: Ptr DeviceAddress) -> ("pIndirectStrides" ::: Ptr Word32) -> ("ppMaxPrimitiveCounts" ::: Ptr (Ptr Word32)) -> IO ())+  , pVkBuildAccelerationStructuresKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("ppBuildRangeInfos" ::: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) -> IO Result)   , pVkGetAccelerationStructureDeviceAddressKHR :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureDeviceAddressInfoKHR) -> IO DeviceAddress)   , pVkCreateDeferredOperationKHR :: FunPtr (Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDeferredOperation" ::: Ptr DeferredOperationKHR) -> IO Result)   , pVkDestroyDeferredOperationKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())@@ -940,6 +947,7 @@   , pVkCmdResolveImage2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pResolveImageInfo" ::: Ptr ResolveImageInfo2KHR) -> IO ())   , pVkCmdSetFragmentShadingRateKHR :: FunPtr (Ptr CommandBuffer_T -> ("pFragmentSize" ::: Ptr Extent2D) -> ("combinerOps" ::: Ptr (FixedArray 2 FragmentShadingRateCombinerOpKHR)) -> IO ())   , pVkCmdSetFragmentShadingRateEnumNV :: FunPtr (Ptr CommandBuffer_T -> FragmentShadingRateNV -> ("combinerOps" ::: Ptr (FixedArray 2 FragmentShadingRateCombinerOpKHR)) -> IO ())+  , pVkGetAccelerationStructureBuildSizesKHR :: FunPtr (Ptr Device_T -> AccelerationStructureBuildTypeKHR -> ("pBuildInfo" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("pMaxPrimitiveCounts" ::: Ptr Word32) -> ("pSizeInfo" ::: Ptr AccelerationStructureBuildSizesInfoKHR) -> IO ())   }  deriving instance Eq DeviceCmds@@ -985,7 +993,7 @@     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr-    nullFunPtr+    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr  foreign import ccall #if !defined(SAFE_FOREIGN_CALLS)@@ -1237,10 +1245,10 @@   vkCmdDrawMeshTasksIndirectCountNV <- getDeviceProcAddr' handle (Ptr "vkCmdDrawMeshTasksIndirectCountNV"#)   vkCompileDeferredNV <- getDeviceProcAddr' handle (Ptr "vkCompileDeferredNV"#)   vkCreateAccelerationStructureNV <- getDeviceProcAddr' handle (Ptr "vkCreateAccelerationStructureNV"#)-  vkDestroyAccelerationStructureKHR <- getFirstDeviceProcAddr [(Ptr "vkDestroyAccelerationStructureNV"#), (Ptr "vkDestroyAccelerationStructureKHR"#)]-  vkGetAccelerationStructureMemoryRequirementsKHR <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureMemoryRequirementsKHR"#)+  vkDestroyAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkDestroyAccelerationStructureKHR"#)+  vkDestroyAccelerationStructureNV <- getDeviceProcAddr' handle (Ptr "vkDestroyAccelerationStructureNV"#)   vkGetAccelerationStructureMemoryRequirementsNV <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureMemoryRequirementsNV"#)-  vkBindAccelerationStructureMemoryKHR <- getFirstDeviceProcAddr [(Ptr "vkBindAccelerationStructureMemoryNV"#), (Ptr "vkBindAccelerationStructureMemoryKHR"#)]+  vkBindAccelerationStructureMemoryNV <- getDeviceProcAddr' handle (Ptr "vkBindAccelerationStructureMemoryNV"#)   vkCmdCopyAccelerationStructureNV <- getDeviceProcAddr' handle (Ptr "vkCmdCopyAccelerationStructureNV"#)   vkCmdCopyAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyAccelerationStructureKHR"#)   vkCopyAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCopyAccelerationStructureKHR"#)@@ -1248,7 +1256,8 @@   vkCopyAccelerationStructureToMemoryKHR <- getDeviceProcAddr' handle (Ptr "vkCopyAccelerationStructureToMemoryKHR"#)   vkCmdCopyMemoryToAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyMemoryToAccelerationStructureKHR"#)   vkCopyMemoryToAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCopyMemoryToAccelerationStructureKHR"#)-  vkCmdWriteAccelerationStructuresPropertiesKHR <- getFirstDeviceProcAddr [(Ptr "vkCmdWriteAccelerationStructuresPropertiesNV"#), (Ptr "vkCmdWriteAccelerationStructuresPropertiesKHR"#)]+  vkCmdWriteAccelerationStructuresPropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkCmdWriteAccelerationStructuresPropertiesKHR"#)+  vkCmdWriteAccelerationStructuresPropertiesNV <- getDeviceProcAddr' handle (Ptr "vkCmdWriteAccelerationStructuresPropertiesNV"#)   vkCmdBuildAccelerationStructureNV <- getDeviceProcAddr' handle (Ptr "vkCmdBuildAccelerationStructureNV"#)   vkWriteAccelerationStructuresPropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkWriteAccelerationStructuresPropertiesKHR"#)   vkCmdTraceRaysKHR <- getDeviceProcAddr' handle (Ptr "vkCmdTraceRaysKHR"#)@@ -1260,6 +1269,8 @@   vkCreateRayTracingPipelinesKHR <- getDeviceProcAddr' handle (Ptr "vkCreateRayTracingPipelinesKHR"#)   vkCmdTraceRaysIndirectKHR <- getDeviceProcAddr' handle (Ptr "vkCmdTraceRaysIndirectKHR"#)   vkGetDeviceAccelerationStructureCompatibilityKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeviceAccelerationStructureCompatibilityKHR"#)+  vkGetRayTracingShaderGroupStackSizeKHR <- getDeviceProcAddr' handle (Ptr "vkGetRayTracingShaderGroupStackSizeKHR"#)+  vkCmdSetRayTracingPipelineStackSizeKHR <- getDeviceProcAddr' handle (Ptr "vkCmdSetRayTracingPipelineStackSizeKHR"#)   vkGetImageViewHandleNVX <- getDeviceProcAddr' handle (Ptr "vkGetImageViewHandleNVX"#)   vkGetImageViewAddressNVX <- getDeviceProcAddr' handle (Ptr "vkGetImageViewAddressNVX"#)   vkGetDeviceGroupSurfacePresentModes2EXT <- getDeviceProcAddr' handle (Ptr "vkGetDeviceGroupSurfacePresentModes2EXT"#)@@ -1285,9 +1296,9 @@   vkGetPipelineExecutableInternalRepresentationsKHR <- getDeviceProcAddr' handle (Ptr "vkGetPipelineExecutableInternalRepresentationsKHR"#)   vkCmdSetLineStippleEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetLineStippleEXT"#)   vkCreateAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCreateAccelerationStructureKHR"#)-  vkCmdBuildAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCmdBuildAccelerationStructureKHR"#)-  vkCmdBuildAccelerationStructureIndirectKHR <- getDeviceProcAddr' handle (Ptr "vkCmdBuildAccelerationStructureIndirectKHR"#)-  vkBuildAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkBuildAccelerationStructureKHR"#)+  vkCmdBuildAccelerationStructuresKHR <- getDeviceProcAddr' handle (Ptr "vkCmdBuildAccelerationStructuresKHR"#)+  vkCmdBuildAccelerationStructuresIndirectKHR <- getDeviceProcAddr' handle (Ptr "vkCmdBuildAccelerationStructuresIndirectKHR"#)+  vkBuildAccelerationStructuresKHR <- getDeviceProcAddr' handle (Ptr "vkBuildAccelerationStructuresKHR"#)   vkGetAccelerationStructureDeviceAddressKHR <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureDeviceAddressKHR"#)   vkCreateDeferredOperationKHR <- getDeviceProcAddr' handle (Ptr "vkCreateDeferredOperationKHR"#)   vkDestroyDeferredOperationKHR <- getDeviceProcAddr' handle (Ptr "vkDestroyDeferredOperationKHR"#)@@ -1318,6 +1329,7 @@   vkCmdResolveImage2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdResolveImage2KHR"#)   vkCmdSetFragmentShadingRateKHR <- getDeviceProcAddr' handle (Ptr "vkCmdSetFragmentShadingRateKHR"#)   vkCmdSetFragmentShadingRateEnumNV <- getDeviceProcAddr' handle (Ptr "vkCmdSetFragmentShadingRateEnumNV"#)+  vkGetAccelerationStructureBuildSizesKHR <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureBuildSizesKHR"#)   pure $ DeviceCmds handle     (castFunPtr @_ @(Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) vkGetDeviceProcAddr)     (castFunPtr @_ @(Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDevice)@@ -1551,28 +1563,31 @@     (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result) vkCompileDeferredNV)     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV) -> IO Result) vkCreateAccelerationStructureNV)     (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyAccelerationStructureKHR)-    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoKHR) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ()) vkGetAccelerationStructureMemoryRequirementsKHR)+    (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureNV -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyAccelerationStructureNV)     (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2KHR)) -> IO ()) vkGetAccelerationStructureMemoryRequirementsNV)-    (castFunPtr @_ @(Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindAccelerationStructureMemoryInfoKHR) -> IO Result) vkBindAccelerationStructureMemoryKHR)-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> CopyAccelerationStructureModeKHR -> IO ()) vkCmdCopyAccelerationStructureNV)-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (SomeStruct CopyAccelerationStructureInfoKHR)) -> IO ()) vkCmdCopyAccelerationStructureKHR)-    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr (SomeStruct CopyAccelerationStructureInfoKHR)) -> IO Result) vkCopyAccelerationStructureKHR)-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (SomeStruct CopyAccelerationStructureToMemoryInfoKHR)) -> IO ()) vkCmdCopyAccelerationStructureToMemoryKHR)-    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr (SomeStruct CopyAccelerationStructureToMemoryInfoKHR)) -> IO Result) vkCopyAccelerationStructureToMemoryKHR)-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (SomeStruct CopyMemoryToAccelerationStructureInfoKHR)) -> IO ()) vkCmdCopyMemoryToAccelerationStructureKHR)-    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr (SomeStruct CopyMemoryToAccelerationStructureInfoKHR)) -> IO Result) vkCopyMemoryToAccelerationStructureKHR)+    (castFunPtr @_ @(Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindAccelerationStructureMemoryInfoNV) -> IO Result) vkBindAccelerationStructureMemoryNV)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> CopyAccelerationStructureModeKHR -> IO ()) vkCmdCopyAccelerationStructureNV)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr CopyAccelerationStructureInfoKHR) -> IO ()) vkCmdCopyAccelerationStructureKHR)+    (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> ("pInfo" ::: Ptr CopyAccelerationStructureInfoKHR) -> IO Result) vkCopyAccelerationStructureKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr CopyAccelerationStructureToMemoryInfoKHR) -> IO ()) vkCmdCopyAccelerationStructureToMemoryKHR)+    (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> ("pInfo" ::: Ptr CopyAccelerationStructureToMemoryInfoKHR) -> IO Result) vkCopyAccelerationStructureToMemoryKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr CopyMemoryToAccelerationStructureInfoKHR) -> IO ()) vkCmdCopyMemoryToAccelerationStructureKHR)+    (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> ("pInfo" ::: Ptr CopyMemoryToAccelerationStructureInfoKHR) -> IO Result) vkCopyMemoryToAccelerationStructureKHR)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureKHR) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> IO ()) vkCmdWriteAccelerationStructuresPropertiesKHR)-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr AccelerationStructureInfoNV) -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool32) -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> IO ()) vkCmdBuildAccelerationStructureNV)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureNV) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> IO ()) vkCmdWriteAccelerationStructuresPropertiesNV)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr AccelerationStructureInfoNV) -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool32) -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> IO ()) vkCmdBuildAccelerationStructureNV)     (castFunPtr @_ @(Ptr Device_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureKHR) -> QueryType -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: CSize) -> IO Result) vkWriteAccelerationStructuresPropertiesKHR)-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ()) vkCmdTraceRaysKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ()) vkCmdTraceRaysKHR)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("raygenShaderBindingTableBuffer" ::: Buffer) -> ("raygenShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingTableBuffer" ::: Buffer) -> ("missShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingStride" ::: DeviceSize) -> ("hitShaderBindingTableBuffer" ::: Buffer) -> ("hitShaderBindingOffset" ::: DeviceSize) -> ("hitShaderBindingStride" ::: DeviceSize) -> ("callableShaderBindingTableBuffer" ::: Buffer) -> ("callableShaderBindingOffset" ::: DeviceSize) -> ("callableShaderBindingStride" ::: DeviceSize) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ()) vkCmdTraceRaysNV)     (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetRayTracingShaderGroupHandlesKHR)     (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)-    (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureKHR -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetAccelerationStructureHandleNV)+    (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureNV -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetAccelerationStructureHandleNV)     (castFunPtr @_ @(Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (SomeStruct RayTracingPipelineCreateInfoNV)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result) vkCreateRayTracingPipelinesNV)-    (castFunPtr @_ @(Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (SomeStruct RayTracingPipelineCreateInfoKHR)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result) vkCreateRayTracingPipelinesKHR)-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) vkCmdTraceRaysIndirectKHR)-    (castFunPtr @_ @(Ptr Device_T -> Ptr AccelerationStructureVersionKHR -> IO Result) vkGetDeviceAccelerationStructureCompatibilityKHR)+    (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (SomeStruct RayTracingPipelineCreateInfoKHR)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result) vkCreateRayTracingPipelinesKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedDeviceAddressRegionKHR) -> ("indirectDeviceAddress" ::: DeviceAddress) -> IO ()) vkCmdTraceRaysIndirectKHR)+    (castFunPtr @_ @(Ptr Device_T -> ("pVersionInfo" ::: Ptr AccelerationStructureVersionInfoKHR) -> ("pCompatibility" ::: Ptr AccelerationStructureCompatibilityKHR) -> IO ()) vkGetDeviceAccelerationStructureCompatibilityKHR)+    (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("group" ::: Word32) -> ShaderGroupShaderKHR -> IO DeviceSize) vkGetRayTracingShaderGroupStackSizeKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pipelineStackSize" ::: Word32) -> IO ()) vkCmdSetRayTracingPipelineStackSizeKHR)     (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr ImageViewHandleInfoNVX) -> IO Word32) vkGetImageViewHandleNVX)     (castFunPtr @_ @(Ptr Device_T -> ImageView -> ("pProperties" ::: Ptr ImageViewAddressPropertiesNVX) -> IO Result) vkGetImageViewAddressNVX)     (castFunPtr @_ @(Ptr Device_T -> ("pSurfaceInfo" ::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR)) -> ("pModes" ::: Ptr DeviceGroupPresentModeFlagsKHR) -> IO Result) vkGetDeviceGroupSurfacePresentModes2EXT)@@ -1598,9 +1613,9 @@     (castFunPtr @_ @(Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pInternalRepresentationCount" ::: Ptr Word32) -> ("pInternalRepresentations" ::: Ptr PipelineExecutableInternalRepresentationKHR) -> IO Result) vkGetPipelineExecutableInternalRepresentationsKHR)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("lineStippleFactor" ::: Word32) -> ("lineStipplePattern" ::: Word16) -> IO ()) vkCmdSetLineStippleEXT)     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureKHR) -> IO Result) vkCreateAccelerationStructureKHR)-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr (SomeStruct AccelerationStructureBuildGeometryInfoKHR)) -> ("ppOffsetInfos" ::: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) -> IO ()) vkCmdBuildAccelerationStructureKHR)-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (SomeStruct AccelerationStructureBuildGeometryInfoKHR)) -> ("indirectBuffer" ::: Buffer) -> ("indirectOffset" ::: DeviceSize) -> ("indirectStride" ::: Word32) -> IO ()) vkCmdBuildAccelerationStructureIndirectKHR)-    (castFunPtr @_ @(Ptr Device_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr (SomeStruct AccelerationStructureBuildGeometryInfoKHR)) -> ("ppOffsetInfos" ::: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) -> IO Result) vkBuildAccelerationStructureKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("ppBuildRangeInfos" ::: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) -> IO ()) vkCmdBuildAccelerationStructuresKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("pIndirectDeviceAddresses" ::: Ptr DeviceAddress) -> ("pIndirectStrides" ::: Ptr Word32) -> ("ppMaxPrimitiveCounts" ::: Ptr (Ptr Word32)) -> IO ()) vkCmdBuildAccelerationStructuresIndirectKHR)+    (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("ppBuildRangeInfos" ::: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) -> IO Result) vkBuildAccelerationStructuresKHR)     (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureDeviceAddressInfoKHR) -> IO DeviceAddress) vkGetAccelerationStructureDeviceAddressKHR)     (castFunPtr @_ @(Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDeferredOperation" ::: Ptr DeferredOperationKHR) -> IO Result) vkCreateDeferredOperationKHR)     (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDeferredOperationKHR)@@ -1631,4 +1646,5 @@     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pResolveImageInfo" ::: Ptr ResolveImageInfo2KHR) -> IO ()) vkCmdResolveImage2KHR)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pFragmentSize" ::: Ptr Extent2D) -> ("combinerOps" ::: Ptr (FixedArray 2 FragmentShadingRateCombinerOpKHR)) -> IO ()) vkCmdSetFragmentShadingRateKHR)     (castFunPtr @_ @(Ptr CommandBuffer_T -> FragmentShadingRateNV -> ("combinerOps" ::: Ptr (FixedArray 2 FragmentShadingRateCombinerOpKHR)) -> IO ()) vkCmdSetFragmentShadingRateEnumNV)+    (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureBuildTypeKHR -> ("pBuildInfo" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("pMaxPrimitiveCounts" ::: Ptr Word32) -> ("pSizeInfo" ::: Ptr AccelerationStructureBuildSizesInfoKHR) -> IO ()) vkGetAccelerationStructureBuildSizesKHR) 
src/Vulkan/Dynamic.hs-boot view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Dynamic" module Vulkan.Dynamic  ( InstanceCmds                        , DeviceCmds                        ) where
src/Vulkan/Exception.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Exception" module Vulkan.Exception  (VulkanException(..)) where  import GHC.Exception.Type (Exception(..))
src/Vulkan/Extensions.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Extensions" module Vulkan.Extensions  ( module Vulkan.Extensions.Handles                           , module Vulkan.Extensions.VK_AMD_buffer_marker                           , module Vulkan.Extensions.VK_AMD_device_coherent_memory@@ -105,6 +106,7 @@                           , module Vulkan.Extensions.VK_INTEL_shader_integer_functions2                           , module Vulkan.Extensions.VK_KHR_16bit_storage                           , module Vulkan.Extensions.VK_KHR_8bit_storage+                          , module Vulkan.Extensions.VK_KHR_acceleration_structure                           , module Vulkan.Extensions.VK_KHR_android_surface                           , module Vulkan.Extensions.VK_KHR_bind_memory2                           , module Vulkan.Extensions.VK_KHR_buffer_device_address@@ -149,7 +151,8 @@                           , module Vulkan.Extensions.VK_KHR_pipeline_library                           , module Vulkan.Extensions.VK_KHR_portability_subset                           , module Vulkan.Extensions.VK_KHR_push_descriptor-                          , module Vulkan.Extensions.VK_KHR_ray_tracing+                          , module Vulkan.Extensions.VK_KHR_ray_query+                          , module Vulkan.Extensions.VK_KHR_ray_tracing_pipeline                           , module Vulkan.Extensions.VK_KHR_relaxed_block_layout                           , module Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge                           , module Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion@@ -326,6 +329,7 @@ import Vulkan.Extensions.VK_INTEL_shader_integer_functions2 import Vulkan.Extensions.VK_KHR_16bit_storage import Vulkan.Extensions.VK_KHR_8bit_storage+import Vulkan.Extensions.VK_KHR_acceleration_structure import Vulkan.Extensions.VK_KHR_android_surface import Vulkan.Extensions.VK_KHR_bind_memory2 import Vulkan.Extensions.VK_KHR_buffer_device_address@@ -370,7 +374,8 @@ import Vulkan.Extensions.VK_KHR_pipeline_library import Vulkan.Extensions.VK_KHR_portability_subset import Vulkan.Extensions.VK_KHR_push_descriptor-import Vulkan.Extensions.VK_KHR_ray_tracing+import Vulkan.Extensions.VK_KHR_ray_query+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline import Vulkan.Extensions.VK_KHR_relaxed_block_layout import Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge import Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion
src/Vulkan/Extensions/Handles.hs view
@@ -1,7 +1,9 @@ {-# language CPP #-}+-- No documentation found for Chapter "Handles" module Vulkan.Extensions.Handles  ( IndirectCommandsLayoutNV(..)                                   , ValidationCacheEXT(..)                                   , AccelerationStructureKHR(..)+                                  , AccelerationStructureNV(..)                                   , PerformanceConfigurationINTEL(..)                                   , DeferredOperationKHR(..)                                   , PrivateDataSlotEXT(..)@@ -46,6 +48,7 @@ import Vulkan.Core10.APIConstants (IsHandle) import Vulkan.Zero (Zero) import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR))+import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_ACCELERATION_STRUCTURE_NV)) import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT)) import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT)) import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_DEFERRED_OPERATION_KHR))@@ -123,23 +126,16 @@ -- -- = See Also ----- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureBuildGeometryInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureDeviceAddressInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureMemoryRequirementsInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.BindAccelerationStructureMemoryInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.CopyAccelerationStructureInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.CopyAccelerationStructureToMemoryInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.CopyMemoryToAccelerationStructureInfoKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.WriteDescriptorSetAccelerationStructureKHR',--- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',--- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdWriteAccelerationStructuresPropertiesKHR',--- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.createAccelerationStructureKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.destroyAccelerationStructureKHR',--- 'Vulkan.Extensions.VK_NV_ray_tracing.destroyAccelerationStructureNV',--- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.writeAccelerationStructuresPropertiesKHR'+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildGeometryInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureDeviceAddressInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureToMemoryInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyMemoryToAccelerationStructureInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.createAccelerationStructureKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.destroyAccelerationStructureKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.writeAccelerationStructuresPropertiesKHR' newtype AccelerationStructureKHR = AccelerationStructureKHR Word64   deriving newtype (Eq, Ord, Storable, Zero)   deriving anyclass (IsHandle)@@ -149,6 +145,29 @@   showsPrec p (AccelerationStructureKHR x) = showParen (p >= 11) (showString "AccelerationStructureKHR 0x" . showHex x)  +-- | VkAccelerationStructureNV - Opaque handle to an acceleration structure+-- object+--+-- = See Also+--+-- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsInfoNV',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.destroyAccelerationStructureNV',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'+newtype AccelerationStructureNV = AccelerationStructureNV Word64+  deriving newtype (Eq, Ord, Storable, Zero)+  deriving anyclass (IsHandle)+instance HasObjectType AccelerationStructureNV where+  objectTypeAndHandle (AccelerationStructureNV h) = (OBJECT_TYPE_ACCELERATION_STRUCTURE_NV, h)+instance Show AccelerationStructureNV where+  showsPrec p (AccelerationStructureNV x) = showParen (p >= 11) (showString "AccelerationStructureNV 0x" . showHex x)++ -- | VkPerformanceConfigurationINTEL - Device configuration for performance -- queries --@@ -175,8 +194,12 @@ -- -- = See Also ----- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.buildAccelerationStructuresKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.copyAccelerationStructureKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.copyAccelerationStructureToMemoryKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.copyMemoryToAccelerationStructureKHR', -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.createDeferredOperationKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR', -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.deferredOperationJoinKHR', -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.destroyDeferredOperationKHR', -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.getDeferredOperationMaxConcurrencyKHR',
src/Vulkan/Extensions/Handles.hs-boot view
@@ -1,5 +1,7 @@ {-# language CPP #-}+-- No documentation found for Chapter "Handles" module Vulkan.Extensions.Handles  ( AccelerationStructureKHR+                                  , AccelerationStructureNV                                   , DebugReportCallbackEXT                                   , DebugUtilsMessengerEXT                                   , DeferredOperationKHR@@ -16,6 +18,9 @@   data AccelerationStructureKHR+++data AccelerationStructureNV   data DebugReportCallbackEXT
src/Vulkan/Extensions/VK_AMD_buffer_marker.hs view
@@ -1,4 +1,91 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_buffer_marker - device extension+--+-- == VK_AMD_buffer_marker+--+-- [__Name String__]+--     @VK_AMD_buffer_marker@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     180+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>+--+-- [__Contact__]+--+--     -   Daniel Rakos+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_buffer_marker:%20&body=@drakos-amd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-01-26+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Jaakko Konttinen, AMD+--+--     -   Daniel Rakos, AMD+--+-- == Description+--+-- This extension adds a new operation to execute pipelined writes of small+-- marker values into a 'Vulkan.Core10.Handles.Buffer' object.+--+-- The primary purpose of these markers is to facilitate the development of+-- debugging tools for tracking which pipelined command contributed to+-- device loss.+--+-- == New Commands+--+-- -   'cmdWriteBufferMarkerAMD'+--+-- == New Enum Constants+--+-- -   'AMD_BUFFER_MARKER_EXTENSION_NAME'+--+-- -   'AMD_BUFFER_MARKER_SPEC_VERSION'+--+-- == Examples+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2018-01-26 (Jaakko Konttinen)+--+--     -   Initial revision+--+-- = See Also+--+-- 'cmdWriteBufferMarkerAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_buffer_marker Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_buffer_marker  ( cmdWriteBufferMarkerAMD                                                , AMD_BUFFER_MARKER_SPEC_VERSION                                                , pattern AMD_BUFFER_MARKER_SPEC_VERSION
src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs view
@@ -1,4 +1,98 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_device_coherent_memory - device extension+--+-- == VK_AMD_device_coherent_memory+--+-- [__Name String__]+--     @VK_AMD_device_coherent_memory@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     230+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_device_coherent_memory:%20&body=@tobski%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-02-04+--+-- [__Contributors__]+--+--     -   Ping Fu, AMD+--+--     -   Timothy Lottes, AMD+--+--     -   Tobias Hector, AMD+--+-- == Description+--+-- This extension adds the device coherent and device uncached memory+-- types. Any device accesses to device coherent memory are automatically+-- made visible to any other device access. Device uncached memory+-- indicates to applications that caches are disabled for a particular+-- memory type, which guarantees device coherence.+--+-- Device coherent and uncached memory are expected to have lower+-- performance for general access than non-device coherent memory, but can+-- be useful in certain scenarios; particularly so for debugging.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceCoherentMemoryFeaturesAMD'+--+-- == New Enum Constants+--+-- -   'AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME'+--+-- -   'AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MemoryPropertyFlagBits':+--+--     -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'+--+--     -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD'+--+-- == Version History+--+-- -   Revision 1, 2019-02-04 (Tobias Hector)+--+--     -   Initial revision+--+-- = See Also+--+-- 'PhysicalDeviceCoherentMemoryFeaturesAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_device_coherent_memory Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_device_coherent_memory  ( PhysicalDeviceCoherentMemoryFeaturesAMD(..)                                                         , AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION                                                         , pattern AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION
src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs-boot view
@@ -1,4 +1,98 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_device_coherent_memory - device extension+--+-- == VK_AMD_device_coherent_memory+--+-- [__Name String__]+--     @VK_AMD_device_coherent_memory@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     230+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_device_coherent_memory:%20&body=@tobski%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-02-04+--+-- [__Contributors__]+--+--     -   Ping Fu, AMD+--+--     -   Timothy Lottes, AMD+--+--     -   Tobias Hector, AMD+--+-- == Description+--+-- This extension adds the device coherent and device uncached memory+-- types. Any device accesses to device coherent memory are automatically+-- made visible to any other device access. Device uncached memory+-- indicates to applications that caches are disabled for a particular+-- memory type, which guarantees device coherence.+--+-- Device coherent and uncached memory are expected to have lower+-- performance for general access than non-device coherent memory, but can+-- be useful in certain scenarios; particularly so for debugging.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceCoherentMemoryFeaturesAMD'+--+-- == New Enum Constants+--+-- -   'AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME'+--+-- -   'AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MemoryPropertyFlagBits':+--+--     -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'+--+--     -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD'+--+-- == Version History+--+-- -   Revision 1, 2019-02-04 (Tobias Hector)+--+--     -   Initial revision+--+-- = See Also+--+-- 'PhysicalDeviceCoherentMemoryFeaturesAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_device_coherent_memory Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_device_coherent_memory  (PhysicalDeviceCoherentMemoryFeaturesAMD) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_AMD_display_native_hdr.hs view
@@ -1,4 +1,129 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_display_native_hdr - device extension+--+-- == VK_AMD_display_native_hdr+--+-- [__Name String__]+--     @VK_AMD_display_native_hdr@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     214+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_get_surface_capabilities2@+--+--     -   Requires @VK_KHR_swapchain@+--+-- [__Contact__]+--+--     -   Matthaeus G. Chajdas+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_display_native_hdr:%20&body=@anteru%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-12-18+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Aaron Hagan, AMD+--+--     -   Aric Cyr, AMD+--+--     -   Timothy Lottes, AMD+--+--     -   Derrick Owens, AMD+--+--     -   Daniel Rakos, AMD+--+-- == Description+--+-- This extension introduces the following display native HDR features to+-- Vulkan:+--+-- -   A new 'Vulkan.Extensions.VK_KHR_surface.ColorSpaceKHR' enum for+--     setting the native display colorspace. For example, this color space+--     would be set by the swapchain to use the native color space in+--     Freesync2 displays.+--+-- -   Local dimming control+--+-- == New Commands+--+-- -   'setLocalDimmingAMD'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':+--+--     -   'DisplayNativeHdrSurfaceCapabilitiesAMD'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR':+--+--     -   'SwapchainDisplayNativeHdrCreateInfoAMD'+--+-- == New Enum Constants+--+-- -   'AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME'+--+-- -   'AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Extensions.VK_KHR_surface.ColorSpaceKHR':+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_DISPLAY_NATIVE_AMD'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD'+--+-- == Issues+--+-- None.+--+-- == Examples+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2018-12-18 (Daniel Rakos)+--+--     -   Initial revision+--+-- = See Also+--+-- 'DisplayNativeHdrSurfaceCapabilitiesAMD',+-- 'SwapchainDisplayNativeHdrCreateInfoAMD', 'setLocalDimmingAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_display_native_hdr Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_display_native_hdr  ( setLocalDimmingAMD                                                     , DisplayNativeHdrSurfaceCapabilitiesAMD(..)                                                     , SwapchainDisplayNativeHdrCreateInfoAMD(..)
src/Vulkan/Extensions/VK_AMD_display_native_hdr.hs-boot view
@@ -1,4 +1,129 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_display_native_hdr - device extension+--+-- == VK_AMD_display_native_hdr+--+-- [__Name String__]+--     @VK_AMD_display_native_hdr@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     214+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_get_surface_capabilities2@+--+--     -   Requires @VK_KHR_swapchain@+--+-- [__Contact__]+--+--     -   Matthaeus G. Chajdas+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_display_native_hdr:%20&body=@anteru%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-12-18+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Aaron Hagan, AMD+--+--     -   Aric Cyr, AMD+--+--     -   Timothy Lottes, AMD+--+--     -   Derrick Owens, AMD+--+--     -   Daniel Rakos, AMD+--+-- == Description+--+-- This extension introduces the following display native HDR features to+-- Vulkan:+--+-- -   A new 'Vulkan.Extensions.VK_KHR_surface.ColorSpaceKHR' enum for+--     setting the native display colorspace. For example, this color space+--     would be set by the swapchain to use the native color space in+--     Freesync2 displays.+--+-- -   Local dimming control+--+-- == New Commands+--+-- -   'setLocalDimmingAMD'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':+--+--     -   'DisplayNativeHdrSurfaceCapabilitiesAMD'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR':+--+--     -   'SwapchainDisplayNativeHdrCreateInfoAMD'+--+-- == New Enum Constants+--+-- -   'AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME'+--+-- -   'AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Extensions.VK_KHR_surface.ColorSpaceKHR':+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_DISPLAY_NATIVE_AMD'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD'+--+-- == Issues+--+-- None.+--+-- == Examples+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2018-12-18 (Daniel Rakos)+--+--     -   Initial revision+--+-- = See Also+--+-- 'DisplayNativeHdrSurfaceCapabilitiesAMD',+-- 'SwapchainDisplayNativeHdrCreateInfoAMD', 'setLocalDimmingAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_display_native_hdr Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_display_native_hdr  ( DisplayNativeHdrSurfaceCapabilitiesAMD                                                     , SwapchainDisplayNativeHdrCreateInfoAMD                                                     ) where
src/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs view
@@ -1,4 +1,110 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_draw_indirect_count - device extension+--+-- == VK_AMD_draw_indirect_count+--+-- [__Name String__]+--     @VK_AMD_draw_indirect_count@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     34+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to @VK_KHR_draw_indirect_count@ extension+--+--         -   Which in turn was /promoted/ to+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Daniel Rakos+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_draw_indirect_count:%20&body=@drakos-amd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-08-23+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to+--         <VK_KHR_draw_indirect_count.html VK_KHR_draw_indirect_count>+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Derrick Owens, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Dominik Witczak, AMD+--+-- == Description+--+-- This extension allows an application to source the number of draw calls+-- for indirect draw calls from a buffer. This enables applications to+-- generate arbitrary amounts of draw commands and execute them without+-- host intervention.+--+-- == Promotion to @VK_KHR_draw_indirect_count@+--+-- All functionality in this extension is included in+-- @VK_KHR_draw_indirect_count@, with the suffix changed to KHR. The+-- original type, enum and command names are still available as aliases of+-- the core functionality.+--+-- == New Commands+--+-- -   'cmdDrawIndexedIndirectCountAMD'+--+-- -   'cmdDrawIndirectCountAMD'+--+-- == New Enum Constants+--+-- -   'AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME'+--+-- -   'AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 2, 2016-08-23 (Dominik Witczak)+--+--     -   Minor fixes+--+-- -   Revision 1, 2016-07-21 (Matthaeus Chajdas)+--+--     -   Initial draft+--+-- = See Also+--+-- 'cmdDrawIndexedIndirectCountAMD', 'cmdDrawIndirectCountAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_draw_indirect_count Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_draw_indirect_count  ( cmdDrawIndirectCountAMD                                                      , cmdDrawIndexedIndirectCountAMD                                                      , AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION
src/Vulkan/Extensions/VK_AMD_gcn_shader.hs view
@@ -1,4 +1,84 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_gcn_shader - device extension+--+-- == VK_AMD_gcn_shader+--+-- [__Name String__]+--     @VK_AMD_gcn_shader@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     26+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Dominik Witczak+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_gcn_shader:%20&body=@dominikwitczakamd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-05-30+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_gcn_shader.html SPV_AMD_gcn_shader>+--+-- [__Contributors__]+--+--     -   Dominik Witczak, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Rex Xu, AMD+--+--     -   Graham Sellers, AMD+--+-- == Description+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_gcn_shader.html SPV_AMD_gcn_shader>+--+-- == New Enum Constants+--+-- -   'AMD_GCN_SHADER_EXTENSION_NAME'+--+-- -   'AMD_GCN_SHADER_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 1, 2016-05-30 (Dominik Witczak)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gcn_shader Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_gcn_shader  ( AMD_GCN_SHADER_SPEC_VERSION                                             , pattern AMD_GCN_SHADER_SPEC_VERSION                                             , AMD_GCN_SHADER_EXTENSION_NAME
src/Vulkan/Extensions/VK_AMD_gpu_shader_half_float.hs view
@@ -1,4 +1,103 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_gpu_shader_half_float - device extension+--+-- == VK_AMD_gpu_shader_half_float+--+-- [__Name String__]+--     @VK_AMD_gpu_shader_half_float@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     37+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_KHR_shader_float16_int8@ extension+--+--         -   Which in turn was /promoted/ to+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Dominik Witczak+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_gpu_shader_half_float:%20&body=@dominikwitczakamd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-04-11+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_gpu_shader_half_float.html SPV_AMD_gpu_shader_half_float>+--+-- [__Contributors__]+--+--     -   Daniel Rakos, AMD+--+--     -   Dominik Witczak, AMD+--+--     -   Donglin Wei, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Qun Lin, AMD+--+--     -   Rex Xu, AMD+--+-- == Description+--+-- This extension adds support for using half float variables in shaders.+--+-- == Deprecation by @VK_KHR_shader_float16_int8@+--+-- Functionality in this extension was included in+-- @VK_KHR_shader_float16_int8@ extension, when+-- 'Vulkan.Extensions.VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8FeaturesKHR'::@shaderFloat16@+-- is enabled.+--+-- == New Enum Constants+--+-- -   'AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME'+--+-- -   'AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 2, 2019-04-11 (Tobias Hector)+--+--     -   Marked as deprecated+--+-- -   Revision 1, 2016-09-21 (Dominik Witczak)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpu_shader_half_float Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_gpu_shader_half_float  ( AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION                                                        , pattern AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION                                                        , AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME
src/Vulkan/Extensions/VK_AMD_gpu_shader_int16.hs view
@@ -1,4 +1,110 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_gpu_shader_int16 - device extension+--+-- == VK_AMD_gpu_shader_int16+--+-- [__Name String__]+--     @VK_AMD_gpu_shader_int16@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     133+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_KHR_shader_float16_int8@ extension+--+--         -   Which in turn was /promoted/ to+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Qun Lin+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_gpu_shader_int16:%20&body=@linqun%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-04-11+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_gpu_shader_int16.html SPV_AMD_gpu_shader_int16>+--+-- [__Contributors__]+--+--     -   Daniel Rakos, AMD+--+--     -   Dominik Witczak, AMD+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Rex Xu, AMD+--+--     -   Timothy Lottes, AMD+--+--     -   Zhi Cai, AMD+--+-- [__External Dependencies__]+--+--     -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_gpu_shader_int16.html SPV_AMD_gpu_shader_int16>+--+-- == Description+--+-- This extension adds support for using 16-bit integer variables in+-- shaders.+--+-- == Deprecation by @VK_KHR_shader_float16_int8@+--+-- Functionality in this extension was included in+-- @VK_KHR_shader_float16_int8@ extension, when+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures'::@shaderInt16@+-- and+-- 'Vulkan.Extensions.VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8FeaturesKHR'::@shaderFloat16@+-- are enabled.+--+-- == New Enum Constants+--+-- -   'AMD_GPU_SHADER_INT16_EXTENSION_NAME'+--+-- -   'AMD_GPU_SHADER_INT16_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 2, 2019-04-11 (Tobias Hector)+--+--     -   Marked as deprecated+--+-- -   Revision 1, 2017-06-18 (Dominik Witczak)+--+--     -   First version+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpu_shader_int16 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_gpu_shader_int16  ( AMD_GPU_SHADER_INT16_SPEC_VERSION                                                   , pattern AMD_GPU_SHADER_INT16_SPEC_VERSION                                                   , AMD_GPU_SHADER_INT16_EXTENSION_NAME
src/Vulkan/Extensions/VK_AMD_memory_overallocation_behavior.hs view
@@ -1,4 +1,95 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_memory_overallocation_behavior - device extension+--+-- == VK_AMD_memory_overallocation_behavior+--+-- [__Name String__]+--     @VK_AMD_memory_overallocation_behavior@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     190+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Martin Dinkov+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_memory_overallocation_behavior:%20&body=@mdinkov%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-09-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Martin Dinkov, AMD+--+--     -   Matthaeus Chajdas, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Jon Campbell, AMD+--+-- == Description+--+-- This extension allows controlling whether explicit overallocation beyond+-- the device memory heap sizes (reported by+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties') is+-- allowed or not. Overallocation may lead to performance loss and is not+-- supported for all platforms.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'DeviceMemoryOverallocationCreateInfoAMD'+--+-- == New Enums+--+-- -   'MemoryOverallocationBehaviorAMD'+--+-- == New Enum Constants+--+-- -   'AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME'+--+-- -   'AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD'+--+-- == Version History+--+-- -   Revision 1, 2018-09-19 (Martin Dinkov)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'DeviceMemoryOverallocationCreateInfoAMD',+-- 'MemoryOverallocationBehaviorAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_memory_overallocation_behavior Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_memory_overallocation_behavior  ( DeviceMemoryOverallocationCreateInfoAMD(..)                                                                 , MemoryOverallocationBehaviorAMD( MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD                                                                                                  , MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD@@ -11,18 +102,12 @@                                                                 , pattern AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME                                                                 ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.String (IsString) import Data.Typeable (Typeable) import Foreign.Storable (Storable)@@ -33,7 +118,7 @@ import Data.Int (Int32) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Vulkan.CStruct (FromCStruct) import Vulkan.CStruct (FromCStruct(..))@@ -108,10 +193,10 @@  -- | 'MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD' lets the implementation -- decide if overallocation is allowed.-pattern MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = MemoryOverallocationBehaviorAMD 0+pattern MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD    = MemoryOverallocationBehaviorAMD 0 -- | 'MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD' specifies overallocation is -- allowed if platform permits.-pattern MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = MemoryOverallocationBehaviorAMD 1+pattern MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD    = MemoryOverallocationBehaviorAMD 1 -- | 'MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD' specifies the -- application is not allowed to allocate device memory beyond the heap -- sizes reported by@@ -123,22 +208,31 @@              MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD,              MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD :: MemoryOverallocationBehaviorAMD #-} +conNameMemoryOverallocationBehaviorAMD :: String+conNameMemoryOverallocationBehaviorAMD = "MemoryOverallocationBehaviorAMD"++enumPrefixMemoryOverallocationBehaviorAMD :: String+enumPrefixMemoryOverallocationBehaviorAMD = "MEMORY_OVERALLOCATION_BEHAVIOR_"++showTableMemoryOverallocationBehaviorAMD :: [(MemoryOverallocationBehaviorAMD, String)]+showTableMemoryOverallocationBehaviorAMD =+  [ (MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD   , "DEFAULT_AMD")+  , (MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD   , "ALLOWED_AMD")+  , (MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD, "DISALLOWED_AMD")+  ]+ instance Show MemoryOverallocationBehaviorAMD where-  showsPrec p = \case-    MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD -> showString "MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD"-    MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD -> showString "MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD"-    MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD -> showString "MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD"-    MemoryOverallocationBehaviorAMD x -> showParen (p >= 11) (showString "MemoryOverallocationBehaviorAMD " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixMemoryOverallocationBehaviorAMD+                            showTableMemoryOverallocationBehaviorAMD+                            conNameMemoryOverallocationBehaviorAMD+                            (\(MemoryOverallocationBehaviorAMD x) -> x)+                            (showsPrec 11)  instance Read MemoryOverallocationBehaviorAMD where-  readPrec = parens (choose [("MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD", pure MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD)-                            , ("MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD", pure MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD)-                            , ("MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD", pure MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD)]-                     +++-                     prec 10 (do-                       expectP (Ident "MemoryOverallocationBehaviorAMD")-                       v <- step readPrec-                       pure (MemoryOverallocationBehaviorAMD v)))+  readPrec = enumReadPrec enumPrefixMemoryOverallocationBehaviorAMD+                          showTableMemoryOverallocationBehaviorAMD+                          conNameMemoryOverallocationBehaviorAMD+                          MemoryOverallocationBehaviorAMD   type AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_AMD_memory_overallocation_behavior.hs-boot view
@@ -1,4 +1,95 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_memory_overallocation_behavior - device extension+--+-- == VK_AMD_memory_overallocation_behavior+--+-- [__Name String__]+--     @VK_AMD_memory_overallocation_behavior@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     190+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Martin Dinkov+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_memory_overallocation_behavior:%20&body=@mdinkov%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-09-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Martin Dinkov, AMD+--+--     -   Matthaeus Chajdas, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Jon Campbell, AMD+--+-- == Description+--+-- This extension allows controlling whether explicit overallocation beyond+-- the device memory heap sizes (reported by+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties') is+-- allowed or not. Overallocation may lead to performance loss and is not+-- supported for all platforms.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'DeviceMemoryOverallocationCreateInfoAMD'+--+-- == New Enums+--+-- -   'MemoryOverallocationBehaviorAMD'+--+-- == New Enum Constants+--+-- -   'AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME'+--+-- -   'AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD'+--+-- == Version History+--+-- -   Revision 1, 2018-09-19 (Martin Dinkov)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'DeviceMemoryOverallocationCreateInfoAMD',+-- 'MemoryOverallocationBehaviorAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_memory_overallocation_behavior Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_memory_overallocation_behavior  (DeviceMemoryOverallocationCreateInfoAMD) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_AMD_mixed_attachment_samples.hs view
@@ -1,4 +1,83 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_mixed_attachment_samples - device extension+--+-- == VK_AMD_mixed_attachment_samples+--+-- [__Name String__]+--     @VK_AMD_mixed_attachment_samples@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     137+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Matthaeus G. Chajdas+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_mixed_attachment_samples:%20&body=@anteru%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-07-24+--+-- [__Contributors__]+--+--     -   Mais Alnasser, AMD+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Maciej Jesionowski, AMD+--+--     -   Daniel Rakos, AMD+--+-- == Description+--+-- This extension enables applications to use multisampled rendering with a+-- depth\/stencil sample count that is larger than the color sample count.+-- Having a depth\/stencil sample count larger than the color sample count+-- allows maintaining geometry and coverage information at a higher sample+-- rate than color information. All samples are depth\/stencil tested, but+-- only the first color sample count number of samples get a corresponding+-- color output.+--+-- == New Enum Constants+--+-- -   'AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME'+--+-- -   'AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION'+--+-- == Issues+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2017-07-24 (Daniel Rakos)+--+--     -   Internal revisions+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_mixed_attachment_samples  ( AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION                                                           , pattern AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION                                                           , AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME
src/Vulkan/Extensions/VK_AMD_negative_viewport_height.hs view
@@ -1,4 +1,97 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_negative_viewport_height - device extension+--+-- == VK_AMD_negative_viewport_height+--+-- [__Name String__]+--     @VK_AMD_negative_viewport_height@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     36+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Obsoleted/ by @VK_KHR_maintenance1@ extension+--+--         -   Which in turn was /promoted/ to+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Matthaeus G. Chajdas+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_negative_viewport_height:%20&body=@anteru%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-09-02+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Baldur Karlsson+--+-- == Description+--+-- This extension allows an application to specify a negative viewport+-- height. The result is that the viewport transformation will flip along+-- the y-axis.+--+-- -   Allow negative height to be specified in the+--     'Vulkan.Core10.Pipeline.Viewport'::@height@ field to perform+--     y-inversion of the clip-space to framebuffer-space transform. This+--     allows apps to avoid having to use @gl_Position.y = -gl_Position.y@+--     in shaders also targeting other APIs.+--+-- == Obsoletion by @VK_KHR_maintenance1@ and Vulkan 1.1+--+-- Functionality in this extension is included in @VK_KHR_maintenance1@ and+-- subsequently Vulkan 1.1. Due to some slight behavioral differences, this+-- extension /must/ not be enabled alongside @VK_KHR_maintenance1@, or in+-- an instance created with version 1.1 or later requested in+-- 'Vulkan.Core10.DeviceInitialization.ApplicationInfo'::@apiVersion@.+--+-- == New Enum Constants+--+-- -   'AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME'+--+-- -   'AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 1, 2016-09-02 (Matthaeus Chajdas)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_negative_viewport_height Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_negative_viewport_height  ( AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION                                                           , pattern AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION                                                           , AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME
src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs view
@@ -1,25 +1,122 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_pipeline_compiler_control - device extension+--+-- == VK_AMD_pipeline_compiler_control+--+-- [__Name String__]+--     @VK_AMD_pipeline_compiler_control@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     184+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Matthaeus G. Chajdas+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_pipeline_compiler_control:%20&body=@anteru%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-07-26+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Maciej Jesionowski, AMD+--+--     -   Tobias Hector, AMD+--+-- == Description+--+-- This extension introduces 'PipelineCompilerControlCreateInfoAMD'+-- structure that can be chained to a pipeline’s create info to specify+-- additional flags that affect pipeline compilation.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',+--     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo':+--+--     -   'PipelineCompilerControlCreateInfoAMD'+--+-- == New Enums+--+-- -   'PipelineCompilerControlFlagBitsAMD'+--+-- == New Bitmasks+--+-- -   'PipelineCompilerControlFlagsAMD'+--+-- == New Enum Constants+--+-- -   'AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME'+--+-- -   'AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD'+--+-- == Issues+--+-- None.+--+-- == Examples+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2019-07-26 (Tobias Hector)+--+--     -   Initial revision.+--+-- = See Also+--+-- 'PipelineCompilerControlCreateInfoAMD',+-- 'PipelineCompilerControlFlagBitsAMD', 'PipelineCompilerControlFlagsAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_pipeline_compiler_control Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_pipeline_compiler_control  ( PipelineCompilerControlCreateInfoAMD(..)-                                                           , PipelineCompilerControlFlagBitsAMD(..)                                                            , PipelineCompilerControlFlagsAMD+                                                           , PipelineCompilerControlFlagBitsAMD(..)                                                            , AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION                                                            , pattern AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION                                                            , AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME                                                            , pattern AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME                                                            ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Data.String (IsString)@@ -31,7 +128,7 @@ import GHC.Generics (Generic) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.CStruct (FromCStruct)@@ -96,6 +193,8 @@            zero  +type PipelineCompilerControlFlagsAMD = PipelineCompilerControlFlagBitsAMD+ -- | VkPipelineCompilerControlFlagBitsAMD - Enum specifying available -- compilation control flags --@@ -107,19 +206,27 @@   -type PipelineCompilerControlFlagsAMD = PipelineCompilerControlFlagBitsAMD+conNamePipelineCompilerControlFlagBitsAMD :: String+conNamePipelineCompilerControlFlagBitsAMD = "PipelineCompilerControlFlagBitsAMD" +enumPrefixPipelineCompilerControlFlagBitsAMD :: String+enumPrefixPipelineCompilerControlFlagBitsAMD = ""++showTablePipelineCompilerControlFlagBitsAMD :: [(PipelineCompilerControlFlagBitsAMD, String)]+showTablePipelineCompilerControlFlagBitsAMD = []+ instance Show PipelineCompilerControlFlagBitsAMD where-  showsPrec p = \case-    PipelineCompilerControlFlagBitsAMD x -> showParen (p >= 11) (showString "PipelineCompilerControlFlagBitsAMD 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineCompilerControlFlagBitsAMD+                            showTablePipelineCompilerControlFlagBitsAMD+                            conNamePipelineCompilerControlFlagBitsAMD+                            (\(PipelineCompilerControlFlagBitsAMD x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineCompilerControlFlagBitsAMD where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineCompilerControlFlagBitsAMD")-                       v <- step readPrec-                       pure (PipelineCompilerControlFlagBitsAMD v)))+  readPrec = enumReadPrec enumPrefixPipelineCompilerControlFlagBitsAMD+                          showTablePipelineCompilerControlFlagBitsAMD+                          conNamePipelineCompilerControlFlagBitsAMD+                          PipelineCompilerControlFlagBitsAMD   type AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs-boot view
@@ -1,4 +1,106 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_pipeline_compiler_control - device extension+--+-- == VK_AMD_pipeline_compiler_control+--+-- [__Name String__]+--     @VK_AMD_pipeline_compiler_control@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     184+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Matthaeus G. Chajdas+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_pipeline_compiler_control:%20&body=@anteru%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-07-26+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Maciej Jesionowski, AMD+--+--     -   Tobias Hector, AMD+--+-- == Description+--+-- This extension introduces 'PipelineCompilerControlCreateInfoAMD'+-- structure that can be chained to a pipeline’s create info to specify+-- additional flags that affect pipeline compilation.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',+--     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo':+--+--     -   'PipelineCompilerControlCreateInfoAMD'+--+-- == New Enums+--+-- -   'PipelineCompilerControlFlagBitsAMD'+--+-- == New Bitmasks+--+-- -   'PipelineCompilerControlFlagsAMD'+--+-- == New Enum Constants+--+-- -   'AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME'+--+-- -   'AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD'+--+-- == Issues+--+-- None.+--+-- == Examples+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2019-07-26 (Tobias Hector)+--+--     -   Initial revision.+--+-- = See Also+--+-- 'PipelineCompilerControlCreateInfoAMD',+-- 'PipelineCompilerControlFlagBitsAMD', 'PipelineCompilerControlFlagsAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_pipeline_compiler_control Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_pipeline_compiler_control  (PipelineCompilerControlCreateInfoAMD) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_AMD_rasterization_order.hs view
@@ -1,4 +1,169 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_rasterization_order - device extension+--+-- == VK_AMD_rasterization_order+--+-- [__Name String__]+--     @VK_AMD_rasterization_order@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     19+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Daniel Rakos+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_rasterization_order:%20&body=@drakos-amd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-04-25+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Jaakko Konttinen, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Dominik Witczak, AMD+--+-- == Description+--+-- This extension introduces the possibility for the application to control+-- the order of primitive rasterization. In unextended Vulkan, the+-- following stages are guaranteed to execute in /API order/:+--+-- -   depth bounds test+--+-- -   stencil test, stencil op, and stencil write+--+-- -   depth test and depth write+--+-- -   occlusion queries+--+-- -   blending, logic op, and color write+--+-- This extension enables applications to opt into a relaxed,+-- implementation defined primitive rasterization order that may allow+-- better parallel processing of primitives and thus enabling higher+-- primitive throughput. It is applicable in cases where the primitive+-- rasterization order is known to not affect the output of the rendering+-- or any differences caused by a different rasterization order are not a+-- concern from the point of view of the application’s purpose.+--+-- A few examples of cases when using the relaxed primitive rasterization+-- order would not have an effect on the final rendering:+--+-- -   If the primitives rendered are known to not overlap in framebuffer+--     space.+--+-- -   If depth testing is used with a comparison operator of+--     'Vulkan.Core10.Enums.CompareOp.COMPARE_OP_LESS',+--     'Vulkan.Core10.Enums.CompareOp.COMPARE_OP_LESS_OR_EQUAL',+--     'Vulkan.Core10.Enums.CompareOp.COMPARE_OP_GREATER', or+--     'Vulkan.Core10.Enums.CompareOp.COMPARE_OP_GREATER_OR_EQUAL', and the+--     primitives rendered are known to not overlap in clip space.+--+-- -   If depth testing is not used and blending is enabled for all+--     attachments with a commutative blend operator.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':+--+--     -   'PipelineRasterizationStateRasterizationOrderAMD'+--+-- == New Enums+--+-- -   'RasterizationOrderAMD'+--+-- == New Enum Constants+--+-- -   'AMD_RASTERIZATION_ORDER_EXTENSION_NAME'+--+-- -   'AMD_RASTERIZATION_ORDER_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD'+--+-- == Issues+--+-- 1) How is this extension useful to application developers?+--+-- __RESOLVED__: Allows them to increase primitive throughput for cases+-- when strict API order rasterization is not important due to the nature+-- of the content, the configuration used, or the requirements towards the+-- output of the rendering.+--+-- 2) How does this extension interact with content optimizations aiming to+-- reduce overdraw by appropriately ordering the input primitives?+--+-- __RESOLVED__: While the relaxed rasterization order might somewhat limit+-- the effectiveness of such content optimizations, most of the benefits of+-- it are expected to be retained even when the relaxed rasterization order+-- is used, so applications /should/ still apply these optimizations even+-- if they intend to use the extension.+--+-- 3) Are there any guarantees about the primitive rasterization order when+-- using the new relaxed mode?+--+-- __RESOLVED__: No. In this case the rasterization order is completely+-- implementation dependent, but in practice it is expected to partially+-- still follow the order of incoming primitives.+--+-- 4) Does the new relaxed rasterization order have any adverse effect on+-- repeatability and other invariance rules of the API?+--+-- __RESOLVED__: Yes, in the sense that it extends the list of exceptions+-- when the repeatability requirement does not apply.+--+-- == Examples+--+-- None+--+-- == Issues+--+-- None+--+-- == Version History+--+-- -   Revision 1, 2016-04-25 (Daniel Rakos)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'PipelineRasterizationStateRasterizationOrderAMD',+-- 'RasterizationOrderAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_rasterization_order Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_rasterization_order  ( PipelineRasterizationStateRasterizationOrderAMD(..)                                                      , RasterizationOrderAMD( RASTERIZATION_ORDER_STRICT_AMD                                                                             , RASTERIZATION_ORDER_RELAXED_AMD@@ -10,18 +175,12 @@                                                      , pattern AMD_RASTERIZATION_ORDER_EXTENSION_NAME                                                      ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.String (IsString) import Data.Typeable (Typeable) import Foreign.Storable (Storable)@@ -32,7 +191,7 @@ import Data.Int (Int32) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Vulkan.CStruct (FromCStruct) import Vulkan.CStruct (FromCStruct(..))@@ -114,7 +273,7 @@ -- | 'RASTERIZATION_ORDER_STRICT_AMD' specifies that operations for each -- primitive in a subpass /must/ occur in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-order primitive order>.-pattern RASTERIZATION_ORDER_STRICT_AMD = RasterizationOrderAMD 0+pattern RASTERIZATION_ORDER_STRICT_AMD  = RasterizationOrderAMD 0 -- | 'RASTERIZATION_ORDER_RELAXED_AMD' specifies that operations for each -- primitive in a subpass /may/ not occur in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-order primitive order>.@@ -122,20 +281,28 @@ {-# complete RASTERIZATION_ORDER_STRICT_AMD,              RASTERIZATION_ORDER_RELAXED_AMD :: RasterizationOrderAMD #-} +conNameRasterizationOrderAMD :: String+conNameRasterizationOrderAMD = "RasterizationOrderAMD"++enumPrefixRasterizationOrderAMD :: String+enumPrefixRasterizationOrderAMD = "RASTERIZATION_ORDER_"++showTableRasterizationOrderAMD :: [(RasterizationOrderAMD, String)]+showTableRasterizationOrderAMD =+  [(RASTERIZATION_ORDER_STRICT_AMD, "STRICT_AMD"), (RASTERIZATION_ORDER_RELAXED_AMD, "RELAXED_AMD")]+ instance Show RasterizationOrderAMD where-  showsPrec p = \case-    RASTERIZATION_ORDER_STRICT_AMD -> showString "RASTERIZATION_ORDER_STRICT_AMD"-    RASTERIZATION_ORDER_RELAXED_AMD -> showString "RASTERIZATION_ORDER_RELAXED_AMD"-    RasterizationOrderAMD x -> showParen (p >= 11) (showString "RasterizationOrderAMD " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixRasterizationOrderAMD+                            showTableRasterizationOrderAMD+                            conNameRasterizationOrderAMD+                            (\(RasterizationOrderAMD x) -> x)+                            (showsPrec 11)  instance Read RasterizationOrderAMD where-  readPrec = parens (choose [("RASTERIZATION_ORDER_STRICT_AMD", pure RASTERIZATION_ORDER_STRICT_AMD)-                            , ("RASTERIZATION_ORDER_RELAXED_AMD", pure RASTERIZATION_ORDER_RELAXED_AMD)]-                     +++-                     prec 10 (do-                       expectP (Ident "RasterizationOrderAMD")-                       v <- step readPrec-                       pure (RasterizationOrderAMD v)))+  readPrec = enumReadPrec enumPrefixRasterizationOrderAMD+                          showTableRasterizationOrderAMD+                          conNameRasterizationOrderAMD+                          RasterizationOrderAMD   type AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_AMD_rasterization_order.hs-boot view
@@ -1,4 +1,169 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_rasterization_order - device extension+--+-- == VK_AMD_rasterization_order+--+-- [__Name String__]+--     @VK_AMD_rasterization_order@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     19+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Daniel Rakos+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_rasterization_order:%20&body=@drakos-amd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-04-25+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Jaakko Konttinen, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Dominik Witczak, AMD+--+-- == Description+--+-- This extension introduces the possibility for the application to control+-- the order of primitive rasterization. In unextended Vulkan, the+-- following stages are guaranteed to execute in /API order/:+--+-- -   depth bounds test+--+-- -   stencil test, stencil op, and stencil write+--+-- -   depth test and depth write+--+-- -   occlusion queries+--+-- -   blending, logic op, and color write+--+-- This extension enables applications to opt into a relaxed,+-- implementation defined primitive rasterization order that may allow+-- better parallel processing of primitives and thus enabling higher+-- primitive throughput. It is applicable in cases where the primitive+-- rasterization order is known to not affect the output of the rendering+-- or any differences caused by a different rasterization order are not a+-- concern from the point of view of the application’s purpose.+--+-- A few examples of cases when using the relaxed primitive rasterization+-- order would not have an effect on the final rendering:+--+-- -   If the primitives rendered are known to not overlap in framebuffer+--     space.+--+-- -   If depth testing is used with a comparison operator of+--     'Vulkan.Core10.Enums.CompareOp.COMPARE_OP_LESS',+--     'Vulkan.Core10.Enums.CompareOp.COMPARE_OP_LESS_OR_EQUAL',+--     'Vulkan.Core10.Enums.CompareOp.COMPARE_OP_GREATER', or+--     'Vulkan.Core10.Enums.CompareOp.COMPARE_OP_GREATER_OR_EQUAL', and the+--     primitives rendered are known to not overlap in clip space.+--+-- -   If depth testing is not used and blending is enabled for all+--     attachments with a commutative blend operator.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':+--+--     -   'PipelineRasterizationStateRasterizationOrderAMD'+--+-- == New Enums+--+-- -   'RasterizationOrderAMD'+--+-- == New Enum Constants+--+-- -   'AMD_RASTERIZATION_ORDER_EXTENSION_NAME'+--+-- -   'AMD_RASTERIZATION_ORDER_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD'+--+-- == Issues+--+-- 1) How is this extension useful to application developers?+--+-- __RESOLVED__: Allows them to increase primitive throughput for cases+-- when strict API order rasterization is not important due to the nature+-- of the content, the configuration used, or the requirements towards the+-- output of the rendering.+--+-- 2) How does this extension interact with content optimizations aiming to+-- reduce overdraw by appropriately ordering the input primitives?+--+-- __RESOLVED__: While the relaxed rasterization order might somewhat limit+-- the effectiveness of such content optimizations, most of the benefits of+-- it are expected to be retained even when the relaxed rasterization order+-- is used, so applications /should/ still apply these optimizations even+-- if they intend to use the extension.+--+-- 3) Are there any guarantees about the primitive rasterization order when+-- using the new relaxed mode?+--+-- __RESOLVED__: No. In this case the rasterization order is completely+-- implementation dependent, but in practice it is expected to partially+-- still follow the order of incoming primitives.+--+-- 4) Does the new relaxed rasterization order have any adverse effect on+-- repeatability and other invariance rules of the API?+--+-- __RESOLVED__: Yes, in the sense that it extends the list of exceptions+-- when the repeatability requirement does not apply.+--+-- == Examples+--+-- None+--+-- == Issues+--+-- None+--+-- == Version History+--+-- -   Revision 1, 2016-04-25 (Daniel Rakos)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'PipelineRasterizationStateRasterizationOrderAMD',+-- 'RasterizationOrderAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_rasterization_order Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_rasterization_order  (PipelineRasterizationStateRasterizationOrderAMD) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_AMD_shader_ballot.hs view
@@ -1,4 +1,88 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_shader_ballot - device extension+--+-- == VK_AMD_shader_ballot+--+-- [__Name String__]+--     @VK_AMD_shader_ballot@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     38+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Dominik Witczak+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_shader_ballot:%20&body=@dominikwitczakamd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-09-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_shader_ballot.html SPV_AMD_shader_ballot>+--+-- [__Contributors__]+--+--     -   Qun Lin, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Rex Xu, AMD+--+--     -   Dominik Witczak, AMD+--+--     -   Matthäus G. Chajdas, AMD+--+-- == Description+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_shader_ballot.html SPV_AMD_shader_ballot>+--+-- == New Enum Constants+--+-- -   'AMD_SHADER_BALLOT_EXTENSION_NAME'+--+-- -   'AMD_SHADER_BALLOT_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 1, 2016-09-19 (Dominik Witczak)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_ballot Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_shader_ballot  ( AMD_SHADER_BALLOT_SPEC_VERSION                                                , pattern AMD_SHADER_BALLOT_SPEC_VERSION                                                , AMD_SHADER_BALLOT_EXTENSION_NAME
src/Vulkan/Extensions/VK_AMD_shader_core_properties.hs view
@@ -1,4 +1,156 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_shader_core_properties - device extension+--+-- == VK_AMD_shader_core_properties+--+-- [__Name String__]+--     @VK_AMD_shader_core_properties@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     186+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Martin Dinkov+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_shader_core_properties:%20&body=@mdinkov%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-06-25+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Martin Dinkov, AMD+--+--     -   Matthaeus G. Chajdas, AMD+--+-- == Description+--+-- This extension exposes shader core properties for a target physical+-- device through the @VK_KHR_get_physical_device_properties2@ extension.+-- Please refer to the example below for proper usage.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceShaderCorePropertiesAMD'+--+-- == New Enum Constants+--+-- -   'AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME'+--+-- -   'AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD'+--+-- == Examples+--+-- This example retrieves the shader core properties for a physical device.+--+-- > extern VkInstance       instance;+-- >+-- > PFN_vkGetPhysicalDeviceProperties2 pfnVkGetPhysicalDeviceProperties2 =+-- >     reinterpret_cast<PFN_vkGetPhysicalDeviceProperties2>+-- >     (vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties2") );+-- >+-- > VkPhysicalDeviceProperties2             general_props;+-- > VkPhysicalDeviceShaderCorePropertiesAMD shader_core_properties;+-- >+-- > shader_core_properties.pNext = nullptr;+-- > shader_core_properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD;+-- >+-- > general_props.pNext = &shader_core_properties;+-- > general_props.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;+-- >+-- > // After this call, shader_core_properties has been populated+-- > pfnVkGetPhysicalDeviceProperties2(device, &general_props);+-- >+-- > printf("Number of shader engines: %d\n",+-- >     m_shader_core_properties.shader_engine_count =+-- >     shader_core_properties.shaderEngineCount;+-- > printf("Number of shader arrays: %d\n",+-- >     m_shader_core_properties.shader_arrays_per_engine_count =+-- >     shader_core_properties.shaderArraysPerEngineCount;+-- > printf("Number of CUs per shader array: %d\n",+-- >     m_shader_core_properties.compute_units_per_shader_array =+-- >     shader_core_properties.computeUnitsPerShaderArray;+-- > printf("Number of SIMDs per compute unit: %d\n",+-- >     m_shader_core_properties.simd_per_compute_unit =+-- >     shader_core_properties.simdPerComputeUnit;+-- > printf("Number of wavefront slots in each SIMD: %d\n",+-- >     m_shader_core_properties.wavefronts_per_simd =+-- >     shader_core_properties.wavefrontsPerSimd;+-- > printf("Number of threads per wavefront: %d\n",+-- >     m_shader_core_properties.wavefront_size =+-- >     shader_core_properties.wavefrontSize;+-- > printf("Number of physical SGPRs per SIMD: %d\n",+-- >     m_shader_core_properties.sgprs_per_simd =+-- >     shader_core_properties.sgprsPerSimd;+-- > printf("Minimum number of SGPRs that can be allocated by a wave: %d\n",+-- >     m_shader_core_properties.min_sgpr_allocation =+-- >     shader_core_properties.minSgprAllocation;+-- > printf("Number of available SGPRs: %d\n",+-- >     m_shader_core_properties.max_sgpr_allocation =+-- >     shader_core_properties.maxSgprAllocation;+-- > printf("SGPRs are allocated in groups of this size: %d\n",+-- >     m_shader_core_properties.sgpr_allocation_granularity =+-- >     shader_core_properties.sgprAllocationGranularity;+-- > printf("Number of physical VGPRs per SIMD: %d\n",+-- >     m_shader_core_properties.vgprs_per_simd =+-- >     shader_core_properties.vgprsPerSimd;+-- > printf("Minimum number of VGPRs that can be allocated by a wave: %d\n",+-- >     m_shader_core_properties.min_vgpr_allocation =+-- >     shader_core_properties.minVgprAllocation;+-- > printf("Number of available VGPRs: %d\n",+-- >     m_shader_core_properties.max_vgpr_allocation =+-- >     shader_core_properties.maxVgprAllocation;+-- > printf("VGPRs are allocated in groups of this size: %d\n",+-- >     m_shader_core_properties.vgpr_allocation_granularity =+-- >     shader_core_properties.vgprAllocationGranularity;+--+-- == Version History+--+-- -   Revision 2, 2019-06-25 (Matthaeus G. Chajdas)+--+--     -   Clarified the meaning of a few fields.+--+-- -   Revision 1, 2018-02-15 (Martin Dinkov)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'PhysicalDeviceShaderCorePropertiesAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_core_properties Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_shader_core_properties  ( PhysicalDeviceShaderCorePropertiesAMD(..)                                                         , AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION                                                         , pattern AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION
src/Vulkan/Extensions/VK_AMD_shader_core_properties.hs-boot view
@@ -1,4 +1,156 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_shader_core_properties - device extension+--+-- == VK_AMD_shader_core_properties+--+-- [__Name String__]+--     @VK_AMD_shader_core_properties@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     186+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Martin Dinkov+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_shader_core_properties:%20&body=@mdinkov%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-06-25+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Martin Dinkov, AMD+--+--     -   Matthaeus G. Chajdas, AMD+--+-- == Description+--+-- This extension exposes shader core properties for a target physical+-- device through the @VK_KHR_get_physical_device_properties2@ extension.+-- Please refer to the example below for proper usage.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceShaderCorePropertiesAMD'+--+-- == New Enum Constants+--+-- -   'AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME'+--+-- -   'AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD'+--+-- == Examples+--+-- This example retrieves the shader core properties for a physical device.+--+-- > extern VkInstance       instance;+-- >+-- > PFN_vkGetPhysicalDeviceProperties2 pfnVkGetPhysicalDeviceProperties2 =+-- >     reinterpret_cast<PFN_vkGetPhysicalDeviceProperties2>+-- >     (vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties2") );+-- >+-- > VkPhysicalDeviceProperties2             general_props;+-- > VkPhysicalDeviceShaderCorePropertiesAMD shader_core_properties;+-- >+-- > shader_core_properties.pNext = nullptr;+-- > shader_core_properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD;+-- >+-- > general_props.pNext = &shader_core_properties;+-- > general_props.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;+-- >+-- > // After this call, shader_core_properties has been populated+-- > pfnVkGetPhysicalDeviceProperties2(device, &general_props);+-- >+-- > printf("Number of shader engines: %d\n",+-- >     m_shader_core_properties.shader_engine_count =+-- >     shader_core_properties.shaderEngineCount;+-- > printf("Number of shader arrays: %d\n",+-- >     m_shader_core_properties.shader_arrays_per_engine_count =+-- >     shader_core_properties.shaderArraysPerEngineCount;+-- > printf("Number of CUs per shader array: %d\n",+-- >     m_shader_core_properties.compute_units_per_shader_array =+-- >     shader_core_properties.computeUnitsPerShaderArray;+-- > printf("Number of SIMDs per compute unit: %d\n",+-- >     m_shader_core_properties.simd_per_compute_unit =+-- >     shader_core_properties.simdPerComputeUnit;+-- > printf("Number of wavefront slots in each SIMD: %d\n",+-- >     m_shader_core_properties.wavefronts_per_simd =+-- >     shader_core_properties.wavefrontsPerSimd;+-- > printf("Number of threads per wavefront: %d\n",+-- >     m_shader_core_properties.wavefront_size =+-- >     shader_core_properties.wavefrontSize;+-- > printf("Number of physical SGPRs per SIMD: %d\n",+-- >     m_shader_core_properties.sgprs_per_simd =+-- >     shader_core_properties.sgprsPerSimd;+-- > printf("Minimum number of SGPRs that can be allocated by a wave: %d\n",+-- >     m_shader_core_properties.min_sgpr_allocation =+-- >     shader_core_properties.minSgprAllocation;+-- > printf("Number of available SGPRs: %d\n",+-- >     m_shader_core_properties.max_sgpr_allocation =+-- >     shader_core_properties.maxSgprAllocation;+-- > printf("SGPRs are allocated in groups of this size: %d\n",+-- >     m_shader_core_properties.sgpr_allocation_granularity =+-- >     shader_core_properties.sgprAllocationGranularity;+-- > printf("Number of physical VGPRs per SIMD: %d\n",+-- >     m_shader_core_properties.vgprs_per_simd =+-- >     shader_core_properties.vgprsPerSimd;+-- > printf("Minimum number of VGPRs that can be allocated by a wave: %d\n",+-- >     m_shader_core_properties.min_vgpr_allocation =+-- >     shader_core_properties.minVgprAllocation;+-- > printf("Number of available VGPRs: %d\n",+-- >     m_shader_core_properties.max_vgpr_allocation =+-- >     shader_core_properties.maxVgprAllocation;+-- > printf("VGPRs are allocated in groups of this size: %d\n",+-- >     m_shader_core_properties.vgpr_allocation_granularity =+-- >     shader_core_properties.vgprAllocationGranularity;+--+-- == Version History+--+-- -   Revision 2, 2019-06-25 (Matthaeus G. Chajdas)+--+--     -   Clarified the meaning of a few fields.+--+-- -   Revision 1, 2018-02-15 (Martin Dinkov)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'PhysicalDeviceShaderCorePropertiesAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_core_properties Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_shader_core_properties  (PhysicalDeviceShaderCorePropertiesAMD) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs view
@@ -1,25 +1,116 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_shader_core_properties2 - device extension+--+-- == VK_AMD_shader_core_properties2+--+-- [__Name String__]+--     @VK_AMD_shader_core_properties2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     228+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_AMD_shader_core_properties@+--+-- [__Contact__]+--+--     -   Matthaeus G. Chajdas+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_shader_core_properties2:%20&body=@anteru%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-07-26+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Tobias Hector, AMD+--+-- == Description+--+-- This extension exposes additional shader core properties for a target+-- physical device through the @VK_KHR_get_physical_device_properties2@+-- extension.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceShaderCoreProperties2AMD'+--+-- == New Enums+--+-- -   'ShaderCorePropertiesFlagBitsAMD'+--+-- == New Bitmasks+--+-- -   'ShaderCorePropertiesFlagsAMD'+--+-- == New Enum Constants+--+-- -   'AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME'+--+-- -   'AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD'+--+-- == Examples+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2019-07-26 (Matthaeus G. Chajdas)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'PhysicalDeviceShaderCoreProperties2AMD',+-- 'ShaderCorePropertiesFlagBitsAMD', 'ShaderCorePropertiesFlagsAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_core_properties2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_shader_core_properties2  ( PhysicalDeviceShaderCoreProperties2AMD(..)-                                                         , ShaderCorePropertiesFlagBitsAMD(..)                                                          , ShaderCorePropertiesFlagsAMD+                                                         , ShaderCorePropertiesFlagBitsAMD(..)                                                          , AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION                                                          , pattern AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION                                                          , AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME                                                          , pattern AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME                                                          ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Data.String (IsString)@@ -31,8 +122,8 @@ import GHC.Generics (Generic) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.CStruct (FromCStruct)@@ -116,6 +207,8 @@            zero  +type ShaderCorePropertiesFlagsAMD = ShaderCorePropertiesFlagBitsAMD+ -- | VkShaderCorePropertiesFlagBitsAMD - Bitmask specifying shader core -- properties --@@ -127,19 +220,27 @@   -type ShaderCorePropertiesFlagsAMD = ShaderCorePropertiesFlagBitsAMD+conNameShaderCorePropertiesFlagBitsAMD :: String+conNameShaderCorePropertiesFlagBitsAMD = "ShaderCorePropertiesFlagBitsAMD" +enumPrefixShaderCorePropertiesFlagBitsAMD :: String+enumPrefixShaderCorePropertiesFlagBitsAMD = ""++showTableShaderCorePropertiesFlagBitsAMD :: [(ShaderCorePropertiesFlagBitsAMD, String)]+showTableShaderCorePropertiesFlagBitsAMD = []+ instance Show ShaderCorePropertiesFlagBitsAMD where-  showsPrec p = \case-    ShaderCorePropertiesFlagBitsAMD x -> showParen (p >= 11) (showString "ShaderCorePropertiesFlagBitsAMD 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixShaderCorePropertiesFlagBitsAMD+                            showTableShaderCorePropertiesFlagBitsAMD+                            conNameShaderCorePropertiesFlagBitsAMD+                            (\(ShaderCorePropertiesFlagBitsAMD x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ShaderCorePropertiesFlagBitsAMD where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "ShaderCorePropertiesFlagBitsAMD")-                       v <- step readPrec-                       pure (ShaderCorePropertiesFlagBitsAMD v)))+  readPrec = enumReadPrec enumPrefixShaderCorePropertiesFlagBitsAMD+                          showTableShaderCorePropertiesFlagBitsAMD+                          conNameShaderCorePropertiesFlagBitsAMD+                          ShaderCorePropertiesFlagBitsAMD   type AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs-boot view
@@ -1,4 +1,100 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_shader_core_properties2 - device extension+--+-- == VK_AMD_shader_core_properties2+--+-- [__Name String__]+--     @VK_AMD_shader_core_properties2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     228+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_AMD_shader_core_properties@+--+-- [__Contact__]+--+--     -   Matthaeus G. Chajdas+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_shader_core_properties2:%20&body=@anteru%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-07-26+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Tobias Hector, AMD+--+-- == Description+--+-- This extension exposes additional shader core properties for a target+-- physical device through the @VK_KHR_get_physical_device_properties2@+-- extension.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceShaderCoreProperties2AMD'+--+-- == New Enums+--+-- -   'ShaderCorePropertiesFlagBitsAMD'+--+-- == New Bitmasks+--+-- -   'ShaderCorePropertiesFlagsAMD'+--+-- == New Enum Constants+--+-- -   'AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME'+--+-- -   'AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD'+--+-- == Examples+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2019-07-26 (Matthaeus G. Chajdas)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'PhysicalDeviceShaderCoreProperties2AMD',+-- 'ShaderCorePropertiesFlagBitsAMD', 'ShaderCorePropertiesFlagsAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_core_properties2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_shader_core_properties2  (PhysicalDeviceShaderCoreProperties2AMD) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_AMD_shader_explicit_vertex_parameter.hs view
@@ -1,4 +1,86 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_shader_explicit_vertex_parameter - device extension+--+-- == VK_AMD_shader_explicit_vertex_parameter+--+-- [__Name String__]+--     @VK_AMD_shader_explicit_vertex_parameter@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     22+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Qun Lin+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_shader_explicit_vertex_parameter:%20&body=@linqun%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-05-10+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_shader_explicit_vertex_parameter.html SPV_AMD_shader_explicit_vertex_parameter>+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Qun Lin, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Rex Xu, AMD+--+-- == Description+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_shader_explicit_vertex_parameter.html SPV_AMD_shader_explicit_vertex_parameter>+--+-- == New Enum Constants+--+-- -   'AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME'+--+-- -   'AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 1, 2016-05-10 (Daniel Rakos)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_explicit_vertex_parameter Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter  ( AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION                                                                   , pattern AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION                                                                   , AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME
src/Vulkan/Extensions/VK_AMD_shader_fragment_mask.hs view
@@ -1,4 +1,132 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_shader_fragment_mask - device extension+--+-- == VK_AMD_shader_fragment_mask+--+-- [__Name String__]+--     @VK_AMD_shader_fragment_mask@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     138+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Aaron Hagan+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_shader_fragment_mask:%20&body=@AaronHaganAMD%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-08-16+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_shader_fragment_mask.html SPV_AMD_shader_fragment_mask>+--+-- [__Contributors__]+--+--     -   Aaron Hagan, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Timothy Lottes, AMD+--+-- == Description+--+-- This extension provides efficient read access to the fragment mask in+-- compressed multisampled color surfaces. The fragment mask is a lookup+-- table that associates color samples with color fragment values.+--+-- From a shader, the fragment mask can be fetched with a call to+-- @fragmentMaskFetchAMD@, which returns a single @uint@ where each+-- subsequent four bits specify the color fragment index corresponding to+-- the color sample, starting from the least significant bit. For example,+-- when eight color samples are used, the color fragment index for color+-- sample 0 will be in bits 0-3 of the fragment mask, for color sample 7+-- the index will be in bits 28-31.+--+-- The color fragment for a particular color sample may then be fetched+-- with the corresponding fragment mask value using the @fragmentFetchAMD@+-- shader function.+--+-- == New Enum Constants+--+-- -   'AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME'+--+-- -   'AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-fragmentmaskamd FragmentMaskAMD>+--+-- == Examples+--+-- This example shows a shader that queries the fragment mask from a+-- multisampled compressed surface and uses it to query fragment values.+--+-- > #version 450 core+-- >+-- > #extension GL_AMD_shader_fragment_mask: enable+-- >+-- > layout(binding = 0) uniform sampler2DMS       s2DMS;+-- > layout(binding = 1) uniform isampler2DMSArray is2DMSArray;+-- >+-- > layout(binding = 2, input_attachment_index = 0) uniform usubpassInputMS usubpassMS;+-- >+-- > layout(location = 0) out vec4 fragColor;+-- >+-- > void main()+-- > {+-- >     vec4 fragOne = vec4(0.0);+-- >+-- >     uint fragMask = fragmentMaskFetchAMD(s2DMS, ivec2(2, 3));+-- >     uint fragIndex = (fragMask & 0xF0) >> 4;+-- >     fragOne += fragmentFetchAMD(s2DMS, ivec2(2, 3), 1);+-- >+-- >     fragMask = fragmentMaskFetchAMD(is2DMSArray, ivec3(2, 3, 1));+-- >     fragIndex = (fragMask & 0xF0) >> 4;+-- >     fragOne += fragmentFetchAMD(is2DMSArray, ivec3(2, 3, 1), fragIndex);+-- >+-- >     fragMask = fragmentMaskFetchAMD(usubpassMS);+-- >     fragIndex = (fragMask & 0xF0) >> 4;+-- >     fragOne += fragmentFetchAMD(usubpassMS, fragIndex);+-- >+-- >     fragColor = fragOne;+-- > }+--+-- == Version History+--+-- -   Revision 1, 2017-08-16 (Aaron Hagan)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_fragment_mask Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_shader_fragment_mask  ( AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION                                                       , pattern AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION                                                       , AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME
src/Vulkan/Extensions/VK_AMD_shader_image_load_store_lod.hs view
@@ -1,4 +1,85 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_shader_image_load_store_lod - device extension+--+-- == VK_AMD_shader_image_load_store_lod+--+-- [__Name String__]+--     @VK_AMD_shader_image_load_store_lod@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     47+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Dominik Witczak+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_shader_image_load_store_lod:%20&body=@dominikwitczakamd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-08-21+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_shader_image_load_store_lod.html SPV_AMD_shader_image_load_store_lod>+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_image_load_store_lod.txt GL_AMD_shader_image_load_store_lod>+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Dominik Witczak, AMD+--+--     -   Qun Lin, AMD+--+--     -   Rex Xu, AMD+--+-- == Description+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_shader_image_load_store_lod.html SPV_AMD_shader_image_load_store_lod>+--+-- == New Enum Constants+--+-- -   'AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME'+--+-- -   'AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 1, 2017-08-21 (Dominik Witczak)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_image_load_store_lod Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_shader_image_load_store_lod  ( AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION                                                              , pattern AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION                                                              , AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME
src/Vulkan/Extensions/VK_AMD_shader_info.hs view
@@ -1,4 +1,157 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_shader_info - device extension+--+-- == VK_AMD_shader_info+--+-- [__Name String__]+--     @VK_AMD_shader_info@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     43+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>+--+-- [__Contact__]+--+--     -   Jaakko Konttinen+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_shader_info:%20&body=@jaakkoamd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-10-09+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jaakko Konttinen, AMD+--+-- == Description+--+-- This extension adds a way to query certain information about a compiled+-- shader which is part of a pipeline. This information may include shader+-- disassembly, shader binary and various statistics about a shader’s+-- resource usage.+--+-- While this extension provides a mechanism for extracting this+-- information, the details regarding the contents or format of this+-- information are not specified by this extension and may be provided by+-- the vendor externally.+--+-- Furthermore, all information types are optionally supported, and users+-- should not assume every implementation supports querying every type of+-- information.+--+-- == New Commands+--+-- -   'getShaderInfoAMD'+--+-- == New Structures+--+-- -   'ShaderResourceUsageAMD'+--+-- -   'ShaderStatisticsInfoAMD'+--+-- == New Enums+--+-- -   'ShaderInfoTypeAMD'+--+-- == New Enum Constants+--+-- -   'AMD_SHADER_INFO_EXTENSION_NAME'+--+-- -   'AMD_SHADER_INFO_SPEC_VERSION'+--+-- == Examples+--+-- This example extracts the register usage of a fragment shader within a+-- particular graphics pipeline:+--+-- > extern VkDevice device;+-- > extern VkPipeline gfxPipeline;+-- >+-- > PFN_vkGetShaderInfoAMD pfnGetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)vkGetDeviceProcAddr(+-- >     device, "vkGetShaderInfoAMD");+-- >+-- > VkShaderStatisticsInfoAMD statistics = {};+-- >+-- > size_t dataSize = sizeof(statistics);+-- >+-- > if (pfnGetShaderInfoAMD(device,+-- >     gfxPipeline,+-- >     VK_SHADER_STAGE_FRAGMENT_BIT,+-- >     VK_SHADER_INFO_TYPE_STATISTICS_AMD,+-- >     &dataSize,+-- >     &statistics) == VK_SUCCESS)+-- > {+-- >     printf("VGPR usage: %d\n", statistics.resourceUsage.numUsedVgprs);+-- >     printf("SGPR usage: %d\n", statistics.resourceUsage.numUsedSgprs);+-- > }+--+-- The following example continues the previous example by subsequently+-- attempting to query and print shader disassembly about the fragment+-- shader:+--+-- > // Query disassembly size (if available)+-- > if (pfnGetShaderInfoAMD(device,+-- >     gfxPipeline,+-- >     VK_SHADER_STAGE_FRAGMENT_BIT,+-- >     VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD,+-- >     &dataSize,+-- >     nullptr) == VK_SUCCESS)+-- > {+-- >     printf("Fragment shader disassembly:\n");+-- >+-- >     void* disassembly = malloc(dataSize);+-- >+-- >     // Query disassembly and print+-- >     if (pfnGetShaderInfoAMD(device,+-- >         gfxPipeline,+-- >         VK_SHADER_STAGE_FRAGMENT_BIT,+-- >         VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD,+-- >         &dataSize,+-- >         disassembly) == VK_SUCCESS)+-- >     {+-- >         printf((char*)disassembly);+-- >     }+-- >+-- >     free(disassembly);+-- > }+--+-- == Version History+--+-- -   Revision 1, 2017-10-09 (Jaakko Konttinen)+--+--     -   Initial revision+--+-- = See Also+--+-- 'ShaderInfoTypeAMD', 'ShaderResourceUsageAMD',+-- 'ShaderStatisticsInfoAMD', 'getShaderInfoAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_info Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_shader_info  ( getShaderInfoAMD                                              , ShaderResourceUsageAMD(..)                                              , ShaderStatisticsInfoAMD(..)@@ -14,6 +167,8 @@                                              ) where  import Vulkan.CStruct.Utils (FixedArray)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -26,15 +181,7 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.ByteString (packCStringLen) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT)@@ -56,9 +203,9 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32) import Data.Word (Word64)-import Text.Read.Lex (Lexeme(Ident)) import Data.ByteString (ByteString) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))@@ -331,36 +478,36 @@  instance ToCStruct ShaderStatisticsInfoAMD where   withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ShaderStatisticsInfoAMD{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr ShaderStageFlags)) (shaderStageMask)-    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr ShaderResourceUsageAMD)) (resourceUsage) . ($ ())-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (numPhysicalVgprs)-    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (numPhysicalSgprs)-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (numAvailableVgprs)-    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (numAvailableSgprs)+  pokeCStruct p ShaderStatisticsInfoAMD{..} f = do+    poke ((p `plusPtr` 0 :: Ptr ShaderStageFlags)) (shaderStageMask)+    poke ((p `plusPtr` 8 :: Ptr ShaderResourceUsageAMD)) (resourceUsage)+    poke ((p `plusPtr` 40 :: Ptr Word32)) (numPhysicalVgprs)+    poke ((p `plusPtr` 44 :: Ptr Word32)) (numPhysicalSgprs)+    poke ((p `plusPtr` 48 :: Ptr Word32)) (numAvailableVgprs)+    poke ((p `plusPtr` 52 :: Ptr Word32)) (numAvailableSgprs)     let pComputeWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (FixedArray 3 Word32)))-    lift $ case (computeWorkGroupSize) of+    case (computeWorkGroupSize) of       (e0, e1, e2) -> do         poke (pComputeWorkGroupSize' :: Ptr Word32) (e0)         poke (pComputeWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)         poke (pComputeWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)-    lift $ f+    f   cStructSize = 72   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr ShaderStageFlags)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr ShaderResourceUsageAMD)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr ShaderStageFlags)) (zero)+    poke ((p `plusPtr` 8 :: Ptr ShaderResourceUsageAMD)) (zero)+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)     let pComputeWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (FixedArray 3 Word32)))-    lift $ case ((zero, zero, zero)) of+    case ((zero, zero, zero)) of       (e0, e1, e2) -> do         poke (pComputeWorkGroupSize' :: Ptr Word32) (e0)         poke (pComputeWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)         poke (pComputeWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)-    lift $ f+    f  instance FromCStruct ShaderStatisticsInfoAMD where   peekCStruct p = do@@ -377,6 +524,12 @@     pure $ ShaderStatisticsInfoAMD              shaderStageMask resourceUsage numPhysicalVgprs numPhysicalSgprs numAvailableVgprs numAvailableSgprs ((computeWorkGroupSize0, computeWorkGroupSize1, computeWorkGroupSize2)) +instance Storable ShaderStatisticsInfoAMD where+  sizeOf ~_ = 72+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero ShaderStatisticsInfoAMD where   zero = ShaderStatisticsInfoAMD            zero@@ -398,10 +551,10 @@  -- | 'SHADER_INFO_TYPE_STATISTICS_AMD' specifies that device resources used -- by a shader will be queried.-pattern SHADER_INFO_TYPE_STATISTICS_AMD = ShaderInfoTypeAMD 0+pattern SHADER_INFO_TYPE_STATISTICS_AMD  = ShaderInfoTypeAMD 0 -- | 'SHADER_INFO_TYPE_BINARY_AMD' specifies that implementation-specific -- information will be queried.-pattern SHADER_INFO_TYPE_BINARY_AMD = ShaderInfoTypeAMD 1+pattern SHADER_INFO_TYPE_BINARY_AMD      = ShaderInfoTypeAMD 1 -- | 'SHADER_INFO_TYPE_DISASSEMBLY_AMD' specifies that human-readable -- dissassembly of a shader. pattern SHADER_INFO_TYPE_DISASSEMBLY_AMD = ShaderInfoTypeAMD 2@@ -409,22 +562,29 @@              SHADER_INFO_TYPE_BINARY_AMD,              SHADER_INFO_TYPE_DISASSEMBLY_AMD :: ShaderInfoTypeAMD #-} +conNameShaderInfoTypeAMD :: String+conNameShaderInfoTypeAMD = "ShaderInfoTypeAMD"++enumPrefixShaderInfoTypeAMD :: String+enumPrefixShaderInfoTypeAMD = "SHADER_INFO_TYPE_"++showTableShaderInfoTypeAMD :: [(ShaderInfoTypeAMD, String)]+showTableShaderInfoTypeAMD =+  [ (SHADER_INFO_TYPE_STATISTICS_AMD , "STATISTICS_AMD")+  , (SHADER_INFO_TYPE_BINARY_AMD     , "BINARY_AMD")+  , (SHADER_INFO_TYPE_DISASSEMBLY_AMD, "DISASSEMBLY_AMD")+  ]+ instance Show ShaderInfoTypeAMD where-  showsPrec p = \case-    SHADER_INFO_TYPE_STATISTICS_AMD -> showString "SHADER_INFO_TYPE_STATISTICS_AMD"-    SHADER_INFO_TYPE_BINARY_AMD -> showString "SHADER_INFO_TYPE_BINARY_AMD"-    SHADER_INFO_TYPE_DISASSEMBLY_AMD -> showString "SHADER_INFO_TYPE_DISASSEMBLY_AMD"-    ShaderInfoTypeAMD x -> showParen (p >= 11) (showString "ShaderInfoTypeAMD " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixShaderInfoTypeAMD+                            showTableShaderInfoTypeAMD+                            conNameShaderInfoTypeAMD+                            (\(ShaderInfoTypeAMD x) -> x)+                            (showsPrec 11)  instance Read ShaderInfoTypeAMD where-  readPrec = parens (choose [("SHADER_INFO_TYPE_STATISTICS_AMD", pure SHADER_INFO_TYPE_STATISTICS_AMD)-                            , ("SHADER_INFO_TYPE_BINARY_AMD", pure SHADER_INFO_TYPE_BINARY_AMD)-                            , ("SHADER_INFO_TYPE_DISASSEMBLY_AMD", pure SHADER_INFO_TYPE_DISASSEMBLY_AMD)]-                     +++-                     prec 10 (do-                       expectP (Ident "ShaderInfoTypeAMD")-                       v <- step readPrec-                       pure (ShaderInfoTypeAMD v)))+  readPrec =+    enumReadPrec enumPrefixShaderInfoTypeAMD showTableShaderInfoTypeAMD conNameShaderInfoTypeAMD ShaderInfoTypeAMD   type AMD_SHADER_INFO_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_AMD_shader_info.hs-boot view
@@ -1,4 +1,157 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_shader_info - device extension+--+-- == VK_AMD_shader_info+--+-- [__Name String__]+--     @VK_AMD_shader_info@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     43+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>+--+-- [__Contact__]+--+--     -   Jaakko Konttinen+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_shader_info:%20&body=@jaakkoamd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-10-09+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jaakko Konttinen, AMD+--+-- == Description+--+-- This extension adds a way to query certain information about a compiled+-- shader which is part of a pipeline. This information may include shader+-- disassembly, shader binary and various statistics about a shader’s+-- resource usage.+--+-- While this extension provides a mechanism for extracting this+-- information, the details regarding the contents or format of this+-- information are not specified by this extension and may be provided by+-- the vendor externally.+--+-- Furthermore, all information types are optionally supported, and users+-- should not assume every implementation supports querying every type of+-- information.+--+-- == New Commands+--+-- -   'getShaderInfoAMD'+--+-- == New Structures+--+-- -   'ShaderResourceUsageAMD'+--+-- -   'ShaderStatisticsInfoAMD'+--+-- == New Enums+--+-- -   'ShaderInfoTypeAMD'+--+-- == New Enum Constants+--+-- -   'AMD_SHADER_INFO_EXTENSION_NAME'+--+-- -   'AMD_SHADER_INFO_SPEC_VERSION'+--+-- == Examples+--+-- This example extracts the register usage of a fragment shader within a+-- particular graphics pipeline:+--+-- > extern VkDevice device;+-- > extern VkPipeline gfxPipeline;+-- >+-- > PFN_vkGetShaderInfoAMD pfnGetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)vkGetDeviceProcAddr(+-- >     device, "vkGetShaderInfoAMD");+-- >+-- > VkShaderStatisticsInfoAMD statistics = {};+-- >+-- > size_t dataSize = sizeof(statistics);+-- >+-- > if (pfnGetShaderInfoAMD(device,+-- >     gfxPipeline,+-- >     VK_SHADER_STAGE_FRAGMENT_BIT,+-- >     VK_SHADER_INFO_TYPE_STATISTICS_AMD,+-- >     &dataSize,+-- >     &statistics) == VK_SUCCESS)+-- > {+-- >     printf("VGPR usage: %d\n", statistics.resourceUsage.numUsedVgprs);+-- >     printf("SGPR usage: %d\n", statistics.resourceUsage.numUsedSgprs);+-- > }+--+-- The following example continues the previous example by subsequently+-- attempting to query and print shader disassembly about the fragment+-- shader:+--+-- > // Query disassembly size (if available)+-- > if (pfnGetShaderInfoAMD(device,+-- >     gfxPipeline,+-- >     VK_SHADER_STAGE_FRAGMENT_BIT,+-- >     VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD,+-- >     &dataSize,+-- >     nullptr) == VK_SUCCESS)+-- > {+-- >     printf("Fragment shader disassembly:\n");+-- >+-- >     void* disassembly = malloc(dataSize);+-- >+-- >     // Query disassembly and print+-- >     if (pfnGetShaderInfoAMD(device,+-- >         gfxPipeline,+-- >         VK_SHADER_STAGE_FRAGMENT_BIT,+-- >         VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD,+-- >         &dataSize,+-- >         disassembly) == VK_SUCCESS)+-- >     {+-- >         printf((char*)disassembly);+-- >     }+-- >+-- >     free(disassembly);+-- > }+--+-- == Version History+--+-- -   Revision 1, 2017-10-09 (Jaakko Konttinen)+--+--     -   Initial revision+--+-- = See Also+--+-- 'ShaderInfoTypeAMD', 'ShaderResourceUsageAMD',+-- 'ShaderStatisticsInfoAMD', 'getShaderInfoAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_info Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_shader_info  ( ShaderResourceUsageAMD                                              , ShaderStatisticsInfoAMD                                              , ShaderInfoTypeAMD
src/Vulkan/Extensions/VK_AMD_shader_trinary_minmax.hs view
@@ -1,4 +1,86 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_shader_trinary_minmax - device extension+--+-- == VK_AMD_shader_trinary_minmax+--+-- [__Name String__]+--     @VK_AMD_shader_trinary_minmax@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     21+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Qun Lin+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_shader_trinary_minmax:%20&body=@linqun%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-05-10+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_shader_trinary_minmax.html SPV_AMD_shader_trinary_minmax>+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Qun Lin, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Rex Xu, AMD+--+-- == Description+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_shader_trinary_minmax.html SPV_AMD_shader_trinary_minmax>+--+-- == New Enum Constants+--+-- -   'AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME'+--+-- -   'AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 1, 2016-05-10 (Daniel Rakos)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_trinary_minmax Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_shader_trinary_minmax  ( AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION                                                        , pattern AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION                                                        , AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME
src/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs view
@@ -1,4 +1,154 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_texture_gather_bias_lod - device extension+--+-- == VK_AMD_texture_gather_bias_lod+--+-- [__Name String__]+--     @VK_AMD_texture_gather_bias_lod@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     42+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Rex Xu+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_texture_gather_bias_lod:%20&body=@amdrexu%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-03-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_texture_gather_bias_lod.html SPV_AMD_texture_gather_bias_lod>+--+-- [__Contributors__]+--+--     -   Dominik Witczak, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Qun Lin, AMD+--+--     -   Rex Xu, AMD+--+--     -   Timothy Lottes, AMD+--+-- == Description+--+-- This extension adds two related features.+--+-- Firstly, support for the following SPIR-V extension in Vulkan is added:+--+-- -   @SPV_AMD_texture_gather_bias_lod@+--+-- Secondly, the extension allows the application to query which formats+-- can be used together with the new function prototypes introduced by the+-- SPIR-V extension.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2':+--+--     -   'TextureLODGatherFormatPropertiesAMD'+--+-- == New Enum Constants+--+-- -   'AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME'+--+-- -   'AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-imagegatherbiaslodamd ImageGatherBiasLodAMD>+--+-- == Examples+--+-- > struct VkTextureLODGatherFormatPropertiesAMD+-- > {+-- >     VkStructureType sType;+-- >     const void*     pNext;+-- >     VkBool32        supportsTextureGatherLODBiasAMD;+-- > };+-- >+-- > // ----------------------------------------------------------------------------------------+-- > // How to detect if an image format can be used with the new function prototypes.+-- > VkPhysicalDeviceImageFormatInfo2   formatInfo;+-- > VkImageFormatProperties2           formatProps;+-- > VkTextureLODGatherFormatPropertiesAMD textureLODGatherSupport;+-- >+-- > textureLODGatherSupport.sType = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD;+-- > textureLODGatherSupport.pNext = nullptr;+-- >+-- > formatInfo.sType  = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;+-- > formatInfo.pNext  = nullptr;+-- > formatInfo.format = ...;+-- > formatInfo.type   = ...;+-- > formatInfo.tiling = ...;+-- > formatInfo.usage  = ...;+-- > formatInfo.flags  = ...;+-- >+-- > formatProps.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2;+-- > formatProps.pNext = &textureLODGatherSupport;+-- >+-- > vkGetPhysicalDeviceImageFormatProperties2(physical_device, &formatInfo, &formatProps);+-- >+-- > if (textureLODGatherSupport.supportsTextureGatherLODBiasAMD == VK_TRUE)+-- > {+-- >     // physical device supports SPV_AMD_texture_gather_bias_lod for the specified+-- >     // format configuration.+-- > }+-- > else+-- > {+-- >     // physical device does not support SPV_AMD_texture_gather_bias_lod for the+-- >     // specified format configuration.+-- > }+--+-- == Version History+--+-- -   Revision 1, 2017-03-21 (Dominik Witczak)+--+--     -   Initial draft+--+-- = See Also+--+-- 'TextureLODGatherFormatPropertiesAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_texture_gather_bias_lod Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_texture_gather_bias_lod  ( TextureLODGatherFormatPropertiesAMD(..)                                                          , AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION                                                          , pattern AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION
src/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs-boot view
@@ -1,4 +1,154 @@ {-# language CPP #-}+-- | = Name+--+-- VK_AMD_texture_gather_bias_lod - device extension+--+-- == VK_AMD_texture_gather_bias_lod+--+-- [__Name String__]+--     @VK_AMD_texture_gather_bias_lod@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     42+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Rex Xu+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_AMD_texture_gather_bias_lod:%20&body=@amdrexu%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-03-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/AMD/SPV_AMD_texture_gather_bias_lod.html SPV_AMD_texture_gather_bias_lod>+--+-- [__Contributors__]+--+--     -   Dominik Witczak, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Qun Lin, AMD+--+--     -   Rex Xu, AMD+--+--     -   Timothy Lottes, AMD+--+-- == Description+--+-- This extension adds two related features.+--+-- Firstly, support for the following SPIR-V extension in Vulkan is added:+--+-- -   @SPV_AMD_texture_gather_bias_lod@+--+-- Secondly, the extension allows the application to query which formats+-- can be used together with the new function prototypes introduced by the+-- SPIR-V extension.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2':+--+--     -   'TextureLODGatherFormatPropertiesAMD'+--+-- == New Enum Constants+--+-- -   'AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME'+--+-- -   'AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-imagegatherbiaslodamd ImageGatherBiasLodAMD>+--+-- == Examples+--+-- > struct VkTextureLODGatherFormatPropertiesAMD+-- > {+-- >     VkStructureType sType;+-- >     const void*     pNext;+-- >     VkBool32        supportsTextureGatherLODBiasAMD;+-- > };+-- >+-- > // ----------------------------------------------------------------------------------------+-- > // How to detect if an image format can be used with the new function prototypes.+-- > VkPhysicalDeviceImageFormatInfo2   formatInfo;+-- > VkImageFormatProperties2           formatProps;+-- > VkTextureLODGatherFormatPropertiesAMD textureLODGatherSupport;+-- >+-- > textureLODGatherSupport.sType = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD;+-- > textureLODGatherSupport.pNext = nullptr;+-- >+-- > formatInfo.sType  = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;+-- > formatInfo.pNext  = nullptr;+-- > formatInfo.format = ...;+-- > formatInfo.type   = ...;+-- > formatInfo.tiling = ...;+-- > formatInfo.usage  = ...;+-- > formatInfo.flags  = ...;+-- >+-- > formatProps.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2;+-- > formatProps.pNext = &textureLODGatherSupport;+-- >+-- > vkGetPhysicalDeviceImageFormatProperties2(physical_device, &formatInfo, &formatProps);+-- >+-- > if (textureLODGatherSupport.supportsTextureGatherLODBiasAMD == VK_TRUE)+-- > {+-- >     // physical device supports SPV_AMD_texture_gather_bias_lod for the specified+-- >     // format configuration.+-- > }+-- > else+-- > {+-- >     // physical device does not support SPV_AMD_texture_gather_bias_lod for the+-- >     // specified format configuration.+-- > }+--+-- == Version History+--+-- -   Revision 1, 2017-03-21 (Dominik Witczak)+--+--     -   Initial draft+--+-- = See Also+--+-- 'TextureLODGatherFormatPropertiesAMD'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_texture_gather_bias_lod Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_AMD_texture_gather_bias_lod  (TextureLODGatherFormatPropertiesAMD) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs view
@@ -1,4 +1,260 @@ {-# language CPP #-}+-- | = Name+--+-- VK_ANDROID_external_memory_android_hardware_buffer - device extension+--+-- == VK_ANDROID_external_memory_android_hardware_buffer+--+-- [__Name String__]+--     @VK_ANDROID_external_memory_android_hardware_buffer@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     130+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_sampler_ycbcr_conversion@+--+--     -   Requires @VK_KHR_external_memory@+--+--     -   Requires @VK_EXT_queue_family_foreign@+--+--     -   Requires @VK_KHR_dedicated_allocation@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_ANDROID_external_memory_android_hardware_buffer:%20&body=@critsec%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-08-27+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Ray Smith, ARM+--+--     -   Chad Versace, Google+--+--     -   Jesse Hall, Google+--+--     -   Tobias Hector, Imagination+--+--     -   James Jones, NVIDIA+--+--     -   Tony Zlatinski, NVIDIA+--+--     -   Matthew Netsch, Qualcomm+--+--     -   Andrew Garrard, Samsung+--+-- == Description+--+-- This extension enables an application to import Android+-- 'AHardwareBuffer' objects created outside of the Vulkan device into+-- Vulkan memory objects, where they /can/ be bound to images and buffers.+-- It also allows exporting an 'AHardwareBuffer' from a Vulkan memory+-- object for symmetry with other operating systems. But since not all+-- 'AHardwareBuffer' usages and formats have Vulkan equivalents, exporting+-- from Vulkan provides strictly less functionality than creating the+-- 'AHardwareBuffer' externally and importing it.+--+-- Some 'AHardwareBuffer' images have implementation-defined /external+-- formats/ that /may/ not correspond to Vulkan formats. Sampler Y′CBCR+-- conversion /can/ be used to sample from these images and convert them to+-- a known color space.+--+-- == New Base Types+--+-- -   'AHardwareBuffer'+--+-- == New Commands+--+-- -   'getAndroidHardwareBufferPropertiesANDROID'+--+-- -   'getMemoryAndroidHardwareBufferANDROID'+--+-- == New Structures+--+-- -   'AndroidHardwareBufferPropertiesANDROID'+--+-- -   'MemoryGetAndroidHardwareBufferInfoANDROID'+--+-- -   Extending 'AndroidHardwareBufferPropertiesANDROID':+--+--     -   'AndroidHardwareBufferFormatPropertiesANDROID'+--+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo',+--     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo':+--+--     -   'ExternalFormatANDROID'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2':+--+--     -   'AndroidHardwareBufferUsageANDROID'+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'ImportAndroidHardwareBufferInfoANDROID'+--+-- == New Enum Constants+--+-- -   'ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME'+--+-- -   'ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits':+--+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID'+--+-- == Issues+--+-- 1) Other external memory objects are represented as weakly-typed handles+-- (e.g. Win32 'Vulkan.Extensions.VK_NV_external_memory_win32.HANDLE' or+-- POSIX file descriptor), and require a handle type parameter along with+-- handles. 'AHardwareBuffer' is strongly typed, so naming the handle type+-- is redundant. Does symmetry justify adding handle type+-- parameters\/fields anyway?+--+-- __RESOLVED__: No. The handle type is already provided in places that+-- treat external memory objects generically. In the places we would add+-- it, the application code that would have to provide the handle type+-- value is already dealing with 'AHardwareBuffer'-specific+-- commands\/structures; the extra symmetry would not be enough to make+-- that code generic.+--+-- 2) The internal layout and therefore size of a 'AHardwareBuffer' image+-- may depend on native usage flags that do not have corresponding Vulkan+-- counterparts. Do we provide this info to+-- 'Vulkan.Core10.Image.createImage' somehow, or allow the allocation size+-- reported by 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements'+-- to be approximate?+--+-- __RESOLVED__: Allow the allocation size to be unspecified when+-- allocating the memory. It has to work this way for exported image memory+-- anyway, since 'AHardwareBuffer' allocation happens in+-- 'Vulkan.Core10.Memory.allocateMemory', and internally is performed by a+-- separate HAL, not the Vulkan implementation itself. There is a similar+-- issue with 'Vulkan.Core10.Image.getImageSubresourceLayout': the layout+-- is determined by the allocator HAL, so it is not known until the image+-- is bound to memory.+--+-- 3) Should the result of sampling an external-format image with the+-- suggested Y′CBCR conversion parameters yield the same results as using a+-- @samplerExternalOES@ in OpenGL ES?+--+-- __RESOLVED__: This would be desirable, so that apps converting from+-- OpenGL ES to Vulkan could get the same output given the same input. But+-- since sampling and conversion from Y′CBCR images is so loosely defined+-- in OpenGL ES, multiple implementations do it in a way that doesn’t+-- conform to Vulkan’s requirements. Modifying the OpenGL ES implementation+-- would be difficult, and would change the output of existing unmodified+-- applications. Changing the output only for applications that are being+-- modified gives developers the chance to notice and mitigate any+-- problems. Implementations are encouraged to minimize differences as much+-- as possible without causing compatibility problems for existing OpenGL+-- ES applications or violating Vulkan requirements.+--+-- 4) Should an 'AHardwareBuffer' with @AHARDWAREBUFFER_USAGE_CPU_@* usage+-- be mappable in Vulkan? Should it be possible to export an+-- @AHardwareBuffers@ with such usage?+--+-- __RESOLVED__: Optional, and mapping in Vulkan is not the same as+-- @AHardwareBuffer_lock@. The semantics of these are different: mapping in+-- memory is persistent, just gives a raw view of the memory contents, and+-- does not involve ownership. @AHardwareBuffer_lock@ gives the host+-- exclusive access to the buffer, is temporary, and allows for+-- reformatting copy-in\/copy-out. Implementations are not required to+-- support host-visible memory types for imported Android hardware buffers+-- or resources backed by them. If a host-visible memory type is supported+-- and used, the memory can be mapped in Vulkan, but doing so follows+-- Vulkan semantics: it is just a raw view of the data and does not imply+-- ownership (this means implementations must not internally call+-- @AHardwareBuffer_lock@ to implement 'Vulkan.Core10.Memory.mapMemory', or+-- assume the application has done so). Implementations are not required to+-- support linear-tiled images backed by Android hardware buffers, even if+-- the 'AHardwareBuffer' has CPU usage. There is no reliable way to+-- allocate memory in Vulkan that can be exported to a 'AHardwareBuffer'+-- with CPU usage.+--+-- 5) Android may add new 'AHardwareBuffer' formats and usage flags over+-- time. Can reference to them be added to this extension, or do they need+-- a new extension?+--+-- RESOLVED: This extension can document the interaction between the new+-- AHB formats\/usages and existing Vulkan features. No new Vulkan features+-- or implementation requirements can be added. The extension version+-- number will be incremented when this additional documentation is added,+-- but the version number does not indicate that an implementaiton supports+-- Vulkan memory or resources that map to the new 'AHardwareBuffer'+-- features: support for that must be queried with+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+-- or is implied by successfully allocating a 'AHardwareBuffer' outside of+-- Vulkan that uses the new feature and has a GPU usage flag.+--+-- In essence, these are new features added to a new Android API level,+-- rather than new Vulkan features. The extension will only document how+-- existing Vulkan features map to that new Android feature.+--+-- == Version History+--+-- -   Revision 3, 2019-08-27 (Jon Leech)+--+--     -   Update revision history to correspond to XML version number+--+-- -   Revision 2, 2018-04-09 (Petr Kraus)+--+--     -   Markup fixes and remove incorrect Draft status+--+-- -   Revision 1, 2018-03-04 (Jesse Hall)+--+--     -   Initial version+--+-- = See Also+--+-- 'AHardwareBuffer', 'AndroidHardwareBufferFormatPropertiesANDROID',+-- 'AndroidHardwareBufferPropertiesANDROID',+-- 'AndroidHardwareBufferUsageANDROID', 'ExternalFormatANDROID',+-- 'ImportAndroidHardwareBufferInfoANDROID',+-- 'MemoryGetAndroidHardwareBufferInfoANDROID',+-- 'getAndroidHardwareBufferPropertiesANDROID',+-- 'getMemoryAndroidHardwareBufferANDROID'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer  ( getAndroidHardwareBufferPropertiesANDROID                                                                              , getMemoryAndroidHardwareBufferANDROID                                                                              , ImportAndroidHardwareBufferInfoANDROID(..)@@ -653,32 +909,32 @@  instance ToCStruct AndroidHardwareBufferFormatPropertiesANDROID where   withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AndroidHardwareBufferFormatPropertiesANDROID{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (format)-    lift $ poke ((p `plusPtr` 24 :: Ptr Word64)) (externalFormat)-    lift $ poke ((p `plusPtr` 32 :: Ptr FormatFeatureFlags)) (formatFeatures)-    ContT $ pokeCStruct ((p `plusPtr` 36 :: Ptr ComponentMapping)) (samplerYcbcrConversionComponents) . ($ ())-    lift $ poke ((p `plusPtr` 52 :: Ptr SamplerYcbcrModelConversion)) (suggestedYcbcrModel)-    lift $ poke ((p `plusPtr` 56 :: Ptr SamplerYcbcrRange)) (suggestedYcbcrRange)-    lift $ poke ((p `plusPtr` 60 :: Ptr ChromaLocation)) (suggestedXChromaOffset)-    lift $ poke ((p `plusPtr` 64 :: Ptr ChromaLocation)) (suggestedYChromaOffset)-    lift $ f+  pokeCStruct p AndroidHardwareBufferFormatPropertiesANDROID{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Format)) (format)+    poke ((p `plusPtr` 24 :: Ptr Word64)) (externalFormat)+    poke ((p `plusPtr` 32 :: Ptr FormatFeatureFlags)) (formatFeatures)+    poke ((p `plusPtr` 36 :: Ptr ComponentMapping)) (samplerYcbcrConversionComponents)+    poke ((p `plusPtr` 52 :: Ptr SamplerYcbcrModelConversion)) (suggestedYcbcrModel)+    poke ((p `plusPtr` 56 :: Ptr SamplerYcbcrRange)) (suggestedYcbcrRange)+    poke ((p `plusPtr` 60 :: Ptr ChromaLocation)) (suggestedXChromaOffset)+    poke ((p `plusPtr` 64 :: Ptr ChromaLocation)) (suggestedYChromaOffset)+    f   cStructSize = 72   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)-    lift $ poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)-    lift $ poke ((p `plusPtr` 32 :: Ptr FormatFeatureFlags)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 36 :: Ptr ComponentMapping)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 52 :: Ptr SamplerYcbcrModelConversion)) (zero)-    lift $ poke ((p `plusPtr` 56 :: Ptr SamplerYcbcrRange)) (zero)-    lift $ poke ((p `plusPtr` 60 :: Ptr ChromaLocation)) (zero)-    lift $ poke ((p `plusPtr` 64 :: Ptr ChromaLocation)) (zero)-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Format)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)+    poke ((p `plusPtr` 32 :: Ptr FormatFeatureFlags)) (zero)+    poke ((p `plusPtr` 36 :: Ptr ComponentMapping)) (zero)+    poke ((p `plusPtr` 52 :: Ptr SamplerYcbcrModelConversion)) (zero)+    poke ((p `plusPtr` 56 :: Ptr SamplerYcbcrRange)) (zero)+    poke ((p `plusPtr` 60 :: Ptr ChromaLocation)) (zero)+    poke ((p `plusPtr` 64 :: Ptr ChromaLocation)) (zero)+    f  instance FromCStruct AndroidHardwareBufferFormatPropertiesANDROID where   peekCStruct p = do@@ -692,6 +948,12 @@     suggestedYChromaOffset <- peek @ChromaLocation ((p `plusPtr` 64 :: Ptr ChromaLocation))     pure $ AndroidHardwareBufferFormatPropertiesANDROID              format externalFormat formatFeatures samplerYcbcrConversionComponents suggestedYcbcrModel suggestedYcbcrRange suggestedXChromaOffset suggestedYChromaOffset++instance Storable AndroidHardwareBufferFormatPropertiesANDROID where+  sizeOf ~_ = 72+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())  instance Zero AndroidHardwareBufferFormatPropertiesANDROID where   zero = AndroidHardwareBufferFormatPropertiesANDROID
src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot view
@@ -1,4 +1,260 @@ {-# language CPP #-}+-- | = Name+--+-- VK_ANDROID_external_memory_android_hardware_buffer - device extension+--+-- == VK_ANDROID_external_memory_android_hardware_buffer+--+-- [__Name String__]+--     @VK_ANDROID_external_memory_android_hardware_buffer@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     130+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_sampler_ycbcr_conversion@+--+--     -   Requires @VK_KHR_external_memory@+--+--     -   Requires @VK_EXT_queue_family_foreign@+--+--     -   Requires @VK_KHR_dedicated_allocation@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_ANDROID_external_memory_android_hardware_buffer:%20&body=@critsec%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-08-27+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Ray Smith, ARM+--+--     -   Chad Versace, Google+--+--     -   Jesse Hall, Google+--+--     -   Tobias Hector, Imagination+--+--     -   James Jones, NVIDIA+--+--     -   Tony Zlatinski, NVIDIA+--+--     -   Matthew Netsch, Qualcomm+--+--     -   Andrew Garrard, Samsung+--+-- == Description+--+-- This extension enables an application to import Android+-- 'AHardwareBuffer' objects created outside of the Vulkan device into+-- Vulkan memory objects, where they /can/ be bound to images and buffers.+-- It also allows exporting an 'AHardwareBuffer' from a Vulkan memory+-- object for symmetry with other operating systems. But since not all+-- 'AHardwareBuffer' usages and formats have Vulkan equivalents, exporting+-- from Vulkan provides strictly less functionality than creating the+-- 'AHardwareBuffer' externally and importing it.+--+-- Some 'AHardwareBuffer' images have implementation-defined /external+-- formats/ that /may/ not correspond to Vulkan formats. Sampler Y′CBCR+-- conversion /can/ be used to sample from these images and convert them to+-- a known color space.+--+-- == New Base Types+--+-- -   'AHardwareBuffer'+--+-- == New Commands+--+-- -   'getAndroidHardwareBufferPropertiesANDROID'+--+-- -   'getMemoryAndroidHardwareBufferANDROID'+--+-- == New Structures+--+-- -   'AndroidHardwareBufferPropertiesANDROID'+--+-- -   'MemoryGetAndroidHardwareBufferInfoANDROID'+--+-- -   Extending 'AndroidHardwareBufferPropertiesANDROID':+--+--     -   'AndroidHardwareBufferFormatPropertiesANDROID'+--+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo',+--     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo':+--+--     -   'ExternalFormatANDROID'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2':+--+--     -   'AndroidHardwareBufferUsageANDROID'+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'ImportAndroidHardwareBufferInfoANDROID'+--+-- == New Enum Constants+--+-- -   'ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME'+--+-- -   'ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits':+--+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID'+--+-- == Issues+--+-- 1) Other external memory objects are represented as weakly-typed handles+-- (e.g. Win32 'Vulkan.Extensions.VK_NV_external_memory_win32.HANDLE' or+-- POSIX file descriptor), and require a handle type parameter along with+-- handles. 'AHardwareBuffer' is strongly typed, so naming the handle type+-- is redundant. Does symmetry justify adding handle type+-- parameters\/fields anyway?+--+-- __RESOLVED__: No. The handle type is already provided in places that+-- treat external memory objects generically. In the places we would add+-- it, the application code that would have to provide the handle type+-- value is already dealing with 'AHardwareBuffer'-specific+-- commands\/structures; the extra symmetry would not be enough to make+-- that code generic.+--+-- 2) The internal layout and therefore size of a 'AHardwareBuffer' image+-- may depend on native usage flags that do not have corresponding Vulkan+-- counterparts. Do we provide this info to+-- 'Vulkan.Core10.Image.createImage' somehow, or allow the allocation size+-- reported by 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements'+-- to be approximate?+--+-- __RESOLVED__: Allow the allocation size to be unspecified when+-- allocating the memory. It has to work this way for exported image memory+-- anyway, since 'AHardwareBuffer' allocation happens in+-- 'Vulkan.Core10.Memory.allocateMemory', and internally is performed by a+-- separate HAL, not the Vulkan implementation itself. There is a similar+-- issue with 'Vulkan.Core10.Image.getImageSubresourceLayout': the layout+-- is determined by the allocator HAL, so it is not known until the image+-- is bound to memory.+--+-- 3) Should the result of sampling an external-format image with the+-- suggested Y′CBCR conversion parameters yield the same results as using a+-- @samplerExternalOES@ in OpenGL ES?+--+-- __RESOLVED__: This would be desirable, so that apps converting from+-- OpenGL ES to Vulkan could get the same output given the same input. But+-- since sampling and conversion from Y′CBCR images is so loosely defined+-- in OpenGL ES, multiple implementations do it in a way that doesn’t+-- conform to Vulkan’s requirements. Modifying the OpenGL ES implementation+-- would be difficult, and would change the output of existing unmodified+-- applications. Changing the output only for applications that are being+-- modified gives developers the chance to notice and mitigate any+-- problems. Implementations are encouraged to minimize differences as much+-- as possible without causing compatibility problems for existing OpenGL+-- ES applications or violating Vulkan requirements.+--+-- 4) Should an 'AHardwareBuffer' with @AHARDWAREBUFFER_USAGE_CPU_@* usage+-- be mappable in Vulkan? Should it be possible to export an+-- @AHardwareBuffers@ with such usage?+--+-- __RESOLVED__: Optional, and mapping in Vulkan is not the same as+-- @AHardwareBuffer_lock@. The semantics of these are different: mapping in+-- memory is persistent, just gives a raw view of the memory contents, and+-- does not involve ownership. @AHardwareBuffer_lock@ gives the host+-- exclusive access to the buffer, is temporary, and allows for+-- reformatting copy-in\/copy-out. Implementations are not required to+-- support host-visible memory types for imported Android hardware buffers+-- or resources backed by them. If a host-visible memory type is supported+-- and used, the memory can be mapped in Vulkan, but doing so follows+-- Vulkan semantics: it is just a raw view of the data and does not imply+-- ownership (this means implementations must not internally call+-- @AHardwareBuffer_lock@ to implement 'Vulkan.Core10.Memory.mapMemory', or+-- assume the application has done so). Implementations are not required to+-- support linear-tiled images backed by Android hardware buffers, even if+-- the 'AHardwareBuffer' has CPU usage. There is no reliable way to+-- allocate memory in Vulkan that can be exported to a 'AHardwareBuffer'+-- with CPU usage.+--+-- 5) Android may add new 'AHardwareBuffer' formats and usage flags over+-- time. Can reference to them be added to this extension, or do they need+-- a new extension?+--+-- RESOLVED: This extension can document the interaction between the new+-- AHB formats\/usages and existing Vulkan features. No new Vulkan features+-- or implementation requirements can be added. The extension version+-- number will be incremented when this additional documentation is added,+-- but the version number does not indicate that an implementaiton supports+-- Vulkan memory or resources that map to the new 'AHardwareBuffer'+-- features: support for that must be queried with+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+-- or is implied by successfully allocating a 'AHardwareBuffer' outside of+-- Vulkan that uses the new feature and has a GPU usage flag.+--+-- In essence, these are new features added to a new Android API level,+-- rather than new Vulkan features. The extension will only document how+-- existing Vulkan features map to that new Android feature.+--+-- == Version History+--+-- -   Revision 3, 2019-08-27 (Jon Leech)+--+--     -   Update revision history to correspond to XML version number+--+-- -   Revision 2, 2018-04-09 (Petr Kraus)+--+--     -   Markup fixes and remove incorrect Draft status+--+-- -   Revision 1, 2018-03-04 (Jesse Hall)+--+--     -   Initial version+--+-- = See Also+--+-- 'AHardwareBuffer', 'AndroidHardwareBufferFormatPropertiesANDROID',+-- 'AndroidHardwareBufferPropertiesANDROID',+-- 'AndroidHardwareBufferUsageANDROID', 'ExternalFormatANDROID',+-- 'ImportAndroidHardwareBufferInfoANDROID',+-- 'MemoryGetAndroidHardwareBufferInfoANDROID',+-- 'getAndroidHardwareBufferPropertiesANDROID',+-- 'getMemoryAndroidHardwareBufferANDROID'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer  ( AndroidHardwareBufferFormatPropertiesANDROID                                                                              , AndroidHardwareBufferPropertiesANDROID                                                                              , AndroidHardwareBufferUsageANDROID
src/Vulkan/Extensions/VK_EXT_4444_formats.hs view
@@ -1,4 +1,103 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_4444_formats - device extension+--+-- == VK_EXT_4444_formats+--+-- [__Name String__]+--     @VK_EXT_4444_formats@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     341+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Joshua Ashton+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_4444_formats:%20&body=@Joshua-Ashton%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-07-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Joshua Ashton, Valve+--+--     -   Jason Ekstrand, Intel+--+-- == Description+--+-- This extension defines the+-- 'Vulkan.Core10.Enums.Format.FORMAT_A4R4G4B4_UNORM_PACK16_EXT' and+-- 'Vulkan.Core10.Enums.Format.FORMAT_A4B4G4R4_UNORM_PACK16_EXT' formats+-- which are defined in other current graphics APIs.+--+-- This extension may be useful for building translation layers for those+-- APIs or for porting applications that use these formats without having+-- to resort to swizzles.+--+-- When VK_EXT_custom_border_color is used, these formats are not subject+-- to the same restrictions for border color without format as with+-- VK_FORMAT_B4G4R4A4_UNORM_PACK16.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevice4444FormatsFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_4444_FORMATS_EXTENSION_NAME'+--+-- -   'EXT_4444_FORMATS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_A4B4G4R4_UNORM_PACK16_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_A4R4G4B4_UNORM_PACK16_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2020-07-04 (Joshua Ashton)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDevice4444FormatsFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_4444_formats Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_4444_formats  ( PhysicalDevice4444FormatsFeaturesEXT(..)                                               , EXT_4444_FORMATS_SPEC_VERSION                                               , pattern EXT_4444_FORMATS_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_4444_formats.hs-boot view
@@ -1,4 +1,103 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_4444_formats - device extension+--+-- == VK_EXT_4444_formats+--+-- [__Name String__]+--     @VK_EXT_4444_formats@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     341+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Joshua Ashton+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_4444_formats:%20&body=@Joshua-Ashton%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-07-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Joshua Ashton, Valve+--+--     -   Jason Ekstrand, Intel+--+-- == Description+--+-- This extension defines the+-- 'Vulkan.Core10.Enums.Format.FORMAT_A4R4G4B4_UNORM_PACK16_EXT' and+-- 'Vulkan.Core10.Enums.Format.FORMAT_A4B4G4R4_UNORM_PACK16_EXT' formats+-- which are defined in other current graphics APIs.+--+-- This extension may be useful for building translation layers for those+-- APIs or for porting applications that use these formats without having+-- to resort to swizzles.+--+-- When VK_EXT_custom_border_color is used, these formats are not subject+-- to the same restrictions for border color without format as with+-- VK_FORMAT_B4G4R4A4_UNORM_PACK16.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevice4444FormatsFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_4444_FORMATS_EXTENSION_NAME'+--+-- -   'EXT_4444_FORMATS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_A4B4G4R4_UNORM_PACK16_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_A4R4G4B4_UNORM_PACK16_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2020-07-04 (Joshua Ashton)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDevice4444FormatsFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_4444_formats Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_4444_formats  (PhysicalDevice4444FormatsFeaturesEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs view
@@ -1,4 +1,117 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_acquire_xlib_display - instance extension+--+-- == VK_EXT_acquire_xlib_display+--+-- [__Name String__]+--     @VK_EXT_acquire_xlib_display@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     90+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_EXT_direct_mode_display@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_acquire_xlib_display:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-12-13+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Dave Airlie, Red Hat+--+--     -   Pierre Boudier, NVIDIA+--+--     -   James Jones, NVIDIA+--+--     -   Damien Leone, NVIDIA+--+--     -   Pierre-Loup Griffais, Valve+--+--     -   Liam Middlebrook, NVIDIA+--+--     -   Daniel Vetter, Intel+--+-- == Description+--+-- This extension allows an application to take exclusive control on a+-- display currently associated with an X11 screen. When control is+-- acquired, the display will be deassociated from the X11 screen until+-- control is released or the specified display connection is closed.+-- Essentially, the X11 screen will behave as if the monitor has been+-- unplugged until control is released.+--+-- == New Commands+--+-- -   'acquireXlibDisplayEXT'+--+-- -   'getRandROutputDisplayEXT'+--+-- == New Enum Constants+--+-- -   'EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME'+--+-- -   'EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION'+--+-- == Issues+--+-- 1) Should 'acquireXlibDisplayEXT' take an RandR display ID, or a Vulkan+-- display handle as input?+--+-- __RESOLVED__: A Vulkan display handle. Otherwise there would be no way+-- to specify handles to displays that had been prevented from being+-- included in the X11 display list by some native platform or+-- vendor-specific mechanism.+--+-- 2) How does an application figure out which RandR display corresponds to+-- a Vulkan display?+--+-- __RESOLVED__: A new function, 'getRandROutputDisplayEXT', is introduced+-- for this purpose.+--+-- 3) Should 'getRandROutputDisplayEXT' be part of this extension, or a+-- general Vulkan \/ RandR or Vulkan \/ Xlib extension?+--+-- __RESOLVED__: To avoid yet another extension, include it in this+-- extension.+--+-- == Version History+--+-- -   Revision 1, 2016-12-13 (James Jones)+--+--     -   Initial draft+--+-- = See Also+--+-- 'acquireXlibDisplayEXT', 'getRandROutputDisplayEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_acquire_xlib_display Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_acquire_xlib_display  ( acquireXlibDisplayEXT                                                       , getRandROutputDisplayEXT                                                       , EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs-boot view
@@ -1,4 +1,117 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_acquire_xlib_display - instance extension+--+-- == VK_EXT_acquire_xlib_display+--+-- [__Name String__]+--     @VK_EXT_acquire_xlib_display@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     90+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_EXT_direct_mode_display@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_acquire_xlib_display:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-12-13+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Dave Airlie, Red Hat+--+--     -   Pierre Boudier, NVIDIA+--+--     -   James Jones, NVIDIA+--+--     -   Damien Leone, NVIDIA+--+--     -   Pierre-Loup Griffais, Valve+--+--     -   Liam Middlebrook, NVIDIA+--+--     -   Daniel Vetter, Intel+--+-- == Description+--+-- This extension allows an application to take exclusive control on a+-- display currently associated with an X11 screen. When control is+-- acquired, the display will be deassociated from the X11 screen until+-- control is released or the specified display connection is closed.+-- Essentially, the X11 screen will behave as if the monitor has been+-- unplugged until control is released.+--+-- == New Commands+--+-- -   'acquireXlibDisplayEXT'+--+-- -   'getRandROutputDisplayEXT'+--+-- == New Enum Constants+--+-- -   'EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME'+--+-- -   'EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION'+--+-- == Issues+--+-- 1) Should 'acquireXlibDisplayEXT' take an RandR display ID, or a Vulkan+-- display handle as input?+--+-- __RESOLVED__: A Vulkan display handle. Otherwise there would be no way+-- to specify handles to displays that had been prevented from being+-- included in the X11 display list by some native platform or+-- vendor-specific mechanism.+--+-- 2) How does an application figure out which RandR display corresponds to+-- a Vulkan display?+--+-- __RESOLVED__: A new function, 'getRandROutputDisplayEXT', is introduced+-- for this purpose.+--+-- 3) Should 'getRandROutputDisplayEXT' be part of this extension, or a+-- general Vulkan \/ RandR or Vulkan \/ Xlib extension?+--+-- __RESOLVED__: To avoid yet another extension, include it in this+-- extension.+--+-- == Version History+--+-- -   Revision 1, 2016-12-13 (James Jones)+--+--     -   Initial draft+--+-- = See Also+--+-- 'acquireXlibDisplayEXT', 'getRandROutputDisplayEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_acquire_xlib_display Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_acquire_xlib_display  (RROutput) where  import Data.Word (Word64)
src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs view
@@ -1,4 +1,160 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_astc_decode_mode - device extension+--+-- == VK_EXT_astc_decode_mode+--+-- [__Name String__]+--     @VK_EXT_astc_decode_mode@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     68+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jan-Harald Fredriksen+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_astc_decode_mode:%20&body=@janharaldfredriksen-arm%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-08-07+--+-- [__Contributors__]+--+--     -   Jan-Harald Fredriksen, Arm+--+-- == Description+--+-- The existing specification requires that low dynamic range (LDR) ASTC+-- textures are decompressed to FP16 values per component. In many cases,+-- decompressing LDR textures to a lower precision intermediate result+-- gives acceptable image quality. Source material for LDR textures is+-- typically authored as 8-bit UNORM values, so decoding to FP16 values+-- adds little value. On the other hand, reducing precision of the decoded+-- result reduces the size of the decompressed data, potentially improving+-- texture cache performance and saving power.+--+-- The goal of this extension is to enable this efficiency gain on existing+-- ASTC texture data. This is achieved by giving the application the+-- ability to select the intermediate decoding precision.+--+-- Three decoding options are provided:+--+-- -   Decode to 'Vulkan.Core10.Enums.Format.FORMAT_R16G16B16A16_SFLOAT'+--     precision: This is the default, and matches the required behavior in+--     the core API.+--+-- -   Decode to 'Vulkan.Core10.Enums.Format.FORMAT_R8G8B8A8_UNORM'+--     precision: This is provided as an option in LDR mode.+--+-- -   Decode to 'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32'+--     precision: This is provided as an option in both LDR and HDR mode.+--     In this mode, negative values cannot be represented and are clamped+--     to zero. The alpha component is ignored, and the results are as if+--     alpha was 1.0. This decode mode is optional and support can be+--     queried via the physical device properties.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.ImageView.ImageViewCreateInfo':+--+--     -   'ImageViewASTCDecodeModeEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceASTCDecodeFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_ASTC_DECODE_MODE_EXTENSION_NAME'+--+-- -   'EXT_ASTC_DECODE_MODE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT'+--+-- == Issues+--+-- 1) Are implementations allowed to decode at a higher precision than what+-- is requested?+--+-- > RESOLUTION: No.+-- > If we allow this, then this extension could be exposed on all+-- > implementations that support ASTC.+-- > But developers would have no way of knowing what precision was actually+-- > used, and thus whether the image quality is sufficient at reduced+-- > precision.+--+-- 2) Should the decode mode be image view state and\/or sampler state?+--+-- > RESOLUTION: Image view state only.+-- > Some implementations treat the different decode modes as different+-- > texture formats.+--+-- == Example+--+-- Create an image view that decodes to+-- 'Vulkan.Core10.Enums.Format.FORMAT_R8G8B8A8_UNORM' precision:+--+-- >     VkImageViewASTCDecodeModeEXT decodeMode =+-- >     {+-- >         VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT, // sType+-- >         NULL, // pNext+-- >         VK_FORMAT_R8G8B8A8_UNORM // decode mode+-- >     };+-- >+-- >     VkImageViewCreateInfo createInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // sType+-- >         &decodeMode, // pNext+-- >         // flags, image, viewType set to application-desired values+-- >         VK_FORMAT_ASTC_8x8_UNORM_BLOCK, // format+-- >         // components, subresourceRange set to application-desired values+-- >     };+-- >+-- >     VkImageView imageView;+-- >     VkResult result = vkCreateImageView(+-- >         device,+-- >         &createInfo,+-- >         NULL,+-- >         &imageView);+--+-- == Version History+--+-- -   Revision 1, 2018-08-07 (Jan-Harald Fredriksen)+--+--     -   Initial revision+--+-- = See Also+--+-- 'ImageViewASTCDecodeModeEXT', 'PhysicalDeviceASTCDecodeFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_astc_decode_mode Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_astc_decode_mode  ( ImageViewASTCDecodeModeEXT(..)                                                   , PhysicalDeviceASTCDecodeFeaturesEXT(..)                                                   , EXT_ASTC_DECODE_MODE_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs-boot view
@@ -1,4 +1,160 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_astc_decode_mode - device extension+--+-- == VK_EXT_astc_decode_mode+--+-- [__Name String__]+--     @VK_EXT_astc_decode_mode@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     68+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jan-Harald Fredriksen+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_astc_decode_mode:%20&body=@janharaldfredriksen-arm%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-08-07+--+-- [__Contributors__]+--+--     -   Jan-Harald Fredriksen, Arm+--+-- == Description+--+-- The existing specification requires that low dynamic range (LDR) ASTC+-- textures are decompressed to FP16 values per component. In many cases,+-- decompressing LDR textures to a lower precision intermediate result+-- gives acceptable image quality. Source material for LDR textures is+-- typically authored as 8-bit UNORM values, so decoding to FP16 values+-- adds little value. On the other hand, reducing precision of the decoded+-- result reduces the size of the decompressed data, potentially improving+-- texture cache performance and saving power.+--+-- The goal of this extension is to enable this efficiency gain on existing+-- ASTC texture data. This is achieved by giving the application the+-- ability to select the intermediate decoding precision.+--+-- Three decoding options are provided:+--+-- -   Decode to 'Vulkan.Core10.Enums.Format.FORMAT_R16G16B16A16_SFLOAT'+--     precision: This is the default, and matches the required behavior in+--     the core API.+--+-- -   Decode to 'Vulkan.Core10.Enums.Format.FORMAT_R8G8B8A8_UNORM'+--     precision: This is provided as an option in LDR mode.+--+-- -   Decode to 'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32'+--     precision: This is provided as an option in both LDR and HDR mode.+--     In this mode, negative values cannot be represented and are clamped+--     to zero. The alpha component is ignored, and the results are as if+--     alpha was 1.0. This decode mode is optional and support can be+--     queried via the physical device properties.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.ImageView.ImageViewCreateInfo':+--+--     -   'ImageViewASTCDecodeModeEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceASTCDecodeFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_ASTC_DECODE_MODE_EXTENSION_NAME'+--+-- -   'EXT_ASTC_DECODE_MODE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT'+--+-- == Issues+--+-- 1) Are implementations allowed to decode at a higher precision than what+-- is requested?+--+-- > RESOLUTION: No.+-- > If we allow this, then this extension could be exposed on all+-- > implementations that support ASTC.+-- > But developers would have no way of knowing what precision was actually+-- > used, and thus whether the image quality is sufficient at reduced+-- > precision.+--+-- 2) Should the decode mode be image view state and\/or sampler state?+--+-- > RESOLUTION: Image view state only.+-- > Some implementations treat the different decode modes as different+-- > texture formats.+--+-- == Example+--+-- Create an image view that decodes to+-- 'Vulkan.Core10.Enums.Format.FORMAT_R8G8B8A8_UNORM' precision:+--+-- >     VkImageViewASTCDecodeModeEXT decodeMode =+-- >     {+-- >         VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT, // sType+-- >         NULL, // pNext+-- >         VK_FORMAT_R8G8B8A8_UNORM // decode mode+-- >     };+-- >+-- >     VkImageViewCreateInfo createInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // sType+-- >         &decodeMode, // pNext+-- >         // flags, image, viewType set to application-desired values+-- >         VK_FORMAT_ASTC_8x8_UNORM_BLOCK, // format+-- >         // components, subresourceRange set to application-desired values+-- >     };+-- >+-- >     VkImageView imageView;+-- >     VkResult result = vkCreateImageView(+-- >         device,+-- >         &createInfo,+-- >         NULL,+-- >         &imageView);+--+-- == Version History+--+-- -   Revision 1, 2018-08-07 (Jan-Harald Fredriksen)+--+--     -   Initial revision+--+-- = See Also+--+-- 'ImageViewASTCDecodeModeEXT', 'PhysicalDeviceASTCDecodeFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_astc_decode_mode Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_astc_decode_mode  ( ImageViewASTCDecodeModeEXT                                                   , PhysicalDeviceASTCDecodeFeaturesEXT                                                   ) where
src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs view
@@ -1,4 +1,285 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_blend_operation_advanced - device extension+--+-- == VK_EXT_blend_operation_advanced+--+-- [__Name String__]+--     @VK_EXT_blend_operation_advanced@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     149+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_blend_operation_advanced:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-06-12+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension adds a number of “advanced” blending operations that+-- /can/ be used to perform new color blending operations, many of which+-- are more complex than the standard blend modes provided by unextended+-- Vulkan. This extension requires different styles of usage, depending on+-- the level of hardware support and the enabled features:+--+-- -   If+--     'PhysicalDeviceBlendOperationAdvancedFeaturesEXT'::@advancedBlendCoherentOperations@+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', the new blending+--     operations are supported, but a memory dependency /must/ separate+--     each advanced blend operation on a given sample.+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'+--     is used to synchronize reads using advanced blend operations.+--+-- -   If+--     'PhysicalDeviceBlendOperationAdvancedFeaturesEXT'::@advancedBlendCoherentOperations@+--     is 'Vulkan.Core10.FundamentalTypes.TRUE', advanced blend operations+--     obey primitive order just like basic blend operations.+--+-- In unextended Vulkan, the set of blending operations is limited, and+-- /can/ be expressed very simply. The+-- 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MIN' and+-- 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MAX' blend operations simply+-- compute component-wise minimums or maximums of source and destination+-- color components. The 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_ADD',+-- 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SUBTRACT', and+-- 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_REVERSE_SUBTRACT' modes multiply+-- the source and destination colors by source and destination factors and+-- either add the two products together or subtract one from the other.+-- This limited set of operations supports many common blending operations+-- but precludes the use of more sophisticated transparency and blending+-- operations commonly available in many dedicated imaging APIs.+--+-- This extension provides a number of new “advanced” blending operations.+-- Unlike traditional blending operations using+-- 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_ADD', these blending equations do+-- not use source and destination factors specified by+-- 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'. Instead, each blend+-- operation specifies a complete equation based on the source and+-- destination colors. These new blend operations are used for both RGB and+-- alpha components; they /must/ not be used to perform separate RGB and+-- alpha blending (via different values of color and alpha+-- 'Vulkan.Core10.Enums.BlendOp.BlendOp').+--+-- These blending operations are performed using premultiplied colors,+-- where RGB colors /can/ be considered premultiplied or non-premultiplied+-- by alpha, according to the @srcPremultiplied@ and @dstPremultiplied@+-- members of 'PipelineColorBlendAdvancedStateCreateInfoEXT'. If a color is+-- considered non-premultiplied, the (R,G,B) color components are+-- multiplied by the alpha component prior to blending. For+-- non-premultiplied color components in the range [0,1], the corresponding+-- premultiplied color component would have values in the range [0 × A, 1 ×+-- A].+--+-- Many of these advanced blending equations are formulated where the+-- result of blending source and destination colors with partial coverage+-- have three separate contributions: from the portions covered by both the+-- source and the destination, from the portion covered only by the source,+-- and from the portion covered only by the destination. The blend+-- parameter 'PipelineColorBlendAdvancedStateCreateInfoEXT'::@blendOverlap@+-- /can/ be used to specify a correlation between source and destination+-- pixel coverage. If set to 'BLEND_OVERLAP_CONJOINT_EXT', the source and+-- destination are considered to have maximal overlap, as would be the case+-- if drawing two objects on top of each other. If set to+-- 'BLEND_OVERLAP_DISJOINT_EXT', the source and destination are considered+-- to have minimal overlap, as would be the case when rendering a complex+-- polygon tessellated into individual non-intersecting triangles. If set+-- to 'BLEND_OVERLAP_UNCORRELATED_EXT', the source and destination coverage+-- are assumed to have no spatial correlation within the pixel.+--+-- In addition to the coherency issues on implementations not supporting+-- @advancedBlendCoherentOperations@, this extension has several+-- limitations worth noting. First, the new blend operations have a limit+-- on the number of color attachments they /can/ be used with, as indicated+-- by+-- 'PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendMaxColorAttachments@.+-- Additionally, blending precision /may/ be limited to 16-bit+-- floating-point, which /may/ result in a loss of precision and dynamic+-- range for framebuffer formats with 32-bit floating-point components, and+-- in a loss of precision for formats with 12- and 16-bit signed or+-- unsigned normalized integer components.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceBlendOperationAdvancedFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceBlendOperationAdvancedPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo':+--+--     -   'PipelineColorBlendAdvancedStateCreateInfoEXT'+--+-- == New Enums+--+-- -   'BlendOverlapEXT'+--+-- == New Enum Constants+--+-- -   'EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME'+--+-- -   'EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.BlendOp.BlendOp':+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_BLUE_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_COLORBURN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_COLORDODGE_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_CONTRAST_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DARKEN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DIFFERENCE_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_ATOP_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_IN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_OUT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_OVER_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_EXCLUSION_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_GREEN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HARDLIGHT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HARDMIX_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HSL_COLOR_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HSL_HUE_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HSL_LUMINOSITY_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HSL_SATURATION_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_OVG_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_RGB_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LIGHTEN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARBURN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARDODGE_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARLIGHT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MINUS_CLAMPED_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MINUS_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MULTIPLY_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_OVERLAY_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PINLIGHT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_CLAMPED_ALPHA_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_CLAMPED_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_DARKER_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_RED_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SCREEN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SOFTLIGHT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_ATOP_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_IN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_OUT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_OVER_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_VIVIDLIGHT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_XOR_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_ZERO_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT'+--+-- == Issues+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2017-06-12 (Jeff Bolz)+--+--     -   Internal revisions+--+-- -   Revision 2, 2017-06-12 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'BlendOverlapEXT', 'PhysicalDeviceBlendOperationAdvancedFeaturesEXT',+-- 'PhysicalDeviceBlendOperationAdvancedPropertiesEXT',+-- 'PipelineColorBlendAdvancedStateCreateInfoEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_blend_operation_advanced Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_blend_operation_advanced  ( PhysicalDeviceBlendOperationAdvancedFeaturesEXT(..)                                                           , PhysicalDeviceBlendOperationAdvancedPropertiesEXT(..)                                                           , PipelineColorBlendAdvancedStateCreateInfoEXT(..)@@ -13,18 +294,12 @@                                                           , pattern EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME                                                           ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.String (IsString) import Data.Typeable (Typeable) import Foreign.Storable (Storable)@@ -35,8 +310,8 @@ import Data.Int (Int32) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Vulkan.Core10.FundamentalTypes (bool32ToBool) import Vulkan.Core10.FundamentalTypes (boolToBool32)@@ -385,30 +660,36 @@ pattern BLEND_OVERLAP_UNCORRELATED_EXT = BlendOverlapEXT 0 -- | 'BLEND_OVERLAP_DISJOINT_EXT' specifies that the source and destination -- coverage are considered to have minimal overlap.-pattern BLEND_OVERLAP_DISJOINT_EXT = BlendOverlapEXT 1+pattern BLEND_OVERLAP_DISJOINT_EXT     = BlendOverlapEXT 1 -- | 'BLEND_OVERLAP_CONJOINT_EXT' specifies that the source and destination -- coverage are considered to have maximal overlap.-pattern BLEND_OVERLAP_CONJOINT_EXT = BlendOverlapEXT 2+pattern BLEND_OVERLAP_CONJOINT_EXT     = BlendOverlapEXT 2 {-# complete BLEND_OVERLAP_UNCORRELATED_EXT,              BLEND_OVERLAP_DISJOINT_EXT,              BLEND_OVERLAP_CONJOINT_EXT :: BlendOverlapEXT #-} +conNameBlendOverlapEXT :: String+conNameBlendOverlapEXT = "BlendOverlapEXT"++enumPrefixBlendOverlapEXT :: String+enumPrefixBlendOverlapEXT = "BLEND_OVERLAP_"++showTableBlendOverlapEXT :: [(BlendOverlapEXT, String)]+showTableBlendOverlapEXT =+  [ (BLEND_OVERLAP_UNCORRELATED_EXT, "UNCORRELATED_EXT")+  , (BLEND_OVERLAP_DISJOINT_EXT    , "DISJOINT_EXT")+  , (BLEND_OVERLAP_CONJOINT_EXT    , "CONJOINT_EXT")+  ]+ instance Show BlendOverlapEXT where-  showsPrec p = \case-    BLEND_OVERLAP_UNCORRELATED_EXT -> showString "BLEND_OVERLAP_UNCORRELATED_EXT"-    BLEND_OVERLAP_DISJOINT_EXT -> showString "BLEND_OVERLAP_DISJOINT_EXT"-    BLEND_OVERLAP_CONJOINT_EXT -> showString "BLEND_OVERLAP_CONJOINT_EXT"-    BlendOverlapEXT x -> showParen (p >= 11) (showString "BlendOverlapEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixBlendOverlapEXT+                            showTableBlendOverlapEXT+                            conNameBlendOverlapEXT+                            (\(BlendOverlapEXT x) -> x)+                            (showsPrec 11)  instance Read BlendOverlapEXT where-  readPrec = parens (choose [("BLEND_OVERLAP_UNCORRELATED_EXT", pure BLEND_OVERLAP_UNCORRELATED_EXT)-                            , ("BLEND_OVERLAP_DISJOINT_EXT", pure BLEND_OVERLAP_DISJOINT_EXT)-                            , ("BLEND_OVERLAP_CONJOINT_EXT", pure BLEND_OVERLAP_CONJOINT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "BlendOverlapEXT")-                       v <- step readPrec-                       pure (BlendOverlapEXT v)))+  readPrec = enumReadPrec enumPrefixBlendOverlapEXT showTableBlendOverlapEXT conNameBlendOverlapEXT BlendOverlapEXT   type EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2
src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs-boot view
@@ -1,4 +1,285 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_blend_operation_advanced - device extension+--+-- == VK_EXT_blend_operation_advanced+--+-- [__Name String__]+--     @VK_EXT_blend_operation_advanced@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     149+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_blend_operation_advanced:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-06-12+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension adds a number of “advanced” blending operations that+-- /can/ be used to perform new color blending operations, many of which+-- are more complex than the standard blend modes provided by unextended+-- Vulkan. This extension requires different styles of usage, depending on+-- the level of hardware support and the enabled features:+--+-- -   If+--     'PhysicalDeviceBlendOperationAdvancedFeaturesEXT'::@advancedBlendCoherentOperations@+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', the new blending+--     operations are supported, but a memory dependency /must/ separate+--     each advanced blend operation on a given sample.+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'+--     is used to synchronize reads using advanced blend operations.+--+-- -   If+--     'PhysicalDeviceBlendOperationAdvancedFeaturesEXT'::@advancedBlendCoherentOperations@+--     is 'Vulkan.Core10.FundamentalTypes.TRUE', advanced blend operations+--     obey primitive order just like basic blend operations.+--+-- In unextended Vulkan, the set of blending operations is limited, and+-- /can/ be expressed very simply. The+-- 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MIN' and+-- 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MAX' blend operations simply+-- compute component-wise minimums or maximums of source and destination+-- color components. The 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_ADD',+-- 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SUBTRACT', and+-- 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_REVERSE_SUBTRACT' modes multiply+-- the source and destination colors by source and destination factors and+-- either add the two products together or subtract one from the other.+-- This limited set of operations supports many common blending operations+-- but precludes the use of more sophisticated transparency and blending+-- operations commonly available in many dedicated imaging APIs.+--+-- This extension provides a number of new “advanced” blending operations.+-- Unlike traditional blending operations using+-- 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_ADD', these blending equations do+-- not use source and destination factors specified by+-- 'Vulkan.Core10.Enums.BlendFactor.BlendFactor'. Instead, each blend+-- operation specifies a complete equation based on the source and+-- destination colors. These new blend operations are used for both RGB and+-- alpha components; they /must/ not be used to perform separate RGB and+-- alpha blending (via different values of color and alpha+-- 'Vulkan.Core10.Enums.BlendOp.BlendOp').+--+-- These blending operations are performed using premultiplied colors,+-- where RGB colors /can/ be considered premultiplied or non-premultiplied+-- by alpha, according to the @srcPremultiplied@ and @dstPremultiplied@+-- members of 'PipelineColorBlendAdvancedStateCreateInfoEXT'. If a color is+-- considered non-premultiplied, the (R,G,B) color components are+-- multiplied by the alpha component prior to blending. For+-- non-premultiplied color components in the range [0,1], the corresponding+-- premultiplied color component would have values in the range [0 × A, 1 ×+-- A].+--+-- Many of these advanced blending equations are formulated where the+-- result of blending source and destination colors with partial coverage+-- have three separate contributions: from the portions covered by both the+-- source and the destination, from the portion covered only by the source,+-- and from the portion covered only by the destination. The blend+-- parameter 'PipelineColorBlendAdvancedStateCreateInfoEXT'::@blendOverlap@+-- /can/ be used to specify a correlation between source and destination+-- pixel coverage. If set to 'BLEND_OVERLAP_CONJOINT_EXT', the source and+-- destination are considered to have maximal overlap, as would be the case+-- if drawing two objects on top of each other. If set to+-- 'BLEND_OVERLAP_DISJOINT_EXT', the source and destination are considered+-- to have minimal overlap, as would be the case when rendering a complex+-- polygon tessellated into individual non-intersecting triangles. If set+-- to 'BLEND_OVERLAP_UNCORRELATED_EXT', the source and destination coverage+-- are assumed to have no spatial correlation within the pixel.+--+-- In addition to the coherency issues on implementations not supporting+-- @advancedBlendCoherentOperations@, this extension has several+-- limitations worth noting. First, the new blend operations have a limit+-- on the number of color attachments they /can/ be used with, as indicated+-- by+-- 'PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendMaxColorAttachments@.+-- Additionally, blending precision /may/ be limited to 16-bit+-- floating-point, which /may/ result in a loss of precision and dynamic+-- range for framebuffer formats with 32-bit floating-point components, and+-- in a loss of precision for formats with 12- and 16-bit signed or+-- unsigned normalized integer components.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceBlendOperationAdvancedFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceBlendOperationAdvancedPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo':+--+--     -   'PipelineColorBlendAdvancedStateCreateInfoEXT'+--+-- == New Enums+--+-- -   'BlendOverlapEXT'+--+-- == New Enum Constants+--+-- -   'EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME'+--+-- -   'EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.BlendOp.BlendOp':+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_BLUE_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_COLORBURN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_COLORDODGE_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_CONTRAST_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DARKEN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DIFFERENCE_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_ATOP_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_IN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_OUT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_OVER_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_EXCLUSION_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_GREEN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HARDLIGHT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HARDMIX_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HSL_COLOR_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HSL_HUE_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HSL_LUMINOSITY_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_HSL_SATURATION_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_OVG_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_RGB_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LIGHTEN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARBURN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARDODGE_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARLIGHT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MINUS_CLAMPED_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MINUS_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_MULTIPLY_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_OVERLAY_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PINLIGHT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_CLAMPED_ALPHA_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_CLAMPED_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_DARKER_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_RED_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SCREEN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SOFTLIGHT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_ATOP_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_IN_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_OUT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_OVER_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_VIVIDLIGHT_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_XOR_EXT'+--+--     -   'Vulkan.Core10.Enums.BlendOp.BLEND_OP_ZERO_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT'+--+-- == Issues+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2017-06-12 (Jeff Bolz)+--+--     -   Internal revisions+--+-- -   Revision 2, 2017-06-12 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'BlendOverlapEXT', 'PhysicalDeviceBlendOperationAdvancedFeaturesEXT',+-- 'PhysicalDeviceBlendOperationAdvancedPropertiesEXT',+-- 'PipelineColorBlendAdvancedStateCreateInfoEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_blend_operation_advanced Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_blend_operation_advanced  ( PhysicalDeviceBlendOperationAdvancedFeaturesEXT                                                           , PhysicalDeviceBlendOperationAdvancedPropertiesEXT                                                           , PipelineColorBlendAdvancedStateCreateInfoEXT
src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs view
@@ -1,4 +1,164 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_buffer_device_address - device extension+--+-- == VK_EXT_buffer_device_address+--+-- [__Name String__]+--     @VK_EXT_buffer_device_address@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     245+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_KHR_buffer_device_address@ extension+--+--         -   Which in turn was /promoted/ to+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_buffer_device_address:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-01-06+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_physical_storage_buffer.html SPV_EXT_physical_storage_buffer>+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Neil Henning, AMD+--+--     -   Tobias Hector, AMD+--+--     -   Jason Ekstrand, Intel+--+--     -   Baldur Karlsson, Valve+--+-- == Description+--+-- This extension allows the application to query a 64-bit buffer device+-- address value for a buffer, which can be used to access the buffer+-- memory via the @PhysicalStorageBufferEXT@ storage class in the+-- <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_buffer_reference.txt GL_EXT_buffer_reference>+-- GLSL extension and+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_physical_storage_buffer.html SPV_EXT_physical_storage_buffer>+-- SPIR-V extension.+--+-- It also allows buffer device addresses to be provided by a trace replay+-- tool, so that it matches the address used when the trace was captured.+--+-- == New Commands+--+-- -   'getBufferDeviceAddressEXT'+--+-- == New Structures+--+-- -   'BufferDeviceAddressInfoEXT'+--+-- -   Extending 'Vulkan.Core10.Buffer.BufferCreateInfo':+--+--     -   'BufferDeviceAddressCreateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceBufferDeviceAddressFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME'+--+-- -   'EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BufferCreateFlagBits':+--+--     -   'BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':+--+--     -   'BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'ERROR_INVALID_DEVICE_ADDRESS_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT'+--+--     -   'STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-physicalstoragebufferaddresses PhysicalStorageBufferAddressesEXT>+--+-- == Issues+--+-- 1) Where is+-- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT and+-- VkPhysicalDeviceBufferAddressFeaturesEXT?+--+-- __RESOLVED__: They were renamed as+-- 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT'+-- and 'PhysicalDeviceBufferDeviceAddressFeaturesEXT' accordingly for+-- consistency. Even though, the old names can still be found in the+-- generated header files for compatibility.+--+-- == Version History+--+-- -   Revision 1, 2018-11-01 (Jeff Bolz)+--+--     -   Internal revisions+--+-- -   Revision 2, 2019-01-06 (Jon Leech)+--+--     -   Minor updates to appendix for publication+--+-- = See Also+--+-- 'BufferDeviceAddressCreateInfoEXT', 'BufferDeviceAddressInfoEXT',+-- 'PhysicalDeviceBufferAddressFeaturesEXT',+-- 'PhysicalDeviceBufferDeviceAddressFeaturesEXT',+-- 'getBufferDeviceAddressEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_buffer_device_address Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_buffer_device_address  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT                                                        , pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT                                                        , pattern BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT
src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs-boot view
@@ -1,4 +1,164 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_buffer_device_address - device extension+--+-- == VK_EXT_buffer_device_address+--+-- [__Name String__]+--     @VK_EXT_buffer_device_address@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     245+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_KHR_buffer_device_address@ extension+--+--         -   Which in turn was /promoted/ to+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_buffer_device_address:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-01-06+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_physical_storage_buffer.html SPV_EXT_physical_storage_buffer>+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Neil Henning, AMD+--+--     -   Tobias Hector, AMD+--+--     -   Jason Ekstrand, Intel+--+--     -   Baldur Karlsson, Valve+--+-- == Description+--+-- This extension allows the application to query a 64-bit buffer device+-- address value for a buffer, which can be used to access the buffer+-- memory via the @PhysicalStorageBufferEXT@ storage class in the+-- <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_buffer_reference.txt GL_EXT_buffer_reference>+-- GLSL extension and+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_physical_storage_buffer.html SPV_EXT_physical_storage_buffer>+-- SPIR-V extension.+--+-- It also allows buffer device addresses to be provided by a trace replay+-- tool, so that it matches the address used when the trace was captured.+--+-- == New Commands+--+-- -   'getBufferDeviceAddressEXT'+--+-- == New Structures+--+-- -   'BufferDeviceAddressInfoEXT'+--+-- -   Extending 'Vulkan.Core10.Buffer.BufferCreateInfo':+--+--     -   'BufferDeviceAddressCreateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceBufferDeviceAddressFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME'+--+-- -   'EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BufferCreateFlagBits':+--+--     -   'BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':+--+--     -   'BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'ERROR_INVALID_DEVICE_ADDRESS_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT'+--+--     -   'STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-physicalstoragebufferaddresses PhysicalStorageBufferAddressesEXT>+--+-- == Issues+--+-- 1) Where is+-- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT and+-- VkPhysicalDeviceBufferAddressFeaturesEXT?+--+-- __RESOLVED__: They were renamed as+-- 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT'+-- and 'PhysicalDeviceBufferDeviceAddressFeaturesEXT' accordingly for+-- consistency. Even though, the old names can still be found in the+-- generated header files for compatibility.+--+-- == Version History+--+-- -   Revision 1, 2018-11-01 (Jeff Bolz)+--+--     -   Internal revisions+--+-- -   Revision 2, 2019-01-06 (Jon Leech)+--+--     -   Minor updates to appendix for publication+--+-- = See Also+--+-- 'BufferDeviceAddressCreateInfoEXT', 'BufferDeviceAddressInfoEXT',+-- 'PhysicalDeviceBufferAddressFeaturesEXT',+-- 'PhysicalDeviceBufferDeviceAddressFeaturesEXT',+-- 'getBufferDeviceAddressEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_buffer_device_address Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_buffer_device_address  ( BufferDeviceAddressCreateInfoEXT                                                        , PhysicalDeviceBufferDeviceAddressFeaturesEXT                                                        ) where
src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs view
@@ -1,4 +1,169 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_calibrated_timestamps - device extension+--+-- == VK_EXT_calibrated_timestamps+--+-- [__Name String__]+--     @VK_EXT_calibrated_timestamps@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     185+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Daniel Rakos+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_calibrated_timestamps:%20&body=@drakos-amd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-10-04+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Alan Harrison, AMD+--+--     -   Derrick Owens, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Jason Ekstrand, Intel+--+--     -   Keith Packard, Valve+--+-- == Description+--+-- This extension provides an interface to query calibrated timestamps+-- obtained quasi simultaneously from two time domains.+--+-- == New Commands+--+-- -   'getCalibratedTimestampsEXT'+--+-- -   'getPhysicalDeviceCalibrateableTimeDomainsEXT'+--+-- == New Structures+--+-- -   'CalibratedTimestampInfoEXT'+--+-- == New Enums+--+-- -   'TimeDomainEXT'+--+-- == New Enum Constants+--+-- -   'EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME'+--+-- -   'EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT'+--+-- == Issues+--+-- 1) Is the device timestamp value returned in the same time domain as the+-- timestamp values written by+-- 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp'?+--+-- __RESOLVED__: Yes.+--+-- 2) What time domain is the host timestamp returned in?+--+-- __RESOLVED__: A query is provided to determine the calibrateable time+-- domains. The expected host time domain used on Windows is that of+-- QueryPerformanceCounter, and on Linux that of CLOCK_MONOTONIC.+--+-- 3) Should we support other time domain combinations than just one host+-- and the device time domain?+--+-- __RESOLVED__: Supporting that would need the application to query the+-- set of supported time domains, while supporting only one host and the+-- device time domain would only need a query for the host time domain+-- type. The proposed API chooses the general approach for the sake of+-- extensibility.+--+-- 4) Shouldn’t we use CLOCK_MONOTONIC_RAW instead of CLOCK_MONOTONIC?+--+-- __RESOLVED__: CLOCK_MONOTONIC is usable in a wider set of situations,+-- however, it is subject to NTP adjustments so some use cases may prefer+-- CLOCK_MONOTONIC_RAW. Thus this extension allows both to be exposed.+--+-- 5) How can the application extrapolate future device timestamp values+-- from the calibrated timestamp value?+--+-- __RESOLVED__:+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@timestampPeriod@+-- makes it possible to calculate future device timestamps as follows:+--+-- > futureTimestamp = calibratedTimestamp + deltaNanoseconds / timestampPeriod+--+-- 6) Can the host and device timestamp values drift apart over longer+-- periods of time?+--+-- __RESOLVED__: Yes, especially as some time domains by definition allow+-- for that to happen (e.g. CLOCK_MONOTONIC is subject to NTP adjustments).+-- Thus it’s recommended that applications re-calibrate from time to time.+--+-- 7) Should we add a query for reporting the maximum deviation of the+-- timestamp values returned by calibrated timestamp queries?+--+-- __RESOLVED__: A global query seems inappropriate and difficult to+-- enforce. However, it’s possible to return the maximum deviation any+-- single calibrated timestamp query can have by sampling one of the time+-- domains twice as follows:+--+-- > timestampX = timestampX_before = SampleTimeDomain(X)+-- > for each time domain Y != X+-- >     timestampY = SampleTimeDomain(Y)+-- > timestampX_after = SampleTimeDomain(X)+-- > maxDeviation = timestampX_after - timestampX_before+--+-- 8) Can the maximum deviation reported ever be zero?+--+-- __RESOLVED__: Unless the tick of each clock corresponding to the set of+-- time domains coincides and all clocks can literally be sampled+-- simutaneously, there isn’t really a possibility for the maximum+-- deviation to be zero, so by convention the maximum deviation is always+-- at least the maximum of the length of the ticks of the set of time+-- domains calibrated and thus can never be zero.+--+-- == Version History+--+-- -   Revision 1, 2018-10-04 (Daniel Rakos)+--+--     -   Internal revisions.+--+-- = See Also+--+-- 'CalibratedTimestampInfoEXT', 'TimeDomainEXT',+-- 'getCalibratedTimestampsEXT',+-- 'getPhysicalDeviceCalibrateableTimeDomainsEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_calibrated_timestamps Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_calibrated_timestamps  ( getPhysicalDeviceCalibrateableTimeDomainsEXT                                                        , getCalibratedTimestampsEXT                                                        , CalibratedTimestampInfoEXT(..)@@ -14,6 +179,8 @@                                                        , pattern EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME                                                        ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -25,15 +192,7 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Data.Vector (generateM)@@ -53,9 +212,9 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32) import Data.Word (Word64)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)@@ -227,7 +386,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetCalibratedTimestampsEXT is null" Nothing Nothing   let vkGetCalibratedTimestampsEXT' = mkVkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXTPtr   pPTimestampInfos <- ContT $ allocaBytesAligned @CalibratedTimestampInfoEXT ((Data.Vector.length (timestampInfos)) * 24) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPTimestampInfos `plusPtr` (24 * (i)) :: Ptr CalibratedTimestampInfoEXT) (e) . ($ ())) (timestampInfos)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPTimestampInfos `plusPtr` (24 * (i)) :: Ptr CalibratedTimestampInfoEXT) (e)) (timestampInfos)   pPTimestamps <- ContT $ bracket (callocBytes @Word64 ((fromIntegral ((fromIntegral (Data.Vector.length $ (timestampInfos)) :: Word32))) * 8)) free   pPMaxDeviation <- ContT $ bracket (callocBytes @Word64 8) free   r <- lift $ vkGetCalibratedTimestampsEXT' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (timestampInfos)) :: Word32)) (pPTimestampInfos) (pPTimestamps) (pPMaxDeviation)@@ -325,19 +484,19 @@ -- to be incrementing according to the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-timestampPeriod timestampPeriod> -- of the device.-pattern TIME_DOMAIN_DEVICE_EXT = TimeDomainEXT 0+pattern TIME_DOMAIN_DEVICE_EXT                    = TimeDomainEXT 0 -- | 'TIME_DOMAIN_CLOCK_MONOTONIC_EXT' specifies the CLOCK_MONOTONIC time -- domain available on POSIX platforms. Timestamp values in this time -- domain are in units of nanoseconds and are comparable with platform -- timestamp values captured using the POSIX clock_gettime API as computed -- by this example:-pattern TIME_DOMAIN_CLOCK_MONOTONIC_EXT = TimeDomainEXT 1+pattern TIME_DOMAIN_CLOCK_MONOTONIC_EXT           = TimeDomainEXT 1 -- | 'TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT' specifies the CLOCK_MONOTONIC_RAW -- time domain available on POSIX platforms. Timestamp values in this time -- domain are in units of nanoseconds and are comparable with platform -- timestamp values captured using the POSIX clock_gettime API as computed -- by this example:-pattern TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = TimeDomainEXT 2+pattern TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT       = TimeDomainEXT 2 -- | 'TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT' specifies the performance -- counter (QPC) time domain available on Windows. Timestamp values in this -- time domain are in the same units as those provided by the Windows@@ -349,24 +508,29 @@              TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT,              TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT :: TimeDomainEXT #-} +conNameTimeDomainEXT :: String+conNameTimeDomainEXT = "TimeDomainEXT"++enumPrefixTimeDomainEXT :: String+enumPrefixTimeDomainEXT = "TIME_DOMAIN_"++showTableTimeDomainEXT :: [(TimeDomainEXT, String)]+showTableTimeDomainEXT =+  [ (TIME_DOMAIN_DEVICE_EXT                   , "DEVICE_EXT")+  , (TIME_DOMAIN_CLOCK_MONOTONIC_EXT          , "CLOCK_MONOTONIC_EXT")+  , (TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT      , "CLOCK_MONOTONIC_RAW_EXT")+  , (TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT, "QUERY_PERFORMANCE_COUNTER_EXT")+  ]+ instance Show TimeDomainEXT where-  showsPrec p = \case-    TIME_DOMAIN_DEVICE_EXT -> showString "TIME_DOMAIN_DEVICE_EXT"-    TIME_DOMAIN_CLOCK_MONOTONIC_EXT -> showString "TIME_DOMAIN_CLOCK_MONOTONIC_EXT"-    TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT -> showString "TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT"-    TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT -> showString "TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT"-    TimeDomainEXT x -> showParen (p >= 11) (showString "TimeDomainEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixTimeDomainEXT+                            showTableTimeDomainEXT+                            conNameTimeDomainEXT+                            (\(TimeDomainEXT x) -> x)+                            (showsPrec 11)  instance Read TimeDomainEXT where-  readPrec = parens (choose [("TIME_DOMAIN_DEVICE_EXT", pure TIME_DOMAIN_DEVICE_EXT)-                            , ("TIME_DOMAIN_CLOCK_MONOTONIC_EXT", pure TIME_DOMAIN_CLOCK_MONOTONIC_EXT)-                            , ("TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT", pure TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT)-                            , ("TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT", pure TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "TimeDomainEXT")-                       v <- step readPrec-                       pure (TimeDomainEXT v)))+  readPrec = enumReadPrec enumPrefixTimeDomainEXT showTableTimeDomainEXT conNameTimeDomainEXT TimeDomainEXT   type EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs-boot view
@@ -1,4 +1,169 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_calibrated_timestamps - device extension+--+-- == VK_EXT_calibrated_timestamps+--+-- [__Name String__]+--     @VK_EXT_calibrated_timestamps@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     185+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Daniel Rakos+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_calibrated_timestamps:%20&body=@drakos-amd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-10-04+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Alan Harrison, AMD+--+--     -   Derrick Owens, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Jason Ekstrand, Intel+--+--     -   Keith Packard, Valve+--+-- == Description+--+-- This extension provides an interface to query calibrated timestamps+-- obtained quasi simultaneously from two time domains.+--+-- == New Commands+--+-- -   'getCalibratedTimestampsEXT'+--+-- -   'getPhysicalDeviceCalibrateableTimeDomainsEXT'+--+-- == New Structures+--+-- -   'CalibratedTimestampInfoEXT'+--+-- == New Enums+--+-- -   'TimeDomainEXT'+--+-- == New Enum Constants+--+-- -   'EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME'+--+-- -   'EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT'+--+-- == Issues+--+-- 1) Is the device timestamp value returned in the same time domain as the+-- timestamp values written by+-- 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp'?+--+-- __RESOLVED__: Yes.+--+-- 2) What time domain is the host timestamp returned in?+--+-- __RESOLVED__: A query is provided to determine the calibrateable time+-- domains. The expected host time domain used on Windows is that of+-- QueryPerformanceCounter, and on Linux that of CLOCK_MONOTONIC.+--+-- 3) Should we support other time domain combinations than just one host+-- and the device time domain?+--+-- __RESOLVED__: Supporting that would need the application to query the+-- set of supported time domains, while supporting only one host and the+-- device time domain would only need a query for the host time domain+-- type. The proposed API chooses the general approach for the sake of+-- extensibility.+--+-- 4) Shouldn’t we use CLOCK_MONOTONIC_RAW instead of CLOCK_MONOTONIC?+--+-- __RESOLVED__: CLOCK_MONOTONIC is usable in a wider set of situations,+-- however, it is subject to NTP adjustments so some use cases may prefer+-- CLOCK_MONOTONIC_RAW. Thus this extension allows both to be exposed.+--+-- 5) How can the application extrapolate future device timestamp values+-- from the calibrated timestamp value?+--+-- __RESOLVED__:+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@timestampPeriod@+-- makes it possible to calculate future device timestamps as follows:+--+-- > futureTimestamp = calibratedTimestamp + deltaNanoseconds / timestampPeriod+--+-- 6) Can the host and device timestamp values drift apart over longer+-- periods of time?+--+-- __RESOLVED__: Yes, especially as some time domains by definition allow+-- for that to happen (e.g. CLOCK_MONOTONIC is subject to NTP adjustments).+-- Thus it’s recommended that applications re-calibrate from time to time.+--+-- 7) Should we add a query for reporting the maximum deviation of the+-- timestamp values returned by calibrated timestamp queries?+--+-- __RESOLVED__: A global query seems inappropriate and difficult to+-- enforce. However, it’s possible to return the maximum deviation any+-- single calibrated timestamp query can have by sampling one of the time+-- domains twice as follows:+--+-- > timestampX = timestampX_before = SampleTimeDomain(X)+-- > for each time domain Y != X+-- >     timestampY = SampleTimeDomain(Y)+-- > timestampX_after = SampleTimeDomain(X)+-- > maxDeviation = timestampX_after - timestampX_before+--+-- 8) Can the maximum deviation reported ever be zero?+--+-- __RESOLVED__: Unless the tick of each clock corresponding to the set of+-- time domains coincides and all clocks can literally be sampled+-- simutaneously, there isn’t really a possibility for the maximum+-- deviation to be zero, so by convention the maximum deviation is always+-- at least the maximum of the length of the ticks of the set of time+-- domains calibrated and thus can never be zero.+--+-- == Version History+--+-- -   Revision 1, 2018-10-04 (Daniel Rakos)+--+--     -   Internal revisions.+--+-- = See Also+--+-- 'CalibratedTimestampInfoEXT', 'TimeDomainEXT',+-- 'getCalibratedTimestampsEXT',+-- 'getPhysicalDeviceCalibrateableTimeDomainsEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_calibrated_timestamps Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_calibrated_timestamps  ( CalibratedTimestampInfoEXT                                                        , TimeDomainEXT                                                        ) where
src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs view
@@ -1,20 +1,183 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_conditional_rendering - device extension+--+-- == VK_EXT_conditional_rendering+--+-- [__Name String__]+--     @VK_EXT_conditional_rendering@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     82+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Vikram Kushwaha+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_conditional_rendering:%20&body=@vkushwaha%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-05-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Vikram Kushwaha, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Jesse Hall, Google+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Piers Daniell, NVIDIA+--+--     -   Stuart Smith, Imagination Technologies+--+-- == Description+--+-- This extension allows the execution of one or more rendering commands to+-- be conditional on a value in buffer memory. This may help an application+-- reduce the latency by conditionally discarding rendering commands+-- without application intervention. The conditional rendering commands are+-- limited to draws, compute dispatches and clearing attachments within a+-- conditional rendering block.+--+-- == New Commands+--+-- -   'cmdBeginConditionalRenderingEXT'+--+-- -   'cmdEndConditionalRenderingEXT'+--+-- == New Structures+--+-- -   'ConditionalRenderingBeginInfoEXT'+--+-- -   Extending+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':+--+--     -   'CommandBufferInheritanceConditionalRenderingInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceConditionalRenderingFeaturesEXT'+--+-- == New Enums+--+-- -   'ConditionalRenderingFlagBitsEXT'+--+-- == New Bitmasks+--+-- -   'ConditionalRenderingFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_CONDITIONAL_RENDERING_EXTENSION_NAME'+--+-- -   'EXT_CONDITIONAL_RENDERING_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT'+--+-- == Issues+--+-- 1) Should conditional rendering affect copy and blit commands?+--+-- RESOLVED: Conditional rendering should not affect copies and blits.+--+-- 2) Should secondary command buffers be allowed to execute while+-- conditional rendering is active in the primary command buffer?+--+-- RESOLVED: The rendering commands in secondary command buffer will be+-- affected by an active conditional rendering in primary command buffer if+-- the @conditionalRenderingEnable@ is set to+-- 'Vulkan.Core10.FundamentalTypes.TRUE'. Conditional rendering /must/ not+-- be active in the primary command buffer if @conditionalRenderingEnable@+-- is 'Vulkan.Core10.FundamentalTypes.FALSE'.+--+-- == Examples+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2018-04-19 (Vikram Kushwaha)+--+--     -   First Version+--+-- -   Revision 2, 2018-05-21 (Vikram Kushwaha)+--+--     -   Add new pipeline stage, access flags and limit conditional+--         rendering to a subpass or entire renderpass.+--+-- = See Also+--+-- 'CommandBufferInheritanceConditionalRenderingInfoEXT',+-- 'ConditionalRenderingBeginInfoEXT', 'ConditionalRenderingFlagBitsEXT',+-- 'ConditionalRenderingFlagsEXT',+-- 'PhysicalDeviceConditionalRenderingFeaturesEXT',+-- 'cmdBeginConditionalRenderingEXT', 'cmdEndConditionalRenderingEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conditional_rendering Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_conditional_rendering  ( cmdBeginConditionalRenderingEXT                                                        , cmdUseConditionalRenderingEXT                                                        , cmdEndConditionalRenderingEXT                                                        , ConditionalRenderingBeginInfoEXT(..)                                                        , CommandBufferInheritanceConditionalRenderingInfoEXT(..)                                                        , PhysicalDeviceConditionalRenderingFeaturesEXT(..)+                                                       , ConditionalRenderingFlagsEXT                                                        , ConditionalRenderingFlagBitsEXT( CONDITIONAL_RENDERING_INVERTED_BIT_EXT                                                                                         , ..                                                                                         )-                                                       , ConditionalRenderingFlagsEXT                                                        , EXT_CONDITIONAL_RENDERING_SPEC_VERSION                                                        , pattern EXT_CONDITIONAL_RENDERING_SPEC_VERSION                                                        , EXT_CONDITIONAL_RENDERING_EXTENSION_NAME                                                        , pattern EXT_CONDITIONAL_RENDERING_EXTENSION_NAME                                                        ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -22,15 +185,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -48,7 +204,7 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.Core10.FundamentalTypes (bool32ToBool)@@ -489,6 +645,8 @@            zero  +type ConditionalRenderingFlagsEXT = ConditionalRenderingFlagBitsEXT+ -- | VkConditionalRenderingFlagBitsEXT - Specify the behavior of conditional -- rendering --@@ -505,20 +663,27 @@ -- discarded. pattern CONDITIONAL_RENDERING_INVERTED_BIT_EXT = ConditionalRenderingFlagBitsEXT 0x00000001 -type ConditionalRenderingFlagsEXT = ConditionalRenderingFlagBitsEXT+conNameConditionalRenderingFlagBitsEXT :: String+conNameConditionalRenderingFlagBitsEXT = "ConditionalRenderingFlagBitsEXT" +enumPrefixConditionalRenderingFlagBitsEXT :: String+enumPrefixConditionalRenderingFlagBitsEXT = "CONDITIONAL_RENDERING_INVERTED_BIT_EXT"++showTableConditionalRenderingFlagBitsEXT :: [(ConditionalRenderingFlagBitsEXT, String)]+showTableConditionalRenderingFlagBitsEXT = [(CONDITIONAL_RENDERING_INVERTED_BIT_EXT, "")]+ instance Show ConditionalRenderingFlagBitsEXT where-  showsPrec p = \case-    CONDITIONAL_RENDERING_INVERTED_BIT_EXT -> showString "CONDITIONAL_RENDERING_INVERTED_BIT_EXT"-    ConditionalRenderingFlagBitsEXT x -> showParen (p >= 11) (showString "ConditionalRenderingFlagBitsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixConditionalRenderingFlagBitsEXT+                            showTableConditionalRenderingFlagBitsEXT+                            conNameConditionalRenderingFlagBitsEXT+                            (\(ConditionalRenderingFlagBitsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ConditionalRenderingFlagBitsEXT where-  readPrec = parens (choose [("CONDITIONAL_RENDERING_INVERTED_BIT_EXT", pure CONDITIONAL_RENDERING_INVERTED_BIT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ConditionalRenderingFlagBitsEXT")-                       v <- step readPrec-                       pure (ConditionalRenderingFlagBitsEXT v)))+  readPrec = enumReadPrec enumPrefixConditionalRenderingFlagBitsEXT+                          showTableConditionalRenderingFlagBitsEXT+                          conNameConditionalRenderingFlagBitsEXT+                          ConditionalRenderingFlagBitsEXT   type EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2
src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs-boot view
@@ -1,4 +1,165 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_conditional_rendering - device extension+--+-- == VK_EXT_conditional_rendering+--+-- [__Name String__]+--     @VK_EXT_conditional_rendering@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     82+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Vikram Kushwaha+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_conditional_rendering:%20&body=@vkushwaha%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-05-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Vikram Kushwaha, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Jesse Hall, Google+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Piers Daniell, NVIDIA+--+--     -   Stuart Smith, Imagination Technologies+--+-- == Description+--+-- This extension allows the execution of one or more rendering commands to+-- be conditional on a value in buffer memory. This may help an application+-- reduce the latency by conditionally discarding rendering commands+-- without application intervention. The conditional rendering commands are+-- limited to draws, compute dispatches and clearing attachments within a+-- conditional rendering block.+--+-- == New Commands+--+-- -   'cmdBeginConditionalRenderingEXT'+--+-- -   'cmdEndConditionalRenderingEXT'+--+-- == New Structures+--+-- -   'ConditionalRenderingBeginInfoEXT'+--+-- -   Extending+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':+--+--     -   'CommandBufferInheritanceConditionalRenderingInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceConditionalRenderingFeaturesEXT'+--+-- == New Enums+--+-- -   'ConditionalRenderingFlagBitsEXT'+--+-- == New Bitmasks+--+-- -   'ConditionalRenderingFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_CONDITIONAL_RENDERING_EXTENSION_NAME'+--+-- -   'EXT_CONDITIONAL_RENDERING_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT'+--+-- == Issues+--+-- 1) Should conditional rendering affect copy and blit commands?+--+-- RESOLVED: Conditional rendering should not affect copies and blits.+--+-- 2) Should secondary command buffers be allowed to execute while+-- conditional rendering is active in the primary command buffer?+--+-- RESOLVED: The rendering commands in secondary command buffer will be+-- affected by an active conditional rendering in primary command buffer if+-- the @conditionalRenderingEnable@ is set to+-- 'Vulkan.Core10.FundamentalTypes.TRUE'. Conditional rendering /must/ not+-- be active in the primary command buffer if @conditionalRenderingEnable@+-- is 'Vulkan.Core10.FundamentalTypes.FALSE'.+--+-- == Examples+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2018-04-19 (Vikram Kushwaha)+--+--     -   First Version+--+-- -   Revision 2, 2018-05-21 (Vikram Kushwaha)+--+--     -   Add new pipeline stage, access flags and limit conditional+--         rendering to a subpass or entire renderpass.+--+-- = See Also+--+-- 'CommandBufferInheritanceConditionalRenderingInfoEXT',+-- 'ConditionalRenderingBeginInfoEXT', 'ConditionalRenderingFlagBitsEXT',+-- 'ConditionalRenderingFlagsEXT',+-- 'PhysicalDeviceConditionalRenderingFeaturesEXT',+-- 'cmdBeginConditionalRenderingEXT', 'cmdEndConditionalRenderingEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conditional_rendering Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_conditional_rendering  ( CommandBufferInheritanceConditionalRenderingInfoEXT                                                        , ConditionalRenderingBeginInfoEXT                                                        , PhysicalDeviceConditionalRenderingFeaturesEXT
src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs view
@@ -1,4 +1,156 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_conservative_rasterization - device extension+--+-- == VK_EXT_conservative_rasterization+--+-- [__Name String__]+--     @VK_EXT_conservative_rasterization@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     102+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_conservative_rasterization:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-06-09+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_fragment_fully_covered.html SPV_EXT_fragment_fully_covered>+--         if the+--         'PhysicalDeviceConservativeRasterizationPropertiesEXT'::@fullyCoveredFragmentShaderInputVariable@+--         feature is used.+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_post_depth_coverage.html SPV_KHR_post_depth_coverage>if+--         the+--         'PhysicalDeviceConservativeRasterizationPropertiesEXT'::@conservativeRasterizationPostDepthCoverage@+--         feature is used.+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_underestimation.txt GL_NV_conservative_raster_underestimation>+--         if the+--         'PhysicalDeviceConservativeRasterizationPropertiesEXT'::@fullyCoveredFragmentShaderInputVariable@+--         feature is used.+--+-- [__Contributors__]+--+--     -   Daniel Koch, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Slawomir Grajewski, Intel+--+--     -   Stu Smith, Imagination Technologies+--+-- == Description+--+-- This extension adds a new rasterization mode called conservative+-- rasterization. There are two modes of conservative rasterization;+-- overestimation and underestimation.+--+-- When overestimation is enabled, if any part of the primitive, including+-- its edges, covers any part of the rectangular pixel area, including its+-- sides, then a fragment is generated with all coverage samples turned on.+-- This extension allows for some variation in implementations by+-- accounting for differences in overestimation, where the generating+-- primitive size is increased at each of its edges by some sub-pixel+-- amount to further increase conservative pixel coverage. Implementations+-- can allow the application to specify an extra overestimation beyond the+-- base overestimation the implementation already does. It also allows+-- implementations to either cull degenerate primitives or rasterize them.+--+-- When underestimation is enabled, fragments are only generated if the+-- rectangular pixel area is fully covered by the generating primitive. If+-- supported by the implementation, when a pixel rectangle is fully covered+-- the fragment shader input variable builtin called FullyCoveredEXT is set+-- to true. The shader variable works in either overestimation or+-- underestimation mode.+--+-- Implementations can process degenerate triangles and lines by either+-- discarding them or generating conservative fragments for them.+-- Degenerate triangles are those that end up with zero area after the+-- rasterizer quantizes them to the fixed-point pixel grid. Degenerate+-- lines are those with zero length after quantization.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceConservativeRasterizationPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':+--+--     -   'PipelineRasterizationConservativeStateCreateInfoEXT'+--+-- == New Enums+--+-- -   'ConservativeRasterizationModeEXT'+--+-- == New Bitmasks+--+-- -   'PipelineRasterizationConservativeStateCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME'+--+-- -   'EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1.1, 2020-09-06 (Piers Daniell)+--+--     -   Add missing SPIR-V and GLSL dependencies.+--+-- -   Revision 1, 2017-08-28 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'ConservativeRasterizationModeEXT',+-- 'PhysicalDeviceConservativeRasterizationPropertiesEXT',+-- 'PipelineRasterizationConservativeStateCreateFlagsEXT',+-- 'PipelineRasterizationConservativeStateCreateInfoEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conservative_rasterization Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_conservative_rasterization  ( PhysicalDeviceConservativeRasterizationPropertiesEXT(..)                                                             , PipelineRasterizationConservativeStateCreateInfoEXT(..)                                                             , PipelineRasterizationConservativeStateCreateFlagsEXT(..)@@ -13,19 +165,14 @@                                                             , pattern EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME                                                             ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import GHC.Show (showsPrec) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Data.String (IsString)@@ -40,7 +187,7 @@ import Data.Int (Int32) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Vulkan.Core10.FundamentalTypes (bool32ToBool) import Vulkan.Core10.FundamentalTypes (boolToBool32)@@ -322,17 +469,28 @@   +conNamePipelineRasterizationConservativeStateCreateFlagsEXT :: String+conNamePipelineRasterizationConservativeStateCreateFlagsEXT = "PipelineRasterizationConservativeStateCreateFlagsEXT"++enumPrefixPipelineRasterizationConservativeStateCreateFlagsEXT :: String+enumPrefixPipelineRasterizationConservativeStateCreateFlagsEXT = ""++showTablePipelineRasterizationConservativeStateCreateFlagsEXT+  :: [(PipelineRasterizationConservativeStateCreateFlagsEXT, String)]+showTablePipelineRasterizationConservativeStateCreateFlagsEXT = []+ instance Show PipelineRasterizationConservativeStateCreateFlagsEXT where-  showsPrec p = \case-    PipelineRasterizationConservativeStateCreateFlagsEXT x -> showParen (p >= 11) (showString "PipelineRasterizationConservativeStateCreateFlagsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineRasterizationConservativeStateCreateFlagsEXT+                            showTablePipelineRasterizationConservativeStateCreateFlagsEXT+                            conNamePipelineRasterizationConservativeStateCreateFlagsEXT+                            (\(PipelineRasterizationConservativeStateCreateFlagsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineRasterizationConservativeStateCreateFlagsEXT where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineRasterizationConservativeStateCreateFlagsEXT")-                       v <- step readPrec-                       pure (PipelineRasterizationConservativeStateCreateFlagsEXT v)))+  readPrec = enumReadPrec enumPrefixPipelineRasterizationConservativeStateCreateFlagsEXT+                          showTablePipelineRasterizationConservativeStateCreateFlagsEXT+                          conNamePipelineRasterizationConservativeStateCreateFlagsEXT+                          PipelineRasterizationConservativeStateCreateFlagsEXT   -- | VkConservativeRasterizationModeEXT - Specify the conservative@@ -347,10 +505,10 @@ -- | 'CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT' specifies that -- conservative rasterization is disabled and rasterization proceeds as -- normal.-pattern CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = ConservativeRasterizationModeEXT 0+pattern CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT      = ConservativeRasterizationModeEXT 0 -- | 'CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT' specifies that -- conservative rasterization is enabled in overestimation mode.-pattern CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = ConservativeRasterizationModeEXT 1+pattern CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT  = ConservativeRasterizationModeEXT 1 -- | 'CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT' specifies that -- conservative rasterization is enabled in underestimation mode. pattern CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = ConservativeRasterizationModeEXT 2@@ -358,22 +516,31 @@              CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,              CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT :: ConservativeRasterizationModeEXT #-} +conNameConservativeRasterizationModeEXT :: String+conNameConservativeRasterizationModeEXT = "ConservativeRasterizationModeEXT"++enumPrefixConservativeRasterizationModeEXT :: String+enumPrefixConservativeRasterizationModeEXT = "CONSERVATIVE_RASTERIZATION_MODE_"++showTableConservativeRasterizationModeEXT :: [(ConservativeRasterizationModeEXT, String)]+showTableConservativeRasterizationModeEXT =+  [ (CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT     , "DISABLED_EXT")+  , (CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT , "OVERESTIMATE_EXT")+  , (CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT, "UNDERESTIMATE_EXT")+  ]+ instance Show ConservativeRasterizationModeEXT where-  showsPrec p = \case-    CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT -> showString "CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT"-    CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT -> showString "CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT"-    CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT -> showString "CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT"-    ConservativeRasterizationModeEXT x -> showParen (p >= 11) (showString "ConservativeRasterizationModeEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixConservativeRasterizationModeEXT+                            showTableConservativeRasterizationModeEXT+                            conNameConservativeRasterizationModeEXT+                            (\(ConservativeRasterizationModeEXT x) -> x)+                            (showsPrec 11)  instance Read ConservativeRasterizationModeEXT where-  readPrec = parens (choose [("CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT", pure CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT)-                            , ("CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT", pure CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT)-                            , ("CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT", pure CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ConservativeRasterizationModeEXT")-                       v <- step readPrec-                       pure (ConservativeRasterizationModeEXT v)))+  readPrec = enumReadPrec enumPrefixConservativeRasterizationModeEXT+                          showTableConservativeRasterizationModeEXT+                          conNameConservativeRasterizationModeEXT+                          ConservativeRasterizationModeEXT   type EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs-boot view
@@ -1,4 +1,156 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_conservative_rasterization - device extension+--+-- == VK_EXT_conservative_rasterization+--+-- [__Name String__]+--     @VK_EXT_conservative_rasterization@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     102+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_conservative_rasterization:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-06-09+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_fragment_fully_covered.html SPV_EXT_fragment_fully_covered>+--         if the+--         'PhysicalDeviceConservativeRasterizationPropertiesEXT'::@fullyCoveredFragmentShaderInputVariable@+--         feature is used.+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_post_depth_coverage.html SPV_KHR_post_depth_coverage>if+--         the+--         'PhysicalDeviceConservativeRasterizationPropertiesEXT'::@conservativeRasterizationPostDepthCoverage@+--         feature is used.+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conservative_raster_underestimation.txt GL_NV_conservative_raster_underestimation>+--         if the+--         'PhysicalDeviceConservativeRasterizationPropertiesEXT'::@fullyCoveredFragmentShaderInputVariable@+--         feature is used.+--+-- [__Contributors__]+--+--     -   Daniel Koch, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Slawomir Grajewski, Intel+--+--     -   Stu Smith, Imagination Technologies+--+-- == Description+--+-- This extension adds a new rasterization mode called conservative+-- rasterization. There are two modes of conservative rasterization;+-- overestimation and underestimation.+--+-- When overestimation is enabled, if any part of the primitive, including+-- its edges, covers any part of the rectangular pixel area, including its+-- sides, then a fragment is generated with all coverage samples turned on.+-- This extension allows for some variation in implementations by+-- accounting for differences in overestimation, where the generating+-- primitive size is increased at each of its edges by some sub-pixel+-- amount to further increase conservative pixel coverage. Implementations+-- can allow the application to specify an extra overestimation beyond the+-- base overestimation the implementation already does. It also allows+-- implementations to either cull degenerate primitives or rasterize them.+--+-- When underestimation is enabled, fragments are only generated if the+-- rectangular pixel area is fully covered by the generating primitive. If+-- supported by the implementation, when a pixel rectangle is fully covered+-- the fragment shader input variable builtin called FullyCoveredEXT is set+-- to true. The shader variable works in either overestimation or+-- underestimation mode.+--+-- Implementations can process degenerate triangles and lines by either+-- discarding them or generating conservative fragments for them.+-- Degenerate triangles are those that end up with zero area after the+-- rasterizer quantizes them to the fixed-point pixel grid. Degenerate+-- lines are those with zero length after quantization.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceConservativeRasterizationPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':+--+--     -   'PipelineRasterizationConservativeStateCreateInfoEXT'+--+-- == New Enums+--+-- -   'ConservativeRasterizationModeEXT'+--+-- == New Bitmasks+--+-- -   'PipelineRasterizationConservativeStateCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME'+--+-- -   'EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1.1, 2020-09-06 (Piers Daniell)+--+--     -   Add missing SPIR-V and GLSL dependencies.+--+-- -   Revision 1, 2017-08-28 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'ConservativeRasterizationModeEXT',+-- 'PhysicalDeviceConservativeRasterizationPropertiesEXT',+-- 'PipelineRasterizationConservativeStateCreateFlagsEXT',+-- 'PipelineRasterizationConservativeStateCreateInfoEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conservative_rasterization Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_conservative_rasterization  ( PhysicalDeviceConservativeRasterizationPropertiesEXT                                                             , PipelineRasterizationConservativeStateCreateInfoEXT                                                             ) where
src/Vulkan/Extensions/VK_EXT_custom_border_color.hs view
@@ -1,4 +1,249 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_custom_border_color - device extension+--+-- == VK_EXT_custom_border_color+--+-- [__Name String__]+--     @VK_EXT_custom_border_color@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     288+--+-- [__Revision__]+--     12+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Liam Middlebrook+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_custom_border_color:%20&body=@liam-middlebrook%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-04-16+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Joshua Ashton, Valve+--+--     -   Hans-Kristian Arntzen, Valve+--+--     -   Philip Rebohle, Valve+--+--     -   Liam Middlebrook, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Tobias Hector, AMD+--+--     -   Jason Ekstrand, Intel+--+--     -   Spencer Fricke, Samsung Electronics+--+--     -   Graeme Leese, Broadcom+--+--     -   Jesse Hall, Google+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Tom Olson, ARM+--+--     -   Stuart Smith, Imagination Technologies+--+--     -   Donald Scorgie, Imagination Technologies+--+--     -   Alex Walters, Imagination Technologies+--+--     -   Peter Quayle, Imagination Technologies+--+-- == Description+--+-- This extension provides cross-vendor functionality to specify a custom+-- border color for use when the sampler address mode+-- 'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER'+-- is used.+--+-- To create a sampler which uses a custom border color set+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo'::@borderColor@ to one of:+--+-- -   'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT'+--+-- -   'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT'+--+-- When 'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT' or+-- 'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT' is used,+-- applications must provide a 'SamplerCustomBorderColorCreateInfoEXT' in+-- the pNext chain for 'Vulkan.Core10.Sampler.SamplerCreateInfo'.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceCustomBorderColorFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceCustomBorderColorPropertiesEXT'+--+-- -   Extending 'Vulkan.Core10.Sampler.SamplerCreateInfo':+--+--     -   'SamplerCustomBorderColorCreateInfoEXT'+--+-- == New Enum Constants+--+-- -   'EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME'+--+-- -   'EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.BorderColor.BorderColor':+--+--     -   'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT'+--+--     -   'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT'+--+-- == Issues+--+-- 1) Should VkClearColorValue be used for the border color value, or+-- should we have our own struct\/union? Do we need to specify the type of+-- the input values for the components? This is more of a concern if+-- VkClearColorValue is used here because it provides a union of+-- float,int,uint types.+--+-- RESOLVED: Will re-use existing VkClearColorValue structure in order to+-- easily take advantage of float,int,uint borderColor types.+--+-- 2) For hardware which supports a limited number of border colors what+-- happens if that number is exceeded? Should this be handled by the driver+-- unbeknownst to the application? In Revision 1 we had solved this issue+-- using a new Object type, however that may have lead to additional system+-- resource consumption which would otherwise not be required.+--+-- RESOLVED: Added+-- 'PhysicalDeviceCustomBorderColorPropertiesEXT'::@maxCustomBorderColorSamplers@+-- for tracking implementation-specific limit, and Valid Usage statement+-- handling overflow.+--+-- 3) Should this be supported for immutable samplers at all, or by a+-- feature bit? Some implementations may not be able to support custom+-- border colors on immutable samplers — is it worthwhile enabling this to+-- work on them for implementations that can support it, or forbidding it+-- entirely.+--+-- RESOLVED: Samplers created with a custom border color are forbidden from+-- being immutable. This resolves concerns for implementations where the+-- custom border color is an index to a LUT instead of being directly+-- embedded into sampler state.+--+-- 4) Should UINT and SINT (unsigned integer and signed integer) border+-- color types be separated or should they be combined into one generic INT+-- (integer) type?+--+-- RESOLVED: Separating these doesn’t make much sense as the existing fixed+-- border color types don’t have this distinction, and there is no reason+-- in hardware to do so. This separation would also create unnecessary work+-- and considerations for the application.+--+-- == Version History+--+-- -   Revision 1, 2019-10-10 (Joshua Ashton)+--+--     -   Internal revisions.+--+-- -   Revision 2, 2019-10-11 (Liam Middlebrook)+--+--     -   Remove VkCustomBorderColor object and associated functions+--+--     -   Add issues concerning HW limitations for custom border color+--         count+--+-- -   Revision 3, 2019-10-12 (Joshua Ashton)+--+--     -   Re-expose the limits for the maximum number of unique border+--         colors+--+--     -   Add extra details about border color tracking+--+--     -   Fix typos+--+-- -   Revision 4, 2019-10-12 (Joshua Ashton)+--+--     -   Changed maxUniqueCustomBorderColors to a uint32_t from a+--         VkDeviceSize+--+-- -   Revision 5, 2019-10-14 (Liam Middlebrook)+--+--     -   Added features bit+--+-- -   Revision 6, 2019-10-15 (Joshua Ashton)+--+--     -   Type-ize VK_BORDER_COLOR_CUSTOM+--+--     -   Fix const-ness on pNext of+--         VkSamplerCustomBorderColorCreateInfoEXT+--+-- -   Revision 7, 2019-11-26 (Liam Middlebrook)+--+--     -   Renamed maxUniqueCustomBorderColors to maxCustomBorderColors+--+-- -   Revision 8, 2019-11-29 (Joshua Ashton)+--+--     -   Renamed borderColor member of+--         VkSamplerCustomBorderColorCreateInfoEXT to customBorderColor+--+-- -   Revision 9, 2020-02-19 (Joshua Ashton)+--+--     -   Renamed maxCustomBorderColors to maxCustomBorderColorSamplers+--+-- -   Revision 10, 2020-02-21 (Joshua Ashton)+--+--     -   Added format to VkSamplerCustomBorderColorCreateInfoEXT and+--         feature bit+--+-- -   Revision 11, 2020-04-07 (Joshua Ashton)+--+--     -   Dropped UINT\/SINT border color differences, consolidated types+--+-- -   Revision 12, 2020-04-16 (Joshua Ashton)+--+--     -   Renamed VK_BORDER_COLOR_CUSTOM_FLOAT_EXT to+--         VK_BORDER_COLOR_FLOAT_CUSTOM_EXT for consistency+--+-- = See Also+--+-- 'PhysicalDeviceCustomBorderColorFeaturesEXT',+-- 'PhysicalDeviceCustomBorderColorPropertiesEXT',+-- 'SamplerCustomBorderColorCreateInfoEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_border_color Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_custom_border_color  ( SamplerCustomBorderColorCreateInfoEXT(..)                                                      , PhysicalDeviceCustomBorderColorPropertiesEXT(..)                                                      , PhysicalDeviceCustomBorderColorFeaturesEXT(..)
src/Vulkan/Extensions/VK_EXT_custom_border_color.hs-boot view
@@ -1,4 +1,249 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_custom_border_color - device extension+--+-- == VK_EXT_custom_border_color+--+-- [__Name String__]+--     @VK_EXT_custom_border_color@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     288+--+-- [__Revision__]+--     12+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Liam Middlebrook+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_custom_border_color:%20&body=@liam-middlebrook%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-04-16+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Joshua Ashton, Valve+--+--     -   Hans-Kristian Arntzen, Valve+--+--     -   Philip Rebohle, Valve+--+--     -   Liam Middlebrook, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Tobias Hector, AMD+--+--     -   Jason Ekstrand, Intel+--+--     -   Spencer Fricke, Samsung Electronics+--+--     -   Graeme Leese, Broadcom+--+--     -   Jesse Hall, Google+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Tom Olson, ARM+--+--     -   Stuart Smith, Imagination Technologies+--+--     -   Donald Scorgie, Imagination Technologies+--+--     -   Alex Walters, Imagination Technologies+--+--     -   Peter Quayle, Imagination Technologies+--+-- == Description+--+-- This extension provides cross-vendor functionality to specify a custom+-- border color for use when the sampler address mode+-- 'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER'+-- is used.+--+-- To create a sampler which uses a custom border color set+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo'::@borderColor@ to one of:+--+-- -   'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT'+--+-- -   'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT'+--+-- When 'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT' or+-- 'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT' is used,+-- applications must provide a 'SamplerCustomBorderColorCreateInfoEXT' in+-- the pNext chain for 'Vulkan.Core10.Sampler.SamplerCreateInfo'.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceCustomBorderColorFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceCustomBorderColorPropertiesEXT'+--+-- -   Extending 'Vulkan.Core10.Sampler.SamplerCreateInfo':+--+--     -   'SamplerCustomBorderColorCreateInfoEXT'+--+-- == New Enum Constants+--+-- -   'EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME'+--+-- -   'EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.BorderColor.BorderColor':+--+--     -   'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT'+--+--     -   'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT'+--+-- == Issues+--+-- 1) Should VkClearColorValue be used for the border color value, or+-- should we have our own struct\/union? Do we need to specify the type of+-- the input values for the components? This is more of a concern if+-- VkClearColorValue is used here because it provides a union of+-- float,int,uint types.+--+-- RESOLVED: Will re-use existing VkClearColorValue structure in order to+-- easily take advantage of float,int,uint borderColor types.+--+-- 2) For hardware which supports a limited number of border colors what+-- happens if that number is exceeded? Should this be handled by the driver+-- unbeknownst to the application? In Revision 1 we had solved this issue+-- using a new Object type, however that may have lead to additional system+-- resource consumption which would otherwise not be required.+--+-- RESOLVED: Added+-- 'PhysicalDeviceCustomBorderColorPropertiesEXT'::@maxCustomBorderColorSamplers@+-- for tracking implementation-specific limit, and Valid Usage statement+-- handling overflow.+--+-- 3) Should this be supported for immutable samplers at all, or by a+-- feature bit? Some implementations may not be able to support custom+-- border colors on immutable samplers — is it worthwhile enabling this to+-- work on them for implementations that can support it, or forbidding it+-- entirely.+--+-- RESOLVED: Samplers created with a custom border color are forbidden from+-- being immutable. This resolves concerns for implementations where the+-- custom border color is an index to a LUT instead of being directly+-- embedded into sampler state.+--+-- 4) Should UINT and SINT (unsigned integer and signed integer) border+-- color types be separated or should they be combined into one generic INT+-- (integer) type?+--+-- RESOLVED: Separating these doesn’t make much sense as the existing fixed+-- border color types don’t have this distinction, and there is no reason+-- in hardware to do so. This separation would also create unnecessary work+-- and considerations for the application.+--+-- == Version History+--+-- -   Revision 1, 2019-10-10 (Joshua Ashton)+--+--     -   Internal revisions.+--+-- -   Revision 2, 2019-10-11 (Liam Middlebrook)+--+--     -   Remove VkCustomBorderColor object and associated functions+--+--     -   Add issues concerning HW limitations for custom border color+--         count+--+-- -   Revision 3, 2019-10-12 (Joshua Ashton)+--+--     -   Re-expose the limits for the maximum number of unique border+--         colors+--+--     -   Add extra details about border color tracking+--+--     -   Fix typos+--+-- -   Revision 4, 2019-10-12 (Joshua Ashton)+--+--     -   Changed maxUniqueCustomBorderColors to a uint32_t from a+--         VkDeviceSize+--+-- -   Revision 5, 2019-10-14 (Liam Middlebrook)+--+--     -   Added features bit+--+-- -   Revision 6, 2019-10-15 (Joshua Ashton)+--+--     -   Type-ize VK_BORDER_COLOR_CUSTOM+--+--     -   Fix const-ness on pNext of+--         VkSamplerCustomBorderColorCreateInfoEXT+--+-- -   Revision 7, 2019-11-26 (Liam Middlebrook)+--+--     -   Renamed maxUniqueCustomBorderColors to maxCustomBorderColors+--+-- -   Revision 8, 2019-11-29 (Joshua Ashton)+--+--     -   Renamed borderColor member of+--         VkSamplerCustomBorderColorCreateInfoEXT to customBorderColor+--+-- -   Revision 9, 2020-02-19 (Joshua Ashton)+--+--     -   Renamed maxCustomBorderColors to maxCustomBorderColorSamplers+--+-- -   Revision 10, 2020-02-21 (Joshua Ashton)+--+--     -   Added format to VkSamplerCustomBorderColorCreateInfoEXT and+--         feature bit+--+-- -   Revision 11, 2020-04-07 (Joshua Ashton)+--+--     -   Dropped UINT\/SINT border color differences, consolidated types+--+-- -   Revision 12, 2020-04-16 (Joshua Ashton)+--+--     -   Renamed VK_BORDER_COLOR_CUSTOM_FLOAT_EXT to+--         VK_BORDER_COLOR_FLOAT_CUSTOM_EXT for consistency+--+-- = See Also+--+-- 'PhysicalDeviceCustomBorderColorFeaturesEXT',+-- 'PhysicalDeviceCustomBorderColorPropertiesEXT',+-- 'SamplerCustomBorderColorCreateInfoEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_border_color Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_custom_border_color  ( PhysicalDeviceCustomBorderColorFeaturesEXT                                                      , PhysicalDeviceCustomBorderColorPropertiesEXT                                                      , SamplerCustomBorderColorCreateInfoEXT
src/Vulkan/Extensions/VK_EXT_debug_marker.hs view
@@ -1,4 +1,277 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_debug_marker - device extension+--+-- == VK_EXT_debug_marker+--+-- [__Name String__]+--     @VK_EXT_debug_marker@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     23+--+-- [__Revision__]+--     4+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_EXT_debug_report@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to @VK_EXT_debug_utils@ extension+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Debugging tools>+--+-- [__Contact__]+--+--     -   Baldur Karlsson+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_debug_marker:%20&body=@baldurk%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-01-31+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Baldur Karlsson+--+--     -   Dan Ginsburg, Valve+--+--     -   Jon Ashburn, LunarG+--+--     -   Kyle Spagnoli, NVIDIA+--+-- == Description+--+-- The @VK_EXT_debug_marker@ extension is a device extension. It introduces+-- concepts of object naming and tagging, for better tracking of Vulkan+-- objects, as well as additional commands for recording annotations of+-- named sections of a workload to aid organization and offline analysis in+-- external tools.+--+-- == New Commands+--+-- -   'cmdDebugMarkerBeginEXT'+--+-- -   'cmdDebugMarkerEndEXT'+--+-- -   'cmdDebugMarkerInsertEXT'+--+-- -   'debugMarkerSetObjectNameEXT'+--+-- -   'debugMarkerSetObjectTagEXT'+--+-- == New Structures+--+-- -   'DebugMarkerMarkerInfoEXT'+--+-- -   'DebugMarkerObjectNameInfoEXT'+--+-- -   'DebugMarkerObjectTagInfoEXT'+--+-- == New Enums+--+-- -   'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DEBUG_MARKER_EXTENSION_NAME'+--+-- -   'EXT_DEBUG_MARKER_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT'+--+-- == Examples+--+-- __Example 1__+--+-- Associate a name with an image, for easier debugging in external tools+-- or with validation layers that can print a friendly name when referring+-- to objects in error messages.+--+-- >     extern VkDevice device;+-- >     extern VkImage image;+-- >+-- >     // Must call extension functions through a function pointer:+-- >     PFN_vkDebugMarkerSetObjectNameEXT pfnDebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)vkGetDeviceProcAddr(device, "vkDebugMarkerSetObjectNameEXT");+-- >+-- >     // Set a name on the image+-- >     const VkDebugMarkerObjectNameInfoEXT imageNameInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT, // sType+-- >         NULL,                                           // pNext+-- >         VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,          // objectType+-- >         (uint64_t)image,                                // object+-- >         "Brick Diffuse Texture",                        // pObjectName+-- >     };+-- >+-- >     pfnDebugMarkerSetObjectNameEXT(device, &imageNameInfo);+-- >+-- >     // A subsequent error might print:+-- >     //   Image 'Brick Diffuse Texture' (0xc0dec0dedeadbeef) is used in a+-- >     //   command buffer with no memory bound to it.+--+-- __Example 2__+--+-- Annotating regions of a workload with naming information so that offline+-- analysis tools can display a more usable visualisation of the commands+-- submitted.+--+-- >     extern VkDevice device;+-- >     extern VkCommandBuffer commandBuffer;+-- >+-- >     // Must call extension functions through a function pointer:+-- >     PFN_vkCmdDebugMarkerBeginEXT pfnCmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT)vkGetDeviceProcAddr(device, "vkCmdDebugMarkerBeginEXT");+-- >     PFN_vkCmdDebugMarkerEndEXT pfnCmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT)vkGetDeviceProcAddr(device, "vkCmdDebugMarkerEndEXT");+-- >     PFN_vkCmdDebugMarkerInsertEXT pfnCmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT)vkGetDeviceProcAddr(device, "vkCmdDebugMarkerInsertEXT");+-- >+-- >     // Describe the area being rendered+-- >     const VkDebugMarkerMarkerInfoEXT houseMarker =+-- >     {+-- >         VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT, // sType+-- >         NULL,                                           // pNext+-- >         "Brick House",                                  // pMarkerName+-- >         { 1.0f, 0.0f, 0.0f, 1.0f },                     // color+-- >     };+-- >+-- >     // Start an annotated group of calls under the 'Brick House' name+-- >     pfnCmdDebugMarkerBeginEXT(commandBuffer, &houseMarker);+-- >     {+-- >         // A mutable structure for each part being rendered+-- >         VkDebugMarkerMarkerInfoEXT housePartMarker =+-- >         {+-- >             VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT, // sType+-- >             NULL,                                           // pNext+-- >             NULL,                                           // pMarkerName+-- >             { 0.0f, 0.0f, 0.0f, 0.0f },                     // color+-- >         };+-- >+-- >         // Set the name and insert the marker+-- >         housePartMarker.pMarkerName = "Walls";+-- >         pfnCmdDebugMarkerInsertEXT(commandBuffer, &housePartMarker);+-- >+-- >         // Insert the drawcall for the walls+-- >         vkCmdDrawIndexed(commandBuffer, 1000, 1, 0, 0, 0);+-- >+-- >         // Insert a recursive region for two sets of windows+-- >         housePartMarker.pMarkerName = "Windows";+-- >         pfnCmdDebugMarkerBeginEXT(commandBuffer, &housePartMarker);+-- >         {+-- >             vkCmdDrawIndexed(commandBuffer, 75, 6, 1000, 0, 0);+-- >             vkCmdDrawIndexed(commandBuffer, 100, 2, 1450, 0, 0);+-- >         }+-- >         pfnCmdDebugMarkerEndEXT(commandBuffer);+-- >+-- >         housePartMarker.pMarkerName = "Front Door";+-- >         pfnCmdDebugMarkerInsertEXT(commandBuffer, &housePartMarker);+-- >+-- >         vkCmdDrawIndexed(commandBuffer, 350, 1, 1650, 0, 0);+-- >+-- >         housePartMarker.pMarkerName = "Roof";+-- >         pfnCmdDebugMarkerInsertEXT(commandBuffer, &housePartMarker);+-- >+-- >         vkCmdDrawIndexed(commandBuffer, 500, 1, 2000, 0, 0);+-- >     }+-- >     // End the house annotation started above+-- >     pfnCmdDebugMarkerEndEXT(commandBuffer);+--+-- == Issues+--+-- 1) Should the tag or name for an object be specified using the @pNext@+-- parameter in the object’s @Vk*CreateInfo@ structure?+--+-- __RESOLVED__: No. While this fits with other Vulkan patterns and would+-- allow more type safety and future proofing against future objects, it+-- has notable downsides. In particular passing the name at @Vk*CreateInfo@+-- time does not allow renaming, prevents late binding of naming+-- information, and does not allow naming of implicitly created objects+-- such as queues and swapchain images.+--+-- 2) Should the command annotation functions 'cmdDebugMarkerBeginEXT' and+-- 'cmdDebugMarkerEndEXT' support the ability to specify a color?+--+-- __RESOLVED__: Yes. The functions have been expanded to take an optional+-- color which can be used at will by implementations consuming the command+-- buffer annotations in their visualisation.+--+-- 3) Should the functions added in this extension accept an extensible+-- structure as their parameter for a more flexible API, as opposed to+-- direct function parameters? If so, which functions?+--+-- __RESOLVED__: Yes. All functions have been modified to take a structure+-- type with extensible @pNext@ pointer, to allow future extensions to add+-- additional annotation information in the same commands.+--+-- == Version History+--+-- -   Revision 1, 2016-02-24 (Baldur Karlsson)+--+--     -   Initial draft, based on LunarG marker spec+--+-- -   Revision 2, 2016-02-26 (Baldur Karlsson)+--+--     -   Renamed Dbg to DebugMarker in function names+--+--     -   Allow markers in secondary command buffers under certain+--         circumstances+--+--     -   Minor language tweaks and edits+--+-- -   Revision 3, 2016-04-23 (Baldur Karlsson)+--+--     -   Reorganise spec layout to closer match desired organisation+--+--     -   Added optional color to markers (both regions and inserted+--         labels)+--+--     -   Changed functions to take extensible structs instead of direct+--         function parameters+--+-- -   Revision 4, 2017-01-31 (Baldur Karlsson)+--+--     -   Added explicit dependency on VK_EXT_debug_report+--+--     -   Moved definition of+--         'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT'+--         to debug report chapter.+--+--     -   Fixed typo in dates in revision history+--+-- = See Also+--+-- 'DebugMarkerMarkerInfoEXT', 'DebugMarkerObjectNameInfoEXT',+-- 'DebugMarkerObjectTagInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT',+-- 'cmdDebugMarkerBeginEXT', 'cmdDebugMarkerEndEXT',+-- 'cmdDebugMarkerInsertEXT', 'debugMarkerSetObjectNameEXT',+-- 'debugMarkerSetObjectTagEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_marker Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_debug_marker  ( debugMarkerSetObjectNameEXT                                               , debugMarkerSetObjectTagEXT                                               , cmdDebugMarkerBeginEXT
src/Vulkan/Extensions/VK_EXT_debug_marker.hs-boot view
@@ -1,4 +1,277 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_debug_marker - device extension+--+-- == VK_EXT_debug_marker+--+-- [__Name String__]+--     @VK_EXT_debug_marker@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     23+--+-- [__Revision__]+--     4+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_EXT_debug_report@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to @VK_EXT_debug_utils@ extension+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Debugging tools>+--+-- [__Contact__]+--+--     -   Baldur Karlsson+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_debug_marker:%20&body=@baldurk%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-01-31+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Baldur Karlsson+--+--     -   Dan Ginsburg, Valve+--+--     -   Jon Ashburn, LunarG+--+--     -   Kyle Spagnoli, NVIDIA+--+-- == Description+--+-- The @VK_EXT_debug_marker@ extension is a device extension. It introduces+-- concepts of object naming and tagging, for better tracking of Vulkan+-- objects, as well as additional commands for recording annotations of+-- named sections of a workload to aid organization and offline analysis in+-- external tools.+--+-- == New Commands+--+-- -   'cmdDebugMarkerBeginEXT'+--+-- -   'cmdDebugMarkerEndEXT'+--+-- -   'cmdDebugMarkerInsertEXT'+--+-- -   'debugMarkerSetObjectNameEXT'+--+-- -   'debugMarkerSetObjectTagEXT'+--+-- == New Structures+--+-- -   'DebugMarkerMarkerInfoEXT'+--+-- -   'DebugMarkerObjectNameInfoEXT'+--+-- -   'DebugMarkerObjectTagInfoEXT'+--+-- == New Enums+--+-- -   'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DEBUG_MARKER_EXTENSION_NAME'+--+-- -   'EXT_DEBUG_MARKER_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT'+--+-- == Examples+--+-- __Example 1__+--+-- Associate a name with an image, for easier debugging in external tools+-- or with validation layers that can print a friendly name when referring+-- to objects in error messages.+--+-- >     extern VkDevice device;+-- >     extern VkImage image;+-- >+-- >     // Must call extension functions through a function pointer:+-- >     PFN_vkDebugMarkerSetObjectNameEXT pfnDebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)vkGetDeviceProcAddr(device, "vkDebugMarkerSetObjectNameEXT");+-- >+-- >     // Set a name on the image+-- >     const VkDebugMarkerObjectNameInfoEXT imageNameInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT, // sType+-- >         NULL,                                           // pNext+-- >         VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,          // objectType+-- >         (uint64_t)image,                                // object+-- >         "Brick Diffuse Texture",                        // pObjectName+-- >     };+-- >+-- >     pfnDebugMarkerSetObjectNameEXT(device, &imageNameInfo);+-- >+-- >     // A subsequent error might print:+-- >     //   Image 'Brick Diffuse Texture' (0xc0dec0dedeadbeef) is used in a+-- >     //   command buffer with no memory bound to it.+--+-- __Example 2__+--+-- Annotating regions of a workload with naming information so that offline+-- analysis tools can display a more usable visualisation of the commands+-- submitted.+--+-- >     extern VkDevice device;+-- >     extern VkCommandBuffer commandBuffer;+-- >+-- >     // Must call extension functions through a function pointer:+-- >     PFN_vkCmdDebugMarkerBeginEXT pfnCmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT)vkGetDeviceProcAddr(device, "vkCmdDebugMarkerBeginEXT");+-- >     PFN_vkCmdDebugMarkerEndEXT pfnCmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT)vkGetDeviceProcAddr(device, "vkCmdDebugMarkerEndEXT");+-- >     PFN_vkCmdDebugMarkerInsertEXT pfnCmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT)vkGetDeviceProcAddr(device, "vkCmdDebugMarkerInsertEXT");+-- >+-- >     // Describe the area being rendered+-- >     const VkDebugMarkerMarkerInfoEXT houseMarker =+-- >     {+-- >         VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT, // sType+-- >         NULL,                                           // pNext+-- >         "Brick House",                                  // pMarkerName+-- >         { 1.0f, 0.0f, 0.0f, 1.0f },                     // color+-- >     };+-- >+-- >     // Start an annotated group of calls under the 'Brick House' name+-- >     pfnCmdDebugMarkerBeginEXT(commandBuffer, &houseMarker);+-- >     {+-- >         // A mutable structure for each part being rendered+-- >         VkDebugMarkerMarkerInfoEXT housePartMarker =+-- >         {+-- >             VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT, // sType+-- >             NULL,                                           // pNext+-- >             NULL,                                           // pMarkerName+-- >             { 0.0f, 0.0f, 0.0f, 0.0f },                     // color+-- >         };+-- >+-- >         // Set the name and insert the marker+-- >         housePartMarker.pMarkerName = "Walls";+-- >         pfnCmdDebugMarkerInsertEXT(commandBuffer, &housePartMarker);+-- >+-- >         // Insert the drawcall for the walls+-- >         vkCmdDrawIndexed(commandBuffer, 1000, 1, 0, 0, 0);+-- >+-- >         // Insert a recursive region for two sets of windows+-- >         housePartMarker.pMarkerName = "Windows";+-- >         pfnCmdDebugMarkerBeginEXT(commandBuffer, &housePartMarker);+-- >         {+-- >             vkCmdDrawIndexed(commandBuffer, 75, 6, 1000, 0, 0);+-- >             vkCmdDrawIndexed(commandBuffer, 100, 2, 1450, 0, 0);+-- >         }+-- >         pfnCmdDebugMarkerEndEXT(commandBuffer);+-- >+-- >         housePartMarker.pMarkerName = "Front Door";+-- >         pfnCmdDebugMarkerInsertEXT(commandBuffer, &housePartMarker);+-- >+-- >         vkCmdDrawIndexed(commandBuffer, 350, 1, 1650, 0, 0);+-- >+-- >         housePartMarker.pMarkerName = "Roof";+-- >         pfnCmdDebugMarkerInsertEXT(commandBuffer, &housePartMarker);+-- >+-- >         vkCmdDrawIndexed(commandBuffer, 500, 1, 2000, 0, 0);+-- >     }+-- >     // End the house annotation started above+-- >     pfnCmdDebugMarkerEndEXT(commandBuffer);+--+-- == Issues+--+-- 1) Should the tag or name for an object be specified using the @pNext@+-- parameter in the object’s @Vk*CreateInfo@ structure?+--+-- __RESOLVED__: No. While this fits with other Vulkan patterns and would+-- allow more type safety and future proofing against future objects, it+-- has notable downsides. In particular passing the name at @Vk*CreateInfo@+-- time does not allow renaming, prevents late binding of naming+-- information, and does not allow naming of implicitly created objects+-- such as queues and swapchain images.+--+-- 2) Should the command annotation functions 'cmdDebugMarkerBeginEXT' and+-- 'cmdDebugMarkerEndEXT' support the ability to specify a color?+--+-- __RESOLVED__: Yes. The functions have been expanded to take an optional+-- color which can be used at will by implementations consuming the command+-- buffer annotations in their visualisation.+--+-- 3) Should the functions added in this extension accept an extensible+-- structure as their parameter for a more flexible API, as opposed to+-- direct function parameters? If so, which functions?+--+-- __RESOLVED__: Yes. All functions have been modified to take a structure+-- type with extensible @pNext@ pointer, to allow future extensions to add+-- additional annotation information in the same commands.+--+-- == Version History+--+-- -   Revision 1, 2016-02-24 (Baldur Karlsson)+--+--     -   Initial draft, based on LunarG marker spec+--+-- -   Revision 2, 2016-02-26 (Baldur Karlsson)+--+--     -   Renamed Dbg to DebugMarker in function names+--+--     -   Allow markers in secondary command buffers under certain+--         circumstances+--+--     -   Minor language tweaks and edits+--+-- -   Revision 3, 2016-04-23 (Baldur Karlsson)+--+--     -   Reorganise spec layout to closer match desired organisation+--+--     -   Added optional color to markers (both regions and inserted+--         labels)+--+--     -   Changed functions to take extensible structs instead of direct+--         function parameters+--+-- -   Revision 4, 2017-01-31 (Baldur Karlsson)+--+--     -   Added explicit dependency on VK_EXT_debug_report+--+--     -   Moved definition of+--         'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT'+--         to debug report chapter.+--+--     -   Fixed typo in dates in revision history+--+-- = See Also+--+-- 'DebugMarkerMarkerInfoEXT', 'DebugMarkerObjectNameInfoEXT',+-- 'DebugMarkerObjectTagInfoEXT',+-- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT',+-- 'cmdDebugMarkerBeginEXT', 'cmdDebugMarkerEndEXT',+-- 'cmdDebugMarkerInsertEXT', 'debugMarkerSetObjectNameEXT',+-- 'debugMarkerSetObjectTagEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_marker Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_debug_marker  ( DebugMarkerMarkerInfoEXT                                               , DebugMarkerObjectNameInfoEXT                                               , DebugMarkerObjectTagInfoEXT
src/Vulkan/Extensions/VK_EXT_debug_report.hs view
@@ -1,4 +1,312 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_debug_report - instance extension+--+-- == VK_EXT_debug_report+--+-- [__Name String__]+--     @VK_EXT_debug_report@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     12+--+-- [__Revision__]+--     9+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_EXT_debug_utils@ extension+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Debugging tools>+--+-- [__Contact__]+--+--     -   Courtney Goeltzenleuchter+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_debug_report:%20&body=@courtney-g%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-12+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Courtney Goeltzenleuchter, LunarG+--+--     -   Dan Ginsburg, Valve+--+--     -   Jon Ashburn, LunarG+--+--     -   Mark Lobodzinski, LunarG+--+-- == Description+--+-- Due to the nature of the Vulkan interface, there is very little error+-- information available to the developer and application. By enabling+-- optional validation layers and using the @VK_EXT_debug_report@+-- extension, developers /can/ obtain much more detailed feedback on the+-- application’s use of Vulkan. This extension defines a way for layers and+-- the implementation to call back to the application for events of+-- interest to the application.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.DebugReportCallbackEXT'+--+-- == New Commands+--+-- -   'createDebugReportCallbackEXT'+--+-- -   'debugReportMessageEXT'+--+-- -   'destroyDebugReportCallbackEXT'+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo':+--+--     -   'DebugReportCallbackCreateInfoEXT'+--+-- == New Function Pointers+--+-- -   'PFN_vkDebugReportCallbackEXT'+--+-- == New Enums+--+-- -   'DebugReportFlagBitsEXT'+--+-- -   'DebugReportObjectTypeEXT'+--+-- == New Bitmasks+--+-- -   'DebugReportFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DEBUG_REPORT_EXTENSION_NAME'+--+-- -   'EXT_DEBUG_REPORT_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   Extending 'DebugReportObjectTypeEXT':+--+--     -   'DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT'+--+--     -   'DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT'+--+-- == Examples+--+-- @VK_EXT_debug_report@ allows an application to register multiple+-- callbacks with the validation layers. Some callbacks may log the+-- information to a file, others may cause a debug break point or other+-- application defined behavior. An application /can/ register callbacks+-- even when no validation layers are enabled, but they will only be called+-- for loader and, if implemented, driver events.+--+-- To capture events that occur while creating or destroying an instance an+-- application /can/ link a 'DebugReportCallbackCreateInfoEXT' structure to+-- the @pNext@ element of the+-- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure given+-- to 'Vulkan.Core10.DeviceInitialization.createInstance'. This callback is+-- only valid for the duration of the+-- 'Vulkan.Core10.DeviceInitialization.createInstance' and the+-- 'Vulkan.Core10.DeviceInitialization.destroyInstance' call. Use+-- 'createDebugReportCallbackEXT' to create persistent callback objects.+--+-- Example uses: Create three callback objects. One will log errors and+-- warnings to the debug console using Windows @OutputDebugString@. The+-- second will cause the debugger to break at that callback when an error+-- happens and the third will log warnings to stdout.+--+-- >     VkResult res;+-- >     VkDebugReportCallbackEXT cb1, cb2, cb3;+-- >+-- >     VkDebugReportCallbackCreateInfoEXT callback1 = {+-- >             VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,    // sType+-- >             NULL,                                                       // pNext+-- >             VK_DEBUG_REPORT_ERROR_BIT_EXT |                             // flags+-- >             VK_DEBUG_REPORT_WARNING_BIT_EXT,+-- >             myOutputDebugString,                                        // pfnCallback+-- >             NULL                                                        // pUserData+-- >     };+-- >     res = vkCreateDebugReportCallbackEXT(instance, &callback1, &cb1);+-- >     if (res != VK_SUCCESS)+-- >        /* Do error handling for VK_ERROR_OUT_OF_MEMORY */+-- >+-- >     callback.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT;+-- >     callback.pfnCallback = myDebugBreak;+-- >     callback.pUserData = NULL;+-- >     res = vkCreateDebugReportCallbackEXT(instance, &callback, &cb2);+-- >     if (res != VK_SUCCESS)+-- >        /* Do error handling for VK_ERROR_OUT_OF_MEMORY */+-- >+-- >     VkDebugReportCallbackCreateInfoEXT callback3 = {+-- >             VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,    // sType+-- >             NULL,                                                       // pNext+-- >             VK_DEBUG_REPORT_WARNING_BIT_EXT,                            // flags+-- >             mystdOutLogger,                                             // pfnCallback+-- >             NULL                                                        // pUserData+-- >     };+-- >     res = vkCreateDebugReportCallbackEXT(instance, &callback3, &cb3);+-- >     if (res != VK_SUCCESS)+-- >        /* Do error handling for VK_ERROR_OUT_OF_MEMORY */+-- >+-- >     ...+-- >+-- >     /* remove callbacks when cleaning up */+-- >     vkDestroyDebugReportCallbackEXT(instance, cb1);+-- >     vkDestroyDebugReportCallbackEXT(instance, cb2);+-- >     vkDestroyDebugReportCallbackEXT(instance, cb3);+--+-- Note+--+-- In the initial release of the @VK_EXT_debug_report@ extension, the token+-- 'STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT' was used. Starting in+-- version 2 of the extension branch,+-- 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT'+-- is used instead for consistency with Vulkan naming rules. The older enum+-- is still available for backwards compatibility.+--+-- Note+--+-- In the initial release of the @VK_EXT_debug_report@ extension, the token+-- 'DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT' was used. Starting in+-- version 8 of the extension branch,+-- 'DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT' is used instead+-- for consistency with Vulkan naming rules. The older enum is still+-- available for backwards compatibility.+--+-- == Issues+--+-- 1) What is the hierarchy \/ seriousness of the message flags? E.g.+-- @ERROR@ > @WARN@ > @PERF_WARN@ …​+--+-- __RESOLVED__: There is no specific hierarchy. Each bit is independent+-- and should be checked via bitwise AND. For example:+--+-- >     if (localFlags & VK_DEBUG_REPORT_ERROR_BIT_EXT) {+-- >         process error message+-- >     }+-- >     if (localFlags & VK_DEBUG_REPORT_DEBUG_BIT_EXT) {+-- >         process debug message+-- >     }+--+-- The validation layers do use them in a hierarchical way (@ERROR@ >+-- @WARN@ > @PERF@, @WARN@ > @DEBUG@ > @INFO@) and they (at least at the+-- time of this writing) only set one bit at a time. But it is not a+-- requirement of this extension.+--+-- It is possible that a layer may intercept and change, or augment the+-- flags with extension values the application’s debug report handler may+-- not be familiar with, so it is important to treat each flag+-- independently.+--+-- 2) Should there be a VU requiring+-- 'DebugReportCallbackCreateInfoEXT'::@flags@ to be non-zero?+--+-- __RESOLVED__: It may not be very useful, but we do not need VU statement+-- requiring the 'DebugReportCallbackCreateInfoEXT'::@msgFlags@ at+-- create-time to be non-zero. One can imagine that apps may prefer it as+-- it allows them to set the mask as desired - including nothing - at+-- runtime without having to check.+--+-- 3) What is the difference between 'DEBUG_REPORT_DEBUG_BIT_EXT' and+-- 'DEBUG_REPORT_INFORMATION_BIT_EXT'?+--+-- __RESOLVED__: 'DEBUG_REPORT_DEBUG_BIT_EXT' specifies information that+-- could be useful debugging the Vulkan implementation itself.+--+-- == Version History+--+-- -   Revision 1, 2015-05-20 (Courtney Goetzenleuchter)+--+--     -   Initial draft, based on LunarG KHR spec, other KHR specs+--+-- -   Revision 2, 2016-02-16 (Courtney Goetzenleuchter)+--+--     -   Update usage, documentation+--+-- -   Revision 3, 2016-06-14 (Courtney Goetzenleuchter)+--+--     -   Update VK_EXT_DEBUG_REPORT_SPEC_VERSION to indicate added+--         support for vkCreateInstance and vkDestroyInstance+--+-- -   Revision 4, 2016-12-08 (Mark Lobodzinski)+--+--     -   Added Display_KHR, DisplayModeKHR extension objects+--+--     -   Added ObjectTable_NVX, IndirectCommandsLayout_NVX extension+--         objects+--+--     -   Bumped spec revision+--+--     -   Retroactively added version history+--+-- -   Revision 5, 2017-01-31 (Baldur Karlsson)+--+--     -   Moved definition of 'DebugReportObjectTypeEXT' from debug marker+--         chapter+--+-- -   Revision 6, 2017-01-31 (Baldur Karlsson)+--+--     -   Added+--         VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT+--+-- -   Revision 7, 2017-04-20 (Courtney Goeltzenleuchter)+--+--     -   Clarify wording and address questions from developers.+--+-- -   Revision 8, 2017-04-21 (Courtney Goeltzenleuchter)+--+--     -   Remove unused enum VkDebugReportErrorEXT+--+-- -   Revision 9, 2017-09-12 (Tobias Hector)+--+--     -   Added interactions with Vulkan 1.1+--+-- = See Also+--+-- 'PFN_vkDebugReportCallbackEXT', 'DebugReportCallbackCreateInfoEXT',+-- 'Vulkan.Extensions.Handles.DebugReportCallbackEXT',+-- 'DebugReportFlagBitsEXT', 'DebugReportFlagsEXT',+-- 'DebugReportObjectTypeEXT', 'createDebugReportCallbackEXT',+-- 'debugReportMessageEXT', 'destroyDebugReportCallbackEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_report Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_debug_report  ( createDebugReportCallbackEXT                                               , withDebugReportCallbackEXT                                               , destroyDebugReportCallbackEXT@@ -7,6 +315,7 @@                                               , pattern DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT                                               , pattern DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT                                               , DebugReportCallbackCreateInfoEXT(..)+                                              , DebugReportFlagsEXT                                               , DebugReportFlagBitsEXT( DEBUG_REPORT_INFORMATION_BIT_EXT                                                                       , DEBUG_REPORT_WARNING_BIT_EXT                                                                       , DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT@@ -14,7 +323,6 @@                                                                       , DEBUG_REPORT_DEBUG_BIT_EXT                                                                       , ..                                                                       )-                                              , DebugReportFlagsEXT                                               , DebugReportObjectTypeEXT( DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT                                                                         , DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT                                                                         , DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT@@ -47,6 +355,7 @@                                                                         , DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT                                                                         , DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT                                                                         , DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT+                                                                        , DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT                                                                         , DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT                                                                         , DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT                                                                         , DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT@@ -61,6 +370,8 @@                                               , DebugReportCallbackEXT(..)                                               ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -72,16 +383,9 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import GHC.Show (showsPrec) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.ByteString (useAsCString) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT)@@ -106,8 +410,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word64)-import Text.Read.Lex (Lexeme(Ident)) import Data.ByteString (ByteString) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))@@ -212,10 +516,10 @@ -- -- To ensure that 'destroyDebugReportCallbackEXT' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withDebugReportCallbackEXT :: forall io r . MonadIO io => Instance -> DebugReportCallbackCreateInfoEXT -> Maybe AllocationCallbacks -> (io (DebugReportCallbackEXT) -> ((DebugReportCallbackEXT) -> io ()) -> r) -> r+withDebugReportCallbackEXT :: forall io r . MonadIO io => Instance -> DebugReportCallbackCreateInfoEXT -> Maybe AllocationCallbacks -> (io DebugReportCallbackEXT -> (DebugReportCallbackEXT -> io ()) -> r) -> r withDebugReportCallbackEXT instance' pCreateInfo pAllocator b =   b (createDebugReportCallbackEXT instance' pCreateInfo pAllocator)     (\(o0) -> destroyDebugReportCallbackEXT instance' o0 pAllocator)@@ -485,6 +789,8 @@            zero  +type DebugReportFlagsEXT = DebugReportFlagBitsEXT+ -- | VkDebugReportFlagBitsEXT - Bitmask specifying events which cause a debug -- report callback --@@ -497,7 +803,7 @@ -- | 'DEBUG_REPORT_INFORMATION_BIT_EXT' specifies an informational message -- such as resource details that may be handy when debugging an -- application.-pattern DEBUG_REPORT_INFORMATION_BIT_EXT = DebugReportFlagBitsEXT 0x00000001+pattern DEBUG_REPORT_INFORMATION_BIT_EXT         = DebugReportFlagBitsEXT 0x00000001 -- | 'DEBUG_REPORT_WARNING_BIT_EXT' specifies use of Vulkan that /may/ expose -- an app bug. Such cases may not be immediately harmful, such as a -- fragment shader outputting to a location with no attachment. Other cases@@ -505,7 +811,7 @@ -- such as using an image whose memory has not been filled. In general if -- you see a warning but you know that the behavior is intended\/desired, -- then simply ignore the warning.-pattern DEBUG_REPORT_WARNING_BIT_EXT = DebugReportFlagBitsEXT 0x00000002+pattern DEBUG_REPORT_WARNING_BIT_EXT             = DebugReportFlagBitsEXT 0x00000002 -- | 'DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT' specifies a potentially -- non-optimal use of Vulkan, e.g. using -- 'Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage' when setting@@ -515,33 +821,38 @@ pattern DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = DebugReportFlagBitsEXT 0x00000004 -- | 'DEBUG_REPORT_ERROR_BIT_EXT' specifies that the application has violated -- a valid usage condition of the specification.-pattern DEBUG_REPORT_ERROR_BIT_EXT = DebugReportFlagBitsEXT 0x00000008+pattern DEBUG_REPORT_ERROR_BIT_EXT               = DebugReportFlagBitsEXT 0x00000008 -- | 'DEBUG_REPORT_DEBUG_BIT_EXT' specifies diagnostic information from the -- implementation and layers.-pattern DEBUG_REPORT_DEBUG_BIT_EXT = DebugReportFlagBitsEXT 0x00000010+pattern DEBUG_REPORT_DEBUG_BIT_EXT               = DebugReportFlagBitsEXT 0x00000010 -type DebugReportFlagsEXT = DebugReportFlagBitsEXT+conNameDebugReportFlagBitsEXT :: String+conNameDebugReportFlagBitsEXT = "DebugReportFlagBitsEXT" +enumPrefixDebugReportFlagBitsEXT :: String+enumPrefixDebugReportFlagBitsEXT = "DEBUG_REPORT_"++showTableDebugReportFlagBitsEXT :: [(DebugReportFlagBitsEXT, String)]+showTableDebugReportFlagBitsEXT =+  [ (DEBUG_REPORT_INFORMATION_BIT_EXT        , "INFORMATION_BIT_EXT")+  , (DEBUG_REPORT_WARNING_BIT_EXT            , "WARNING_BIT_EXT")+  , (DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT, "PERFORMANCE_WARNING_BIT_EXT")+  , (DEBUG_REPORT_ERROR_BIT_EXT              , "ERROR_BIT_EXT")+  , (DEBUG_REPORT_DEBUG_BIT_EXT              , "DEBUG_BIT_EXT")+  ]+ instance Show DebugReportFlagBitsEXT where-  showsPrec p = \case-    DEBUG_REPORT_INFORMATION_BIT_EXT -> showString "DEBUG_REPORT_INFORMATION_BIT_EXT"-    DEBUG_REPORT_WARNING_BIT_EXT -> showString "DEBUG_REPORT_WARNING_BIT_EXT"-    DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT -> showString "DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"-    DEBUG_REPORT_ERROR_BIT_EXT -> showString "DEBUG_REPORT_ERROR_BIT_EXT"-    DEBUG_REPORT_DEBUG_BIT_EXT -> showString "DEBUG_REPORT_DEBUG_BIT_EXT"-    DebugReportFlagBitsEXT x -> showParen (p >= 11) (showString "DebugReportFlagBitsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDebugReportFlagBitsEXT+                            showTableDebugReportFlagBitsEXT+                            conNameDebugReportFlagBitsEXT+                            (\(DebugReportFlagBitsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DebugReportFlagBitsEXT where-  readPrec = parens (choose [("DEBUG_REPORT_INFORMATION_BIT_EXT", pure DEBUG_REPORT_INFORMATION_BIT_EXT)-                            , ("DEBUG_REPORT_WARNING_BIT_EXT", pure DEBUG_REPORT_WARNING_BIT_EXT)-                            , ("DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT", pure DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT)-                            , ("DEBUG_REPORT_ERROR_BIT_EXT", pure DEBUG_REPORT_ERROR_BIT_EXT)-                            , ("DEBUG_REPORT_DEBUG_BIT_EXT", pure DEBUG_REPORT_DEBUG_BIT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "DebugReportFlagBitsEXT")-                       v <- step readPrec-                       pure (DebugReportFlagBitsEXT v)))+  readPrec = enumReadPrec enumPrefixDebugReportFlagBitsEXT+                          showTableDebugReportFlagBitsEXT+                          conNameDebugReportFlagBitsEXT+                          DebugReportFlagBitsEXT   -- | VkDebugReportObjectTypeEXT - Specify the type of an object handle@@ -636,73 +947,75 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = DebugReportObjectTypeEXT 0+pattern DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT                    = DebugReportObjectTypeEXT 0 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = DebugReportObjectTypeEXT 1+pattern DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT                   = DebugReportObjectTypeEXT 1 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = DebugReportObjectTypeEXT 2+pattern DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT            = DebugReportObjectTypeEXT 2 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = DebugReportObjectTypeEXT 3+pattern DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT                     = DebugReportObjectTypeEXT 3 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = DebugReportObjectTypeEXT 4+pattern DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT                      = DebugReportObjectTypeEXT 4 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = DebugReportObjectTypeEXT 5+pattern DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT                  = DebugReportObjectTypeEXT 5 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = DebugReportObjectTypeEXT 6+pattern DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT             = DebugReportObjectTypeEXT 6 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = DebugReportObjectTypeEXT 7+pattern DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT                      = DebugReportObjectTypeEXT 7 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = DebugReportObjectTypeEXT 8+pattern DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT              = DebugReportObjectTypeEXT 8 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = DebugReportObjectTypeEXT 9+pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT                     = DebugReportObjectTypeEXT 9 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = DebugReportObjectTypeEXT 10+pattern DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT                      = DebugReportObjectTypeEXT 10 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = DebugReportObjectTypeEXT 11+pattern DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT                      = DebugReportObjectTypeEXT 11 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = DebugReportObjectTypeEXT 12+pattern DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT                 = DebugReportObjectTypeEXT 12 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = DebugReportObjectTypeEXT 13+pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT                = DebugReportObjectTypeEXT 13 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = DebugReportObjectTypeEXT 14+pattern DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT                 = DebugReportObjectTypeEXT 14 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = DebugReportObjectTypeEXT 15+pattern DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT              = DebugReportObjectTypeEXT 15 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = DebugReportObjectTypeEXT 16+pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT             = DebugReportObjectTypeEXT 16 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = DebugReportObjectTypeEXT 17+pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT            = DebugReportObjectTypeEXT 17 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = DebugReportObjectTypeEXT 18+pattern DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT                = DebugReportObjectTypeEXT 18 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = DebugReportObjectTypeEXT 19+pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT                   = DebugReportObjectTypeEXT 19 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = DebugReportObjectTypeEXT 20+pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT      = DebugReportObjectTypeEXT 20 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = DebugReportObjectTypeEXT 21+pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT                    = DebugReportObjectTypeEXT 21 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = DebugReportObjectTypeEXT 22+pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT            = DebugReportObjectTypeEXT 22 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = DebugReportObjectTypeEXT 23+pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT             = DebugReportObjectTypeEXT 23 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = DebugReportObjectTypeEXT 24+pattern DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT                = DebugReportObjectTypeEXT 24 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = DebugReportObjectTypeEXT 25+pattern DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT               = DebugReportObjectTypeEXT 25 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = DebugReportObjectTypeEXT 26+pattern DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT                = DebugReportObjectTypeEXT 26 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = DebugReportObjectTypeEXT 27+pattern DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT              = DebugReportObjectTypeEXT 27 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = DebugReportObjectTypeEXT 28+pattern DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT  = DebugReportObjectTypeEXT 28 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = DebugReportObjectTypeEXT 29+pattern DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT                = DebugReportObjectTypeEXT 29 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = DebugReportObjectTypeEXT 30+pattern DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT           = DebugReportObjectTypeEXT 30 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = DebugReportObjectTypeEXT 33+pattern DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT       = DebugReportObjectTypeEXT 33+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT  = DebugReportObjectTypeEXT 1000165000 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = DebugReportObjectTypeEXT 1000156000+pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT   = DebugReportObjectTypeEXT 1000156000 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = DebugReportObjectTypeEXT 1000165000+pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = DebugReportObjectTypeEXT 1000150000 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT" pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = DebugReportObjectTypeEXT 1000085000 {-# complete DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,@@ -737,90 +1050,69 @@              DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,              DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,              DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,+             DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT,              DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,              DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT,              DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT :: DebugReportObjectTypeEXT #-} +conNameDebugReportObjectTypeEXT :: String+conNameDebugReportObjectTypeEXT = "DebugReportObjectTypeEXT"++enumPrefixDebugReportObjectTypeEXT :: String+enumPrefixDebugReportObjectTypeEXT = "DEBUG_REPORT_OBJECT_TYPE_"++showTableDebugReportObjectTypeEXT :: [(DebugReportObjectTypeEXT, String)]+showTableDebugReportObjectTypeEXT =+  [ (DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT                   , "UNKNOWN_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT                  , "INSTANCE_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT           , "PHYSICAL_DEVICE_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT                    , "DEVICE_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT                     , "QUEUE_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT                 , "SEMAPHORE_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT            , "COMMAND_BUFFER_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT                     , "FENCE_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT             , "DEVICE_MEMORY_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT                    , "BUFFER_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT                     , "IMAGE_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT                     , "EVENT_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT                , "QUERY_POOL_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT               , "BUFFER_VIEW_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT                , "IMAGE_VIEW_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT             , "SHADER_MODULE_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT            , "PIPELINE_CACHE_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT           , "PIPELINE_LAYOUT_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT               , "RENDER_PASS_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT                  , "PIPELINE_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT     , "DESCRIPTOR_SET_LAYOUT_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT                   , "SAMPLER_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT           , "DESCRIPTOR_POOL_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT            , "DESCRIPTOR_SET_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT               , "FRAMEBUFFER_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT              , "COMMAND_POOL_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT               , "SURFACE_KHR_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT             , "SWAPCHAIN_KHR_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT , "DEBUG_REPORT_CALLBACK_EXT_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT               , "DISPLAY_KHR_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT          , "DISPLAY_MODE_KHR_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT      , "VALIDATION_CACHE_EXT_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT , "ACCELERATION_STRUCTURE_NV_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT  , "SAMPLER_YCBCR_CONVERSION_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT, "ACCELERATION_STRUCTURE_KHR_EXT")+  , (DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT, "DESCRIPTOR_UPDATE_TEMPLATE_EXT")+  ]+ instance Show DebugReportObjectTypeEXT where-  showsPrec p = \case-    DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"-    DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"-    DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"-    DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT"-    DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT"-    DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"-    DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT"-    DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT"-    DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"-    DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT"-    DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT"-    DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"-    DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"-    DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT"-    DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT"-    DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT"-    DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT"-    DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT"-    DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT"-    DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT"-    DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT"-    DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT"-    DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT"-    DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT"-    DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT"-    DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT"-    DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"-    DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"-    DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT"-    DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"-    DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"-    DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT"-    DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"-    DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT"-    DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT"-    DebugReportObjectTypeEXT x -> showParen (p >= 11) (showString "DebugReportObjectTypeEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixDebugReportObjectTypeEXT+                            showTableDebugReportObjectTypeEXT+                            conNameDebugReportObjectTypeEXT+                            (\(DebugReportObjectTypeEXT x) -> x)+                            (showsPrec 11)  instance Read DebugReportObjectTypeEXT where-  readPrec = parens (choose [("DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT", pure DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT", pure DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT", pure DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT", pure DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT", pure DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT", pure DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT", pure DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT", pure DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT", pure DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT", pure DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT", pure DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT", pure DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT", pure DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT", pure DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT", pure DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT", pure DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT", pure DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "DebugReportObjectTypeEXT")-                       v <- step readPrec-                       pure (DebugReportObjectTypeEXT v)))+  readPrec = enumReadPrec enumPrefixDebugReportObjectTypeEXT+                          showTableDebugReportObjectTypeEXT+                          conNameDebugReportObjectTypeEXT+                          DebugReportObjectTypeEXT   type FN_vkDebugReportCallbackEXT = DebugReportFlagsEXT -> DebugReportObjectTypeEXT -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> ("pUserData" ::: Ptr ()) -> IO Bool32
src/Vulkan/Extensions/VK_EXT_debug_report.hs-boot view
@@ -1,7 +1,315 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_debug_report - instance extension+--+-- == VK_EXT_debug_report+--+-- [__Name String__]+--     @VK_EXT_debug_report@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     12+--+-- [__Revision__]+--     9+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_EXT_debug_utils@ extension+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Debugging tools>+--+-- [__Contact__]+--+--     -   Courtney Goeltzenleuchter+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_debug_report:%20&body=@courtney-g%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-12+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Courtney Goeltzenleuchter, LunarG+--+--     -   Dan Ginsburg, Valve+--+--     -   Jon Ashburn, LunarG+--+--     -   Mark Lobodzinski, LunarG+--+-- == Description+--+-- Due to the nature of the Vulkan interface, there is very little error+-- information available to the developer and application. By enabling+-- optional validation layers and using the @VK_EXT_debug_report@+-- extension, developers /can/ obtain much more detailed feedback on the+-- application’s use of Vulkan. This extension defines a way for layers and+-- the implementation to call back to the application for events of+-- interest to the application.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.DebugReportCallbackEXT'+--+-- == New Commands+--+-- -   'createDebugReportCallbackEXT'+--+-- -   'debugReportMessageEXT'+--+-- -   'destroyDebugReportCallbackEXT'+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo':+--+--     -   'DebugReportCallbackCreateInfoEXT'+--+-- == New Function Pointers+--+-- -   'PFN_vkDebugReportCallbackEXT'+--+-- == New Enums+--+-- -   'DebugReportFlagBitsEXT'+--+-- -   'DebugReportObjectTypeEXT'+--+-- == New Bitmasks+--+-- -   'DebugReportFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DEBUG_REPORT_EXTENSION_NAME'+--+-- -   'EXT_DEBUG_REPORT_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   Extending 'DebugReportObjectTypeEXT':+--+--     -   'DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT'+--+--     -   'DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT'+--+-- == Examples+--+-- @VK_EXT_debug_report@ allows an application to register multiple+-- callbacks with the validation layers. Some callbacks may log the+-- information to a file, others may cause a debug break point or other+-- application defined behavior. An application /can/ register callbacks+-- even when no validation layers are enabled, but they will only be called+-- for loader and, if implemented, driver events.+--+-- To capture events that occur while creating or destroying an instance an+-- application /can/ link a 'DebugReportCallbackCreateInfoEXT' structure to+-- the @pNext@ element of the+-- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure given+-- to 'Vulkan.Core10.DeviceInitialization.createInstance'. This callback is+-- only valid for the duration of the+-- 'Vulkan.Core10.DeviceInitialization.createInstance' and the+-- 'Vulkan.Core10.DeviceInitialization.destroyInstance' call. Use+-- 'createDebugReportCallbackEXT' to create persistent callback objects.+--+-- Example uses: Create three callback objects. One will log errors and+-- warnings to the debug console using Windows @OutputDebugString@. The+-- second will cause the debugger to break at that callback when an error+-- happens and the third will log warnings to stdout.+--+-- >     VkResult res;+-- >     VkDebugReportCallbackEXT cb1, cb2, cb3;+-- >+-- >     VkDebugReportCallbackCreateInfoEXT callback1 = {+-- >             VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,    // sType+-- >             NULL,                                                       // pNext+-- >             VK_DEBUG_REPORT_ERROR_BIT_EXT |                             // flags+-- >             VK_DEBUG_REPORT_WARNING_BIT_EXT,+-- >             myOutputDebugString,                                        // pfnCallback+-- >             NULL                                                        // pUserData+-- >     };+-- >     res = vkCreateDebugReportCallbackEXT(instance, &callback1, &cb1);+-- >     if (res != VK_SUCCESS)+-- >        /* Do error handling for VK_ERROR_OUT_OF_MEMORY */+-- >+-- >     callback.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT;+-- >     callback.pfnCallback = myDebugBreak;+-- >     callback.pUserData = NULL;+-- >     res = vkCreateDebugReportCallbackEXT(instance, &callback, &cb2);+-- >     if (res != VK_SUCCESS)+-- >        /* Do error handling for VK_ERROR_OUT_OF_MEMORY */+-- >+-- >     VkDebugReportCallbackCreateInfoEXT callback3 = {+-- >             VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,    // sType+-- >             NULL,                                                       // pNext+-- >             VK_DEBUG_REPORT_WARNING_BIT_EXT,                            // flags+-- >             mystdOutLogger,                                             // pfnCallback+-- >             NULL                                                        // pUserData+-- >     };+-- >     res = vkCreateDebugReportCallbackEXT(instance, &callback3, &cb3);+-- >     if (res != VK_SUCCESS)+-- >        /* Do error handling for VK_ERROR_OUT_OF_MEMORY */+-- >+-- >     ...+-- >+-- >     /* remove callbacks when cleaning up */+-- >     vkDestroyDebugReportCallbackEXT(instance, cb1);+-- >     vkDestroyDebugReportCallbackEXT(instance, cb2);+-- >     vkDestroyDebugReportCallbackEXT(instance, cb3);+--+-- Note+--+-- In the initial release of the @VK_EXT_debug_report@ extension, the token+-- 'STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT' was used. Starting in+-- version 2 of the extension branch,+-- 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT'+-- is used instead for consistency with Vulkan naming rules. The older enum+-- is still available for backwards compatibility.+--+-- Note+--+-- In the initial release of the @VK_EXT_debug_report@ extension, the token+-- 'DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT' was used. Starting in+-- version 8 of the extension branch,+-- 'DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT' is used instead+-- for consistency with Vulkan naming rules. The older enum is still+-- available for backwards compatibility.+--+-- == Issues+--+-- 1) What is the hierarchy \/ seriousness of the message flags? E.g.+-- @ERROR@ > @WARN@ > @PERF_WARN@ …​+--+-- __RESOLVED__: There is no specific hierarchy. Each bit is independent+-- and should be checked via bitwise AND. For example:+--+-- >     if (localFlags & VK_DEBUG_REPORT_ERROR_BIT_EXT) {+-- >         process error message+-- >     }+-- >     if (localFlags & VK_DEBUG_REPORT_DEBUG_BIT_EXT) {+-- >         process debug message+-- >     }+--+-- The validation layers do use them in a hierarchical way (@ERROR@ >+-- @WARN@ > @PERF@, @WARN@ > @DEBUG@ > @INFO@) and they (at least at the+-- time of this writing) only set one bit at a time. But it is not a+-- requirement of this extension.+--+-- It is possible that a layer may intercept and change, or augment the+-- flags with extension values the application’s debug report handler may+-- not be familiar with, so it is important to treat each flag+-- independently.+--+-- 2) Should there be a VU requiring+-- 'DebugReportCallbackCreateInfoEXT'::@flags@ to be non-zero?+--+-- __RESOLVED__: It may not be very useful, but we do not need VU statement+-- requiring the 'DebugReportCallbackCreateInfoEXT'::@msgFlags@ at+-- create-time to be non-zero. One can imagine that apps may prefer it as+-- it allows them to set the mask as desired - including nothing - at+-- runtime without having to check.+--+-- 3) What is the difference between 'DEBUG_REPORT_DEBUG_BIT_EXT' and+-- 'DEBUG_REPORT_INFORMATION_BIT_EXT'?+--+-- __RESOLVED__: 'DEBUG_REPORT_DEBUG_BIT_EXT' specifies information that+-- could be useful debugging the Vulkan implementation itself.+--+-- == Version History+--+-- -   Revision 1, 2015-05-20 (Courtney Goetzenleuchter)+--+--     -   Initial draft, based on LunarG KHR spec, other KHR specs+--+-- -   Revision 2, 2016-02-16 (Courtney Goetzenleuchter)+--+--     -   Update usage, documentation+--+-- -   Revision 3, 2016-06-14 (Courtney Goetzenleuchter)+--+--     -   Update VK_EXT_DEBUG_REPORT_SPEC_VERSION to indicate added+--         support for vkCreateInstance and vkDestroyInstance+--+-- -   Revision 4, 2016-12-08 (Mark Lobodzinski)+--+--     -   Added Display_KHR, DisplayModeKHR extension objects+--+--     -   Added ObjectTable_NVX, IndirectCommandsLayout_NVX extension+--         objects+--+--     -   Bumped spec revision+--+--     -   Retroactively added version history+--+-- -   Revision 5, 2017-01-31 (Baldur Karlsson)+--+--     -   Moved definition of 'DebugReportObjectTypeEXT' from debug marker+--         chapter+--+-- -   Revision 6, 2017-01-31 (Baldur Karlsson)+--+--     -   Added+--         VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT+--+-- -   Revision 7, 2017-04-20 (Courtney Goeltzenleuchter)+--+--     -   Clarify wording and address questions from developers.+--+-- -   Revision 8, 2017-04-21 (Courtney Goeltzenleuchter)+--+--     -   Remove unused enum VkDebugReportErrorEXT+--+-- -   Revision 9, 2017-09-12 (Tobias Hector)+--+--     -   Added interactions with Vulkan 1.1+--+-- = See Also+--+-- 'PFN_vkDebugReportCallbackEXT', 'DebugReportCallbackCreateInfoEXT',+-- 'Vulkan.Extensions.Handles.DebugReportCallbackEXT',+-- 'DebugReportFlagBitsEXT', 'DebugReportFlagsEXT',+-- 'DebugReportObjectTypeEXT', 'createDebugReportCallbackEXT',+-- 'debugReportMessageEXT', 'destroyDebugReportCallbackEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_report Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_debug_report  ( DebugReportCallbackCreateInfoEXT-                                              , DebugReportFlagBitsEXT                                               , DebugReportFlagsEXT+                                              , DebugReportFlagBitsEXT                                               , DebugReportObjectTypeEXT                                               ) where @@ -16,9 +324,9 @@ instance FromCStruct DebugReportCallbackCreateInfoEXT  -data DebugReportFlagBitsEXT- type DebugReportFlagsEXT = DebugReportFlagBitsEXT++data DebugReportFlagBitsEXT   data DebugReportObjectTypeEXT
src/Vulkan/Extensions/VK_EXT_debug_utils.hs view
@@ -1,4 +1,491 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_debug_utils - instance extension+--+-- == VK_EXT_debug_utils+--+-- [__Name String__]+--     @VK_EXT_debug_utils@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     129+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Debugging tools>+--+-- [__Contact__]+--+--     -   Mark Young+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_debug_utils:%20&body=@marky-lunarg%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-04-03+--+-- [__Revision__]+--     2+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Dependencies__]+--+--     -   This extension is written against version 1.0 of the Vulkan API.+--+--     -   Requires 'Vulkan.Core10.Enums.ObjectType.ObjectType'+--+-- [__Contributors__]+--+--     -   Mark Young, LunarG+--+--     -   Baldur Karlsson+--+--     -   Ian Elliott, Google+--+--     -   Courtney Goeltzenleuchter, Google+--+--     -   Karl Schultz, LunarG+--+--     -   Mark Lobodzinski, LunarG+--+--     -   Mike Schuchardt, LunarG+--+--     -   Jaakko Konttinen, AMD+--+--     -   Dan Ginsburg, Valve Software+--+--     -   Rolando Olivares, Epic Games+--+--     -   Dan Baker, Oxide Games+--+--     -   Kyle Spagnoli, NVIDIA+--+--     -   Jon Ashburn, LunarG+--+--     -   Piers Daniell, NVIDIA+--+-- == Description+--+-- Due to the nature of the Vulkan interface, there is very little error+-- information available to the developer and application. By using the+-- @VK_EXT_debug_utils@ extension, developers /can/ obtain more+-- information. When combined with validation layers, even more detailed+-- feedback on the application’s use of Vulkan will be provided.+--+-- This extension provides the following capabilities:+--+-- -   The ability to create a debug messenger which will pass along debug+--     messages to an application supplied callback.+--+-- -   The ability to identify specific Vulkan objects using a name or tag+--     to improve tracking.+--+-- -   The ability to identify specific sections within a+--     'Vulkan.Core10.Handles.Queue' or+--     'Vulkan.Core10.Handles.CommandBuffer' using labels to aid+--     organization and offline analysis in external tools.+--+-- The main difference between this extension and @VK_EXT_debug_report@ and+-- @VK_EXT_debug_marker@ is that those extensions use+-- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT' to+-- identify objects. This extension uses the core+-- 'Vulkan.Core10.Enums.ObjectType.ObjectType' in place of+-- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT'. The+-- primary reason for this move is that no future object type handle+-- enumeration values will be added to+-- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT' since+-- the creation of 'Vulkan.Core10.Enums.ObjectType.ObjectType'.+--+-- In addition, this extension combines the functionality of both+-- @VK_EXT_debug_report@ and @VK_EXT_debug_marker@ by allowing object name+-- and debug markers (now called labels) to be returned to the+-- application’s callback function. This should assist in clarifying the+-- details of a debug message including: what objects are involved and+-- potentially which location within a 'Vulkan.Core10.Handles.Queue' or+-- 'Vulkan.Core10.Handles.CommandBuffer' the message occurred.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.DebugUtilsMessengerEXT'+--+-- == New Commands+--+-- -   'cmdBeginDebugUtilsLabelEXT'+--+-- -   'cmdEndDebugUtilsLabelEXT'+--+-- -   'cmdInsertDebugUtilsLabelEXT'+--+-- -   'createDebugUtilsMessengerEXT'+--+-- -   'destroyDebugUtilsMessengerEXT'+--+-- -   'queueBeginDebugUtilsLabelEXT'+--+-- -   'queueEndDebugUtilsLabelEXT'+--+-- -   'queueInsertDebugUtilsLabelEXT'+--+-- -   'setDebugUtilsObjectNameEXT'+--+-- -   'setDebugUtilsObjectTagEXT'+--+-- -   'submitDebugUtilsMessageEXT'+--+-- == New Structures+--+-- -   'DebugUtilsLabelEXT'+--+-- -   'DebugUtilsMessengerCallbackDataEXT'+--+-- -   'DebugUtilsObjectNameInfoEXT'+--+-- -   'DebugUtilsObjectTagInfoEXT'+--+-- -   Extending 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo':+--+--     -   'DebugUtilsMessengerCreateInfoEXT'+--+-- == New Function Pointers+--+-- -   'PFN_vkDebugUtilsMessengerCallbackEXT'+--+-- == New Enums+--+-- -   'DebugUtilsMessageSeverityFlagBitsEXT'+--+-- -   'DebugUtilsMessageTypeFlagBitsEXT'+--+-- == New Bitmasks+--+-- -   'DebugUtilsMessageSeverityFlagsEXT'+--+-- -   'DebugUtilsMessageTypeFlagsEXT'+--+-- -   'DebugUtilsMessengerCallbackDataFlagsEXT'+--+-- -   'DebugUtilsMessengerCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DEBUG_UTILS_EXTENSION_NAME'+--+-- -   'EXT_DEBUG_UTILS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT'+--+-- == Examples+--+-- __Example 1__+--+-- @VK_EXT_debug_utils@ allows an application to register multiple+-- callbacks with any Vulkan component wishing to report debug information.+-- Some callbacks may log the information to a file, others may cause a+-- debug break point or other application defined behavior. An application+-- /can/ register callbacks even when no validation layers are enabled, but+-- they will only be called for loader and, if implemented, driver events.+--+-- To capture events that occur while creating or destroying an instance an+-- application /can/ link a 'DebugUtilsMessengerCreateInfoEXT' structure to+-- the @pNext@ element of the+-- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure given+-- to 'Vulkan.Core10.DeviceInitialization.createInstance'. This callback is+-- only valid for the duration of the+-- 'Vulkan.Core10.DeviceInitialization.createInstance' and the+-- 'Vulkan.Core10.DeviceInitialization.destroyInstance' call. Use+-- 'createDebugUtilsMessengerEXT' to create persistent callback objects.+--+-- Example uses: Create three callback objects. One will log errors and+-- warnings to the debug console using Windows @OutputDebugString@. The+-- second will cause the debugger to break at that callback when an error+-- happens and the third will log warnings to stdout.+--+-- >     extern VkInstance instance;+-- >     VkResult res;+-- >     VkDebugUtilsMessengerEXT cb1, cb2, cb3;+-- >+-- >     // Must call extension functions through a function pointer:+-- >     PFN_vkCreateDebugUtilsMessengerEXT pfnCreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT)vkGetDeviceProcAddr(device, "vkCreateDebugUtilsMessengerEXT");+-- >     PFN_vkDestroyDebugUtilsMessengerEXT pfnDestroyDebugUtilsMessengerEXT = (PFN_vkDestroyDebugUtilsMessengerEXT)vkGetDeviceProcAddr(device, "vkDestroyDebugUtilsMessengerEXT");+-- >+-- >     VkDebugUtilsMessengeCreateInfoEXT callback1 = {+-- >             VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,  // sType+-- >             NULL,                                                     // pNext+-- >             0,                                                        // flags+-- >             VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT |           // messageSeverity+-- >             VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT,+-- >             VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT |             // messageType+-- >             VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT,+-- >             myOutputDebugString,                                      // pfnUserCallback+-- >             NULL                                                      // pUserData+-- >     };+-- >     res = pfnCreateDebugUtilsMessengerEXT(instance, &callback1, NULL, &cb1);+-- >     if (res != VK_SUCCESS) {+-- >        // Do error handling for VK_ERROR_OUT_OF_MEMORY+-- >     }+-- >+-- >     callback1.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;+-- >     callback1.pfnCallback = myDebugBreak;+-- >     callback1.pUserData = NULL;+-- >     res = pfnCreateDebugUtilsMessengerEXT(instance, &callback1, NULL, &cb2);+-- >     if (res != VK_SUCCESS) {+-- >        // Do error handling for VK_ERROR_OUT_OF_MEMORY+-- >     }+-- >+-- >     VkDebugUtilsMessengerCreateInfoEXT callback3 = {+-- >             VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,  // sType+-- >             NULL,                                                     // pNext+-- >             0,                                                        // flags+-- >             VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT,          // messageSeverity+-- >             VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT |             // messageType+-- >             VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT,+-- >             mystdOutLogger,                                           // pfnUserCallback+-- >             NULL                                                      // pUserData+-- >     };+-- >     res = pfnCreateDebugUtilsMessengerEXT(instance, &callback3, NULL, &cb3);+-- >     if (res != VK_SUCCESS) {+-- >        // Do error handling for VK_ERROR_OUT_OF_MEMORY+-- >     }+-- >+-- >     ...+-- >+-- >     // Remove callbacks when cleaning up+-- >     pfnDestroyDebugUtilsMessengerEXT(instance, cb1, NULL);+-- >     pfnDestroyDebugUtilsMessengerEXT(instance, cb2, NULL);+-- >     pfnDestroyDebugUtilsMessengerEXT(instance, cb3, NULL);+--+-- __Example 2__+--+-- Associate a name with an image, for easier debugging in external tools+-- or with validation layers that can print a friendly name when referring+-- to objects in error messages.+--+-- >     extern VkDevice device;+-- >     extern VkImage image;+-- >+-- >     // Must call extension functions through a function pointer:+-- >     PFN_vkSetDebugUtilsObjectNameEXT pfnSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)vkGetDeviceProcAddr(device, "vkSetDebugUtilsObjectNameEXT");+-- >+-- >     // Set a name on the image+-- >     const VkDebugUtilsObjectNameInfoEXT imageNameInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT, // sType+-- >         NULL,                                               // pNext+-- >         VK_OBJECT_TYPE_IMAGE,                               // objectType+-- >         (uint64_t)image,                                    // object+-- >         "Brick Diffuse Texture",                            // pObjectName+-- >     };+-- >+-- >     pfnSetDebugUtilsObjectNameEXT(device, &imageNameInfo);+-- >+-- >     // A subsequent error might print:+-- >     //   Image 'Brick Diffuse Texture' (0xc0dec0dedeadbeef) is used in a+-- >     //   command buffer with no memory bound to it.+--+-- __Example 3__+--+-- Annotating regions of a workload with naming information so that offline+-- analysis tools can display a more usable visualization of the commands+-- submitted.+--+-- >     extern VkDevice device;+-- >     extern VkCommandBuffer commandBuffer;+-- >+-- >     // Must call extension functions through a function pointer:+-- >     PFN_vkQueueBeginDebugUtilsLabelEXT pfnQueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)vkGetDeviceProcAddr(device, "vkQueueBeginDebugUtilsLabelEXT");+-- >     PFN_vkQueueEndDebugUtilsLabelEXT pfnQueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)vkGetDeviceProcAddr(device, "vkQueueEndDebugUtilsLabelEXT");+-- >     PFN_vkCmdBeginDebugUtilsLabelEXT pfnCmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)vkGetDeviceProcAddr(device, "vkCmdBeginDebugUtilsLabelEXT");+-- >     PFN_vkCmdEndDebugUtilsLabelEXT pfnCmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)vkGetDeviceProcAddr(device, "vkCmdEndDebugUtilsLabelEXT");+-- >     PFN_vkCmdInsertDebugUtilsLabelEXT pfnCmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)vkGetDeviceProcAddr(device, "vkCmdInsertDebugUtilsLabelEXT");+-- >+-- >     // Describe the area being rendered+-- >     const VkDebugUtilsLabelEXT houseLabel =+-- >     {+-- >         VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, // sType+-- >         NULL,                                    // pNext+-- >         "Brick House",                           // pLabelName+-- >         { 1.0f, 0.0f, 0.0f, 1.0f },              // color+-- >     };+-- >+-- >     // Start an annotated group of calls under the 'Brick House' name+-- >     pfnCmdBeginDebugUtilsLabelEXT(commandBuffer, &houseLabel);+-- >     {+-- >         // A mutable structure for each part being rendered+-- >         VkDebugUtilsLabelEXT housePartLabel =+-- >         {+-- >             VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, // sType+-- >             NULL,                                    // pNext+-- >             NULL,                                    // pLabelName+-- >             { 0.0f, 0.0f, 0.0f, 0.0f },              // color+-- >         };+-- >+-- >         // Set the name and insert the marker+-- >         housePartLabel.pLabelName = "Walls";+-- >         pfnCmdInsertDebugUtilsLabelEXT(commandBuffer, &housePartLabel);+-- >+-- >         // Insert the drawcall for the walls+-- >         vkCmdDrawIndexed(commandBuffer, 1000, 1, 0, 0, 0);+-- >+-- >         // Insert a recursive region for two sets of windows+-- >         housePartLabel.pLabelName = "Windows";+-- >         pfnCmdBeginDebugUtilsLabelEXT(commandBuffer, &housePartLabel);+-- >         {+-- >             vkCmdDrawIndexed(commandBuffer, 75, 6, 1000, 0, 0);+-- >             vkCmdDrawIndexed(commandBuffer, 100, 2, 1450, 0, 0);+-- >         }+-- >         pfnCmdEndDebugUtilsLabelEXT(commandBuffer);+-- >+-- >         housePartLabel.pLabelName = "Front Door";+-- >         pfnCmdInsertDebugUtilsLabelEXT(commandBuffer, &housePartLabel);+-- >+-- >         vkCmdDrawIndexed(commandBuffer, 350, 1, 1650, 0, 0);+-- >+-- >         housePartLabel.pLabelName = "Roof";+-- >         pfnCmdInsertDebugUtilsLabelEXT(commandBuffer, &housePartLabel);+-- >+-- >         vkCmdDrawIndexed(commandBuffer, 500, 1, 2000, 0, 0);+-- >     }+-- >     // End the house annotation started above+-- >     pfnCmdEndDebugUtilsLabelEXT(commandBuffer);+-- >+-- >     // Do other work+-- >+-- >     vkEndCommandBuffer(commandBuffer);+-- >+-- >     // Describe the queue being used+-- >     const VkDebugUtilsLabelEXT queueLabel =+-- >     {+-- >         VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, // sType+-- >         NULL,                                    // pNext+-- >         "Main Render Work",                      // pLabelName+-- >         { 0.0f, 1.0f, 0.0f, 1.0f },              // color+-- >     };+-- >+-- >     // Identify the queue label region+-- >     pfnQueueBeginDebugUtilsLabelEXT(queue, &queueLabel);+-- >+-- >     // Submit the work for the main render thread+-- >     const VkCommandBuffer cmd_bufs[] = {commandBuffer};+-- >     VkSubmitInfo submit_info = {.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO,+-- >                                 .pNext = NULL,+-- >                                 .waitSemaphoreCount = 0,+-- >                                 .pWaitSemaphores = NULL,+-- >                                 .pWaitDstStageMask = NULL,+-- >                                 .commandBufferCount = 1,+-- >                                 .pCommandBuffers = cmd_bufs,+-- >                                 .signalSemaphoreCount = 0,+-- >                                 .pSignalSemaphores = NULL};+-- >     vkQueueSubmit(queue, 1, &submit_info, fence);+-- >+-- >     // End the queue label region+-- >     pfnQueueEndDebugUtilsLabelEXT(queue);+--+-- == Issues+--+-- 1) Should we just name this extension @VK_EXT_debug_report2@+--+-- __RESOLVED__: No. There is enough additional changes to the structures+-- to break backwards compatibility. So, a new name was decided that would+-- not indicate any interaction with the previous extension.+--+-- 2) Will validation layers immediately support all the new features.+--+-- __RESOLVED__: Not immediately. As one can imagine, there is a lot of+-- work involved with converting the validation layer logging over to the+-- new functionality. Basic logging, as seen in the origin+-- @VK_EXT_debug_report@ extension will be made available immediately.+-- However, adding the labels and object names will take time. Since the+-- priority for Khronos at this time is to continue focusing on Valid Usage+-- statements, it may take a while before the new functionality is fully+-- exposed.+--+-- 3) If the validation layers won’t expose the new functionality+-- immediately, then what’s the point of this extension?+--+-- __RESOLVED__: We needed a replacement for @VK_EXT_debug_report@ because+-- the 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT'+-- enumeration will no longer be updated and any new objects will need to+-- be debugged using the new functionality provided by this extension.+--+-- 4) Should this extension be split into two separate parts (1 extension+-- that is an instance extension providing the callback functionality, and+-- another device extension providing the general debug marker and+-- annotation functionality)?+--+-- __RESOLVED__: No, the functionality for this extension is too closely+-- related. If we did split up the extension, where would the structures+-- and enums live, and how would you define that the device behavior in the+-- instance extension is really only valid if the device extension is+-- enabled, and the functionality is passed in. It’s cleaner to just define+-- this all as an instance extension, plus it allows the application to+-- enable all debug functionality provided with one enable string during+-- 'Vulkan.Core10.DeviceInitialization.createInstance'.+--+-- == Version History+--+-- -   Revision 1, 2017-09-14 (Mark Young and all listed Contributors)+--+--     -   Initial draft, based on @VK_EXT_debug_report@ and+--         @VK_EXT_debug_marker@ in addition to previous feedback supplied+--         from various companies including Valve, Epic, and Oxide games.+--+-- -   Revision 2, 2020-04-03 (Mark Young and Piers Daniell)+--+--     -   Updated to allow either @NULL@ or an empty string to be passed+--         in for @pObjectName@ in 'DebugUtilsObjectNameInfoEXT', because+--         the loader and various drivers support @NULL@ already.+--+-- = See Also+--+-- 'PFN_vkDebugUtilsMessengerCallbackEXT', 'DebugUtilsLabelEXT',+-- 'DebugUtilsMessageSeverityFlagBitsEXT',+-- 'DebugUtilsMessageSeverityFlagsEXT', 'DebugUtilsMessageTypeFlagBitsEXT',+-- 'DebugUtilsMessageTypeFlagsEXT', 'DebugUtilsMessengerCallbackDataEXT',+-- 'DebugUtilsMessengerCallbackDataFlagsEXT',+-- 'DebugUtilsMessengerCreateFlagsEXT', 'DebugUtilsMessengerCreateInfoEXT',+-- 'Vulkan.Extensions.Handles.DebugUtilsMessengerEXT',+-- 'DebugUtilsObjectNameInfoEXT', 'DebugUtilsObjectTagInfoEXT',+-- 'cmdBeginDebugUtilsLabelEXT', 'cmdEndDebugUtilsLabelEXT',+-- 'cmdInsertDebugUtilsLabelEXT', 'createDebugUtilsMessengerEXT',+-- 'destroyDebugUtilsMessengerEXT', 'queueBeginDebugUtilsLabelEXT',+-- 'queueEndDebugUtilsLabelEXT', 'queueInsertDebugUtilsLabelEXT',+-- 'setDebugUtilsObjectNameEXT', 'setDebugUtilsObjectTagEXT',+-- 'submitDebugUtilsMessageEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_debug_utils  ( setDebugUtilsObjectNameEXT                                              , setDebugUtilsObjectTagEXT                                              , queueBeginDebugUtilsLabelEXT@@ -19,19 +506,19 @@                                              , DebugUtilsMessengerCallbackDataEXT(..)                                              , DebugUtilsMessengerCreateFlagsEXT(..)                                              , DebugUtilsMessengerCallbackDataFlagsEXT(..)+                                             , DebugUtilsMessageSeverityFlagsEXT                                              , DebugUtilsMessageSeverityFlagBitsEXT( DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT                                                                                    , DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT                                                                                    , DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT                                                                                    , DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT                                                                                    , ..                                                                                    )-                                             , DebugUtilsMessageSeverityFlagsEXT+                                             , DebugUtilsMessageTypeFlagsEXT                                              , DebugUtilsMessageTypeFlagBitsEXT( DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT                                                                                , DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT                                                                                , DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT                                                                                , ..                                                                                )-                                             , DebugUtilsMessageTypeFlagsEXT                                              , PFN_vkDebugUtilsMessengerCallbackEXT                                              , FN_vkDebugUtilsMessengerCallbackEXT                                              , EXT_DEBUG_UTILS_SPEC_VERSION@@ -42,6 +529,8 @@                                              ) where  import Vulkan.CStruct.Utils (FixedArray)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -54,15 +543,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.ByteString (packCString) import Data.ByteString (useAsCString) import Control.Monad.Trans.Class (lift)@@ -91,9 +573,9 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32) import Data.Word (Word64)-import Text.Read.Lex (Lexeme(Ident)) import Data.ByteString (ByteString) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))@@ -716,10 +1198,10 @@ -- -- To ensure that 'destroyDebugUtilsMessengerEXT' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withDebugUtilsMessengerEXT :: forall io r . MonadIO io => Instance -> DebugUtilsMessengerCreateInfoEXT -> Maybe AllocationCallbacks -> (io (DebugUtilsMessengerEXT) -> ((DebugUtilsMessengerEXT) -> io ()) -> r) -> r+withDebugUtilsMessengerEXT :: forall io r . MonadIO io => Instance -> DebugUtilsMessengerCreateInfoEXT -> Maybe AllocationCallbacks -> (io DebugUtilsMessengerEXT -> (DebugUtilsMessengerEXT -> io ()) -> r) -> r withDebugUtilsMessengerEXT instance' pCreateInfo pAllocator b =   b (createDebugUtilsMessengerEXT instance' pCreateInfo pAllocator)     (\(o0) -> destroyDebugUtilsMessengerEXT instance' o0 pAllocator)@@ -1492,17 +1974,27 @@   +conNameDebugUtilsMessengerCreateFlagsEXT :: String+conNameDebugUtilsMessengerCreateFlagsEXT = "DebugUtilsMessengerCreateFlagsEXT"++enumPrefixDebugUtilsMessengerCreateFlagsEXT :: String+enumPrefixDebugUtilsMessengerCreateFlagsEXT = ""++showTableDebugUtilsMessengerCreateFlagsEXT :: [(DebugUtilsMessengerCreateFlagsEXT, String)]+showTableDebugUtilsMessengerCreateFlagsEXT = []+ instance Show DebugUtilsMessengerCreateFlagsEXT where-  showsPrec p = \case-    DebugUtilsMessengerCreateFlagsEXT x -> showParen (p >= 11) (showString "DebugUtilsMessengerCreateFlagsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDebugUtilsMessengerCreateFlagsEXT+                            showTableDebugUtilsMessengerCreateFlagsEXT+                            conNameDebugUtilsMessengerCreateFlagsEXT+                            (\(DebugUtilsMessengerCreateFlagsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DebugUtilsMessengerCreateFlagsEXT where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "DebugUtilsMessengerCreateFlagsEXT")-                       v <- step readPrec-                       pure (DebugUtilsMessengerCreateFlagsEXT v)))+  readPrec = enumReadPrec enumPrefixDebugUtilsMessengerCreateFlagsEXT+                          showTableDebugUtilsMessengerCreateFlagsEXT+                          conNameDebugUtilsMessengerCreateFlagsEXT+                          DebugUtilsMessengerCreateFlagsEXT   -- | VkDebugUtilsMessengerCallbackDataFlagsEXT - Reserved for future use@@ -1520,19 +2012,31 @@   +conNameDebugUtilsMessengerCallbackDataFlagsEXT :: String+conNameDebugUtilsMessengerCallbackDataFlagsEXT = "DebugUtilsMessengerCallbackDataFlagsEXT"++enumPrefixDebugUtilsMessengerCallbackDataFlagsEXT :: String+enumPrefixDebugUtilsMessengerCallbackDataFlagsEXT = ""++showTableDebugUtilsMessengerCallbackDataFlagsEXT :: [(DebugUtilsMessengerCallbackDataFlagsEXT, String)]+showTableDebugUtilsMessengerCallbackDataFlagsEXT = []+ instance Show DebugUtilsMessengerCallbackDataFlagsEXT where-  showsPrec p = \case-    DebugUtilsMessengerCallbackDataFlagsEXT x -> showParen (p >= 11) (showString "DebugUtilsMessengerCallbackDataFlagsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDebugUtilsMessengerCallbackDataFlagsEXT+                            showTableDebugUtilsMessengerCallbackDataFlagsEXT+                            conNameDebugUtilsMessengerCallbackDataFlagsEXT+                            (\(DebugUtilsMessengerCallbackDataFlagsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DebugUtilsMessengerCallbackDataFlagsEXT where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "DebugUtilsMessengerCallbackDataFlagsEXT")-                       v <- step readPrec-                       pure (DebugUtilsMessengerCallbackDataFlagsEXT v)))+  readPrec = enumReadPrec enumPrefixDebugUtilsMessengerCallbackDataFlagsEXT+                          showTableDebugUtilsMessengerCallbackDataFlagsEXT+                          conNameDebugUtilsMessengerCallbackDataFlagsEXT+                          DebugUtilsMessengerCallbackDataFlagsEXT  +type DebugUtilsMessageSeverityFlagsEXT = DebugUtilsMessageSeverityFlagBitsEXT+ -- | VkDebugUtilsMessageSeverityFlagBitsEXT - Bitmask specifying which -- severities of events cause a debug messenger callback --@@ -1549,7 +2053,7 @@ -- | 'DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT' specifies an informational -- message such as resource details that may be handy when debugging an -- application.-pattern DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = DebugUtilsMessageSeverityFlagBitsEXT 0x00000010+pattern DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT    = DebugUtilsMessageSeverityFlagBitsEXT 0x00000010 -- | 'DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT' specifies use of Vulkan -- that /may/ expose an app bug. Such cases may not be immediately harmful, -- such as a fragment shader outputting to a location with no attachment.@@ -1560,30 +2064,38 @@ pattern DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = DebugUtilsMessageSeverityFlagBitsEXT 0x00000100 -- | 'DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT' specifies that the -- application has violated a valid usage condition of the specification.-pattern DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = DebugUtilsMessageSeverityFlagBitsEXT 0x00001000+pattern DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT   = DebugUtilsMessageSeverityFlagBitsEXT 0x00001000 -type DebugUtilsMessageSeverityFlagsEXT = DebugUtilsMessageSeverityFlagBitsEXT+conNameDebugUtilsMessageSeverityFlagBitsEXT :: String+conNameDebugUtilsMessageSeverityFlagBitsEXT = "DebugUtilsMessageSeverityFlagBitsEXT" +enumPrefixDebugUtilsMessageSeverityFlagBitsEXT :: String+enumPrefixDebugUtilsMessageSeverityFlagBitsEXT = "DEBUG_UTILS_MESSAGE_SEVERITY_"++showTableDebugUtilsMessageSeverityFlagBitsEXT :: [(DebugUtilsMessageSeverityFlagBitsEXT, String)]+showTableDebugUtilsMessageSeverityFlagBitsEXT =+  [ (DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT, "VERBOSE_BIT_EXT")+  , (DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT   , "INFO_BIT_EXT")+  , (DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT, "WARNING_BIT_EXT")+  , (DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT  , "ERROR_BIT_EXT")+  ]+ instance Show DebugUtilsMessageSeverityFlagBitsEXT where-  showsPrec p = \case-    DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT -> showString "DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"-    DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT -> showString "DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"-    DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT -> showString "DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"-    DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT -> showString "DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"-    DebugUtilsMessageSeverityFlagBitsEXT x -> showParen (p >= 11) (showString "DebugUtilsMessageSeverityFlagBitsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDebugUtilsMessageSeverityFlagBitsEXT+                            showTableDebugUtilsMessageSeverityFlagBitsEXT+                            conNameDebugUtilsMessageSeverityFlagBitsEXT+                            (\(DebugUtilsMessageSeverityFlagBitsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DebugUtilsMessageSeverityFlagBitsEXT where-  readPrec = parens (choose [("DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT", pure DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT)-                            , ("DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT", pure DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT)-                            , ("DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT", pure DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT)-                            , ("DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT", pure DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "DebugUtilsMessageSeverityFlagBitsEXT")-                       v <- step readPrec-                       pure (DebugUtilsMessageSeverityFlagBitsEXT v)))+  readPrec = enumReadPrec enumPrefixDebugUtilsMessageSeverityFlagBitsEXT+                          showTableDebugUtilsMessageSeverityFlagBitsEXT+                          conNameDebugUtilsMessageSeverityFlagBitsEXT+                          DebugUtilsMessageSeverityFlagBitsEXT  +type DebugUtilsMessageTypeFlagsEXT = DebugUtilsMessageTypeFlagBitsEXT+ -- | VkDebugUtilsMessageTypeFlagBitsEXT - Bitmask specifying which types of -- events cause a debug messenger callback --@@ -1596,11 +2108,11 @@ -- | 'DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT' specifies that some general -- event has occurred. This is typically a non-specification, -- non-performance event.-pattern DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = DebugUtilsMessageTypeFlagBitsEXT 0x00000001+pattern DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT     = DebugUtilsMessageTypeFlagBitsEXT 0x00000001 -- | 'DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT' specifies that something -- has occurred during validation against the Vulkan specification that may -- indicate invalid behavior.-pattern DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = DebugUtilsMessageTypeFlagBitsEXT 0x00000002+pattern DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT  = DebugUtilsMessageTypeFlagBitsEXT 0x00000002 -- | 'DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT' specifies a potentially -- non-optimal use of Vulkan, e.g. using -- 'Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage' when setting@@ -1609,24 +2121,31 @@ -- have worked. pattern DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = DebugUtilsMessageTypeFlagBitsEXT 0x00000004 -type DebugUtilsMessageTypeFlagsEXT = DebugUtilsMessageTypeFlagBitsEXT+conNameDebugUtilsMessageTypeFlagBitsEXT :: String+conNameDebugUtilsMessageTypeFlagBitsEXT = "DebugUtilsMessageTypeFlagBitsEXT" +enumPrefixDebugUtilsMessageTypeFlagBitsEXT :: String+enumPrefixDebugUtilsMessageTypeFlagBitsEXT = "DEBUG_UTILS_MESSAGE_TYPE_"++showTableDebugUtilsMessageTypeFlagBitsEXT :: [(DebugUtilsMessageTypeFlagBitsEXT, String)]+showTableDebugUtilsMessageTypeFlagBitsEXT =+  [ (DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT    , "GENERAL_BIT_EXT")+  , (DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT , "VALIDATION_BIT_EXT")+  , (DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT, "PERFORMANCE_BIT_EXT")+  ]+ instance Show DebugUtilsMessageTypeFlagBitsEXT where-  showsPrec p = \case-    DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT -> showString "DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"-    DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT -> showString "DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"-    DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT -> showString "DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"-    DebugUtilsMessageTypeFlagBitsEXT x -> showParen (p >= 11) (showString "DebugUtilsMessageTypeFlagBitsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDebugUtilsMessageTypeFlagBitsEXT+                            showTableDebugUtilsMessageTypeFlagBitsEXT+                            conNameDebugUtilsMessageTypeFlagBitsEXT+                            (\(DebugUtilsMessageTypeFlagBitsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DebugUtilsMessageTypeFlagBitsEXT where-  readPrec = parens (choose [("DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT", pure DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT)-                            , ("DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT", pure DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT)-                            , ("DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT", pure DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "DebugUtilsMessageTypeFlagBitsEXT")-                       v <- step readPrec-                       pure (DebugUtilsMessageTypeFlagBitsEXT v)))+  readPrec = enumReadPrec enumPrefixDebugUtilsMessageTypeFlagBitsEXT+                          showTableDebugUtilsMessageTypeFlagBitsEXT+                          conNameDebugUtilsMessageTypeFlagBitsEXT+                          DebugUtilsMessageTypeFlagBitsEXT   type FN_vkDebugUtilsMessengerCallbackEXT = DebugUtilsMessageSeverityFlagBitsEXT -> ("messageTypes" ::: DebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr DebugUtilsMessengerCallbackDataEXT) -> ("pUserData" ::: Ptr ()) -> IO Bool32
src/Vulkan/Extensions/VK_EXT_debug_utils.hs-boot view
@@ -1,13 +1,500 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_debug_utils - instance extension+--+-- == VK_EXT_debug_utils+--+-- [__Name String__]+--     @VK_EXT_debug_utils@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     129+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Debugging tools>+--+-- [__Contact__]+--+--     -   Mark Young+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_debug_utils:%20&body=@marky-lunarg%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-04-03+--+-- [__Revision__]+--     2+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Dependencies__]+--+--     -   This extension is written against version 1.0 of the Vulkan API.+--+--     -   Requires 'Vulkan.Core10.Enums.ObjectType.ObjectType'+--+-- [__Contributors__]+--+--     -   Mark Young, LunarG+--+--     -   Baldur Karlsson+--+--     -   Ian Elliott, Google+--+--     -   Courtney Goeltzenleuchter, Google+--+--     -   Karl Schultz, LunarG+--+--     -   Mark Lobodzinski, LunarG+--+--     -   Mike Schuchardt, LunarG+--+--     -   Jaakko Konttinen, AMD+--+--     -   Dan Ginsburg, Valve Software+--+--     -   Rolando Olivares, Epic Games+--+--     -   Dan Baker, Oxide Games+--+--     -   Kyle Spagnoli, NVIDIA+--+--     -   Jon Ashburn, LunarG+--+--     -   Piers Daniell, NVIDIA+--+-- == Description+--+-- Due to the nature of the Vulkan interface, there is very little error+-- information available to the developer and application. By using the+-- @VK_EXT_debug_utils@ extension, developers /can/ obtain more+-- information. When combined with validation layers, even more detailed+-- feedback on the application’s use of Vulkan will be provided.+--+-- This extension provides the following capabilities:+--+-- -   The ability to create a debug messenger which will pass along debug+--     messages to an application supplied callback.+--+-- -   The ability to identify specific Vulkan objects using a name or tag+--     to improve tracking.+--+-- -   The ability to identify specific sections within a+--     'Vulkan.Core10.Handles.Queue' or+--     'Vulkan.Core10.Handles.CommandBuffer' using labels to aid+--     organization and offline analysis in external tools.+--+-- The main difference between this extension and @VK_EXT_debug_report@ and+-- @VK_EXT_debug_marker@ is that those extensions use+-- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT' to+-- identify objects. This extension uses the core+-- 'Vulkan.Core10.Enums.ObjectType.ObjectType' in place of+-- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT'. The+-- primary reason for this move is that no future object type handle+-- enumeration values will be added to+-- 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT' since+-- the creation of 'Vulkan.Core10.Enums.ObjectType.ObjectType'.+--+-- In addition, this extension combines the functionality of both+-- @VK_EXT_debug_report@ and @VK_EXT_debug_marker@ by allowing object name+-- and debug markers (now called labels) to be returned to the+-- application’s callback function. This should assist in clarifying the+-- details of a debug message including: what objects are involved and+-- potentially which location within a 'Vulkan.Core10.Handles.Queue' or+-- 'Vulkan.Core10.Handles.CommandBuffer' the message occurred.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.DebugUtilsMessengerEXT'+--+-- == New Commands+--+-- -   'cmdBeginDebugUtilsLabelEXT'+--+-- -   'cmdEndDebugUtilsLabelEXT'+--+-- -   'cmdInsertDebugUtilsLabelEXT'+--+-- -   'createDebugUtilsMessengerEXT'+--+-- -   'destroyDebugUtilsMessengerEXT'+--+-- -   'queueBeginDebugUtilsLabelEXT'+--+-- -   'queueEndDebugUtilsLabelEXT'+--+-- -   'queueInsertDebugUtilsLabelEXT'+--+-- -   'setDebugUtilsObjectNameEXT'+--+-- -   'setDebugUtilsObjectTagEXT'+--+-- -   'submitDebugUtilsMessageEXT'+--+-- == New Structures+--+-- -   'DebugUtilsLabelEXT'+--+-- -   'DebugUtilsMessengerCallbackDataEXT'+--+-- -   'DebugUtilsObjectNameInfoEXT'+--+-- -   'DebugUtilsObjectTagInfoEXT'+--+-- -   Extending 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo':+--+--     -   'DebugUtilsMessengerCreateInfoEXT'+--+-- == New Function Pointers+--+-- -   'PFN_vkDebugUtilsMessengerCallbackEXT'+--+-- == New Enums+--+-- -   'DebugUtilsMessageSeverityFlagBitsEXT'+--+-- -   'DebugUtilsMessageTypeFlagBitsEXT'+--+-- == New Bitmasks+--+-- -   'DebugUtilsMessageSeverityFlagsEXT'+--+-- -   'DebugUtilsMessageTypeFlagsEXT'+--+-- -   'DebugUtilsMessengerCallbackDataFlagsEXT'+--+-- -   'DebugUtilsMessengerCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DEBUG_UTILS_EXTENSION_NAME'+--+-- -   'EXT_DEBUG_UTILS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT'+--+-- == Examples+--+-- __Example 1__+--+-- @VK_EXT_debug_utils@ allows an application to register multiple+-- callbacks with any Vulkan component wishing to report debug information.+-- Some callbacks may log the information to a file, others may cause a+-- debug break point or other application defined behavior. An application+-- /can/ register callbacks even when no validation layers are enabled, but+-- they will only be called for loader and, if implemented, driver events.+--+-- To capture events that occur while creating or destroying an instance an+-- application /can/ link a 'DebugUtilsMessengerCreateInfoEXT' structure to+-- the @pNext@ element of the+-- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure given+-- to 'Vulkan.Core10.DeviceInitialization.createInstance'. This callback is+-- only valid for the duration of the+-- 'Vulkan.Core10.DeviceInitialization.createInstance' and the+-- 'Vulkan.Core10.DeviceInitialization.destroyInstance' call. Use+-- 'createDebugUtilsMessengerEXT' to create persistent callback objects.+--+-- Example uses: Create three callback objects. One will log errors and+-- warnings to the debug console using Windows @OutputDebugString@. The+-- second will cause the debugger to break at that callback when an error+-- happens and the third will log warnings to stdout.+--+-- >     extern VkInstance instance;+-- >     VkResult res;+-- >     VkDebugUtilsMessengerEXT cb1, cb2, cb3;+-- >+-- >     // Must call extension functions through a function pointer:+-- >     PFN_vkCreateDebugUtilsMessengerEXT pfnCreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT)vkGetDeviceProcAddr(device, "vkCreateDebugUtilsMessengerEXT");+-- >     PFN_vkDestroyDebugUtilsMessengerEXT pfnDestroyDebugUtilsMessengerEXT = (PFN_vkDestroyDebugUtilsMessengerEXT)vkGetDeviceProcAddr(device, "vkDestroyDebugUtilsMessengerEXT");+-- >+-- >     VkDebugUtilsMessengeCreateInfoEXT callback1 = {+-- >             VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,  // sType+-- >             NULL,                                                     // pNext+-- >             0,                                                        // flags+-- >             VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT |           // messageSeverity+-- >             VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT,+-- >             VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT |             // messageType+-- >             VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT,+-- >             myOutputDebugString,                                      // pfnUserCallback+-- >             NULL                                                      // pUserData+-- >     };+-- >     res = pfnCreateDebugUtilsMessengerEXT(instance, &callback1, NULL, &cb1);+-- >     if (res != VK_SUCCESS) {+-- >        // Do error handling for VK_ERROR_OUT_OF_MEMORY+-- >     }+-- >+-- >     callback1.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;+-- >     callback1.pfnCallback = myDebugBreak;+-- >     callback1.pUserData = NULL;+-- >     res = pfnCreateDebugUtilsMessengerEXT(instance, &callback1, NULL, &cb2);+-- >     if (res != VK_SUCCESS) {+-- >        // Do error handling for VK_ERROR_OUT_OF_MEMORY+-- >     }+-- >+-- >     VkDebugUtilsMessengerCreateInfoEXT callback3 = {+-- >             VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,  // sType+-- >             NULL,                                                     // pNext+-- >             0,                                                        // flags+-- >             VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT,          // messageSeverity+-- >             VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT |             // messageType+-- >             VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT,+-- >             mystdOutLogger,                                           // pfnUserCallback+-- >             NULL                                                      // pUserData+-- >     };+-- >     res = pfnCreateDebugUtilsMessengerEXT(instance, &callback3, NULL, &cb3);+-- >     if (res != VK_SUCCESS) {+-- >        // Do error handling for VK_ERROR_OUT_OF_MEMORY+-- >     }+-- >+-- >     ...+-- >+-- >     // Remove callbacks when cleaning up+-- >     pfnDestroyDebugUtilsMessengerEXT(instance, cb1, NULL);+-- >     pfnDestroyDebugUtilsMessengerEXT(instance, cb2, NULL);+-- >     pfnDestroyDebugUtilsMessengerEXT(instance, cb3, NULL);+--+-- __Example 2__+--+-- Associate a name with an image, for easier debugging in external tools+-- or with validation layers that can print a friendly name when referring+-- to objects in error messages.+--+-- >     extern VkDevice device;+-- >     extern VkImage image;+-- >+-- >     // Must call extension functions through a function pointer:+-- >     PFN_vkSetDebugUtilsObjectNameEXT pfnSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)vkGetDeviceProcAddr(device, "vkSetDebugUtilsObjectNameEXT");+-- >+-- >     // Set a name on the image+-- >     const VkDebugUtilsObjectNameInfoEXT imageNameInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT, // sType+-- >         NULL,                                               // pNext+-- >         VK_OBJECT_TYPE_IMAGE,                               // objectType+-- >         (uint64_t)image,                                    // object+-- >         "Brick Diffuse Texture",                            // pObjectName+-- >     };+-- >+-- >     pfnSetDebugUtilsObjectNameEXT(device, &imageNameInfo);+-- >+-- >     // A subsequent error might print:+-- >     //   Image 'Brick Diffuse Texture' (0xc0dec0dedeadbeef) is used in a+-- >     //   command buffer with no memory bound to it.+--+-- __Example 3__+--+-- Annotating regions of a workload with naming information so that offline+-- analysis tools can display a more usable visualization of the commands+-- submitted.+--+-- >     extern VkDevice device;+-- >     extern VkCommandBuffer commandBuffer;+-- >+-- >     // Must call extension functions through a function pointer:+-- >     PFN_vkQueueBeginDebugUtilsLabelEXT pfnQueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)vkGetDeviceProcAddr(device, "vkQueueBeginDebugUtilsLabelEXT");+-- >     PFN_vkQueueEndDebugUtilsLabelEXT pfnQueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)vkGetDeviceProcAddr(device, "vkQueueEndDebugUtilsLabelEXT");+-- >     PFN_vkCmdBeginDebugUtilsLabelEXT pfnCmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)vkGetDeviceProcAddr(device, "vkCmdBeginDebugUtilsLabelEXT");+-- >     PFN_vkCmdEndDebugUtilsLabelEXT pfnCmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)vkGetDeviceProcAddr(device, "vkCmdEndDebugUtilsLabelEXT");+-- >     PFN_vkCmdInsertDebugUtilsLabelEXT pfnCmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)vkGetDeviceProcAddr(device, "vkCmdInsertDebugUtilsLabelEXT");+-- >+-- >     // Describe the area being rendered+-- >     const VkDebugUtilsLabelEXT houseLabel =+-- >     {+-- >         VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, // sType+-- >         NULL,                                    // pNext+-- >         "Brick House",                           // pLabelName+-- >         { 1.0f, 0.0f, 0.0f, 1.0f },              // color+-- >     };+-- >+-- >     // Start an annotated group of calls under the 'Brick House' name+-- >     pfnCmdBeginDebugUtilsLabelEXT(commandBuffer, &houseLabel);+-- >     {+-- >         // A mutable structure for each part being rendered+-- >         VkDebugUtilsLabelEXT housePartLabel =+-- >         {+-- >             VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, // sType+-- >             NULL,                                    // pNext+-- >             NULL,                                    // pLabelName+-- >             { 0.0f, 0.0f, 0.0f, 0.0f },              // color+-- >         };+-- >+-- >         // Set the name and insert the marker+-- >         housePartLabel.pLabelName = "Walls";+-- >         pfnCmdInsertDebugUtilsLabelEXT(commandBuffer, &housePartLabel);+-- >+-- >         // Insert the drawcall for the walls+-- >         vkCmdDrawIndexed(commandBuffer, 1000, 1, 0, 0, 0);+-- >+-- >         // Insert a recursive region for two sets of windows+-- >         housePartLabel.pLabelName = "Windows";+-- >         pfnCmdBeginDebugUtilsLabelEXT(commandBuffer, &housePartLabel);+-- >         {+-- >             vkCmdDrawIndexed(commandBuffer, 75, 6, 1000, 0, 0);+-- >             vkCmdDrawIndexed(commandBuffer, 100, 2, 1450, 0, 0);+-- >         }+-- >         pfnCmdEndDebugUtilsLabelEXT(commandBuffer);+-- >+-- >         housePartLabel.pLabelName = "Front Door";+-- >         pfnCmdInsertDebugUtilsLabelEXT(commandBuffer, &housePartLabel);+-- >+-- >         vkCmdDrawIndexed(commandBuffer, 350, 1, 1650, 0, 0);+-- >+-- >         housePartLabel.pLabelName = "Roof";+-- >         pfnCmdInsertDebugUtilsLabelEXT(commandBuffer, &housePartLabel);+-- >+-- >         vkCmdDrawIndexed(commandBuffer, 500, 1, 2000, 0, 0);+-- >     }+-- >     // End the house annotation started above+-- >     pfnCmdEndDebugUtilsLabelEXT(commandBuffer);+-- >+-- >     // Do other work+-- >+-- >     vkEndCommandBuffer(commandBuffer);+-- >+-- >     // Describe the queue being used+-- >     const VkDebugUtilsLabelEXT queueLabel =+-- >     {+-- >         VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, // sType+-- >         NULL,                                    // pNext+-- >         "Main Render Work",                      // pLabelName+-- >         { 0.0f, 1.0f, 0.0f, 1.0f },              // color+-- >     };+-- >+-- >     // Identify the queue label region+-- >     pfnQueueBeginDebugUtilsLabelEXT(queue, &queueLabel);+-- >+-- >     // Submit the work for the main render thread+-- >     const VkCommandBuffer cmd_bufs[] = {commandBuffer};+-- >     VkSubmitInfo submit_info = {.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO,+-- >                                 .pNext = NULL,+-- >                                 .waitSemaphoreCount = 0,+-- >                                 .pWaitSemaphores = NULL,+-- >                                 .pWaitDstStageMask = NULL,+-- >                                 .commandBufferCount = 1,+-- >                                 .pCommandBuffers = cmd_bufs,+-- >                                 .signalSemaphoreCount = 0,+-- >                                 .pSignalSemaphores = NULL};+-- >     vkQueueSubmit(queue, 1, &submit_info, fence);+-- >+-- >     // End the queue label region+-- >     pfnQueueEndDebugUtilsLabelEXT(queue);+--+-- == Issues+--+-- 1) Should we just name this extension @VK_EXT_debug_report2@+--+-- __RESOLVED__: No. There is enough additional changes to the structures+-- to break backwards compatibility. So, a new name was decided that would+-- not indicate any interaction with the previous extension.+--+-- 2) Will validation layers immediately support all the new features.+--+-- __RESOLVED__: Not immediately. As one can imagine, there is a lot of+-- work involved with converting the validation layer logging over to the+-- new functionality. Basic logging, as seen in the origin+-- @VK_EXT_debug_report@ extension will be made available immediately.+-- However, adding the labels and object names will take time. Since the+-- priority for Khronos at this time is to continue focusing on Valid Usage+-- statements, it may take a while before the new functionality is fully+-- exposed.+--+-- 3) If the validation layers won’t expose the new functionality+-- immediately, then what’s the point of this extension?+--+-- __RESOLVED__: We needed a replacement for @VK_EXT_debug_report@ because+-- the 'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT'+-- enumeration will no longer be updated and any new objects will need to+-- be debugged using the new functionality provided by this extension.+--+-- 4) Should this extension be split into two separate parts (1 extension+-- that is an instance extension providing the callback functionality, and+-- another device extension providing the general debug marker and+-- annotation functionality)?+--+-- __RESOLVED__: No, the functionality for this extension is too closely+-- related. If we did split up the extension, where would the structures+-- and enums live, and how would you define that the device behavior in the+-- instance extension is really only valid if the device extension is+-- enabled, and the functionality is passed in. It’s cleaner to just define+-- this all as an instance extension, plus it allows the application to+-- enable all debug functionality provided with one enable string during+-- 'Vulkan.Core10.DeviceInitialization.createInstance'.+--+-- == Version History+--+-- -   Revision 1, 2017-09-14 (Mark Young and all listed Contributors)+--+--     -   Initial draft, based on @VK_EXT_debug_report@ and+--         @VK_EXT_debug_marker@ in addition to previous feedback supplied+--         from various companies including Valve, Epic, and Oxide games.+--+-- -   Revision 2, 2020-04-03 (Mark Young and Piers Daniell)+--+--     -   Updated to allow either @NULL@ or an empty string to be passed+--         in for @pObjectName@ in 'DebugUtilsObjectNameInfoEXT', because+--         the loader and various drivers support @NULL@ already.+--+-- = See Also+--+-- 'PFN_vkDebugUtilsMessengerCallbackEXT', 'DebugUtilsLabelEXT',+-- 'DebugUtilsMessageSeverityFlagBitsEXT',+-- 'DebugUtilsMessageSeverityFlagsEXT', 'DebugUtilsMessageTypeFlagBitsEXT',+-- 'DebugUtilsMessageTypeFlagsEXT', 'DebugUtilsMessengerCallbackDataEXT',+-- 'DebugUtilsMessengerCallbackDataFlagsEXT',+-- 'DebugUtilsMessengerCreateFlagsEXT', 'DebugUtilsMessengerCreateInfoEXT',+-- 'Vulkan.Extensions.Handles.DebugUtilsMessengerEXT',+-- 'DebugUtilsObjectNameInfoEXT', 'DebugUtilsObjectTagInfoEXT',+-- 'cmdBeginDebugUtilsLabelEXT', 'cmdEndDebugUtilsLabelEXT',+-- 'cmdInsertDebugUtilsLabelEXT', 'createDebugUtilsMessengerEXT',+-- 'destroyDebugUtilsMessengerEXT', 'queueBeginDebugUtilsLabelEXT',+-- 'queueEndDebugUtilsLabelEXT', 'queueInsertDebugUtilsLabelEXT',+-- 'setDebugUtilsObjectNameEXT', 'setDebugUtilsObjectTagEXT',+-- 'submitDebugUtilsMessageEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_debug_utils  ( DebugUtilsLabelEXT                                              , DebugUtilsMessengerCallbackDataEXT                                              , DebugUtilsMessengerCreateInfoEXT                                              , DebugUtilsObjectNameInfoEXT                                              , DebugUtilsObjectTagInfoEXT-                                             , DebugUtilsMessageSeverityFlagBitsEXT                                              , DebugUtilsMessageSeverityFlagsEXT-                                             , DebugUtilsMessageTypeFlagBitsEXT+                                             , DebugUtilsMessageSeverityFlagBitsEXT                                              , DebugUtilsMessageTypeFlagsEXT+                                             , DebugUtilsMessageTypeFlagBitsEXT                                              ) where  import Data.Kind (Type)@@ -53,12 +540,12 @@ instance FromCStruct DebugUtilsObjectTagInfoEXT  -data DebugUtilsMessageSeverityFlagBitsEXT- type DebugUtilsMessageSeverityFlagsEXT = DebugUtilsMessageSeverityFlagBitsEXT +data DebugUtilsMessageSeverityFlagBitsEXT -data DebugUtilsMessageTypeFlagBitsEXT  type DebugUtilsMessageTypeFlagsEXT = DebugUtilsMessageTypeFlagBitsEXT++data DebugUtilsMessageTypeFlagBitsEXT 
src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs view
@@ -1,4 +1,112 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_depth_clip_enable - device extension+--+-- == VK_EXT_depth_clip_enable+--+-- [__Name String__]+--     @VK_EXT_depth_clip_enable@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     103+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse D3D support>+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_depth_clip_enable:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-12-20+--+-- [__Contributors__]+--+--     -   Daniel Rakos, AMD+--+--     -   Henri Verbeet, CodeWeavers+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Philip Rebohle, DXVK+--+--     -   Tobias Hector, AMD+--+-- == Description+--+-- This extension allows the depth clipping operation, that is normally+-- implicitly controlled by+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@depthClampEnable@,+-- to instead be controlled explicitly by+-- 'PipelineRasterizationDepthClipStateCreateInfoEXT'::@depthClipEnable@.+--+-- This is useful for translating DX content which assumes depth clamping+-- is always enabled, but depth clip can be controlled by the+-- DepthClipEnable rasterization state (D3D12_RASTERIZER_DESC).+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceDepthClipEnableFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':+--+--     -   'PipelineRasterizationDepthClipStateCreateInfoEXT'+--+-- == New Bitmasks+--+-- -   'PipelineRasterizationDepthClipStateCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME'+--+-- -   'EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2018-12-20 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceDepthClipEnableFeaturesEXT',+-- 'PipelineRasterizationDepthClipStateCreateFlagsEXT',+-- 'PipelineRasterizationDepthClipStateCreateInfoEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clip_enable Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_depth_clip_enable  ( PhysicalDeviceDepthClipEnableFeaturesEXT(..)                                                    , PipelineRasterizationDepthClipStateCreateInfoEXT(..)                                                    , PipelineRasterizationDepthClipStateCreateFlagsEXT(..)@@ -8,18 +116,13 @@                                                    , pattern EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME                                                    ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Data.String (IsString)@@ -31,7 +134,7 @@ import GHC.Generics (Generic) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Vulkan.Core10.FundamentalTypes (bool32ToBool) import Vulkan.Core10.FundamentalTypes (boolToBool32)@@ -194,17 +297,28 @@   +conNamePipelineRasterizationDepthClipStateCreateFlagsEXT :: String+conNamePipelineRasterizationDepthClipStateCreateFlagsEXT = "PipelineRasterizationDepthClipStateCreateFlagsEXT"++enumPrefixPipelineRasterizationDepthClipStateCreateFlagsEXT :: String+enumPrefixPipelineRasterizationDepthClipStateCreateFlagsEXT = ""++showTablePipelineRasterizationDepthClipStateCreateFlagsEXT+  :: [(PipelineRasterizationDepthClipStateCreateFlagsEXT, String)]+showTablePipelineRasterizationDepthClipStateCreateFlagsEXT = []+ instance Show PipelineRasterizationDepthClipStateCreateFlagsEXT where-  showsPrec p = \case-    PipelineRasterizationDepthClipStateCreateFlagsEXT x -> showParen (p >= 11) (showString "PipelineRasterizationDepthClipStateCreateFlagsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineRasterizationDepthClipStateCreateFlagsEXT+                            showTablePipelineRasterizationDepthClipStateCreateFlagsEXT+                            conNamePipelineRasterizationDepthClipStateCreateFlagsEXT+                            (\(PipelineRasterizationDepthClipStateCreateFlagsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineRasterizationDepthClipStateCreateFlagsEXT where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineRasterizationDepthClipStateCreateFlagsEXT")-                       v <- step readPrec-                       pure (PipelineRasterizationDepthClipStateCreateFlagsEXT v)))+  readPrec = enumReadPrec enumPrefixPipelineRasterizationDepthClipStateCreateFlagsEXT+                          showTablePipelineRasterizationDepthClipStateCreateFlagsEXT+                          conNamePipelineRasterizationDepthClipStateCreateFlagsEXT+                          PipelineRasterizationDepthClipStateCreateFlagsEXT   type EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs-boot view
@@ -1,4 +1,112 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_depth_clip_enable - device extension+--+-- == VK_EXT_depth_clip_enable+--+-- [__Name String__]+--     @VK_EXT_depth_clip_enable@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     103+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse D3D support>+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_depth_clip_enable:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-12-20+--+-- [__Contributors__]+--+--     -   Daniel Rakos, AMD+--+--     -   Henri Verbeet, CodeWeavers+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Philip Rebohle, DXVK+--+--     -   Tobias Hector, AMD+--+-- == Description+--+-- This extension allows the depth clipping operation, that is normally+-- implicitly controlled by+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@depthClampEnable@,+-- to instead be controlled explicitly by+-- 'PipelineRasterizationDepthClipStateCreateInfoEXT'::@depthClipEnable@.+--+-- This is useful for translating DX content which assumes depth clamping+-- is always enabled, but depth clip can be controlled by the+-- DepthClipEnable rasterization state (D3D12_RASTERIZER_DESC).+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceDepthClipEnableFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':+--+--     -   'PipelineRasterizationDepthClipStateCreateInfoEXT'+--+-- == New Bitmasks+--+-- -   'PipelineRasterizationDepthClipStateCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME'+--+-- -   'EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2018-12-20 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceDepthClipEnableFeaturesEXT',+-- 'PipelineRasterizationDepthClipStateCreateFlagsEXT',+-- 'PipelineRasterizationDepthClipStateCreateInfoEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clip_enable Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_depth_clip_enable  ( PhysicalDeviceDepthClipEnableFeaturesEXT                                                    , PipelineRasterizationDepthClipStateCreateInfoEXT                                                    ) where
src/Vulkan/Extensions/VK_EXT_depth_range_unrestricted.hs view
@@ -1,4 +1,97 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_depth_range_unrestricted - device extension+--+-- == VK_EXT_depth_range_unrestricted+--+-- [__Name String__]+--     @VK_EXT_depth_range_unrestricted@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     14+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_depth_range_unrestricted:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-06-22+--+-- [__Contributors__]+--+--     -   Daniel Koch, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension removes the 'Vulkan.Core10.Pipeline.Viewport' @minDepth@+-- and @maxDepth@ restrictions that the values must be between @0.0@ and+-- @1.0@, inclusive. It also removes the same restriction on+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'+-- @minDepthBounds@ and @maxDepthBounds@. Finally it removes the+-- restriction on the @depth@ value in+-- 'Vulkan.Core10.CommandBufferBuilding.ClearDepthStencilValue'.+--+-- == New Enum Constants+--+-- -   'EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME'+--+-- -   'EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION'+--+-- == Issues+--+-- 1) How do 'Vulkan.Core10.Pipeline.Viewport' @minDepth@ and @maxDepth@+-- values outside of the @0.0@ to @1.0@ range interact with+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>?+--+-- __RESOLVED__: The behavior described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>+-- still applies. If depth clamping is disabled the depth values are still+-- clipped to 0 ≤ zc ≤ wc before the viewport transform. If depth clamping+-- is enabled the above equation is ignored and the depth values are+-- instead clamped to the 'Vulkan.Core10.Pipeline.Viewport' @minDepth@ and+-- @maxDepth@ values, which in the case of this extension can be outside of+-- the @0.0@ to @1.0@ range.+--+-- 2) What happens if a resulting depth fragment is outside of the @0.0@ to+-- @1.0@ range and the depth buffer is fixed-point rather than+-- floating-point?+--+-- __RESOLVED__: The supported range of a fixed-point depth buffer is @0.0@+-- to @1.0@ and depth fragments are clamped to this range.+--+-- == Version History+--+-- -   Revision 1, 2017-06-22 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_range_unrestricted Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_depth_range_unrestricted  ( EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION                                                           , pattern EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION                                                           , EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME
src/Vulkan/Extensions/VK_EXT_descriptor_indexing.hs view
@@ -1,4 +1,216 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_descriptor_indexing - device extension+--+-- == VK_EXT_descriptor_indexing+--+-- [__Name String__]+--     @VK_EXT_descriptor_indexing@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     162+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_maintenance3@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_descriptor_indexing:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-10-02+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Slawomir Grajewski, Intel+--+--     -   Tobias Hector, Imagination Technologies+--+-- == Description+--+-- This extension adds several small features which together enable+-- applications to create large descriptor sets containing substantially+-- all of their resources, and selecting amongst those resources with+-- dynamic (non-uniform) indexes in the shader. There are feature enables+-- and SPIR-V capabilities for non-uniform descriptor indexing in the+-- shader, and non-uniform indexing in the shader requires use of a new+-- @NonUniformEXT@ decoration defined in the @SPV_EXT_descriptor_indexing@+-- SPIR-V extension. There are descriptor set layout binding creation flags+-- enabling several features:+--+-- -   Descriptors can be updated after they are bound to a command buffer,+--     such that the execution of the command buffer reflects the most+--     recent update to the descriptors.+--+-- -   Descriptors that are not used by any pending command buffers can be+--     updated, which enables writing new descriptors for frame N+1 while+--     frame N is executing.+--+-- -   Relax the requirement that all descriptors in a binding that is+--     “statically used” must be valid, such that descriptors that are not+--     accessed by a submission need not be valid and can be updated while+--     that submission is executing.+--+-- -   The final binding in a descriptor set layout can have a variable+--     size (and unsized arrays of resources are allowed in the+--     @GL_EXT_nonuniform_qualifier@ and @SPV_EXT_descriptor_indexing@+--     extensions).+--+-- Note that it is valid for multiple descriptor arrays in a shader to use+-- the same set and binding number, as long as they are all compatible with+-- the descriptor type in the pipeline layout. This means a single array+-- binding in the descriptor set can serve multiple texture+-- dimensionalities, or an array of buffer descriptors can be used with+-- multiple different block layouts.+--+-- There are new descriptor set layout and descriptor pool creation flags+-- that are required to opt in to the update-after-bind functionality, and+-- there are separate @maxPerStage@* and @maxDescriptorSet@* limits that+-- apply to these descriptor set layouts which /may/ be much higher than+-- the pre-existing limits. The old limits only count descriptors in+-- non-updateAfterBind descriptor set layouts, and the new limits count+-- descriptors in all descriptor set layouts in the pipeline layout.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo':+--+--     -   'DescriptorSetVariableDescriptorCountAllocateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo':+--+--     -   'DescriptorSetLayoutBindingFlagsCreateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.DescriptorSetLayoutSupport':+--+--     -   'DescriptorSetVariableDescriptorCountLayoutSupportEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceDescriptorIndexingFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceDescriptorIndexingPropertiesEXT'+--+-- == New Enums+--+-- -   'DescriptorBindingFlagBitsEXT'+--+-- == New Bitmasks+--+-- -   'DescriptorBindingFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME'+--+-- -   'EXT_DESCRIPTOR_INDEXING_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DescriptorBindingFlagBits':+--+--     -   'DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT'+--+--     -   'DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT'+--+--     -   'DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT'+--+--     -   'DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DescriptorPoolCreateFlagBits':+--+--     -   'DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DescriptorSetLayoutCreateFlagBits':+--+--     -   'DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'ERROR_FRAGMENTATION_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT'+--+--     -   'STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT'+--+--     -   'STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT'+--+-- == Promotion to Vulkan 1.2+--+-- Functionality in this extension is included in core Vulkan 1.2, with the+-- EXT suffix omitted. However, if Vulkan 1.2 is supported and this+-- extension is not, the @descriptorIndexing@ capability is optional. The+-- original type, enum and command names are still available as aliases of+-- the core functionality.+--+-- == Version History+--+-- -   Revision 1, 2017-07-26 (Jeff Bolz)+--+--     -   Internal revisions+--+-- -   Revision 2, 2017-10-02 (Jeff Bolz)+--+--     -   ???+--+-- = See Also+--+-- 'DescriptorBindingFlagBitsEXT', 'DescriptorBindingFlagsEXT',+-- 'DescriptorSetLayoutBindingFlagsCreateInfoEXT',+-- 'DescriptorSetVariableDescriptorCountAllocateInfoEXT',+-- 'DescriptorSetVariableDescriptorCountLayoutSupportEXT',+-- 'PhysicalDeviceDescriptorIndexingFeaturesEXT',+-- 'PhysicalDeviceDescriptorIndexingPropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_indexing Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_descriptor_indexing  ( pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT                                                      , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT                                                      , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT
src/Vulkan/Extensions/VK_EXT_device_memory_report.hs view
@@ -1,4 +1,237 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_device_memory_report - device extension+--+-- == VK_EXT_device_memory_report+--+-- [__Name String__]+--     @VK_EXT_device_memory_report@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     285+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>+--+-- [__Contact__]+--+--     -   Yiwei Zhang+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_device_memory_report:%20&body=@zhangyiwei%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-08-26+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Yiwei Zhang, Google+--+--     -   Jesse Hall, Google+--+-- == Description+--+-- This device extension allows registration of device memory event+-- callbacks upon device creation, so that applications or middleware can+-- obtain detailed information about memory usage and how memory is+-- associated with Vulkan objects. This extension exposes the actual+-- underlying device memory usage, including allocations that are not+-- normally visible to the application, such as memory consumed by+-- 'Vulkan.Core10.Pipeline.createGraphicsPipelines'. It is intended+-- primarily for use by debug tooling rather than for production+-- applications.+--+-- == New Structures+--+-- -   'DeviceMemoryReportCallbackDataEXT'+--+-- -   Extending 'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'DeviceDeviceMemoryReportCreateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceDeviceMemoryReportFeaturesEXT'+--+-- == New Function Pointers+--+-- -   'PFN_vkDeviceMemoryReportCallbackEXT'+--+-- == New Enums+--+-- -   'DeviceMemoryReportEventTypeEXT'+--+-- == New Bitmasks+--+-- -   'DeviceMemoryReportFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME'+--+-- -   'EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT'+--+-- == Issues+--+-- 1) Should this be better expressed as an extension to VK_EXT_debug_utils+-- and its general purpose messenger construct?+--+-- __RESOLVED__: No. The intended lifecycle is quite different. We want to+-- make this extension tied to the device’s lifecycle. Each ICD just+-- handles its own implementation of this extension, and this extension+-- will only be directly exposed from the ICD. So we can avoid the extra+-- implementation complexity used to accommodate the flexibility of+-- @VK_EXT_debug_utils@ extension.+--+-- 2) Can we extend and use the existing internal allocation callbacks+-- instead of adding the new callback structure in this extension?+--+-- __RESOLVED__: No. Our memory reporting layer that combines this+-- information with other memory info it collects directly (e.g. bindings+-- of resources to 'Vulkan.Core10.Handles.DeviceMemory') would have to+-- intercept all entry points that take a+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' parameter and+-- inject its own @pfnInternalAllocation@ and @pfnInternalFree@. That’s+-- maybe doable for the extensions we know about, but not for ones we+-- don’t. The proposal would work fine in the face of most unknown+-- extensions. But even for ones we know about, since apps can provide a+-- different set of callbacks and userdata and those can be retained by the+-- driver and used later (esp. for pool object, but not just those), we’d+-- have to dynamically allocate the interception trampoline every time.+-- That’s getting to be an unreasonably large amount of complexity and+-- (possibly) overhead.+--+-- We’re interested in both alloc\/free and import\/unimport. The latter is+-- fairly important for tracking (and avoiding double-counting) of+-- swapchain images (still true with \"native swapchains\" based on+-- external memory) and media\/camera interop. Though we might be able to+-- handle this with additional+-- 'Vulkan.Core10.Enums.InternalAllocationType.InternalAllocationType'+-- values, for import\/export we do want to be able to tie this to the+-- external resource, which is one thing that the @memoryObjectId@ is for.+--+-- The internal alloc\/free callbacks are not extensible except via new+-- 'Vulkan.Core10.Enums.InternalAllocationType.InternalAllocationType'+-- values. The 'DeviceMemoryReportCallbackDataEXT' in this extension is+-- extensible. That was deliberate: there’s a real possibility we’ll want+-- to get extra information in the future. As one example, currently this+-- reports only physical allocations, but we believe there are interesting+-- cases for tracking how populated that VA region is.+--+-- The callbacks are clearly specified as only callable within the context+-- of a call from the app into Vulkan. We believe there are some cases+-- where drivers can allocate device memory asynchronously. This was one of+-- the sticky issues that derailed the internal device memory allocation+-- reporting design (which is essentially what this extension is trying to+-- do) leading up to 1.0.+--+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' is described in+-- a section called \"Host memory\" and the intro to it is very explicitly+-- about host memory. The other callbacks are all inherently about host+-- memory. But this extension is very focused on device memory.+--+-- 3) Should the callback be reporting which heap is used?+--+-- __RESOLVED__: Yes. It’s important for non-UMA systems to have all the+-- device memory allocations attributed to the corresponding device memory+-- heaps. For internally-allocated device memory, @heapIndex@ will always+-- correspond to an advertised heap, rather than having a magic value+-- indicating a non-advertised heap. Drivers can advertise heaps that don’t+-- have any corresponding memory types if they need to.+--+-- 4) Should we use an array of callback for the layers to intercept+-- instead of chaining multiple of the+-- 'DeviceDeviceMemoryReportCreateInfoEXT' structures in the @pNext@ of+-- 'Vulkan.Core10.Device.DeviceCreateInfo'?+--+-- __RESOLVED__ No. The pointer to the+-- 'DeviceDeviceMemoryReportCreateInfoEXT' structure itself is const and+-- you can’t just cast it away. Thus we can’t update the callback array+-- inside the structure. In addition, we can’t drop this @pNext@ chain+-- either, so making a copy of this whole structure doesn’t work either.+--+-- 5) Should we track bulk allocations shared among multiple objects?+--+-- __RESOLVED__ No. Take the shader heap as an example. Some+-- implementations will let multiple 'Vulkan.Core10.Handles.Pipeline'+-- objects share the same shader heap. We are not asking the implementation+-- to report 'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_PIPELINE' along+-- with a 'Vulkan.Core10.APIConstants.NULL_HANDLE' for this bulk+-- allocation. Instead, this bulk allocation is considered as a layer below+-- what this extension is interested in. Later, when the actual+-- 'Vulkan.Core10.Handles.Pipeline' objects are created by suballocating+-- from the bulk allocation, we ask the implementation to report the valid+-- handles of the 'Vulkan.Core10.Handles.Pipeline' objects along with the+-- actual suballocated sizes and different @memoryObjectId@.+--+-- 6) Can we require the callbacks to be always called in the same thread+-- with the Vulkan commands?+--+-- __RESOLVED__ No. Some implementations might choose to multiplex work+-- from multiple application threads into a single backend thread and+-- perform JIT allocations as a part of that flow. Since this behavior is+-- theoretically legit, we can’t require the callbacks to be always called+-- in the same thread with the Vulkan commands, and the note is to remind+-- the applications to handle this case properly.+--+-- 7) Should we add an additional \"allocation failed\" event type with+-- things like size and heap index reported?+--+-- __RESOLVED__ Yes. This fits in well with the callback infrastructure+-- added in this extension, and implementation touches the same code and+-- has the same overheads as the rest of the extension. It could help+-- debugging things like getting an+-- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' error when ending+-- a command buffer. Right now the allocation failure could have happened+-- anywhere during recording, and a callback would be really useful to+-- understand where and why.+--+-- == Version History+--+-- -   Revision 1, 2020-08-26 (Yiwei Zhang)+--+-- = See Also+--+-- 'PFN_vkDeviceMemoryReportCallbackEXT',+-- 'DeviceDeviceMemoryReportCreateInfoEXT',+-- 'DeviceMemoryReportCallbackDataEXT', 'DeviceMemoryReportEventTypeEXT',+-- 'DeviceMemoryReportFlagsEXT',+-- 'PhysicalDeviceDeviceMemoryReportFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_memory_report Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_device_memory_report  ( PhysicalDeviceDeviceMemoryReportFeaturesEXT(..)                                                       , DeviceDeviceMemoryReportCreateInfoEXT(..)                                                       , DeviceMemoryReportCallbackDataEXT(..)@@ -18,19 +251,14 @@                                                       , pattern EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME                                                       ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import GHC.Show (showsPrec) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Data.String (IsString)@@ -44,9 +272,9 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32) import Data.Word (Word64)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Vulkan.Core10.FundamentalTypes (bool32ToBool) import Vulkan.Core10.FundamentalTypes (boolToBool32)@@ -364,17 +592,27 @@   +conNameDeviceMemoryReportFlagsEXT :: String+conNameDeviceMemoryReportFlagsEXT = "DeviceMemoryReportFlagsEXT"++enumPrefixDeviceMemoryReportFlagsEXT :: String+enumPrefixDeviceMemoryReportFlagsEXT = ""++showTableDeviceMemoryReportFlagsEXT :: [(DeviceMemoryReportFlagsEXT, String)]+showTableDeviceMemoryReportFlagsEXT = []+ instance Show DeviceMemoryReportFlagsEXT where-  showsPrec p = \case-    DeviceMemoryReportFlagsEXT x -> showParen (p >= 11) (showString "DeviceMemoryReportFlagsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDeviceMemoryReportFlagsEXT+                            showTableDeviceMemoryReportFlagsEXT+                            conNameDeviceMemoryReportFlagsEXT+                            (\(DeviceMemoryReportFlagsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DeviceMemoryReportFlagsEXT where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "DeviceMemoryReportFlagsEXT")-                       v <- step readPrec-                       pure (DeviceMemoryReportFlagsEXT v)))+  readPrec = enumReadPrec enumPrefixDeviceMemoryReportFlagsEXT+                          showTableDeviceMemoryReportFlagsEXT+                          conNameDeviceMemoryReportFlagsEXT+                          DeviceMemoryReportFlagsEXT   -- | VkDeviceMemoryReportEventTypeEXT - Events that can occur on a device@@ -389,17 +627,17 @@ -- | 'DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT' specifies this event -- corresponds to the allocation of an internal device memory object or a -- 'Vulkan.Core10.Handles.DeviceMemory'.-pattern DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT = DeviceMemoryReportEventTypeEXT 0+pattern DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT          = DeviceMemoryReportEventTypeEXT 0 -- | 'DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT' specifies this event -- corresponds to the deallocation of an internally-allocated device memory -- object or a 'Vulkan.Core10.Handles.DeviceMemory'.-pattern DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT = DeviceMemoryReportEventTypeEXT 1+pattern DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT              = DeviceMemoryReportEventTypeEXT 1 -- | 'DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT' specifies this event -- corresponds to the import of an external memory object.-pattern DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT = DeviceMemoryReportEventTypeEXT 2+pattern DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT            = DeviceMemoryReportEventTypeEXT 2 -- | 'DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT' specifies this event is -- the release of an imported external memory object.-pattern DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT = DeviceMemoryReportEventTypeEXT 3+pattern DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT          = DeviceMemoryReportEventTypeEXT 3 -- | 'DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT' specifies this -- event corresponds to the failed allocation of an internal device memory -- object or a 'Vulkan.Core10.Handles.DeviceMemory'.@@ -410,26 +648,33 @@              DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT,              DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT :: DeviceMemoryReportEventTypeEXT #-} +conNameDeviceMemoryReportEventTypeEXT :: String+conNameDeviceMemoryReportEventTypeEXT = "DeviceMemoryReportEventTypeEXT"++enumPrefixDeviceMemoryReportEventTypeEXT :: String+enumPrefixDeviceMemoryReportEventTypeEXT = "DEVICE_MEMORY_REPORT_EVENT_TYPE_"++showTableDeviceMemoryReportEventTypeEXT :: [(DeviceMemoryReportEventTypeEXT, String)]+showTableDeviceMemoryReportEventTypeEXT =+  [ (DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT         , "ALLOCATE_EXT")+  , (DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT             , "FREE_EXT")+  , (DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT           , "IMPORT_EXT")+  , (DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT         , "UNIMPORT_EXT")+  , (DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT, "ALLOCATION_FAILED_EXT")+  ]+ instance Show DeviceMemoryReportEventTypeEXT where-  showsPrec p = \case-    DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT -> showString "DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT"-    DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT -> showString "DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT"-    DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT -> showString "DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT"-    DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT -> showString "DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT"-    DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT -> showString "DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT"-    DeviceMemoryReportEventTypeEXT x -> showParen (p >= 11) (showString "DeviceMemoryReportEventTypeEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixDeviceMemoryReportEventTypeEXT+                            showTableDeviceMemoryReportEventTypeEXT+                            conNameDeviceMemoryReportEventTypeEXT+                            (\(DeviceMemoryReportEventTypeEXT x) -> x)+                            (showsPrec 11)  instance Read DeviceMemoryReportEventTypeEXT where-  readPrec = parens (choose [("DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT", pure DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT)-                            , ("DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT", pure DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT)-                            , ("DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT", pure DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT)-                            , ("DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT", pure DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT)-                            , ("DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT", pure DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "DeviceMemoryReportEventTypeEXT")-                       v <- step readPrec-                       pure (DeviceMemoryReportEventTypeEXT v)))+  readPrec = enumReadPrec enumPrefixDeviceMemoryReportEventTypeEXT+                          showTableDeviceMemoryReportEventTypeEXT+                          conNameDeviceMemoryReportEventTypeEXT+                          DeviceMemoryReportEventTypeEXT   type FN_vkDeviceMemoryReportCallbackEXT = ("pCallbackData" ::: Ptr DeviceMemoryReportCallbackDataEXT) -> ("pUserData" ::: Ptr ()) -> IO ()
src/Vulkan/Extensions/VK_EXT_device_memory_report.hs-boot view
@@ -1,4 +1,237 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_device_memory_report - device extension+--+-- == VK_EXT_device_memory_report+--+-- [__Name String__]+--     @VK_EXT_device_memory_report@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     285+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>+--+-- [__Contact__]+--+--     -   Yiwei Zhang+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_device_memory_report:%20&body=@zhangyiwei%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-08-26+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Yiwei Zhang, Google+--+--     -   Jesse Hall, Google+--+-- == Description+--+-- This device extension allows registration of device memory event+-- callbacks upon device creation, so that applications or middleware can+-- obtain detailed information about memory usage and how memory is+-- associated with Vulkan objects. This extension exposes the actual+-- underlying device memory usage, including allocations that are not+-- normally visible to the application, such as memory consumed by+-- 'Vulkan.Core10.Pipeline.createGraphicsPipelines'. It is intended+-- primarily for use by debug tooling rather than for production+-- applications.+--+-- == New Structures+--+-- -   'DeviceMemoryReportCallbackDataEXT'+--+-- -   Extending 'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'DeviceDeviceMemoryReportCreateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceDeviceMemoryReportFeaturesEXT'+--+-- == New Function Pointers+--+-- -   'PFN_vkDeviceMemoryReportCallbackEXT'+--+-- == New Enums+--+-- -   'DeviceMemoryReportEventTypeEXT'+--+-- == New Bitmasks+--+-- -   'DeviceMemoryReportFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME'+--+-- -   'EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT'+--+-- == Issues+--+-- 1) Should this be better expressed as an extension to VK_EXT_debug_utils+-- and its general purpose messenger construct?+--+-- __RESOLVED__: No. The intended lifecycle is quite different. We want to+-- make this extension tied to the device’s lifecycle. Each ICD just+-- handles its own implementation of this extension, and this extension+-- will only be directly exposed from the ICD. So we can avoid the extra+-- implementation complexity used to accommodate the flexibility of+-- @VK_EXT_debug_utils@ extension.+--+-- 2) Can we extend and use the existing internal allocation callbacks+-- instead of adding the new callback structure in this extension?+--+-- __RESOLVED__: No. Our memory reporting layer that combines this+-- information with other memory info it collects directly (e.g. bindings+-- of resources to 'Vulkan.Core10.Handles.DeviceMemory') would have to+-- intercept all entry points that take a+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' parameter and+-- inject its own @pfnInternalAllocation@ and @pfnInternalFree@. That’s+-- maybe doable for the extensions we know about, but not for ones we+-- don’t. The proposal would work fine in the face of most unknown+-- extensions. But even for ones we know about, since apps can provide a+-- different set of callbacks and userdata and those can be retained by the+-- driver and used later (esp. for pool object, but not just those), we’d+-- have to dynamically allocate the interception trampoline every time.+-- That’s getting to be an unreasonably large amount of complexity and+-- (possibly) overhead.+--+-- We’re interested in both alloc\/free and import\/unimport. The latter is+-- fairly important for tracking (and avoiding double-counting) of+-- swapchain images (still true with \"native swapchains\" based on+-- external memory) and media\/camera interop. Though we might be able to+-- handle this with additional+-- 'Vulkan.Core10.Enums.InternalAllocationType.InternalAllocationType'+-- values, for import\/export we do want to be able to tie this to the+-- external resource, which is one thing that the @memoryObjectId@ is for.+--+-- The internal alloc\/free callbacks are not extensible except via new+-- 'Vulkan.Core10.Enums.InternalAllocationType.InternalAllocationType'+-- values. The 'DeviceMemoryReportCallbackDataEXT' in this extension is+-- extensible. That was deliberate: there’s a real possibility we’ll want+-- to get extra information in the future. As one example, currently this+-- reports only physical allocations, but we believe there are interesting+-- cases for tracking how populated that VA region is.+--+-- The callbacks are clearly specified as only callable within the context+-- of a call from the app into Vulkan. We believe there are some cases+-- where drivers can allocate device memory asynchronously. This was one of+-- the sticky issues that derailed the internal device memory allocation+-- reporting design (which is essentially what this extension is trying to+-- do) leading up to 1.0.+--+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' is described in+-- a section called \"Host memory\" and the intro to it is very explicitly+-- about host memory. The other callbacks are all inherently about host+-- memory. But this extension is very focused on device memory.+--+-- 3) Should the callback be reporting which heap is used?+--+-- __RESOLVED__: Yes. It’s important for non-UMA systems to have all the+-- device memory allocations attributed to the corresponding device memory+-- heaps. For internally-allocated device memory, @heapIndex@ will always+-- correspond to an advertised heap, rather than having a magic value+-- indicating a non-advertised heap. Drivers can advertise heaps that don’t+-- have any corresponding memory types if they need to.+--+-- 4) Should we use an array of callback for the layers to intercept+-- instead of chaining multiple of the+-- 'DeviceDeviceMemoryReportCreateInfoEXT' structures in the @pNext@ of+-- 'Vulkan.Core10.Device.DeviceCreateInfo'?+--+-- __RESOLVED__ No. The pointer to the+-- 'DeviceDeviceMemoryReportCreateInfoEXT' structure itself is const and+-- you can’t just cast it away. Thus we can’t update the callback array+-- inside the structure. In addition, we can’t drop this @pNext@ chain+-- either, so making a copy of this whole structure doesn’t work either.+--+-- 5) Should we track bulk allocations shared among multiple objects?+--+-- __RESOLVED__ No. Take the shader heap as an example. Some+-- implementations will let multiple 'Vulkan.Core10.Handles.Pipeline'+-- objects share the same shader heap. We are not asking the implementation+-- to report 'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_PIPELINE' along+-- with a 'Vulkan.Core10.APIConstants.NULL_HANDLE' for this bulk+-- allocation. Instead, this bulk allocation is considered as a layer below+-- what this extension is interested in. Later, when the actual+-- 'Vulkan.Core10.Handles.Pipeline' objects are created by suballocating+-- from the bulk allocation, we ask the implementation to report the valid+-- handles of the 'Vulkan.Core10.Handles.Pipeline' objects along with the+-- actual suballocated sizes and different @memoryObjectId@.+--+-- 6) Can we require the callbacks to be always called in the same thread+-- with the Vulkan commands?+--+-- __RESOLVED__ No. Some implementations might choose to multiplex work+-- from multiple application threads into a single backend thread and+-- perform JIT allocations as a part of that flow. Since this behavior is+-- theoretically legit, we can’t require the callbacks to be always called+-- in the same thread with the Vulkan commands, and the note is to remind+-- the applications to handle this case properly.+--+-- 7) Should we add an additional \"allocation failed\" event type with+-- things like size and heap index reported?+--+-- __RESOLVED__ Yes. This fits in well with the callback infrastructure+-- added in this extension, and implementation touches the same code and+-- has the same overheads as the rest of the extension. It could help+-- debugging things like getting an+-- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' error when ending+-- a command buffer. Right now the allocation failure could have happened+-- anywhere during recording, and a callback would be really useful to+-- understand where and why.+--+-- == Version History+--+-- -   Revision 1, 2020-08-26 (Yiwei Zhang)+--+-- = See Also+--+-- 'PFN_vkDeviceMemoryReportCallbackEXT',+-- 'DeviceDeviceMemoryReportCreateInfoEXT',+-- 'DeviceMemoryReportCallbackDataEXT', 'DeviceMemoryReportEventTypeEXT',+-- 'DeviceMemoryReportFlagsEXT',+-- 'PhysicalDeviceDeviceMemoryReportFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_memory_report Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_device_memory_report  ( DeviceDeviceMemoryReportCreateInfoEXT                                                       , DeviceMemoryReportCallbackDataEXT                                                       , PhysicalDeviceDeviceMemoryReportFeaturesEXT
src/Vulkan/Extensions/VK_EXT_direct_mode_display.hs view
@@ -1,4 +1,108 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_direct_mode_display - instance extension+--+-- == VK_EXT_direct_mode_display+--+-- [__Name String__]+--     @VK_EXT_direct_mode_display@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     89+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_display@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_direct_mode_display:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-12-13+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Pierre Boudier, NVIDIA+--+--     -   James Jones, NVIDIA+--+--     -   Damien Leone, NVIDIA+--+--     -   Pierre-Loup Griffais, Valve+--+--     -   Liam Middlebrook, NVIDIA+--+-- == Description+--+-- This is extension, along with related platform extensions, allows+-- applications to take exclusive control of displays associated with a+-- native windowing system. This is especially useful for virtual reality+-- applications that wish to hide HMDs (head mounted displays) from the+-- native platform’s display management system, desktop, and\/or other+-- applications.+--+-- == New Commands+--+-- -   'releaseDisplayEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME'+--+-- -   'EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION'+--+-- == Issues+--+-- 1) Should this extension and its related platform-specific extensions+-- leverage @VK_KHR_display@, or provide separate equivalent interfaces.+--+-- __RESOLVED__: Use @VK_KHR_display@ concepts and objects.+-- @VK_KHR_display@ can be used to enumerate all displays on the system,+-- including those attached to\/in use by a window system or native+-- platform, but @VK_KHR_display_swapchain@ will fail to create a swapchain+-- on in-use displays. This extension and its platform-specific children+-- will allow applications to grab in-use displays away from window systems+-- and\/or native platforms, allowing them to be used with+-- @VK_KHR_display_swapchain@.+--+-- 2) Are separate calls needed to acquire displays and enable direct mode?+--+-- __RESOLVED__: No, these operations happen in one combined command.+-- Acquiring a display puts it into direct mode.+--+-- == Version History+--+-- -   Revision 1, 2016-12-13 (James Jones)+--+--     -   Initial draft+--+-- = See Also+--+-- 'releaseDisplayEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_direct_mode_display Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_direct_mode_display  ( releaseDisplayEXT                                                      , EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION                                                      , pattern EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_directfb_surface.hs view
@@ -1,4 +1,96 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_directfb_surface - instance extension+--+-- == VK_EXT_directfb_surface+--+-- [__Name String__]+--     @VK_EXT_directfb_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     347+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Nicolas Caramelli+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_directfb_surface:%20&body=@caramelli%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-06-16+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Nicolas Caramelli+--+-- == Description+--+-- The @VK_EXT_directfb_surface@ extension is an instance extension. It+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'+-- object (defined by the @VK_KHR_surface@ extension) that refers to a+-- DirectFB 'IDirectFBSurface', as well as a query to determine support for+-- rendering via DirectFB.+--+-- == New Commands+--+-- -   'createDirectFBSurfaceEXT'+--+-- -   'getPhysicalDeviceDirectFBPresentationSupportEXT'+--+-- == New Structures+--+-- -   'DirectFBSurfaceCreateInfoEXT'+--+-- == New Bitmasks+--+-- -   'DirectFBSurfaceCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DIRECTFB_SURFACE_EXTENSION_NAME'+--+-- -   'EXT_DIRECTFB_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2020-06-16 (Nicolas Caramelli)+--+--     -   Initial version+--+-- = See Also+--+-- 'DirectFBSurfaceCreateFlagsEXT', 'DirectFBSurfaceCreateInfoEXT',+-- 'createDirectFBSurfaceEXT',+-- 'getPhysicalDeviceDirectFBPresentationSupportEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_directfb_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_directfb_surface  ( createDirectFBSurfaceEXT                                                   , getPhysicalDeviceDirectFBPresentationSupportEXT                                                   , DirectFBSurfaceCreateInfoEXT(..)@@ -12,6 +104,8 @@                                                   , SurfaceKHR(..)                                                   ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -23,15 +117,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -49,8 +136,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.Core10.FundamentalTypes (bool32ToBool)@@ -293,17 +380,27 @@   +conNameDirectFBSurfaceCreateFlagsEXT :: String+conNameDirectFBSurfaceCreateFlagsEXT = "DirectFBSurfaceCreateFlagsEXT"++enumPrefixDirectFBSurfaceCreateFlagsEXT :: String+enumPrefixDirectFBSurfaceCreateFlagsEXT = ""++showTableDirectFBSurfaceCreateFlagsEXT :: [(DirectFBSurfaceCreateFlagsEXT, String)]+showTableDirectFBSurfaceCreateFlagsEXT = []+ instance Show DirectFBSurfaceCreateFlagsEXT where-  showsPrec p = \case-    DirectFBSurfaceCreateFlagsEXT x -> showParen (p >= 11) (showString "DirectFBSurfaceCreateFlagsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDirectFBSurfaceCreateFlagsEXT+                            showTableDirectFBSurfaceCreateFlagsEXT+                            conNameDirectFBSurfaceCreateFlagsEXT+                            (\(DirectFBSurfaceCreateFlagsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DirectFBSurfaceCreateFlagsEXT where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "DirectFBSurfaceCreateFlagsEXT")-                       v <- step readPrec-                       pure (DirectFBSurfaceCreateFlagsEXT v)))+  readPrec = enumReadPrec enumPrefixDirectFBSurfaceCreateFlagsEXT+                          showTableDirectFBSurfaceCreateFlagsEXT+                          conNameDirectFBSurfaceCreateFlagsEXT+                          DirectFBSurfaceCreateFlagsEXT   type EXT_DIRECTFB_SURFACE_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_EXT_directfb_surface.hs-boot view
@@ -1,4 +1,96 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_directfb_surface - instance extension+--+-- == VK_EXT_directfb_surface+--+-- [__Name String__]+--     @VK_EXT_directfb_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     347+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Nicolas Caramelli+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_directfb_surface:%20&body=@caramelli%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-06-16+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Nicolas Caramelli+--+-- == Description+--+-- The @VK_EXT_directfb_surface@ extension is an instance extension. It+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'+-- object (defined by the @VK_KHR_surface@ extension) that refers to a+-- DirectFB 'IDirectFBSurface', as well as a query to determine support for+-- rendering via DirectFB.+--+-- == New Commands+--+-- -   'createDirectFBSurfaceEXT'+--+-- -   'getPhysicalDeviceDirectFBPresentationSupportEXT'+--+-- == New Structures+--+-- -   'DirectFBSurfaceCreateInfoEXT'+--+-- == New Bitmasks+--+-- -   'DirectFBSurfaceCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DIRECTFB_SURFACE_EXTENSION_NAME'+--+-- -   'EXT_DIRECTFB_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2020-06-16 (Nicolas Caramelli)+--+--     -   Initial version+--+-- = See Also+--+-- 'DirectFBSurfaceCreateFlagsEXT', 'DirectFBSurfaceCreateInfoEXT',+-- 'createDirectFBSurfaceEXT',+-- 'getPhysicalDeviceDirectFBPresentationSupportEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_directfb_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_directfb_surface  ( DirectFBSurfaceCreateInfoEXT                                                   , IDirectFB                                                   ) where
src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs view
@@ -1,4 +1,129 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_discard_rectangles - device extension+--+-- == VK_EXT_discard_rectangles+--+-- [__Name String__]+--     @VK_EXT_discard_rectangles@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     100+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_discard_rectangles:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-12-22+--+-- [__Interactions and External Dependencies__]+--+--     -   Interacts with @VK_KHR_device_group@+--+--     -   Interacts with Vulkan 1.1+--+-- [__Contributors__]+--+--     -   Daniel Koch, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension provides additional orthogonally aligned “discard+-- rectangles” specified in framebuffer-space coordinates that restrict+-- rasterization of all points, lines and triangles.+--+-- From zero to an implementation-dependent limit (specified by+-- @maxDiscardRectangles@) number of discard rectangles can be operational+-- at once. When one or more discard rectangles are active, rasterized+-- fragments can either survive if the fragment is within any of the+-- operational discard rectangles ('DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT'+-- mode) or be rejected if the fragment is within any of the operational+-- discard rectangles ('DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT' mode).+--+-- These discard rectangles operate orthogonally to the existing scissor+-- test functionality. The discard rectangles can be different for each+-- physical device in a device group by specifying the device mask and+-- setting discard rectangle dynamic state.+--+-- == New Commands+--+-- -   'cmdSetDiscardRectangleEXT'+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'PipelineDiscardRectangleStateCreateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceDiscardRectanglePropertiesEXT'+--+-- == New Enums+--+-- -   'DiscardRectangleModeEXT'+--+-- == New Bitmasks+--+-- -   'PipelineDiscardRectangleStateCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DISCARD_RECTANGLES_EXTENSION_NAME'+--+-- -   'EXT_DISCARD_RECTANGLES_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2016-12-22 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'DiscardRectangleModeEXT',+-- 'PhysicalDeviceDiscardRectanglePropertiesEXT',+-- 'PipelineDiscardRectangleStateCreateFlagsEXT',+-- 'PipelineDiscardRectangleStateCreateInfoEXT',+-- 'cmdSetDiscardRectangleEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_discard_rectangles Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_discard_rectangles  ( cmdSetDiscardRectangleEXT                                                     , PhysicalDeviceDiscardRectanglePropertiesEXT(..)                                                     , PipelineDiscardRectangleStateCreateInfoEXT(..)@@ -13,6 +138,8 @@                                                     , pattern EXT_DISCARD_RECTANGLES_EXTENSION_NAME                                                     ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -20,16 +147,9 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import GHC.Show (showsPrec) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Data.Vector (generateM)@@ -51,8 +171,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)@@ -180,7 +300,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDiscardRectangleEXT is null" Nothing Nothing   let vkCmdSetDiscardRectangleEXT' = mkVkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXTPtr   pPDiscardRectangles <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (discardRectangles)) * 16) 4-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDiscardRectangles `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (discardRectangles)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPDiscardRectangles `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (discardRectangles)   lift $ vkCmdSetDiscardRectangleEXT' (commandBufferHandle (commandBuffer)) (firstDiscardRectangle) ((fromIntegral (Data.Vector.length $ (discardRectangles)) :: Word32)) (pPDiscardRectangles)   pure $ () @@ -303,7 +423,7 @@     lift $ poke ((p `plusPtr` 20 :: Ptr DiscardRectangleModeEXT)) (discardRectangleMode)     lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (discardRectangles)) :: Word32))     pPDiscardRectangles' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (discardRectangles)) * 16) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDiscardRectangles' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (discardRectangles)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDiscardRectangles' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (discardRectangles)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Rect2D))) (pPDiscardRectangles')     lift $ f   cStructSize = 40@@ -313,7 +433,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     lift $ poke ((p `plusPtr` 20 :: Ptr DiscardRectangleModeEXT)) (zero)     pPDiscardRectangles' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (mempty)) * 16) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDiscardRectangles' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDiscardRectangles' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (mempty)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Rect2D))) (pPDiscardRectangles')     lift $ f @@ -349,17 +469,27 @@   +conNamePipelineDiscardRectangleStateCreateFlagsEXT :: String+conNamePipelineDiscardRectangleStateCreateFlagsEXT = "PipelineDiscardRectangleStateCreateFlagsEXT"++enumPrefixPipelineDiscardRectangleStateCreateFlagsEXT :: String+enumPrefixPipelineDiscardRectangleStateCreateFlagsEXT = ""++showTablePipelineDiscardRectangleStateCreateFlagsEXT :: [(PipelineDiscardRectangleStateCreateFlagsEXT, String)]+showTablePipelineDiscardRectangleStateCreateFlagsEXT = []+ instance Show PipelineDiscardRectangleStateCreateFlagsEXT where-  showsPrec p = \case-    PipelineDiscardRectangleStateCreateFlagsEXT x -> showParen (p >= 11) (showString "PipelineDiscardRectangleStateCreateFlagsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineDiscardRectangleStateCreateFlagsEXT+                            showTablePipelineDiscardRectangleStateCreateFlagsEXT+                            conNamePipelineDiscardRectangleStateCreateFlagsEXT+                            (\(PipelineDiscardRectangleStateCreateFlagsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineDiscardRectangleStateCreateFlagsEXT where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineDiscardRectangleStateCreateFlagsEXT")-                       v <- step readPrec-                       pure (PipelineDiscardRectangleStateCreateFlagsEXT v)))+  readPrec = enumReadPrec enumPrefixPipelineDiscardRectangleStateCreateFlagsEXT+                          showTablePipelineDiscardRectangleStateCreateFlagsEXT+                          conNamePipelineDiscardRectangleStateCreateFlagsEXT+                          PipelineDiscardRectangleStateCreateFlagsEXT   -- | VkDiscardRectangleModeEXT - Specify the discard rectangle mode@@ -379,20 +509,28 @@ {-# complete DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,              DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT :: DiscardRectangleModeEXT #-} +conNameDiscardRectangleModeEXT :: String+conNameDiscardRectangleModeEXT = "DiscardRectangleModeEXT"++enumPrefixDiscardRectangleModeEXT :: String+enumPrefixDiscardRectangleModeEXT = "DISCARD_RECTANGLE_MODE_"++showTableDiscardRectangleModeEXT :: [(DiscardRectangleModeEXT, String)]+showTableDiscardRectangleModeEXT =+  [(DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT, "INCLUSIVE_EXT"), (DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT, "EXCLUSIVE_EXT")]+ instance Show DiscardRectangleModeEXT where-  showsPrec p = \case-    DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT -> showString "DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT"-    DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT -> showString "DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT"-    DiscardRectangleModeEXT x -> showParen (p >= 11) (showString "DiscardRectangleModeEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixDiscardRectangleModeEXT+                            showTableDiscardRectangleModeEXT+                            conNameDiscardRectangleModeEXT+                            (\(DiscardRectangleModeEXT x) -> x)+                            (showsPrec 11)  instance Read DiscardRectangleModeEXT where-  readPrec = parens (choose [("DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT", pure DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT)-                            , ("DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT", pure DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "DiscardRectangleModeEXT")-                       v <- step readPrec-                       pure (DiscardRectangleModeEXT v)))+  readPrec = enumReadPrec enumPrefixDiscardRectangleModeEXT+                          showTableDiscardRectangleModeEXT+                          conNameDiscardRectangleModeEXT+                          DiscardRectangleModeEXT   type EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs-boot view
@@ -1,4 +1,129 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_discard_rectangles - device extension+--+-- == VK_EXT_discard_rectangles+--+-- [__Name String__]+--     @VK_EXT_discard_rectangles@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     100+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_discard_rectangles:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-12-22+--+-- [__Interactions and External Dependencies__]+--+--     -   Interacts with @VK_KHR_device_group@+--+--     -   Interacts with Vulkan 1.1+--+-- [__Contributors__]+--+--     -   Daniel Koch, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension provides additional orthogonally aligned “discard+-- rectangles” specified in framebuffer-space coordinates that restrict+-- rasterization of all points, lines and triangles.+--+-- From zero to an implementation-dependent limit (specified by+-- @maxDiscardRectangles@) number of discard rectangles can be operational+-- at once. When one or more discard rectangles are active, rasterized+-- fragments can either survive if the fragment is within any of the+-- operational discard rectangles ('DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT'+-- mode) or be rejected if the fragment is within any of the operational+-- discard rectangles ('DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT' mode).+--+-- These discard rectangles operate orthogonally to the existing scissor+-- test functionality. The discard rectangles can be different for each+-- physical device in a device group by specifying the device mask and+-- setting discard rectangle dynamic state.+--+-- == New Commands+--+-- -   'cmdSetDiscardRectangleEXT'+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'PipelineDiscardRectangleStateCreateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceDiscardRectanglePropertiesEXT'+--+-- == New Enums+--+-- -   'DiscardRectangleModeEXT'+--+-- == New Bitmasks+--+-- -   'PipelineDiscardRectangleStateCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DISCARD_RECTANGLES_EXTENSION_NAME'+--+-- -   'EXT_DISCARD_RECTANGLES_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2016-12-22 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'DiscardRectangleModeEXT',+-- 'PhysicalDeviceDiscardRectanglePropertiesEXT',+-- 'PipelineDiscardRectangleStateCreateFlagsEXT',+-- 'PipelineDiscardRectangleStateCreateInfoEXT',+-- 'cmdSetDiscardRectangleEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_discard_rectangles Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_discard_rectangles  ( PhysicalDeviceDiscardRectanglePropertiesEXT                                                     , PipelineDiscardRectangleStateCreateInfoEXT                                                     ) where
src/Vulkan/Extensions/VK_EXT_display_control.hs view
@@ -1,4 +1,155 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_display_control - device extension+--+-- == VK_EXT_display_control+--+-- [__Name String__]+--     @VK_EXT_display_control@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     92+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_EXT_display_surface_counter@+--+--     -   Requires @VK_KHR_swapchain@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_display_control:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-12-13+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Pierre Boudier, NVIDIA+--+--     -   James Jones, NVIDIA+--+--     -   Damien Leone, NVIDIA+--+--     -   Pierre-Loup Griffais, Valve+--+--     -   Daniel Vetter, Intel+--+-- == Description+--+-- This extension defines a set of utility functions for use with the+-- @VK_KHR_display@ and @VK_KHR_display_swapchain@ extensions.+--+-- == New Commands+--+-- -   'displayPowerControlEXT'+--+-- -   'getSwapchainCounterEXT'+--+-- -   'registerDeviceEventEXT'+--+-- -   'registerDisplayEventEXT'+--+-- == New Structures+--+-- -   'DeviceEventInfoEXT'+--+-- -   'DisplayEventInfoEXT'+--+-- -   'DisplayPowerInfoEXT'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR':+--+--     -   'SwapchainCounterCreateInfoEXT'+--+-- == New Enums+--+-- -   'DeviceEventTypeEXT'+--+-- -   'DisplayEventTypeEXT'+--+-- -   'DisplayPowerStateEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DISPLAY_CONTROL_EXTENSION_NAME'+--+-- -   'EXT_DISPLAY_CONTROL_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT'+--+-- == Issues+--+-- 1) Should this extension add an explicit “WaitForVsync” API or a fence+-- signaled at vsync that the application can wait on?+--+-- __RESOLVED__: A fence. A separate API could later be provided that+-- allows exporting the fence to a native object that could be inserted+-- into standard run loops on POSIX and Windows systems.+--+-- 2) Should callbacks be added for a vsync event, or in general to monitor+-- events in Vulkan?+--+-- __RESOLVED__: No, fences should be used. Some events are generated by+-- interrupts which are managed in the kernel. In order to use a callback+-- provided by the application, drivers would need to have the userspace+-- driver spawn threads that would wait on the kernel event, and hence the+-- callbacks could be difficult for the application to synchronize with its+-- other work given they would arrive on a foreign thread.+--+-- 3) Should vblank or scanline events be exposed?+--+-- __RESOLVED__: Vblank events. Scanline events could be added by a+-- separate extension, but the latency of processing an interrupt and+-- waking up a userspace event is high enough that the accuracy of a+-- scanline event would be rather low. Further, per-scanline interrupts are+-- not supported by all hardware.+--+-- == Version History+--+-- -   Revision 1, 2016-12-13 (James Jones)+--+--     -   Initial draft+--+-- = See Also+--+-- 'DeviceEventInfoEXT', 'DeviceEventTypeEXT', 'DisplayEventInfoEXT',+-- 'DisplayEventTypeEXT', 'DisplayPowerInfoEXT', 'DisplayPowerStateEXT',+-- 'SwapchainCounterCreateInfoEXT', 'displayPowerControlEXT',+-- 'getSwapchainCounterEXT', 'registerDeviceEventEXT',+-- 'registerDisplayEventEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_control Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_display_control  ( displayPowerControlEXT                                                  , registerDeviceEventEXT                                                  , registerDisplayEventEXT@@ -28,6 +179,8 @@                                                  , SurfaceCounterFlagsEXT                                                  ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -39,15 +192,7 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -64,8 +209,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word64)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.NamedType ((:::))@@ -626,7 +771,7 @@  -- | 'DISPLAY_POWER_STATE_OFF_EXT' specifies that the display is powered -- down.-pattern DISPLAY_POWER_STATE_OFF_EXT = DisplayPowerStateEXT 0+pattern DISPLAY_POWER_STATE_OFF_EXT     = DisplayPowerStateEXT 0 -- | 'DISPLAY_POWER_STATE_SUSPEND_EXT' specifies that the display is put into -- a low power mode, from which it /may/ be able to transition back to -- 'DISPLAY_POWER_STATE_ON_EXT' more quickly than if it were in@@ -634,27 +779,36 @@ -- 'DISPLAY_POWER_STATE_OFF_EXT'. pattern DISPLAY_POWER_STATE_SUSPEND_EXT = DisplayPowerStateEXT 1 -- | 'DISPLAY_POWER_STATE_ON_EXT' specifies that the display is powered on.-pattern DISPLAY_POWER_STATE_ON_EXT = DisplayPowerStateEXT 2+pattern DISPLAY_POWER_STATE_ON_EXT      = DisplayPowerStateEXT 2 {-# complete DISPLAY_POWER_STATE_OFF_EXT,              DISPLAY_POWER_STATE_SUSPEND_EXT,              DISPLAY_POWER_STATE_ON_EXT :: DisplayPowerStateEXT #-} +conNameDisplayPowerStateEXT :: String+conNameDisplayPowerStateEXT = "DisplayPowerStateEXT"++enumPrefixDisplayPowerStateEXT :: String+enumPrefixDisplayPowerStateEXT = "DISPLAY_POWER_STATE_"++showTableDisplayPowerStateEXT :: [(DisplayPowerStateEXT, String)]+showTableDisplayPowerStateEXT =+  [ (DISPLAY_POWER_STATE_OFF_EXT    , "OFF_EXT")+  , (DISPLAY_POWER_STATE_SUSPEND_EXT, "SUSPEND_EXT")+  , (DISPLAY_POWER_STATE_ON_EXT     , "ON_EXT")+  ]+ instance Show DisplayPowerStateEXT where-  showsPrec p = \case-    DISPLAY_POWER_STATE_OFF_EXT -> showString "DISPLAY_POWER_STATE_OFF_EXT"-    DISPLAY_POWER_STATE_SUSPEND_EXT -> showString "DISPLAY_POWER_STATE_SUSPEND_EXT"-    DISPLAY_POWER_STATE_ON_EXT -> showString "DISPLAY_POWER_STATE_ON_EXT"-    DisplayPowerStateEXT x -> showParen (p >= 11) (showString "DisplayPowerStateEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixDisplayPowerStateEXT+                            showTableDisplayPowerStateEXT+                            conNameDisplayPowerStateEXT+                            (\(DisplayPowerStateEXT x) -> x)+                            (showsPrec 11)  instance Read DisplayPowerStateEXT where-  readPrec = parens (choose [("DISPLAY_POWER_STATE_OFF_EXT", pure DISPLAY_POWER_STATE_OFF_EXT)-                            , ("DISPLAY_POWER_STATE_SUSPEND_EXT", pure DISPLAY_POWER_STATE_SUSPEND_EXT)-                            , ("DISPLAY_POWER_STATE_ON_EXT", pure DISPLAY_POWER_STATE_ON_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "DisplayPowerStateEXT")-                       v <- step readPrec-                       pure (DisplayPowerStateEXT v)))+  readPrec = enumReadPrec enumPrefixDisplayPowerStateEXT+                          showTableDisplayPowerStateEXT+                          conNameDisplayPowerStateEXT+                          DisplayPowerStateEXT   -- | VkDeviceEventTypeEXT - Events that can occur on a device object@@ -672,18 +826,25 @@ pattern DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = DeviceEventTypeEXT 0 {-# complete DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT :: DeviceEventTypeEXT #-} +conNameDeviceEventTypeEXT :: String+conNameDeviceEventTypeEXT = "DeviceEventTypeEXT"++enumPrefixDeviceEventTypeEXT :: String+enumPrefixDeviceEventTypeEXT = "DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT"++showTableDeviceEventTypeEXT :: [(DeviceEventTypeEXT, String)]+showTableDeviceEventTypeEXT = [(DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT, "")]+ instance Show DeviceEventTypeEXT where-  showsPrec p = \case-    DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT -> showString "DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT"-    DeviceEventTypeEXT x -> showParen (p >= 11) (showString "DeviceEventTypeEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixDeviceEventTypeEXT+                            showTableDeviceEventTypeEXT+                            conNameDeviceEventTypeEXT+                            (\(DeviceEventTypeEXT x) -> x)+                            (showsPrec 11)  instance Read DeviceEventTypeEXT where-  readPrec = parens (choose [("DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT", pure DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "DeviceEventTypeEXT")-                       v <- step readPrec-                       pure (DeviceEventTypeEXT v)))+  readPrec =+    enumReadPrec enumPrefixDeviceEventTypeEXT showTableDeviceEventTypeEXT conNameDeviceEventTypeEXT DeviceEventTypeEXT   -- | VkDisplayEventTypeEXT - Events that can occur on a display object@@ -700,18 +861,27 @@ pattern DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = DisplayEventTypeEXT 0 {-# complete DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT :: DisplayEventTypeEXT #-} +conNameDisplayEventTypeEXT :: String+conNameDisplayEventTypeEXT = "DisplayEventTypeEXT"++enumPrefixDisplayEventTypeEXT :: String+enumPrefixDisplayEventTypeEXT = "DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT"++showTableDisplayEventTypeEXT :: [(DisplayEventTypeEXT, String)]+showTableDisplayEventTypeEXT = [(DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT, "")]+ instance Show DisplayEventTypeEXT where-  showsPrec p = \case-    DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT -> showString "DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT"-    DisplayEventTypeEXT x -> showParen (p >= 11) (showString "DisplayEventTypeEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixDisplayEventTypeEXT+                            showTableDisplayEventTypeEXT+                            conNameDisplayEventTypeEXT+                            (\(DisplayEventTypeEXT x) -> x)+                            (showsPrec 11)  instance Read DisplayEventTypeEXT where-  readPrec = parens (choose [("DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT", pure DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "DisplayEventTypeEXT")-                       v <- step readPrec-                       pure (DisplayEventTypeEXT v)))+  readPrec = enumReadPrec enumPrefixDisplayEventTypeEXT+                          showTableDisplayEventTypeEXT+                          conNameDisplayEventTypeEXT+                          DisplayEventTypeEXT   type EXT_DISPLAY_CONTROL_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_EXT_display_control.hs-boot view
@@ -1,4 +1,155 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_display_control - device extension+--+-- == VK_EXT_display_control+--+-- [__Name String__]+--     @VK_EXT_display_control@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     92+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_EXT_display_surface_counter@+--+--     -   Requires @VK_KHR_swapchain@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_display_control:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-12-13+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Pierre Boudier, NVIDIA+--+--     -   James Jones, NVIDIA+--+--     -   Damien Leone, NVIDIA+--+--     -   Pierre-Loup Griffais, Valve+--+--     -   Daniel Vetter, Intel+--+-- == Description+--+-- This extension defines a set of utility functions for use with the+-- @VK_KHR_display@ and @VK_KHR_display_swapchain@ extensions.+--+-- == New Commands+--+-- -   'displayPowerControlEXT'+--+-- -   'getSwapchainCounterEXT'+--+-- -   'registerDeviceEventEXT'+--+-- -   'registerDisplayEventEXT'+--+-- == New Structures+--+-- -   'DeviceEventInfoEXT'+--+-- -   'DisplayEventInfoEXT'+--+-- -   'DisplayPowerInfoEXT'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR':+--+--     -   'SwapchainCounterCreateInfoEXT'+--+-- == New Enums+--+-- -   'DeviceEventTypeEXT'+--+-- -   'DisplayEventTypeEXT'+--+-- -   'DisplayPowerStateEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DISPLAY_CONTROL_EXTENSION_NAME'+--+-- -   'EXT_DISPLAY_CONTROL_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT'+--+-- == Issues+--+-- 1) Should this extension add an explicit “WaitForVsync” API or a fence+-- signaled at vsync that the application can wait on?+--+-- __RESOLVED__: A fence. A separate API could later be provided that+-- allows exporting the fence to a native object that could be inserted+-- into standard run loops on POSIX and Windows systems.+--+-- 2) Should callbacks be added for a vsync event, or in general to monitor+-- events in Vulkan?+--+-- __RESOLVED__: No, fences should be used. Some events are generated by+-- interrupts which are managed in the kernel. In order to use a callback+-- provided by the application, drivers would need to have the userspace+-- driver spawn threads that would wait on the kernel event, and hence the+-- callbacks could be difficult for the application to synchronize with its+-- other work given they would arrive on a foreign thread.+--+-- 3) Should vblank or scanline events be exposed?+--+-- __RESOLVED__: Vblank events. Scanline events could be added by a+-- separate extension, but the latency of processing an interrupt and+-- waking up a userspace event is high enough that the accuracy of a+-- scanline event would be rather low. Further, per-scanline interrupts are+-- not supported by all hardware.+--+-- == Version History+--+-- -   Revision 1, 2016-12-13 (James Jones)+--+--     -   Initial draft+--+-- = See Also+--+-- 'DeviceEventInfoEXT', 'DeviceEventTypeEXT', 'DisplayEventInfoEXT',+-- 'DisplayEventTypeEXT', 'DisplayPowerInfoEXT', 'DisplayPowerStateEXT',+-- 'SwapchainCounterCreateInfoEXT', 'displayPowerControlEXT',+-- 'getSwapchainCounterEXT', 'registerDeviceEventEXT',+-- 'registerDisplayEventEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_control Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_display_control  ( DeviceEventInfoEXT                                                  , DisplayEventInfoEXT                                                  , DisplayPowerInfoEXT
src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs view
@@ -1,12 +1,111 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_display_surface_counter - instance extension+--+-- == VK_EXT_display_surface_counter+--+-- [__Name String__]+--     @VK_EXT_display_surface_counter@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     91+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_display@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_display_surface_counter:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-12-13+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Pierre Boudier, NVIDIA+--+--     -   James Jones, NVIDIA+--+--     -   Damien Leone, NVIDIA+--+--     -   Pierre-Loup Griffais, Valve+--+--     -   Daniel Vetter, Intel+--+-- == Description+--+-- This extension defines a vertical blanking period counter associated+-- with display surfaces. It provides a mechanism to query support for such+-- a counter from a 'Vulkan.Extensions.Handles.SurfaceKHR' object.+--+-- == New Commands+--+-- -   'getPhysicalDeviceSurfaceCapabilities2EXT'+--+-- == New Structures+--+-- -   'SurfaceCapabilities2EXT'+--+-- == New Enums+--+-- -   'SurfaceCounterFlagBitsEXT'+--+-- == New Bitmasks+--+-- -   'SurfaceCounterFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME'+--+-- -   'EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT'+--+-- == Version History+--+-- -   Revision 1, 2016-12-13 (James Jones)+--+--     -   Initial draft+--+-- = See Also+--+-- 'SurfaceCapabilities2EXT', 'SurfaceCounterFlagBitsEXT',+-- 'SurfaceCounterFlagsEXT', 'getPhysicalDeviceSurfaceCapabilities2EXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_surface_counter Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_display_surface_counter  ( getPhysicalDeviceSurfaceCapabilities2EXT                                                          , pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT                                                          , pattern SURFACE_COUNTER_VBLANK_EXT                                                          , SurfaceCapabilities2EXT(..)+                                                         , SurfaceCounterFlagsEXT                                                          , SurfaceCounterFlagBitsEXT( SURFACE_COUNTER_VBLANK_BIT_EXT                                                                                     , ..                                                                                     )-                                                         , SurfaceCounterFlagsEXT                                                          , EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION                                                          , pattern EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION                                                          , EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME@@ -18,6 +117,8 @@                                                          , SurfaceTransformFlagsKHR                                                          ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -26,15 +127,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -45,14 +139,15 @@ import Foreign.Storable (Storable) import Foreign.Storable (Storable(peek)) import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..)) import GHC.Generics (Generic) import GHC.IO.Exception (IOErrorType(..)) import GHC.IO.Exception (IOException(..)) import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.Extensions.VK_KHR_surface (CompositeAlphaFlagsKHR)@@ -226,34 +321,34 @@  instance ToCStruct SurfaceCapabilities2EXT where   withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p SurfaceCapabilities2EXT{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (minImageCount)-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (maxImageCount)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (currentExtent) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Extent2D)) (minImageExtent) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr Extent2D)) (maxImageExtent) . ($ ())-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxImageArrayLayers)-    lift $ poke ((p `plusPtr` 52 :: Ptr SurfaceTransformFlagsKHR)) (supportedTransforms)-    lift $ poke ((p `plusPtr` 56 :: Ptr SurfaceTransformFlagBitsKHR)) (currentTransform)-    lift $ poke ((p `plusPtr` 60 :: Ptr CompositeAlphaFlagsKHR)) (supportedCompositeAlpha)-    lift $ poke ((p `plusPtr` 64 :: Ptr ImageUsageFlags)) (supportedUsageFlags)-    lift $ poke ((p `plusPtr` 68 :: Ptr SurfaceCounterFlagsEXT)) (supportedSurfaceCounters)-    lift $ f+  pokeCStruct p SurfaceCapabilities2EXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (minImageCount)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxImageCount)+    poke ((p `plusPtr` 24 :: Ptr Extent2D)) (currentExtent)+    poke ((p `plusPtr` 32 :: Ptr Extent2D)) (minImageExtent)+    poke ((p `plusPtr` 40 :: Ptr Extent2D)) (maxImageExtent)+    poke ((p `plusPtr` 48 :: Ptr Word32)) (maxImageArrayLayers)+    poke ((p `plusPtr` 52 :: Ptr SurfaceTransformFlagsKHR)) (supportedTransforms)+    poke ((p `plusPtr` 56 :: Ptr SurfaceTransformFlagBitsKHR)) (currentTransform)+    poke ((p `plusPtr` 60 :: Ptr CompositeAlphaFlagsKHR)) (supportedCompositeAlpha)+    poke ((p `plusPtr` 64 :: Ptr ImageUsageFlags)) (supportedUsageFlags)+    poke ((p `plusPtr` 68 :: Ptr SurfaceCounterFlagsEXT)) (supportedSurfaceCounters)+    f   cStructSize = 72   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Extent2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr Extent2D)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 56 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 40 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 56 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)+    f  instance FromCStruct SurfaceCapabilities2EXT where   peekCStruct p = do@@ -271,6 +366,12 @@     pure $ SurfaceCapabilities2EXT              minImageCount maxImageCount currentExtent minImageExtent maxImageExtent maxImageArrayLayers supportedTransforms currentTransform supportedCompositeAlpha supportedUsageFlags supportedSurfaceCounters +instance Storable SurfaceCapabilities2EXT where+  sizeOf ~_ = 72+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero SurfaceCapabilities2EXT where   zero = SurfaceCapabilities2EXT            zero@@ -286,6 +387,8 @@            zero  +type SurfaceCounterFlagsEXT = SurfaceCounterFlagBitsEXT+ -- | VkSurfaceCounterFlagBitsEXT - Surface-relative counter types -- -- = See Also@@ -300,20 +403,27 @@ -- with the surface. pattern SURFACE_COUNTER_VBLANK_BIT_EXT = SurfaceCounterFlagBitsEXT 0x00000001 -type SurfaceCounterFlagsEXT = SurfaceCounterFlagBitsEXT+conNameSurfaceCounterFlagBitsEXT :: String+conNameSurfaceCounterFlagBitsEXT = "SurfaceCounterFlagBitsEXT" +enumPrefixSurfaceCounterFlagBitsEXT :: String+enumPrefixSurfaceCounterFlagBitsEXT = "SURFACE_COUNTER_VBLANK_BIT_EXT"++showTableSurfaceCounterFlagBitsEXT :: [(SurfaceCounterFlagBitsEXT, String)]+showTableSurfaceCounterFlagBitsEXT = [(SURFACE_COUNTER_VBLANK_BIT_EXT, "")]+ instance Show SurfaceCounterFlagBitsEXT where-  showsPrec p = \case-    SURFACE_COUNTER_VBLANK_BIT_EXT -> showString "SURFACE_COUNTER_VBLANK_BIT_EXT"-    SurfaceCounterFlagBitsEXT x -> showParen (p >= 11) (showString "SurfaceCounterFlagBitsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixSurfaceCounterFlagBitsEXT+                            showTableSurfaceCounterFlagBitsEXT+                            conNameSurfaceCounterFlagBitsEXT+                            (\(SurfaceCounterFlagBitsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read SurfaceCounterFlagBitsEXT where-  readPrec = parens (choose [("SURFACE_COUNTER_VBLANK_BIT_EXT", pure SURFACE_COUNTER_VBLANK_BIT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "SurfaceCounterFlagBitsEXT")-                       v <- step readPrec-                       pure (SurfaceCounterFlagBitsEXT v)))+  readPrec = enumReadPrec enumPrefixSurfaceCounterFlagBitsEXT+                          showTableSurfaceCounterFlagBitsEXT+                          conNameSurfaceCounterFlagBitsEXT+                          SurfaceCounterFlagBitsEXT   type EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs-boot view
@@ -1,7 +1,106 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_display_surface_counter - instance extension+--+-- == VK_EXT_display_surface_counter+--+-- [__Name String__]+--     @VK_EXT_display_surface_counter@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     91+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_display@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_display_surface_counter:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-12-13+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Pierre Boudier, NVIDIA+--+--     -   James Jones, NVIDIA+--+--     -   Damien Leone, NVIDIA+--+--     -   Pierre-Loup Griffais, Valve+--+--     -   Daniel Vetter, Intel+--+-- == Description+--+-- This extension defines a vertical blanking period counter associated+-- with display surfaces. It provides a mechanism to query support for such+-- a counter from a 'Vulkan.Extensions.Handles.SurfaceKHR' object.+--+-- == New Commands+--+-- -   'getPhysicalDeviceSurfaceCapabilities2EXT'+--+-- == New Structures+--+-- -   'SurfaceCapabilities2EXT'+--+-- == New Enums+--+-- -   'SurfaceCounterFlagBitsEXT'+--+-- == New Bitmasks+--+-- -   'SurfaceCounterFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME'+--+-- -   'EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT'+--+-- == Version History+--+-- -   Revision 1, 2016-12-13 (James Jones)+--+--     -   Initial draft+--+-- = See Also+--+-- 'SurfaceCapabilities2EXT', 'SurfaceCounterFlagBitsEXT',+-- 'SurfaceCounterFlagsEXT', 'getPhysicalDeviceSurfaceCapabilities2EXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_surface_counter Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_display_surface_counter  ( SurfaceCapabilities2EXT-                                                         , SurfaceCounterFlagBitsEXT                                                          , SurfaceCounterFlagsEXT+                                                         , SurfaceCounterFlagBitsEXT                                                          ) where  import Data.Kind (Type)@@ -15,7 +114,7 @@ instance FromCStruct SurfaceCapabilities2EXT  -data SurfaceCounterFlagBitsEXT- type SurfaceCounterFlagsEXT = SurfaceCounterFlagBitsEXT++data SurfaceCounterFlagBitsEXT 
src/Vulkan/Extensions/VK_EXT_extended_dynamic_state.hs view
@@ -1,4 +1,162 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_extended_dynamic_state - device extension+--+-- == VK_EXT_extended_dynamic_state+--+-- [__Name String__]+--     @VK_EXT_extended_dynamic_state@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     268+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_extended_dynamic_state:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-12-09+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Dan Ginsburg, Valve Corporation+--+--     -   Graeme Leese, Broadcom+--+--     -   Hans-Kristian Arntzen, Valve Corporation+--+--     -   Jan-Harald Fredriksen, Arm Limited+--+--     -   Jason Ekstrand, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jesse Hall, Google+--+--     -   Philip Rebohle, Valve Corporation+--+--     -   Stuart Smith, Imagination Technologies+--+--     -   Tobias Hector, AMD+--+-- == Description+--+-- This extension adds some more dynamic state to support applications that+-- need to reduce the number of pipeline state objects they compile and+-- bind.+--+-- == New Commands+--+-- -   'cmdBindVertexBuffers2EXT'+--+-- -   'cmdSetCullModeEXT'+--+-- -   'cmdSetDepthBoundsTestEnableEXT'+--+-- -   'cmdSetDepthCompareOpEXT'+--+-- -   'cmdSetDepthTestEnableEXT'+--+-- -   'cmdSetDepthWriteEnableEXT'+--+-- -   'cmdSetFrontFaceEXT'+--+-- -   'cmdSetPrimitiveTopologyEXT'+--+-- -   'cmdSetScissorWithCountEXT'+--+-- -   'cmdSetStencilOpEXT'+--+-- -   'cmdSetStencilTestEnableEXT'+--+-- -   'cmdSetViewportWithCountEXT'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceExtendedDynamicStateFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME'+--+-- -   'EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-12-09 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceExtendedDynamicStateFeaturesEXT',+-- 'cmdBindVertexBuffers2EXT', 'cmdSetCullModeEXT',+-- 'cmdSetDepthBoundsTestEnableEXT', 'cmdSetDepthCompareOpEXT',+-- 'cmdSetDepthTestEnableEXT', 'cmdSetDepthWriteEnableEXT',+-- 'cmdSetFrontFaceEXT', 'cmdSetPrimitiveTopologyEXT',+-- 'cmdSetScissorWithCountEXT', 'cmdSetStencilOpEXT',+-- 'cmdSetStencilTestEnableEXT', 'cmdSetViewportWithCountEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_extended_dynamic_state  ( cmdSetCullModeEXT                                                         , cmdSetFrontFaceEXT                                                         , cmdSetPrimitiveTopologyEXT@@ -383,7 +541,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetViewportWithCountEXT is null" Nothing Nothing   let vkCmdSetViewportWithCountEXT' = mkVkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXTPtr   pPViewports <- ContT $ allocaBytesAligned @Viewport ((Data.Vector.length (viewports)) * 24) 4-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e) . ($ ())) (viewports)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e)) (viewports)   lift $ vkCmdSetViewportWithCountEXT' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (viewports)) :: Word32)) (pPViewports)   pure $ () @@ -481,7 +639,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetScissorWithCountEXT is null" Nothing Nothing   let vkCmdSetScissorWithCountEXT' = mkVkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXTPtr   pPScissors <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (scissors)) * 16) 4-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (scissors)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (scissors)   lift $ vkCmdSetScissorWithCountEXT' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (scissors)) :: Word32)) (pPScissors)   pure $ () 
src/Vulkan/Extensions/VK_EXT_extended_dynamic_state.hs-boot view
@@ -1,4 +1,162 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_extended_dynamic_state - device extension+--+-- == VK_EXT_extended_dynamic_state+--+-- [__Name String__]+--     @VK_EXT_extended_dynamic_state@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     268+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_extended_dynamic_state:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-12-09+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Dan Ginsburg, Valve Corporation+--+--     -   Graeme Leese, Broadcom+--+--     -   Hans-Kristian Arntzen, Valve Corporation+--+--     -   Jan-Harald Fredriksen, Arm Limited+--+--     -   Jason Ekstrand, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jesse Hall, Google+--+--     -   Philip Rebohle, Valve Corporation+--+--     -   Stuart Smith, Imagination Technologies+--+--     -   Tobias Hector, AMD+--+-- == Description+--+-- This extension adds some more dynamic state to support applications that+-- need to reduce the number of pipeline state objects they compile and+-- bind.+--+-- == New Commands+--+-- -   'cmdBindVertexBuffers2EXT'+--+-- -   'cmdSetCullModeEXT'+--+-- -   'cmdSetDepthBoundsTestEnableEXT'+--+-- -   'cmdSetDepthCompareOpEXT'+--+-- -   'cmdSetDepthTestEnableEXT'+--+-- -   'cmdSetDepthWriteEnableEXT'+--+-- -   'cmdSetFrontFaceEXT'+--+-- -   'cmdSetPrimitiveTopologyEXT'+--+-- -   'cmdSetScissorWithCountEXT'+--+-- -   'cmdSetStencilOpEXT'+--+-- -   'cmdSetStencilTestEnableEXT'+--+-- -   'cmdSetViewportWithCountEXT'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceExtendedDynamicStateFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME'+--+-- -   'EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-12-09 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceExtendedDynamicStateFeaturesEXT',+-- 'cmdBindVertexBuffers2EXT', 'cmdSetCullModeEXT',+-- 'cmdSetDepthBoundsTestEnableEXT', 'cmdSetDepthCompareOpEXT',+-- 'cmdSetDepthTestEnableEXT', 'cmdSetDepthWriteEnableEXT',+-- 'cmdSetFrontFaceEXT', 'cmdSetPrimitiveTopologyEXT',+-- 'cmdSetScissorWithCountEXT', 'cmdSetStencilOpEXT',+-- 'cmdSetStencilTestEnableEXT', 'cmdSetViewportWithCountEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_extended_dynamic_state  (PhysicalDeviceExtendedDynamicStateFeaturesEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_external_memory_dma_buf.hs view
@@ -1,4 +1,115 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_external_memory_dma_buf - device extension+--+-- == VK_EXT_external_memory_dma_buf+--+-- [__Name String__]+--     @VK_EXT_external_memory_dma_buf@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     126+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_memory_fd@+--+-- [__Contact__]+--+--     -   Chad Versace+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_external_memory_dma_buf:%20&body=@chadversary%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-10-10+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Chad Versace, Google+--+--     -   James Jones, NVIDIA+--+--     -   Jason Ekstrand, Intel+--+-- == Description+--+-- A @dma_buf@ is a type of file descriptor, defined by the Linux kernel,+-- that allows sharing memory across kernel device drivers and across+-- processes. This extension enables applications to import a @dma_buf@ as+-- 'Vulkan.Core10.Handles.DeviceMemory', to export+-- 'Vulkan.Core10.Handles.DeviceMemory' as a @dma_buf@, and to create+-- 'Vulkan.Core10.Handles.Buffer' objects that /can/ be bound to that+-- memory.+--+-- == New Enum Constants+--+-- -   'EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME'+--+-- -   'EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits':+--+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT'+--+-- == Issues+--+-- 1) How does the application, when creating a+-- 'Vulkan.Core10.Handles.Image' that it intends to bind to @dma_buf@+-- 'Vulkan.Core10.Handles.DeviceMemory' containing an externally produced+-- image, specify the memory layout (such as row pitch and DRM format+-- modifier) of the 'Vulkan.Core10.Handles.Image'? In other words, how does+-- the application achieve behavior comparable to that provided by+-- <https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import.txt EGL_EXT_image_dma_buf_import>+-- and+-- <https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt EGL_EXT_image_dma_buf_import_modifiers>+-- ?+--+-- __RESOLVED__: Features comparable to those in+-- <https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import.txt EGL_EXT_image_dma_buf_import>+-- and+-- <https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt EGL_EXT_image_dma_buf_import_modifiers>+-- will be provided by an extension layered atop this one.+--+-- 2) Without the ability to specify the memory layout of external+-- @dma_buf@ images, how is this extension useful?+--+-- __RESOLVED__: This extension provides exactly one new feature: the+-- ability to import\/export between @dma_buf@ and+-- 'Vulkan.Core10.Handles.DeviceMemory'. This feature, together with+-- features provided by @VK_KHR_external_memory_fd@, is sufficient to bind+-- a 'Vulkan.Core10.Handles.Buffer' to @dma_buf@.+--+-- == Version History+--+-- -   Revision 1, 2017-10-10 (Chad Versace)+--+--     -   Squashed internal revisions+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_external_memory_dma_buf Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_external_memory_dma_buf  ( EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION                                                          , pattern EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION                                                          , EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME
src/Vulkan/Extensions/VK_EXT_external_memory_host.hs view
@@ -1,4 +1,174 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_external_memory_host - device extension+--+-- == VK_EXT_external_memory_host+--+-- [__Name String__]+--     @VK_EXT_external_memory_host@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     179+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_memory@+--+-- [__Contact__]+--+--     -   Daniel Rakos+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_external_memory_host:%20&body=@drakos-amd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-11-10+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jaakko Konttinen, AMD+--+--     -   David Mao, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Tobias Hector, Imagination Technologies+--+--     -   Jason Ekstrand, Intel+--+--     -   James Jones, NVIDIA+--+-- == Description+--+-- This extension enables an application to import host allocations and+-- host mapped foreign device memory to Vulkan memory objects.+--+-- == New Commands+--+-- -   'getMemoryHostPointerPropertiesEXT'+--+-- == New Structures+--+-- -   'MemoryHostPointerPropertiesEXT'+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'ImportMemoryHostPointerInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceExternalMemoryHostPropertiesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME'+--+-- -   'EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits':+--+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT'+--+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT'+--+-- == Issues+--+-- 1) What memory type has to be used to import host pointers?+--+-- RESOLVED: Depends on the implementation. Applications have to use the+-- new 'getMemoryHostPointerPropertiesEXT' command to query the supported+-- memory types for a particular host pointer. The reported memory types+-- may include memory types that come from a memory heap that is otherwise+-- not usable for regular memory object allocation and thus such a heap’s+-- size may be zero.+--+-- 2) Can the application still access the contents of the host allocation+-- after importing?+--+-- RESOLVED: Yes. However, usual synchronization requirements apply.+--+-- 3) Can the application free the host allocation?+--+-- RESOLVED: No, it violates valid usage conditions. Using the memory+-- object imported from a host allocation that’s already freed thus results+-- in undefined behavior.+--+-- 4) Is 'Vulkan.Core10.Memory.mapMemory' expected to return the same host+-- address which was specified when importing it to the memory object?+--+-- RESOLVED: No. Implementations are allowed to return the same address but+-- it’s not required. Some implementations might return a different virtual+-- mapping of the allocation, although the same physical pages will be+-- used.+--+-- 5) Is there any limitation on the alignment of the host pointer and\/or+-- size?+--+-- RESOLVED: Yes. Both the address and the size have to be an integer+-- multiple of @minImportedHostPointerAlignment@. In addition, some+-- platforms and foreign devices may have additional restrictions.+--+-- 6) Can the same host allocation be imported multiple times into a given+-- physical device?+--+-- RESOLVED: No, at least not guaranteed by this extension. Some platforms+-- do not allow locking the same physical pages for device access multiple+-- times, so attempting to do it may result in undefined behavior.+--+-- 7) Does this extension support exporting the new handle type?+--+-- RESOLVED: No.+--+-- 8) Should we include the possibility to import host mapped foreign+-- device memory using this API?+--+-- RESOLVED: Yes, through a separate handle type. Implementations are still+-- allowed to support only one of the handle types introduced by this+-- extension by not returning import support for a particular handle type+-- as returned in+-- 'Vulkan.Extensions.VK_KHR_external_memory_capabilities.ExternalMemoryPropertiesKHR'.+--+-- == Version History+--+-- -   Revision 1, 2017-11-10 (Daniel Rakos)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'ImportMemoryHostPointerInfoEXT', 'MemoryHostPointerPropertiesEXT',+-- 'PhysicalDeviceExternalMemoryHostPropertiesEXT',+-- 'getMemoryHostPointerPropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_external_memory_host Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_external_memory_host  ( getMemoryHostPointerPropertiesEXT                                                       , ImportMemoryHostPointerInfoEXT(..)                                                       , MemoryHostPointerPropertiesEXT(..)
src/Vulkan/Extensions/VK_EXT_external_memory_host.hs-boot view
@@ -1,4 +1,174 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_external_memory_host - device extension+--+-- == VK_EXT_external_memory_host+--+-- [__Name String__]+--     @VK_EXT_external_memory_host@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     179+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_memory@+--+-- [__Contact__]+--+--     -   Daniel Rakos+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_external_memory_host:%20&body=@drakos-amd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-11-10+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jaakko Konttinen, AMD+--+--     -   David Mao, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Tobias Hector, Imagination Technologies+--+--     -   Jason Ekstrand, Intel+--+--     -   James Jones, NVIDIA+--+-- == Description+--+-- This extension enables an application to import host allocations and+-- host mapped foreign device memory to Vulkan memory objects.+--+-- == New Commands+--+-- -   'getMemoryHostPointerPropertiesEXT'+--+-- == New Structures+--+-- -   'MemoryHostPointerPropertiesEXT'+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'ImportMemoryHostPointerInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceExternalMemoryHostPropertiesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME'+--+-- -   'EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits':+--+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT'+--+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT'+--+-- == Issues+--+-- 1) What memory type has to be used to import host pointers?+--+-- RESOLVED: Depends on the implementation. Applications have to use the+-- new 'getMemoryHostPointerPropertiesEXT' command to query the supported+-- memory types for a particular host pointer. The reported memory types+-- may include memory types that come from a memory heap that is otherwise+-- not usable for regular memory object allocation and thus such a heap’s+-- size may be zero.+--+-- 2) Can the application still access the contents of the host allocation+-- after importing?+--+-- RESOLVED: Yes. However, usual synchronization requirements apply.+--+-- 3) Can the application free the host allocation?+--+-- RESOLVED: No, it violates valid usage conditions. Using the memory+-- object imported from a host allocation that’s already freed thus results+-- in undefined behavior.+--+-- 4) Is 'Vulkan.Core10.Memory.mapMemory' expected to return the same host+-- address which was specified when importing it to the memory object?+--+-- RESOLVED: No. Implementations are allowed to return the same address but+-- it’s not required. Some implementations might return a different virtual+-- mapping of the allocation, although the same physical pages will be+-- used.+--+-- 5) Is there any limitation on the alignment of the host pointer and\/or+-- size?+--+-- RESOLVED: Yes. Both the address and the size have to be an integer+-- multiple of @minImportedHostPointerAlignment@. In addition, some+-- platforms and foreign devices may have additional restrictions.+--+-- 6) Can the same host allocation be imported multiple times into a given+-- physical device?+--+-- RESOLVED: No, at least not guaranteed by this extension. Some platforms+-- do not allow locking the same physical pages for device access multiple+-- times, so attempting to do it may result in undefined behavior.+--+-- 7) Does this extension support exporting the new handle type?+--+-- RESOLVED: No.+--+-- 8) Should we include the possibility to import host mapped foreign+-- device memory using this API?+--+-- RESOLVED: Yes, through a separate handle type. Implementations are still+-- allowed to support only one of the handle types introduced by this+-- extension by not returning import support for a particular handle type+-- as returned in+-- 'Vulkan.Extensions.VK_KHR_external_memory_capabilities.ExternalMemoryPropertiesKHR'.+--+-- == Version History+--+-- -   Revision 1, 2017-11-10 (Daniel Rakos)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'ImportMemoryHostPointerInfoEXT', 'MemoryHostPointerPropertiesEXT',+-- 'PhysicalDeviceExternalMemoryHostPropertiesEXT',+-- 'getMemoryHostPointerPropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_external_memory_host Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_external_memory_host  ( ImportMemoryHostPointerInfoEXT                                                       , MemoryHostPointerPropertiesEXT                                                       , PhysicalDeviceExternalMemoryHostPropertiesEXT
src/Vulkan/Extensions/VK_EXT_filter_cubic.hs view
@@ -1,4 +1,131 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_filter_cubic - device extension+--+-- == VK_EXT_filter_cubic+--+-- [__Name String__]+--     @VK_EXT_filter_cubic@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     171+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Bill Licea-Kane+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_filter_cubic:%20&body=@wwlk%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-12-13+--+-- [__Contributors__]+--+--     -   Bill Licea-Kane, Qualcomm Technologies, Inc.+--+--     -   Andrew Garrard, Samsung+--+--     -   Daniel Koch, NVIDIA+--+--     -   Donald Scorgie, Imagination Technologies+--+--     -   Graeme Leese, Broadcom+--+--     -   Jan-Herald Fredericksen, ARM+--+--     -   Jeff Leger, Qualcomm Technologies, Inc.+--+--     -   Tobias Hector, AMD+--+--     -   Tom Olson, ARM+--+--     -   Stuart Smith, Imagination Technologies+--+-- == Description+--+-- @VK_EXT_filter_cubic@ extends @VK_IMG_filter_cubic@.+--+-- It documents cubic filtering of other image view types. It adds new+-- structures that /can/ be added to the @pNext@ chain of+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'+-- and+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2'+-- that /can/ be used to determine which image types and which image view+-- types support cubic filtering.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2':+--+--     -   'FilterCubicImageViewImageFormatPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2':+--+--     -   'PhysicalDeviceImageViewImageFormatInfoEXT'+--+-- == New Enum Constants+--+-- -   'EXT_FILTER_CUBIC_EXTENSION_NAME'+--+-- -   'EXT_FILTER_CUBIC_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.Filter.Filter':+--+--     -   'FILTER_CUBIC_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':+--+--     -   'FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT'+--+-- == Version History+--+-- -   Revision 3, 2019-12-13 (wwlk)+--+--     -   Delete requirement to cubic filter the formats USCALED_PACKED32,+--         SSCALED_PACKED32, UINT_PACK32, and SINT_PACK32 (cut\/paste+--         error)+--+-- -   Revision 2, 2019-06-05 (wwlk)+--+--     -   Clarify 1D optional+--+-- -   Revision 1, 2019-01-24 (wwlk)+--+--     -   Initial version+--+-- = See Also+--+-- 'FilterCubicImageViewImageFormatPropertiesEXT',+-- 'PhysicalDeviceImageViewImageFormatInfoEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_filter_cubic  ( pattern FILTER_CUBIC_EXT                                               , pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT                                               , PhysicalDeviceImageViewImageFormatInfoEXT(..)
src/Vulkan/Extensions/VK_EXT_filter_cubic.hs-boot view
@@ -1,4 +1,131 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_filter_cubic - device extension+--+-- == VK_EXT_filter_cubic+--+-- [__Name String__]+--     @VK_EXT_filter_cubic@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     171+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Bill Licea-Kane+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_filter_cubic:%20&body=@wwlk%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-12-13+--+-- [__Contributors__]+--+--     -   Bill Licea-Kane, Qualcomm Technologies, Inc.+--+--     -   Andrew Garrard, Samsung+--+--     -   Daniel Koch, NVIDIA+--+--     -   Donald Scorgie, Imagination Technologies+--+--     -   Graeme Leese, Broadcom+--+--     -   Jan-Herald Fredericksen, ARM+--+--     -   Jeff Leger, Qualcomm Technologies, Inc.+--+--     -   Tobias Hector, AMD+--+--     -   Tom Olson, ARM+--+--     -   Stuart Smith, Imagination Technologies+--+-- == Description+--+-- @VK_EXT_filter_cubic@ extends @VK_IMG_filter_cubic@.+--+-- It documents cubic filtering of other image view types. It adds new+-- structures that /can/ be added to the @pNext@ chain of+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'+-- and+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2'+-- that /can/ be used to determine which image types and which image view+-- types support cubic filtering.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2':+--+--     -   'FilterCubicImageViewImageFormatPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2':+--+--     -   'PhysicalDeviceImageViewImageFormatInfoEXT'+--+-- == New Enum Constants+--+-- -   'EXT_FILTER_CUBIC_EXTENSION_NAME'+--+-- -   'EXT_FILTER_CUBIC_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.Filter.Filter':+--+--     -   'FILTER_CUBIC_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':+--+--     -   'FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT'+--+-- == Version History+--+-- -   Revision 3, 2019-12-13 (wwlk)+--+--     -   Delete requirement to cubic filter the formats USCALED_PACKED32,+--         SSCALED_PACKED32, UINT_PACK32, and SINT_PACK32 (cut\/paste+--         error)+--+-- -   Revision 2, 2019-06-05 (wwlk)+--+--     -   Clarify 1D optional+--+-- -   Revision 1, 2019-01-24 (wwlk)+--+--     -   Initial version+--+-- = See Also+--+-- 'FilterCubicImageViewImageFormatPropertiesEXT',+-- 'PhysicalDeviceImageViewImageFormatInfoEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_filter_cubic  ( FilterCubicImageViewImageFormatPropertiesEXT                                               , PhysicalDeviceImageViewImageFormatInfoEXT                                               ) where
src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs view
@@ -1,4 +1,179 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_fragment_density_map - device extension+--+-- == VK_EXT_fragment_density_map+--+-- [__Name String__]+--     @VK_EXT_fragment_density_map@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     219+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Matthew Netsch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_fragment_density_map:%20&body=@mnetsch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-09-25+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_fragment_invocation_density.html SPV_EXT_fragment_invocation_density>+--+-- [__Contributors__]+--+--     -   Matthew Netsch, Qualcomm Technologies, Inc.+--+--     -   Robert VanReenen, Qualcomm Technologies, Inc.+--+--     -   Jonathan Wicks, Qualcomm Technologies, Inc.+--+--     -   Tate Hornbeck, Qualcomm Technologies, Inc.+--+--     -   Sam Holmes, Qualcomm Technologies, Inc.+--+--     -   Jeff Leger, Qualcomm Technologies, Inc.+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Pat Brown, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Piers Daniell, NVIDIA+--+-- == Description+--+-- This extension allows an application to specify areas of the render+-- target where the fragment shader may be invoked fewer times. These+-- fragments are broadcasted out to multiple pixels to cover the render+-- target.+--+-- The primary use of this extension is to reduce workloads in areas where+-- lower quality may not be perceived such as the distorted edges of a lens+-- or the periphery of a user’s gaze.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceFragmentDensityMapFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceFragmentDensityMapPropertiesEXT'+--+-- -   Extending 'Vulkan.Core10.Pass.RenderPassCreateInfo',+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2':+--+--     -   'RenderPassFragmentDensityMapCreateInfoEXT'+--+-- == New Enum Constants+--+-- -   'EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME'+--+-- -   'EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':+--+--     -   'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':+--+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.ImageViewCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SamplerCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT'+--+-- == New or Modified Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-fraginvocationcount FragInvocationCountEXT>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-fragsize FragSizeEXT>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-fragmentdensity FragmentDensityEXT>+--+-- == Version History+--+-- -   Revision 1, 2018-09-25 (Matthew Netsch)+--+--     -   Initial version+--+-- = See Also+--+-- 'PhysicalDeviceFragmentDensityMapFeaturesEXT',+-- 'PhysicalDeviceFragmentDensityMapPropertiesEXT',+-- 'RenderPassFragmentDensityMapCreateInfoEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_fragment_density_map  ( PhysicalDeviceFragmentDensityMapFeaturesEXT(..)                                                       , PhysicalDeviceFragmentDensityMapPropertiesEXT(..)                                                       , RenderPassFragmentDensityMapCreateInfoEXT(..)@@ -11,8 +186,6 @@ import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import Control.Monad.Trans.Class (lift)-import Control.Monad.Trans.Cont (evalContT) import Data.String (IsString) import Data.Typeable (Typeable) import Foreign.Storable (Storable)@@ -22,7 +195,6 @@ import GHC.Generics (Generic) import Foreign.Ptr (Ptr) import Data.Kind (Type)-import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.Core10.FundamentalTypes (bool32ToBool) import Vulkan.Core10.FundamentalTypes (boolToBool32) import Vulkan.Core10.Pass (AttachmentReference)@@ -176,22 +348,22 @@  instance ToCStruct PhysicalDeviceFragmentDensityMapPropertiesEXT where   withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PhysicalDeviceFragmentDensityMapPropertiesEXT{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (minFragmentDensityTexelSize) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (maxFragmentDensityTexelSize) . ($ ())-    lift $ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (fragmentDensityInvocations))-    lift $ f+  pokeCStruct p PhysicalDeviceFragmentDensityMapPropertiesEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (minFragmentDensityTexelSize)+    poke ((p `plusPtr` 24 :: Ptr Extent2D)) (maxFragmentDensityTexelSize)+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (fragmentDensityInvocations))+    f   cStructSize = 40   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+    f  instance FromCStruct PhysicalDeviceFragmentDensityMapPropertiesEXT where   peekCStruct p = do@@ -201,6 +373,12 @@     pure $ PhysicalDeviceFragmentDensityMapPropertiesEXT              minFragmentDensityTexelSize maxFragmentDensityTexelSize (bool32ToBool fragmentDensityInvocations) +instance Storable PhysicalDeviceFragmentDensityMapPropertiesEXT where+  sizeOf ~_ = 40+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero PhysicalDeviceFragmentDensityMapPropertiesEXT where   zero = PhysicalDeviceFragmentDensityMapPropertiesEXT            zero@@ -305,24 +483,30 @@  instance ToCStruct RenderPassFragmentDensityMapCreateInfoEXT where   withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p RenderPassFragmentDensityMapCreateInfoEXT{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr AttachmentReference)) (fragmentDensityMapAttachment) . ($ ())-    lift $ f+  pokeCStruct p RenderPassFragmentDensityMapCreateInfoEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr AttachmentReference)) (fragmentDensityMapAttachment)+    f   cStructSize = 24   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr AttachmentReference)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr AttachmentReference)) (zero)+    f  instance FromCStruct RenderPassFragmentDensityMapCreateInfoEXT where   peekCStruct p = do     fragmentDensityMapAttachment <- peekCStruct @AttachmentReference ((p `plusPtr` 16 :: Ptr AttachmentReference))     pure $ RenderPassFragmentDensityMapCreateInfoEXT              fragmentDensityMapAttachment++instance Storable RenderPassFragmentDensityMapCreateInfoEXT where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())  instance Zero RenderPassFragmentDensityMapCreateInfoEXT where   zero = RenderPassFragmentDensityMapCreateInfoEXT
src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs-boot view
@@ -1,4 +1,179 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_fragment_density_map - device extension+--+-- == VK_EXT_fragment_density_map+--+-- [__Name String__]+--     @VK_EXT_fragment_density_map@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     219+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Matthew Netsch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_fragment_density_map:%20&body=@mnetsch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-09-25+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_fragment_invocation_density.html SPV_EXT_fragment_invocation_density>+--+-- [__Contributors__]+--+--     -   Matthew Netsch, Qualcomm Technologies, Inc.+--+--     -   Robert VanReenen, Qualcomm Technologies, Inc.+--+--     -   Jonathan Wicks, Qualcomm Technologies, Inc.+--+--     -   Tate Hornbeck, Qualcomm Technologies, Inc.+--+--     -   Sam Holmes, Qualcomm Technologies, Inc.+--+--     -   Jeff Leger, Qualcomm Technologies, Inc.+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Pat Brown, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Piers Daniell, NVIDIA+--+-- == Description+--+-- This extension allows an application to specify areas of the render+-- target where the fragment shader may be invoked fewer times. These+-- fragments are broadcasted out to multiple pixels to cover the render+-- target.+--+-- The primary use of this extension is to reduce workloads in areas where+-- lower quality may not be perceived such as the distorted edges of a lens+-- or the periphery of a user’s gaze.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceFragmentDensityMapFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceFragmentDensityMapPropertiesEXT'+--+-- -   Extending 'Vulkan.Core10.Pass.RenderPassCreateInfo',+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2':+--+--     -   'RenderPassFragmentDensityMapCreateInfoEXT'+--+-- == New Enum Constants+--+-- -   'EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME'+--+-- -   'EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':+--+--     -   'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':+--+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.ImageViewCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SamplerCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT'+--+-- == New or Modified Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-fraginvocationcount FragInvocationCountEXT>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-fragsize FragSizeEXT>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-fragmentdensity FragmentDensityEXT>+--+-- == Version History+--+-- -   Revision 1, 2018-09-25 (Matthew Netsch)+--+--     -   Initial version+--+-- = See Also+--+-- 'PhysicalDeviceFragmentDensityMapFeaturesEXT',+-- 'PhysicalDeviceFragmentDensityMapPropertiesEXT',+-- 'RenderPassFragmentDensityMapCreateInfoEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_fragment_density_map  ( PhysicalDeviceFragmentDensityMapFeaturesEXT                                                       , PhysicalDeviceFragmentDensityMapPropertiesEXT                                                       , RenderPassFragmentDensityMapCreateInfoEXT
src/Vulkan/Extensions/VK_EXT_fragment_density_map2.hs view
@@ -1,4 +1,149 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_fragment_density_map2 - device extension+--+-- == VK_EXT_fragment_density_map2+--+-- [__Name String__]+--     @VK_EXT_fragment_density_map2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     333+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_EXT_fragment_density_map@+--+-- [__Contact__]+--+--     -   Matthew Netsch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_fragment_density_map2:%20&body=@mnetsch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-06-16+--+-- [__Interactions and External Dependencies__]+--+--     -   Interacts with Vulkan 1.1+--+-- [__Contributors__]+--+--     -   Matthew Netsch, Qualcomm Technologies, Inc.+--+--     -   Jonathan Tinkham, Qualcomm Technologies, Inc.+--+--     -   Jonathan Wicks, Qualcomm Technologies, Inc.+--+--     -   Jan-Harald Fredriksen, ARM+--+-- == Description+--+-- This extension adds additional features and properties to+-- @VK_EXT_fragment_density_map@ in order to reduce fragment density map+-- host latency as well as improved queries for subsampled sampler+-- implementation-dependent behavior.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT'+--+-- -   Extending 'Vulkan.Core10.Pass.RenderPassCreateInfo',+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2':+--+--     -   'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT'+--+-- == New Enum Constants+--+-- -   'Vulkan.Extensions.VK_EXT_fragment_density_map.EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME'+--+-- -   'Vulkan.Extensions.VK_EXT_fragment_density_map.EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':+--+--     -   'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':+--+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.ImageViewCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SamplerCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2020-06-16 (Matthew Netsch)+--+--     -   Initial version+--+-- = See Also+--+-- 'PhysicalDeviceFragmentDensityMap2FeaturesEXT',+-- 'PhysicalDeviceFragmentDensityMap2PropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_fragment_density_map2  ( PhysicalDeviceFragmentDensityMap2FeaturesEXT(..)                                                        , PhysicalDeviceFragmentDensityMap2PropertiesEXT(..)                                                        , EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_fragment_density_map2.hs-boot view
@@ -1,4 +1,149 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_fragment_density_map2 - device extension+--+-- == VK_EXT_fragment_density_map2+--+-- [__Name String__]+--     @VK_EXT_fragment_density_map2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     333+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_EXT_fragment_density_map@+--+-- [__Contact__]+--+--     -   Matthew Netsch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_fragment_density_map2:%20&body=@mnetsch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-06-16+--+-- [__Interactions and External Dependencies__]+--+--     -   Interacts with Vulkan 1.1+--+-- [__Contributors__]+--+--     -   Matthew Netsch, Qualcomm Technologies, Inc.+--+--     -   Jonathan Tinkham, Qualcomm Technologies, Inc.+--+--     -   Jonathan Wicks, Qualcomm Technologies, Inc.+--+--     -   Jan-Harald Fredriksen, ARM+--+-- == Description+--+-- This extension adds additional features and properties to+-- @VK_EXT_fragment_density_map@ in order to reduce fragment density map+-- host latency as well as improved queries for subsampled sampler+-- implementation-dependent behavior.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT'+--+-- -   Extending 'Vulkan.Core10.Pass.RenderPassCreateInfo',+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2':+--+--     -   'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT'+--+-- == New Enum Constants+--+-- -   'Vulkan.Extensions.VK_EXT_fragment_density_map.EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME'+--+-- -   'Vulkan.Extensions.VK_EXT_fragment_density_map.EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':+--+--     -   'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':+--+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.ImageViewCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SamplerCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2020-06-16 (Matthew Netsch)+--+--     -   Initial version+--+-- = See Also+--+-- 'PhysicalDeviceFragmentDensityMap2FeaturesEXT',+-- 'PhysicalDeviceFragmentDensityMap2PropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_fragment_density_map2  ( PhysicalDeviceFragmentDensityMap2FeaturesEXT                                                        , PhysicalDeviceFragmentDensityMap2PropertiesEXT                                                        ) where
src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs view
@@ -1,4 +1,129 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_fragment_shader_interlock - device extension+--+-- == VK_EXT_fragment_shader_interlock+--+-- [__Name String__]+--     @VK_EXT_fragment_shader_interlock@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     252+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_fragment_shader_interlock:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-05-02+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_fragment_shader_interlock.html SPV_EXT_fragment_shader_interlock>+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_shader_interlock.txt GL_ARB_fragment_shader_interlock>+--+-- [__Contributors__]+--+--     -   Daniel Koch, NVIDIA+--+--     -   Graeme Leese, Broadcom+--+--     -   Jan-Harald Fredriksen, Arm+--+--     -   Jason Ekstrand, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Ruihao Zhang, Qualcomm+--+--     -   Slawomir Grajewski, Intel+--+--     -   Spencer Fricke, Samsung+--+-- == Description+--+-- This extension adds support for the @FragmentShaderPixelInterlockEXT@,+-- @FragmentShaderSampleInterlockEXT@, and+-- @FragmentShaderShadingRateInterlockEXT@ capabilities from the+-- @SPV_EXT_fragment_shader_interlock@ extension to Vulkan.+--+-- Enabling these capabilities provides a critical section for fragment+-- shaders to avoid overlapping pixels being processed at the same time,+-- and certain guarantees about the ordering of fragment shader invocations+-- of fragments of overlapping pixels.+--+-- This extension can be useful for algorithms that need to access+-- per-pixel data structures via shader loads and stores. Algorithms using+-- this extension can access per-pixel data structures in critical sections+-- without other invocations accessing the same per-pixel data.+-- Additionally, the ordering guarantees are useful for cases where the API+-- ordering of fragments is meaningful. For example, applications may be+-- able to execute programmable blending operations in the fragment shader,+-- where the destination buffer is read via image loads and the final value+-- is written via image stores.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceFragmentShaderInterlockFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME'+--+-- -   'EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-fragmentShaderInterlock FragmentShaderInterlockEXT>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-fragmentShaderInterlock FragmentShaderPixelInterlockEXT>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-fragmentShaderInterlock FragmentShaderShadingRateInterlockEXT>+--+-- == Version History+--+-- -   Revision 1, 2019-05-24 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceFragmentShaderInterlockFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_shader_interlock Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_fragment_shader_interlock  ( PhysicalDeviceFragmentShaderInterlockFeaturesEXT(..)                                                            , EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION                                                            , pattern EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs-boot view
@@ -1,4 +1,129 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_fragment_shader_interlock - device extension+--+-- == VK_EXT_fragment_shader_interlock+--+-- [__Name String__]+--     @VK_EXT_fragment_shader_interlock@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     252+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_fragment_shader_interlock:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-05-02+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_fragment_shader_interlock.html SPV_EXT_fragment_shader_interlock>+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_shader_interlock.txt GL_ARB_fragment_shader_interlock>+--+-- [__Contributors__]+--+--     -   Daniel Koch, NVIDIA+--+--     -   Graeme Leese, Broadcom+--+--     -   Jan-Harald Fredriksen, Arm+--+--     -   Jason Ekstrand, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Ruihao Zhang, Qualcomm+--+--     -   Slawomir Grajewski, Intel+--+--     -   Spencer Fricke, Samsung+--+-- == Description+--+-- This extension adds support for the @FragmentShaderPixelInterlockEXT@,+-- @FragmentShaderSampleInterlockEXT@, and+-- @FragmentShaderShadingRateInterlockEXT@ capabilities from the+-- @SPV_EXT_fragment_shader_interlock@ extension to Vulkan.+--+-- Enabling these capabilities provides a critical section for fragment+-- shaders to avoid overlapping pixels being processed at the same time,+-- and certain guarantees about the ordering of fragment shader invocations+-- of fragments of overlapping pixels.+--+-- This extension can be useful for algorithms that need to access+-- per-pixel data structures via shader loads and stores. Algorithms using+-- this extension can access per-pixel data structures in critical sections+-- without other invocations accessing the same per-pixel data.+-- Additionally, the ordering guarantees are useful for cases where the API+-- ordering of fragments is meaningful. For example, applications may be+-- able to execute programmable blending operations in the fragment shader,+-- where the destination buffer is read via image loads and the final value+-- is written via image stores.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceFragmentShaderInterlockFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME'+--+-- -   'EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-fragmentShaderInterlock FragmentShaderInterlockEXT>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-fragmentShaderInterlock FragmentShaderPixelInterlockEXT>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-fragmentShaderInterlock FragmentShaderShadingRateInterlockEXT>+--+-- == Version History+--+-- -   Revision 1, 2019-05-24 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceFragmentShaderInterlockFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_shader_interlock Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_fragment_shader_interlock  (PhysicalDeviceFragmentShaderInterlockFeaturesEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs view
@@ -1,4 +1,260 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_full_screen_exclusive - device extension+--+-- == VK_EXT_full_screen_exclusive+--+-- [__Name String__]+--     @VK_EXT_full_screen_exclusive@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     256+--+-- [__Revision__]+--     4+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_surface@+--+--     -   Requires @VK_KHR_get_surface_capabilities2@+--+--     -   Requires @VK_KHR_swapchain@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_full_screen_exclusive:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-03-12+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Interacts with Vulkan 1.1+--+--     -   Interacts with @VK_KHR_device_group@+--+--     -   Interacts with @VK_KHR_win32_surface@+--+-- [__Contributors__]+--+--     -   Hans-Kristian Arntzen, ARM+--+--     -   Slawomir Grajewski, Intel+--+--     -   Tobias Hector, AMD+--+--     -   James Jones, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Joshua Schnarr, NVIDIA+--+--     -   Aaron Hagan, AMD+--+-- == Description+--+-- This extension allows applications to set the policy for swapchain+-- creation and presentation mechanisms relating to full-screen access.+-- Implementations may be able to acquire exclusive access to a particular+-- display for an application window that covers the whole screen. This can+-- increase performance on some systems by bypassing composition, however+-- it can also result in disruptive or expensive transitions in the+-- underlying windowing system when a change occurs.+--+-- Applications can choose between explicitly disallowing or allowing this+-- behavior, letting the implementation decide, or managing this mode of+-- operation directly using the new 'acquireFullScreenExclusiveModeEXT' and+-- 'releaseFullScreenExclusiveModeEXT' commands.+--+-- == New Commands+--+-- -   'acquireFullScreenExclusiveModeEXT'+--+-- -   'getPhysicalDeviceSurfacePresentModes2EXT'+--+-- -   'releaseFullScreenExclusiveModeEXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>+-- is supported:+--+-- -   'getDeviceGroupSurfacePresentModes2EXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   'getDeviceGroupSurfacePresentModes2EXT'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR',+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR':+--+--     -   'SurfaceFullScreenExclusiveInfoEXT'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':+--+--     -   'SurfaceCapabilitiesFullScreenExclusiveEXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_win32_surface VK_KHR_win32_surface>+-- is supported:+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR',+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR':+--+--     -   'SurfaceFullScreenExclusiveWin32InfoEXT'+--+-- == New Enums+--+-- -   'FullScreenExclusiveEXT'+--+-- == New Enum Constants+--+-- -   'EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME'+--+-- -   'EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_win32_surface VK_KHR_win32_surface>+-- is supported:+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT'+--+-- == Issues+--+-- 1) What should the extension & flag be called?+--+-- RESOLVED: VK_EXT_full_screen_exclusive.+--+-- Other options considered (prior to the app-controlled mode) were:+--+-- -   VK_EXT_smooth_fullscreen_transition+--+-- -   VK_EXT_fullscreen_behavior+--+-- -   VK_EXT_fullscreen_preference+--+-- -   VK_EXT_fullscreen_hint+--+-- -   VK_EXT_fast_fullscreen_transition+--+-- -   VK_EXT_avoid_fullscreen_exclusive+--+-- 2) Do we need more than a boolean toggle?+--+-- RESOLVED: Yes.+--+-- Using an enum with default\/allowed\/disallowed\/app-controlled enables+-- applications to accept driver default behavior, specifically override it+-- in either direction without implying the driver is ever required to use+-- full-screen exclusive mechanisms, or manage this mode explicitly.+--+-- 3) Should this be a KHR or EXT extension?+--+-- RESOLVED: EXT, in order to allow it to be shipped faster.+--+-- 4) Can the fullscreen hint affect the surface capabilities, and if so,+-- should the hint also be specified as input when querying the surface+-- capabilities?+--+-- RESOLVED: Yes on both accounts.+--+-- While the hint does not guarantee a particular fullscreen mode will be+-- used when the swapchain is created, it can sometimes imply particular+-- modes will NOT be used. If the driver determines that it will opt-out of+-- using a particular mode based on the policy, and knows it can only+-- support certain capabilities if that mode is used, it would be confusing+-- at best to the application to report those capabilities in such cases.+-- Not allowing implementations to report this state to applications could+-- result in situations where applications are unable to determine why+-- swapchain creation fails when they specify certain hint values, which+-- could result in never- terminating surface creation loops.+--+-- 5) Should full-screen be one word or two?+--+-- RESOLVED: Two words.+--+-- \"Fullscreen\" is not in my dictionary, and web searches did not turn up+-- definitive proof that it is a colloquially accepted compound word.+-- Documentation for the corresponding Windows API mechanisms dithers. The+-- text consistently uses a hyphen, but none-the-less, there is a+-- SetFullscreenState method in the DXGI swapchain object. Given this+-- inconclusive external guidance, it is best to adhere to the Vulkan style+-- guidelines and avoid inventing new compound words.+--+-- == Version History+--+-- -   Revision 4, 2019-03-12 (Tobias Hector)+--+--     -   Added application-controlled mode, and related functions+--+--     -   Tidied up appendix+--+-- -   Revision 3, 2019-01-03 (James Jones)+--+--     -   Renamed to VK_EXT_full_screen_exclusive+--+--     -   Made related adjustments to the tri-state enumerant names.+--+-- -   Revision 2, 2018-11-27 (James Jones)+--+--     -   Renamed to VK_KHR_fullscreen_behavior+--+--     -   Switched from boolean flag to tri-state enum+--+-- -   Revision 1, 2018-11-06 (James Jones)+--+--     -   Internal revision+--+-- = See Also+--+-- 'FullScreenExclusiveEXT', 'SurfaceCapabilitiesFullScreenExclusiveEXT',+-- 'SurfaceFullScreenExclusiveInfoEXT',+-- 'acquireFullScreenExclusiveModeEXT',+-- 'getPhysicalDeviceSurfacePresentModes2EXT',+-- 'releaseFullScreenExclusiveModeEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_full_screen_exclusive  ( getPhysicalDeviceSurfacePresentModes2EXT                                                        , getDeviceGroupSurfacePresentModes2EXT                                                        , acquireFullScreenExclusiveModeEXT@@ -25,6 +281,8 @@                                                        , DeviceGroupPresentModeFlagsKHR                                                        ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -36,15 +294,7 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Data.Vector (generateM)@@ -62,8 +312,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)@@ -614,18 +864,18 @@ -- | 'FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT' indicates the implementation -- /should/ determine the appropriate full-screen method by whatever means -- it deems appropriate.-pattern FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = FullScreenExclusiveEXT 0+pattern FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT                = FullScreenExclusiveEXT 0 -- | 'FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT' indicates the implementation /may/ -- use full-screen exclusive mechanisms when available. Such mechanisms -- /may/ result in better performance and\/or the availability of different -- presentation capabilities, but /may/ require a more disruptive -- transition during swapchain initialization, first presentation and\/or -- destruction.-pattern FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = FullScreenExclusiveEXT 1+pattern FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT                = FullScreenExclusiveEXT 1 -- | 'FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT' indicates the implementation -- /should/ avoid using full-screen mechanisms which rely on disruptive -- transitions.-pattern FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = FullScreenExclusiveEXT 2+pattern FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT             = FullScreenExclusiveEXT 2 -- | 'FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT' indicates the -- application will manage full-screen exclusive mode by using the -- 'acquireFullScreenExclusiveModeEXT' and@@ -636,24 +886,32 @@              FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT,              FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT :: FullScreenExclusiveEXT #-} +conNameFullScreenExclusiveEXT :: String+conNameFullScreenExclusiveEXT = "FullScreenExclusiveEXT"++enumPrefixFullScreenExclusiveEXT :: String+enumPrefixFullScreenExclusiveEXT = "FULL_SCREEN_EXCLUSIVE_"++showTableFullScreenExclusiveEXT :: [(FullScreenExclusiveEXT, String)]+showTableFullScreenExclusiveEXT =+  [ (FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT               , "DEFAULT_EXT")+  , (FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT               , "ALLOWED_EXT")+  , (FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT            , "DISALLOWED_EXT")+  , (FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT, "APPLICATION_CONTROLLED_EXT")+  ]+ instance Show FullScreenExclusiveEXT where-  showsPrec p = \case-    FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT -> showString "FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT"-    FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT -> showString "FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT"-    FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT -> showString "FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT"-    FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT -> showString "FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT"-    FullScreenExclusiveEXT x -> showParen (p >= 11) (showString "FullScreenExclusiveEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixFullScreenExclusiveEXT+                            showTableFullScreenExclusiveEXT+                            conNameFullScreenExclusiveEXT+                            (\(FullScreenExclusiveEXT x) -> x)+                            (showsPrec 11)  instance Read FullScreenExclusiveEXT where-  readPrec = parens (choose [("FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT", pure FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT)-                            , ("FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT", pure FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT)-                            , ("FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT", pure FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT)-                            , ("FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT", pure FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "FullScreenExclusiveEXT")-                       v <- step readPrec-                       pure (FullScreenExclusiveEXT v)))+  readPrec = enumReadPrec enumPrefixFullScreenExclusiveEXT+                          showTableFullScreenExclusiveEXT+                          conNameFullScreenExclusiveEXT+                          FullScreenExclusiveEXT   type EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION = 4
src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs-boot view
@@ -1,4 +1,260 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_full_screen_exclusive - device extension+--+-- == VK_EXT_full_screen_exclusive+--+-- [__Name String__]+--     @VK_EXT_full_screen_exclusive@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     256+--+-- [__Revision__]+--     4+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_surface@+--+--     -   Requires @VK_KHR_get_surface_capabilities2@+--+--     -   Requires @VK_KHR_swapchain@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_full_screen_exclusive:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-03-12+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Interacts with Vulkan 1.1+--+--     -   Interacts with @VK_KHR_device_group@+--+--     -   Interacts with @VK_KHR_win32_surface@+--+-- [__Contributors__]+--+--     -   Hans-Kristian Arntzen, ARM+--+--     -   Slawomir Grajewski, Intel+--+--     -   Tobias Hector, AMD+--+--     -   James Jones, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Joshua Schnarr, NVIDIA+--+--     -   Aaron Hagan, AMD+--+-- == Description+--+-- This extension allows applications to set the policy for swapchain+-- creation and presentation mechanisms relating to full-screen access.+-- Implementations may be able to acquire exclusive access to a particular+-- display for an application window that covers the whole screen. This can+-- increase performance on some systems by bypassing composition, however+-- it can also result in disruptive or expensive transitions in the+-- underlying windowing system when a change occurs.+--+-- Applications can choose between explicitly disallowing or allowing this+-- behavior, letting the implementation decide, or managing this mode of+-- operation directly using the new 'acquireFullScreenExclusiveModeEXT' and+-- 'releaseFullScreenExclusiveModeEXT' commands.+--+-- == New Commands+--+-- -   'acquireFullScreenExclusiveModeEXT'+--+-- -   'getPhysicalDeviceSurfacePresentModes2EXT'+--+-- -   'releaseFullScreenExclusiveModeEXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group VK_KHR_device_group>+-- is supported:+--+-- -   'getDeviceGroupSurfacePresentModes2EXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   'getDeviceGroupSurfacePresentModes2EXT'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR',+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR':+--+--     -   'SurfaceFullScreenExclusiveInfoEXT'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':+--+--     -   'SurfaceCapabilitiesFullScreenExclusiveEXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_win32_surface VK_KHR_win32_surface>+-- is supported:+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR',+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR':+--+--     -   'SurfaceFullScreenExclusiveWin32InfoEXT'+--+-- == New Enums+--+-- -   'FullScreenExclusiveEXT'+--+-- == New Enum Constants+--+-- -   'EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME'+--+-- -   'EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_win32_surface VK_KHR_win32_surface>+-- is supported:+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT'+--+-- == Issues+--+-- 1) What should the extension & flag be called?+--+-- RESOLVED: VK_EXT_full_screen_exclusive.+--+-- Other options considered (prior to the app-controlled mode) were:+--+-- -   VK_EXT_smooth_fullscreen_transition+--+-- -   VK_EXT_fullscreen_behavior+--+-- -   VK_EXT_fullscreen_preference+--+-- -   VK_EXT_fullscreen_hint+--+-- -   VK_EXT_fast_fullscreen_transition+--+-- -   VK_EXT_avoid_fullscreen_exclusive+--+-- 2) Do we need more than a boolean toggle?+--+-- RESOLVED: Yes.+--+-- Using an enum with default\/allowed\/disallowed\/app-controlled enables+-- applications to accept driver default behavior, specifically override it+-- in either direction without implying the driver is ever required to use+-- full-screen exclusive mechanisms, or manage this mode explicitly.+--+-- 3) Should this be a KHR or EXT extension?+--+-- RESOLVED: EXT, in order to allow it to be shipped faster.+--+-- 4) Can the fullscreen hint affect the surface capabilities, and if so,+-- should the hint also be specified as input when querying the surface+-- capabilities?+--+-- RESOLVED: Yes on both accounts.+--+-- While the hint does not guarantee a particular fullscreen mode will be+-- used when the swapchain is created, it can sometimes imply particular+-- modes will NOT be used. If the driver determines that it will opt-out of+-- using a particular mode based on the policy, and knows it can only+-- support certain capabilities if that mode is used, it would be confusing+-- at best to the application to report those capabilities in such cases.+-- Not allowing implementations to report this state to applications could+-- result in situations where applications are unable to determine why+-- swapchain creation fails when they specify certain hint values, which+-- could result in never- terminating surface creation loops.+--+-- 5) Should full-screen be one word or two?+--+-- RESOLVED: Two words.+--+-- \"Fullscreen\" is not in my dictionary, and web searches did not turn up+-- definitive proof that it is a colloquially accepted compound word.+-- Documentation for the corresponding Windows API mechanisms dithers. The+-- text consistently uses a hyphen, but none-the-less, there is a+-- SetFullscreenState method in the DXGI swapchain object. Given this+-- inconclusive external guidance, it is best to adhere to the Vulkan style+-- guidelines and avoid inventing new compound words.+--+-- == Version History+--+-- -   Revision 4, 2019-03-12 (Tobias Hector)+--+--     -   Added application-controlled mode, and related functions+--+--     -   Tidied up appendix+--+-- -   Revision 3, 2019-01-03 (James Jones)+--+--     -   Renamed to VK_EXT_full_screen_exclusive+--+--     -   Made related adjustments to the tri-state enumerant names.+--+-- -   Revision 2, 2018-11-27 (James Jones)+--+--     -   Renamed to VK_KHR_fullscreen_behavior+--+--     -   Switched from boolean flag to tri-state enum+--+-- -   Revision 1, 2018-11-06 (James Jones)+--+--     -   Internal revision+--+-- = See Also+--+-- 'FullScreenExclusiveEXT', 'SurfaceCapabilitiesFullScreenExclusiveEXT',+-- 'SurfaceFullScreenExclusiveInfoEXT',+-- 'acquireFullScreenExclusiveModeEXT',+-- 'getPhysicalDeviceSurfacePresentModes2EXT',+-- 'releaseFullScreenExclusiveModeEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_full_screen_exclusive  ( SurfaceCapabilitiesFullScreenExclusiveEXT                                                        , SurfaceFullScreenExclusiveInfoEXT                                                        , SurfaceFullScreenExclusiveWin32InfoEXT
src/Vulkan/Extensions/VK_EXT_global_priority.hs view
@@ -1,4 +1,124 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_global_priority - device extension+--+-- == VK_EXT_global_priority+--+-- [__Name String__]+--     @VK_EXT_global_priority@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     175+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Andres Rodriguez+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_global_priority:%20&body=@lostgoat%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-10-06+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Andres Rodriguez, Valve+--+--     -   Pierre-Loup Griffais, Valve+--+--     -   Dan Ginsburg, Valve+--+--     -   Mitch Singer, AMD+--+-- == Description+--+-- In Vulkan, users can specify device-scope queue priorities. In some+-- cases it may be useful to extend this concept to a system-wide scope.+-- This extension provides a mechanism for caller’s to set their+-- system-wide priority. The default queue priority is+-- 'QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT'.+--+-- The driver implementation will attempt to skew hardware resource+-- allocation in favour of the higher-priority task. Therefore,+-- higher-priority work may retain similar latency and throughput+-- characteristics even if the system is congested with lower priority+-- work.+--+-- The global priority level of a queue shall take precedence over the+-- per-process queue priority+-- ('Vulkan.Core10.Device.DeviceQueueCreateInfo'::@pQueuePriorities@).+--+-- Abuse of this feature may result in starving the rest of the system from+-- hardware resources. Therefore, the driver implementation may deny+-- requests to acquire a priority above the default priority+-- ('QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT') if the caller does not have+-- sufficient privileges. In this scenario+-- 'Vulkan.Core10.Enums.Result.ERROR_NOT_PERMITTED_EXT' is returned.+--+-- The driver implementation may fail the queue allocation request if+-- resources required to complete the operation have been exhausted (either+-- by the same process or a different process). In this scenario+-- 'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED' is returned.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Device.DeviceQueueCreateInfo':+--+--     -   'DeviceQueueGlobalPriorityCreateInfoEXT'+--+-- == New Enums+--+-- -   'QueueGlobalPriorityEXT'+--+-- == New Enum Constants+--+-- -   'EXT_GLOBAL_PRIORITY_EXTENSION_NAME'+--+-- -   'EXT_GLOBAL_PRIORITY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_NOT_PERMITTED_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 2, 2017-11-03 (Andres Rodriguez)+--+--     -   Fixed VkQueueGlobalPriorityEXT missing _EXT suffix+--+-- -   Revision 1, 2017-10-06 (Andres Rodriguez)+--+--     -   First version.+--+-- = See Also+--+-- 'DeviceQueueGlobalPriorityCreateInfoEXT', 'QueueGlobalPriorityEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_global_priority  ( DeviceQueueGlobalPriorityCreateInfoEXT(..)                                                  , QueueGlobalPriorityEXT( QUEUE_GLOBAL_PRIORITY_LOW_EXT                                                                          , QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT@@ -12,18 +132,12 @@                                                  , pattern EXT_GLOBAL_PRIORITY_EXTENSION_NAME                                                  ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.String (IsString) import Data.Typeable (Typeable) import Foreign.Storable (Storable)@@ -34,7 +148,7 @@ import Data.Int (Int32) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Vulkan.CStruct (FromCStruct) import Vulkan.CStruct (FromCStruct(..))@@ -121,11 +235,11 @@  -- | 'QUEUE_GLOBAL_PRIORITY_LOW_EXT' is below the system default. Useful for -- non-interactive tasks.-pattern QUEUE_GLOBAL_PRIORITY_LOW_EXT = QueueGlobalPriorityEXT 128+pattern QUEUE_GLOBAL_PRIORITY_LOW_EXT      = QueueGlobalPriorityEXT 128 -- | 'QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT' is the system default priority.-pattern QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = QueueGlobalPriorityEXT 256+pattern QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT   = QueueGlobalPriorityEXT 256 -- | 'QUEUE_GLOBAL_PRIORITY_HIGH_EXT' is above the system default.-pattern QUEUE_GLOBAL_PRIORITY_HIGH_EXT = QueueGlobalPriorityEXT 512+pattern QUEUE_GLOBAL_PRIORITY_HIGH_EXT     = QueueGlobalPriorityEXT 512 -- | 'QUEUE_GLOBAL_PRIORITY_REALTIME_EXT' is the highest priority. Useful for -- critical tasks. pattern QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = QueueGlobalPriorityEXT 1024@@ -134,24 +248,32 @@              QUEUE_GLOBAL_PRIORITY_HIGH_EXT,              QUEUE_GLOBAL_PRIORITY_REALTIME_EXT :: QueueGlobalPriorityEXT #-} +conNameQueueGlobalPriorityEXT :: String+conNameQueueGlobalPriorityEXT = "QueueGlobalPriorityEXT"++enumPrefixQueueGlobalPriorityEXT :: String+enumPrefixQueueGlobalPriorityEXT = "QUEUE_GLOBAL_PRIORITY_"++showTableQueueGlobalPriorityEXT :: [(QueueGlobalPriorityEXT, String)]+showTableQueueGlobalPriorityEXT =+  [ (QUEUE_GLOBAL_PRIORITY_LOW_EXT     , "LOW_EXT")+  , (QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT  , "MEDIUM_EXT")+  , (QUEUE_GLOBAL_PRIORITY_HIGH_EXT    , "HIGH_EXT")+  , (QUEUE_GLOBAL_PRIORITY_REALTIME_EXT, "REALTIME_EXT")+  ]+ instance Show QueueGlobalPriorityEXT where-  showsPrec p = \case-    QUEUE_GLOBAL_PRIORITY_LOW_EXT -> showString "QUEUE_GLOBAL_PRIORITY_LOW_EXT"-    QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT -> showString "QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"-    QUEUE_GLOBAL_PRIORITY_HIGH_EXT -> showString "QUEUE_GLOBAL_PRIORITY_HIGH_EXT"-    QUEUE_GLOBAL_PRIORITY_REALTIME_EXT -> showString "QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"-    QueueGlobalPriorityEXT x -> showParen (p >= 11) (showString "QueueGlobalPriorityEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixQueueGlobalPriorityEXT+                            showTableQueueGlobalPriorityEXT+                            conNameQueueGlobalPriorityEXT+                            (\(QueueGlobalPriorityEXT x) -> x)+                            (showsPrec 11)  instance Read QueueGlobalPriorityEXT where-  readPrec = parens (choose [("QUEUE_GLOBAL_PRIORITY_LOW_EXT", pure QUEUE_GLOBAL_PRIORITY_LOW_EXT)-                            , ("QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT", pure QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT)-                            , ("QUEUE_GLOBAL_PRIORITY_HIGH_EXT", pure QUEUE_GLOBAL_PRIORITY_HIGH_EXT)-                            , ("QUEUE_GLOBAL_PRIORITY_REALTIME_EXT", pure QUEUE_GLOBAL_PRIORITY_REALTIME_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "QueueGlobalPriorityEXT")-                       v <- step readPrec-                       pure (QueueGlobalPriorityEXT v)))+  readPrec = enumReadPrec enumPrefixQueueGlobalPriorityEXT+                          showTableQueueGlobalPriorityEXT+                          conNameQueueGlobalPriorityEXT+                          QueueGlobalPriorityEXT   type EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2
src/Vulkan/Extensions/VK_EXT_global_priority.hs-boot view
@@ -1,4 +1,124 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_global_priority - device extension+--+-- == VK_EXT_global_priority+--+-- [__Name String__]+--     @VK_EXT_global_priority@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     175+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Andres Rodriguez+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_global_priority:%20&body=@lostgoat%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-10-06+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Andres Rodriguez, Valve+--+--     -   Pierre-Loup Griffais, Valve+--+--     -   Dan Ginsburg, Valve+--+--     -   Mitch Singer, AMD+--+-- == Description+--+-- In Vulkan, users can specify device-scope queue priorities. In some+-- cases it may be useful to extend this concept to a system-wide scope.+-- This extension provides a mechanism for caller’s to set their+-- system-wide priority. The default queue priority is+-- 'QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT'.+--+-- The driver implementation will attempt to skew hardware resource+-- allocation in favour of the higher-priority task. Therefore,+-- higher-priority work may retain similar latency and throughput+-- characteristics even if the system is congested with lower priority+-- work.+--+-- The global priority level of a queue shall take precedence over the+-- per-process queue priority+-- ('Vulkan.Core10.Device.DeviceQueueCreateInfo'::@pQueuePriorities@).+--+-- Abuse of this feature may result in starving the rest of the system from+-- hardware resources. Therefore, the driver implementation may deny+-- requests to acquire a priority above the default priority+-- ('QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT') if the caller does not have+-- sufficient privileges. In this scenario+-- 'Vulkan.Core10.Enums.Result.ERROR_NOT_PERMITTED_EXT' is returned.+--+-- The driver implementation may fail the queue allocation request if+-- resources required to complete the operation have been exhausted (either+-- by the same process or a different process). In this scenario+-- 'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED' is returned.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Device.DeviceQueueCreateInfo':+--+--     -   'DeviceQueueGlobalPriorityCreateInfoEXT'+--+-- == New Enums+--+-- -   'QueueGlobalPriorityEXT'+--+-- == New Enum Constants+--+-- -   'EXT_GLOBAL_PRIORITY_EXTENSION_NAME'+--+-- -   'EXT_GLOBAL_PRIORITY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_NOT_PERMITTED_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 2, 2017-11-03 (Andres Rodriguez)+--+--     -   Fixed VkQueueGlobalPriorityEXT missing _EXT suffix+--+-- -   Revision 1, 2017-10-06 (Andres Rodriguez)+--+--     -   First version.+--+-- = See Also+--+-- 'DeviceQueueGlobalPriorityCreateInfoEXT', 'QueueGlobalPriorityEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_global_priority  (DeviceQueueGlobalPriorityCreateInfoEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_hdr_metadata.hs view
@@ -1,4 +1,122 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_hdr_metadata - device extension+--+-- == VK_EXT_hdr_metadata+--+-- [__Name String__]+--     @VK_EXT_hdr_metadata@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     106+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+-- [__Contact__]+--+--     -   Courtney Goeltzenleuchter+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_hdr_metadata:%20&body=@courtney-g%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-12-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Courtney Goeltzenleuchter, Google+--+-- == Description+--+-- This extension defines two new structures and a function to assign SMPTE+-- (the Society of Motion Picture and Television Engineers) 2086 metadata+-- and CTA (Consumer Technology Association) 861.3 metadata to a swapchain.+-- The metadata includes the color primaries, white point, and luminance+-- range of the reference monitor, which all together define the color+-- volume that contains all the possible colors the reference monitor can+-- produce. The reference monitor is the display where creative work is+-- done and creative intent is established. To preserve such creative+-- intent as much as possible and achieve consistent color reproduction on+-- different viewing displays, it is useful for the display pipeline to+-- know the color volume of the original reference monitor where content+-- was created or tuned. This avoids performing unnecessary mapping of+-- colors that are not displayable on the original reference monitor. The+-- metadata also includes the @maxContentLightLevel@ and+-- @maxFrameAverageLightLevel@ as defined by CTA 861.3.+--+-- While the general purpose of the metadata is to assist in the+-- transformation between different color volumes of different displays and+-- help achieve better color reproduction, it is not in the scope of this+-- extension to define how exactly the metadata should be used in such a+-- process. It is up to the implementation to determine how to make use of+-- the metadata.+--+-- == New Commands+--+-- -   'setHdrMetadataEXT'+--+-- == New Structures+--+-- -   'HdrMetadataEXT'+--+-- -   'XYColorEXT'+--+-- == New Enum Constants+--+-- -   'EXT_HDR_METADATA_EXTENSION_NAME'+--+-- -   'EXT_HDR_METADATA_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_HDR_METADATA_EXT'+--+-- == Issues+--+-- 1) Do we need a query function?+--+-- __PROPOSED__: No, Vulkan does not provide queries for state that the+-- application can track on its own.+--+-- 2) Should we specify default if not specified by the application?+--+-- __PROPOSED__: No, that leaves the default up to the display.+--+-- == Version History+--+-- -   Revision 1, 2016-12-27 (Courtney Goeltzenleuchter)+--+--     -   Initial version+--+-- -   Revision 2, 2018-12-19 (Courtney Goeltzenleuchter)+--+--     -   Correct implicit validity for VkHdrMetadataEXT structure+--+-- = See Also+--+-- 'HdrMetadataEXT', 'XYColorEXT', 'setHdrMetadataEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_hdr_metadata Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_hdr_metadata  ( setHdrMetadataEXT                                               , XYColorEXT(..)                                               , HdrMetadataEXT(..)@@ -108,7 +226,7 @@   pPSwapchains <- ContT $ allocaBytesAligned @SwapchainKHR ((Data.Vector.length (swapchains)) * 8) 8   lift $ Data.Vector.imapM_ (\i e -> poke (pPSwapchains `plusPtr` (8 * (i)) :: Ptr SwapchainKHR) (e)) (swapchains)   pPMetadata <- ContT $ allocaBytesAligned @HdrMetadataEXT ((Data.Vector.length (metadata)) * 64) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPMetadata `plusPtr` (64 * (i)) :: Ptr HdrMetadataEXT) (e) . ($ ())) (metadata)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPMetadata `plusPtr` (64 * (i)) :: Ptr HdrMetadataEXT) (e)) (metadata)   lift $ vkSetHdrMetadataEXT' (deviceHandle (device)) ((fromIntegral pSwapchainsLength :: Word32)) (pPSwapchains) (pPMetadata)   pure $ () @@ -205,32 +323,32 @@  instance ToCStruct HdrMetadataEXT where   withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p HdrMetadataEXT{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HDR_METADATA_EXT)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr XYColorEXT)) (displayPrimaryRed) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr XYColorEXT)) (displayPrimaryGreen) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr XYColorEXT)) (displayPrimaryBlue) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr XYColorEXT)) (whitePoint) . ($ ())-    lift $ poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (maxLuminance))-    lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (minLuminance))-    lift $ poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (maxContentLightLevel))-    lift $ poke ((p `plusPtr` 60 :: Ptr CFloat)) (CFloat (maxFrameAverageLightLevel))-    lift $ f+  pokeCStruct p HdrMetadataEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HDR_METADATA_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr XYColorEXT)) (displayPrimaryRed)+    poke ((p `plusPtr` 24 :: Ptr XYColorEXT)) (displayPrimaryGreen)+    poke ((p `plusPtr` 32 :: Ptr XYColorEXT)) (displayPrimaryBlue)+    poke ((p `plusPtr` 40 :: Ptr XYColorEXT)) (whitePoint)+    poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (maxLuminance))+    poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (minLuminance))+    poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (maxContentLightLevel))+    poke ((p `plusPtr` 60 :: Ptr CFloat)) (CFloat (maxFrameAverageLightLevel))+    f   cStructSize = 64   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HDR_METADATA_EXT)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr XYColorEXT)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr XYColorEXT)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr XYColorEXT)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr XYColorEXT)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (zero))-    lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (zero))-    lift $ poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (zero))-    lift $ poke ((p `plusPtr` 60 :: Ptr CFloat)) (CFloat (zero))-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HDR_METADATA_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr XYColorEXT)) (zero)+    poke ((p `plusPtr` 24 :: Ptr XYColorEXT)) (zero)+    poke ((p `plusPtr` 32 :: Ptr XYColorEXT)) (zero)+    poke ((p `plusPtr` 40 :: Ptr XYColorEXT)) (zero)+    poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 60 :: Ptr CFloat)) (CFloat (zero))+    f  instance FromCStruct HdrMetadataEXT where   peekCStruct p = do@@ -244,6 +362,12 @@     maxFrameAverageLightLevel <- peek @CFloat ((p `plusPtr` 60 :: Ptr CFloat))     pure $ HdrMetadataEXT              displayPrimaryRed displayPrimaryGreen displayPrimaryBlue whitePoint ((\(CFloat a) -> a) maxLuminance) ((\(CFloat a) -> a) minLuminance) ((\(CFloat a) -> a) maxContentLightLevel) ((\(CFloat a) -> a) maxFrameAverageLightLevel)++instance Storable HdrMetadataEXT where+  sizeOf ~_ = 64+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())  instance Zero HdrMetadataEXT where   zero = HdrMetadataEXT
src/Vulkan/Extensions/VK_EXT_hdr_metadata.hs-boot view
@@ -1,4 +1,122 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_hdr_metadata - device extension+--+-- == VK_EXT_hdr_metadata+--+-- [__Name String__]+--     @VK_EXT_hdr_metadata@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     106+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+-- [__Contact__]+--+--     -   Courtney Goeltzenleuchter+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_hdr_metadata:%20&body=@courtney-g%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-12-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Courtney Goeltzenleuchter, Google+--+-- == Description+--+-- This extension defines two new structures and a function to assign SMPTE+-- (the Society of Motion Picture and Television Engineers) 2086 metadata+-- and CTA (Consumer Technology Association) 861.3 metadata to a swapchain.+-- The metadata includes the color primaries, white point, and luminance+-- range of the reference monitor, which all together define the color+-- volume that contains all the possible colors the reference monitor can+-- produce. The reference monitor is the display where creative work is+-- done and creative intent is established. To preserve such creative+-- intent as much as possible and achieve consistent color reproduction on+-- different viewing displays, it is useful for the display pipeline to+-- know the color volume of the original reference monitor where content+-- was created or tuned. This avoids performing unnecessary mapping of+-- colors that are not displayable on the original reference monitor. The+-- metadata also includes the @maxContentLightLevel@ and+-- @maxFrameAverageLightLevel@ as defined by CTA 861.3.+--+-- While the general purpose of the metadata is to assist in the+-- transformation between different color volumes of different displays and+-- help achieve better color reproduction, it is not in the scope of this+-- extension to define how exactly the metadata should be used in such a+-- process. It is up to the implementation to determine how to make use of+-- the metadata.+--+-- == New Commands+--+-- -   'setHdrMetadataEXT'+--+-- == New Structures+--+-- -   'HdrMetadataEXT'+--+-- -   'XYColorEXT'+--+-- == New Enum Constants+--+-- -   'EXT_HDR_METADATA_EXTENSION_NAME'+--+-- -   'EXT_HDR_METADATA_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_HDR_METADATA_EXT'+--+-- == Issues+--+-- 1) Do we need a query function?+--+-- __PROPOSED__: No, Vulkan does not provide queries for state that the+-- application can track on its own.+--+-- 2) Should we specify default if not specified by the application?+--+-- __PROPOSED__: No, that leaves the default up to the display.+--+-- == Version History+--+-- -   Revision 1, 2016-12-27 (Courtney Goeltzenleuchter)+--+--     -   Initial version+--+-- -   Revision 2, 2018-12-19 (Courtney Goeltzenleuchter)+--+--     -   Correct implicit validity for VkHdrMetadataEXT structure+--+-- = See Also+--+-- 'HdrMetadataEXT', 'XYColorEXT', 'setHdrMetadataEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_hdr_metadata Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_hdr_metadata  ( HdrMetadataEXT                                               , XYColorEXT                                               ) where
src/Vulkan/Extensions/VK_EXT_headless_surface.hs view
@@ -1,4 +1,107 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_headless_surface - instance extension+--+-- == VK_EXT_headless_surface+--+-- [__Name String__]+--     @VK_EXT_headless_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     257+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Lisa Wu+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_headless_surface:%20&body=@chengtianww%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-03-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Ray Smith, Arm+--+-- == Description+--+-- The @VK_EXT_headless_surface@ extension is an instance extension. It+-- provides a mechanism to create 'Vulkan.Extensions.Handles.SurfaceKHR'+-- objects independently of any window system or display device. The+-- presentation operation for a swapchain created from a headless surface+-- is by default a no-op, resulting in no externally-visible result.+--+-- Because there is no real presentation target, future extensions can+-- layer on top of the headless surface to introduce arbitrary or+-- customisable sets of restrictions or features. These could include+-- features like saving to a file or restrictions to emulate a particular+-- presentation target.+--+-- This functionality is expected to be useful for application and driver+-- development because it allows any platform to expose an arbitrary or+-- customisable set of restrictions and features of a presentation engine.+-- This makes it a useful portable test target for applications targeting a+-- wide range of presentation engines where the actual target presentation+-- engines might be scarce, unavailable or otherwise undesirable or+-- inconvenient to use for general Vulkan application development.+--+-- == New Commands+--+-- -   'createHeadlessSurfaceEXT'+--+-- == New Structures+--+-- -   'HeadlessSurfaceCreateInfoEXT'+--+-- == New Bitmasks+--+-- -   'HeadlessSurfaceCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_HEADLESS_SURFACE_EXTENSION_NAME'+--+-- -   'EXT_HEADLESS_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-03-21 (Ray Smith)+--+--     -   Initial draft+--+-- = See Also+--+-- 'HeadlessSurfaceCreateFlagsEXT', 'HeadlessSurfaceCreateInfoEXT',+-- 'createHeadlessSurfaceEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_headless_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_headless_surface  ( createHeadlessSurfaceEXT                                                   , HeadlessSurfaceCreateInfoEXT(..)                                                   , HeadlessSurfaceCreateFlagsEXT(..)@@ -9,6 +112,8 @@                                                   , SurfaceKHR(..)                                                   ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -20,15 +125,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -46,7 +144,7 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.NamedType ((:::))@@ -212,17 +310,27 @@   +conNameHeadlessSurfaceCreateFlagsEXT :: String+conNameHeadlessSurfaceCreateFlagsEXT = "HeadlessSurfaceCreateFlagsEXT"++enumPrefixHeadlessSurfaceCreateFlagsEXT :: String+enumPrefixHeadlessSurfaceCreateFlagsEXT = ""++showTableHeadlessSurfaceCreateFlagsEXT :: [(HeadlessSurfaceCreateFlagsEXT, String)]+showTableHeadlessSurfaceCreateFlagsEXT = []+ instance Show HeadlessSurfaceCreateFlagsEXT where-  showsPrec p = \case-    HeadlessSurfaceCreateFlagsEXT x -> showParen (p >= 11) (showString "HeadlessSurfaceCreateFlagsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixHeadlessSurfaceCreateFlagsEXT+                            showTableHeadlessSurfaceCreateFlagsEXT+                            conNameHeadlessSurfaceCreateFlagsEXT+                            (\(HeadlessSurfaceCreateFlagsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read HeadlessSurfaceCreateFlagsEXT where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "HeadlessSurfaceCreateFlagsEXT")-                       v <- step readPrec-                       pure (HeadlessSurfaceCreateFlagsEXT v)))+  readPrec = enumReadPrec enumPrefixHeadlessSurfaceCreateFlagsEXT+                          showTableHeadlessSurfaceCreateFlagsEXT+                          conNameHeadlessSurfaceCreateFlagsEXT+                          HeadlessSurfaceCreateFlagsEXT   type EXT_HEADLESS_SURFACE_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_EXT_headless_surface.hs-boot view
@@ -1,4 +1,107 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_headless_surface - instance extension+--+-- == VK_EXT_headless_surface+--+-- [__Name String__]+--     @VK_EXT_headless_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     257+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Lisa Wu+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_headless_surface:%20&body=@chengtianww%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-03-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Ray Smith, Arm+--+-- == Description+--+-- The @VK_EXT_headless_surface@ extension is an instance extension. It+-- provides a mechanism to create 'Vulkan.Extensions.Handles.SurfaceKHR'+-- objects independently of any window system or display device. The+-- presentation operation for a swapchain created from a headless surface+-- is by default a no-op, resulting in no externally-visible result.+--+-- Because there is no real presentation target, future extensions can+-- layer on top of the headless surface to introduce arbitrary or+-- customisable sets of restrictions or features. These could include+-- features like saving to a file or restrictions to emulate a particular+-- presentation target.+--+-- This functionality is expected to be useful for application and driver+-- development because it allows any platform to expose an arbitrary or+-- customisable set of restrictions and features of a presentation engine.+-- This makes it a useful portable test target for applications targeting a+-- wide range of presentation engines where the actual target presentation+-- engines might be scarce, unavailable or otherwise undesirable or+-- inconvenient to use for general Vulkan application development.+--+-- == New Commands+--+-- -   'createHeadlessSurfaceEXT'+--+-- == New Structures+--+-- -   'HeadlessSurfaceCreateInfoEXT'+--+-- == New Bitmasks+--+-- -   'HeadlessSurfaceCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_HEADLESS_SURFACE_EXTENSION_NAME'+--+-- -   'EXT_HEADLESS_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-03-21 (Ray Smith)+--+--     -   Initial draft+--+-- = See Also+--+-- 'HeadlessSurfaceCreateFlagsEXT', 'HeadlessSurfaceCreateInfoEXT',+-- 'createHeadlessSurfaceEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_headless_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_headless_surface  (HeadlessSurfaceCreateInfoEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_host_query_reset.hs view
@@ -1,4 +1,109 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_host_query_reset - device extension+--+-- == VK_EXT_host_query_reset+--+-- [__Name String__]+--     @VK_EXT_host_query_reset@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     262+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Bas Nieuwenhuizen+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_host_query_reset:%20&body=@BNieuwenhuizen%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-03-06+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [__Contributors__]+--+--     -   Bas Nieuwenhuizen, Google+--+--     -   Jason Ekstrand, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Piers Daniell, NVIDIA+--+-- == Description+--+-- This extension adds a new function to reset queries from the host.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the EXT suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Commands+--+-- -   'resetQueryPoolEXT'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceHostQueryResetFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_HOST_QUERY_RESET_EXTENSION_NAME'+--+-- -   'EXT_HOST_QUERY_RESET_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-03-12 (Bas Nieuwenhuizen)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceHostQueryResetFeaturesEXT', 'resetQueryPoolEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_query_reset Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_host_query_reset  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT                                                   , resetQueryPoolEXT                                                   , PhysicalDeviceHostQueryResetFeaturesEXT
src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs view
@@ -1,4 +1,531 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_image_drm_format_modifier - device extension+--+-- == VK_EXT_image_drm_format_modifier+--+-- [__Name String__]+--     @VK_EXT_image_drm_format_modifier@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     159+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_bind_memory2@+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_image_format_list@+--+--     -   Requires @VK_KHR_sampler_ycbcr_conversion@+--+-- [__Contact__]+--+--     -   Chad Versace+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_image_drm_format_modifier:%20&body=@chadversary%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-08-29+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Antoine Labour, Google+--+--     -   Bas Nieuwenhuizen, Google+--+--     -   Chad Versace, Google+--+--     -   James Jones, NVIDIA+--+--     -   Jason Ekstrand, Intel+--+--     -   Jőrg Wagner, ARM+--+--     -   Kristian Høgsberg Kristensen, Google+--+--     -   Ray Smith, ARM+--+-- == Description+--+-- This extension provides the ability to use /DRM format modifiers/ with+-- images, enabling Vulkan to better integrate with the Linux ecosystem of+-- graphics, video, and display APIs.+--+-- Its functionality closely overlaps with+-- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^+-- and+-- @EGL_MESA_image_dma_buf_export@<VK_EXT_image_drm_format_modifier-fn3.html 3>\<\/link>^.+-- Unlike the EGL extensions, this extension does not require the use of a+-- specific handle type (such as a dma_buf) for external memory and+-- provides more explicit control of image creation.+--+-- == Introduction to DRM Format Modifiers+--+-- A /DRM format modifier/ is a 64-bit, vendor-prefixed, semi-opaque+-- unsigned integer. Most /modifiers/ represent a concrete, vendor-specific+-- tiling format for images. Some exceptions are @DRM_FORMAT_MOD_LINEAR@+-- (which is not vendor-specific); @DRM_FORMAT_MOD_NONE@ (which is an alias+-- of @DRM_FORMAT_MOD_LINEAR@ due to historical accident); and+-- @DRM_FORMAT_MOD_INVALID@ (which does not represent a tiling format). The+-- /modifier’s/ vendor prefix consists of the 8 most significant bits. The+-- canonical list of /modifiers/ and vendor prefixes is found in+-- <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/drm/drm_fourcc.h drm_fourcc.h>+-- in the Linux kernel source. The other dominant source of /modifiers/ are+-- vendor kernel trees.+--+-- One goal of /modifiers/ in the Linux ecosystem is to enumerate for each+-- vendor a reasonably sized set of tiling formats that are appropriate for+-- images shared across processes, APIs, and\/or devices, where each+-- participating component may possibly be from different vendors. A+-- non-goal is to enumerate all tiling formats supported by all vendors.+-- Some tiling formats used internally by vendors are inappropriate for+-- sharing; no /modifiers/ should be assigned to such tiling formats.+--+-- Modifier values typically do not /describe/ memory layouts. More+-- precisely, a /modifier/\'s lower 56 bits usually have no structure.+-- Instead, modifiers /name/ memory layouts; they name a small set of+-- vendor-preferred layouts for image sharing. As a consequence, in each+-- vendor namespace the modifier values are often sequentially allocated+-- starting at 1.+--+-- Each /modifier/ is usually supported by a single vendor and its name+-- matches the pattern @{VENDOR}_FORMAT_MOD_*@ or+-- @DRM_FORMAT_MOD_{VENDOR}_*@. Examples are @I915_FORMAT_MOD_X_TILED@ and+-- @DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED@. An exception is+-- @DRM_FORMAT_MOD_LINEAR@, which is supported by most vendors.+--+-- Many APIs in Linux use /modifiers/ to negotiate and specify the memory+-- layout of shared images. For example, a Wayland compositor and Wayland+-- client may, by relaying /modifiers/ over the Wayland protocol+-- @zwp_linux_dmabuf_v1@, negotiate a vendor-specific tiling format for a+-- shared @wl_buffer@. The client may allocate the underlying memory for+-- the @wl_buffer@ with GBM, providing the chosen /modifier/ to+-- @gbm_bo_create_with_modifiers@. The client may then import the+-- @wl_buffer@ into Vulkan for producing image content, providing the+-- resource’s dma_buf to+-- 'Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR' and+-- its /modifier/ to 'ImageDrmFormatModifierExplicitCreateInfoEXT'. The+-- compositor may then import the @wl_buffer@ into OpenGL for sampling,+-- providing the resource’s dma_buf and /modifier/ to @eglCreateImage@. The+-- compositor may also bypass OpenGL and submit the @wl_buffer@ directly to+-- the kernel’s display API, providing the dma_buf and /modifier/ through+-- @drm_mode_fb_cmd2@.+--+-- == Format Translation+--+-- /Modifier/-capable APIs often pair /modifiers/ with DRM formats, which+-- are defined in+-- <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/drm/drm_fourcc.h drm_fourcc.h>.+-- However, @VK_EXT_image_drm_format_modifier@ uses+-- 'Vulkan.Core10.Enums.Format.Format' instead of DRM formats. The+-- application must convert between 'Vulkan.Core10.Enums.Format.Format' and+-- DRM format when it sends or receives a DRM format to or from an external+-- API.+--+-- The mapping from 'Vulkan.Core10.Enums.Format.Format' to DRM format is+-- lossy. Therefore, when receiving a DRM format from an external API,+-- often the application must use information from the external API to+-- accurately map the DRM format to a 'Vulkan.Core10.Enums.Format.Format'.+-- For example, DRM formats do not distinguish between RGB and sRGB (as of+-- 2018-03-28); external information is required to identify the image’s+-- colorspace.+--+-- The mapping between 'Vulkan.Core10.Enums.Format.Format' and DRM format+-- is also incomplete. For some DRM formats there exist no corresponding+-- Vulkan format, and for some Vulkan formats there exist no corresponding+-- DRM format.+--+-- == Usage Patterns+--+-- Three primary usage patterns are intended for this extension:+--+-- -   __Negotiation.__ The application negotiates with /modifier/-aware,+--     external components to determine sets of image creation parameters+--     supported among all components.+--+--     In the Linux ecosystem, the negotiation usually assumes the image is+--     a 2D, single-sampled, non-mipmapped, non-array image; this extension+--     permits that assumption but does not require it. The result of the+--     negotiation usually resembles a set of tuples such as /(drmFormat,+--     drmFormatModifier)/, where each participating component supports all+--     tuples in the set.+--+--     Many details of this negotiation—such as the protocol used during+--     negotiation, the set of image creation parameters expressable in the+--     protocol, and how the protocol chooses which process and which API+--     will create the image—are outside the scope of this specification.+--+--     In this extension,+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'+--     with 'DrmFormatModifierPropertiesListEXT' serves a primary role+--     during the negotiation, and+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--     with 'PhysicalDeviceImageDrmFormatModifierInfoEXT' serves a+--     secondary role.+--+-- -   __Import.__ The application imports an image with a /modifier/.+--+--     In this pattern, the application receives from an external source+--     the image’s memory and its creation parameters, which are often the+--     result of the negotiation described above. Some image creation+--     parameters are implicitly defined by the external source; for+--     example, 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' is often+--     assumed. Some image creation parameters are usually explicit, such+--     as the image’s @format@, @drmFormatModifier@, and @extent@; and each+--     plane’s @offset@ and @rowPitch@.+--+--     Before creating the image, the application first verifies that the+--     physical device supports the received creation parameters by+--     querying+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'+--     with 'DrmFormatModifierPropertiesListEXT' and+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--     with 'PhysicalDeviceImageDrmFormatModifierInfoEXT'. Then the+--     application creates the image by chaining+--     'ImageDrmFormatModifierExplicitCreateInfoEXT' and+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'+--     onto 'Vulkan.Core10.Image.ImageCreateInfo'.+--+-- -   __Export.__ The application creates an image and allocates its+--     memory. Then the application exports to /modifier/-aware consumers+--     the image’s memory handles; its creation parameters; its /modifier/;+--     and the <VkSubresourceLayout.html offset>,+--     <VkSubresourceLayout.html size>, and+--     <VkSubresourceLayout.html rowPitch> of each /memory plane/.+--+--     In this pattern, the Vulkan device is the authority for the image;+--     it is the allocator of the image’s memory and the decider of the+--     image’s creation parameters. When choosing the image’s creation+--     parameters, the application usually chooses a tuple /(format,+--     drmFormatModifier)/ from the result of the negotiation described+--     above. The negotiation’s result often contains multiple tuples that+--     share the same format but differ in their /modifier/. In this case,+--     the application should defer the choice of the image’s /modifier/ to+--     the Vulkan implementation by providing all such /modifiers/ to+--     'ImageDrmFormatModifierListCreateInfoEXT'::@pDrmFormatModifiers@;+--     and the implementation should choose from @pDrmFormatModifiers@ the+--     optimal /modifier/ in consideration with the other image parameters.+--+--     The application creates the image by chaining+--     'ImageDrmFormatModifierListCreateInfoEXT' and+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'+--     onto 'Vulkan.Core10.Image.ImageCreateInfo'. The protocol and APIs by+--     which the application will share the image with external consumers+--     will likely determine the value of+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@.+--     The implementation chooses for the image an optimal /modifier/ from+--     'ImageDrmFormatModifierListCreateInfoEXT'::@pDrmFormatModifiers@.+--     The application then queries the implementation-chosen /modifier/+--     with 'getImageDrmFormatModifierPropertiesEXT', and queries the+--     memory layout of each plane with+--     'Vulkan.Core10.Image.getImageSubresourceLayout'.+--+--     The application then allocates the image’s memory with+--     'Vulkan.Core10.Memory.MemoryAllocateInfo', adding chained extending+--     structures for external memory; binds it to the image; and exports+--     the memory, for example, with+--     'Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdKHR'.+--+--     Finally, the application sends the image’s creation parameters, its+--     /modifier/, its per-plane memory layout, and the exported memory+--     handle to the external consumers. The details of how the application+--     transmits this information to external consumers is outside the+--     scope of this specification.+--+-- == Prior Art+--+-- Extension+-- @EGL_EXT_image_dma_buf_import@<VK_EXT_image_drm_format_modifier-fn1.html 1>\<\/link>^+-- introduced the ability to create an @EGLImage@ by importing for each+-- plane a dma_buf, offset, and row pitch.+--+-- Later, extension+-- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^+-- introduced the ability to query which combination of formats and+-- /modifiers/ the implementation supports and to specify /modifiers/+-- during creation of the @EGLImage@.+--+-- Extension+-- @EGL_MESA_image_dma_buf_export@<VK_EXT_image_drm_format_modifier-fn3.html 3>\<\/link>^+-- is the inverse of @EGL_EXT_image_dma_buf_import_modifiers@.+--+-- The Linux kernel modesetting API (KMS), when configuring the display’s+-- framebuffer with @struct+-- drm_mode_fb_cmd2@<VK_EXT_image_drm_format_modifier-fn4.html 4>\<\/link>^,+-- allows one to specify the frambuffer’s /modifier/ as well as a per-plane+-- memory handle, offset, and row pitch.+--+-- GBM, a graphics buffer manager for Linux, allows creation of a @gbm_bo@+-- (that is, a graphics /buffer object/) by importing data similar to that+-- in+-- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn1.html 1>\<\/link>^;+-- and symmetrically allows exporting the same data from the @gbm_bo@. See+-- the references to /modifier/ and /plane/ in+-- @gbm.h@<VK_EXT_image_drm_format_modifier-fn5.html 5>\<\/link>^.+--+-- == New Commands+--+-- -   'getImageDrmFormatModifierPropertiesEXT'+--+-- == New Structures+--+-- -   'DrmFormatModifierPropertiesEXT'+--+-- -   'ImageDrmFormatModifierPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2':+--+--     -   'DrmFormatModifierPropertiesListEXT'+--+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo':+--+--     -   'ImageDrmFormatModifierExplicitCreateInfoEXT'+--+--     -   'ImageDrmFormatModifierListCreateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2':+--+--     -   'PhysicalDeviceImageDrmFormatModifierInfoEXT'+--+-- == New Enum Constants+--+-- -   'EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME'+--+-- -   'EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageTiling.ImageTiling':+--+--     -   'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT'+--+-- == Issues+--+-- 1) Should this extension define a single DRM format modifier per+-- 'Vulkan.Core10.Handles.Image'? Or define one per plane?+--+-- ++--+-- __RESOLVED__: There exists a single DRM format modifier per+-- 'Vulkan.Core10.Handles.Image'.+--+-- __DISCUSSION__: Prior art, such as+-- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^,+-- @struct drm_mode_fb_cmd2@<VK_EXT_image_drm_format_modifier-fn4.html 4>\<\/link>^,+-- and @struct+-- gbm_import_fd_modifier_data@<VK_EXT_image_drm_format_modifier-fn5.html 5>\<\/link>^,+-- allows defining one /modifier/ per plane. However, developers of the GBM+-- and kernel APIs concede it was a mistake. Beginning in Linux 4.10, the+-- kernel requires that the application provide the same DRM format+-- /modifier/ for each plane. (See Linux commit+-- <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bae781b259269590109e8a4a8227331362b88212 bae781b259269590109e8a4a8227331362b88212>).+-- And GBM provides an entry point, @gbm_bo_get_modifier@, for querying the+-- /modifier/ of the image but does not provide one to query the modifier+-- of individual planes.+--+-- 2) When creating an image with+-- 'ImageDrmFormatModifierExplicitCreateInfoEXT', which is typically used+-- when /importing/ an image, should the application explicitly provide the+-- size of each plane?+--+-- ++--+-- __RESOLVED__: No. The application /must/ not provide the size. To+-- enforce this, the API requires that+-- 'ImageDrmFormatModifierExplicitCreateInfoEXT'::@pPlaneLayouts->size@+-- /must/ be 0.+--+-- __DISCUSSION__: Prior art, such as+-- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^,+-- @struct drm_mode_fb_cmd2@<VK_EXT_image_drm_format_modifier-fn4.html 4>\<\/link>^,+-- and @struct+-- gbm_import_fd_modifier_data@<VK_EXT_image_drm_format_modifier-fn5.html 5>\<\/link>^,+-- omits from the API the size of each plane. Instead, the APIs infer each+-- plane’s size from the import parameters, which include the image’s pixel+-- format and a dma_buf, offset, and row pitch for each plane.+--+-- However, Vulkan differs from EGL and GBM with regards to image creation+-- in the following ways:+--+-- -   __Undedicated allocation by default.__ When importing or exporting a+--     set of dma_bufs as an @EGLImage@ or @gbm_bo@, common practice+--     mandates that each dma_buf’s memory be dedicated (in the sense of+--     @VK_KHR_dedicated_allocation@) to the image (though not necessarily+--     dedicated to a single plane). In particular, neither the GBM+--     documentation nor the EGL extension specifications explicitly state+--     this requirement, but in light of common practice this is likely due+--     to under-specification rather than intentional omission. In+--     contrast, @VK_EXT_image_drm_format_modifier@ permits, but does not+--     require, the implementation to require dedicated allocations for+--     images created with+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'.+--+-- -   __Separation of image creation and memory allocation.__ When+--     importing a set of dma_bufs as an @EGLImage@ or @gbm_bo@, EGL and+--     GBM create the image resource and bind it to memory (the dma_bufs)+--     simultaneously. This allows EGL and GBM to query each dma_buf’s size+--     during image creation. In Vulkan, image creation and memory+--     allocation are independent unless a dedicated allocation is used (as+--     in @VK_KHR_dedicated_allocation@). Therefore, without requiring+--     dedicated allocation, Vulkan cannot query the size of each dma_buf+--     (or other external handle) when calculating the image’s memory+--     layout. Even if dedication allocation were required, Vulkan cannot+--     calculate the image’s memory layout until after the image is bound+--     to its dma_ufs.+--+-- The above differences complicate the potential inference of plane size+-- in Vulkan. Consider the following problematic cases:+--+-- -   __Padding.__ Some plane of the image may require+--     implementation-dependent padding.+--+-- -   __Metadata.__ For some /modifiers/, the image may have a metadata+--     plane which requires a non-trivial calculation to determine its+--     size.+--+-- -   __Mipmapped, array, and 3D images.__ The implementation may support+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'+--     for images whose @mipLevels@, @arrayLayers@, or @depth@ is greater+--     than 1. For such images with certain /modifiers/, the calculation of+--     each plane’s size may be non-trivial.+--+-- However, an application-provided plane size solves none of the above+-- problems.+--+-- For simplicity, consider an external image with a single memory plane.+-- The implementation is obviously capable calculating the image’s size+-- when its tiling is+-- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'. Likewise, any+-- reasonable implementation is capable of calculating the image’s size+-- when its tiling uses a supported /modifier/.+--+-- Suppose that the external image’s size is smaller than the+-- implementation-calculated size. If the application provided the external+-- image’s size to 'Vulkan.Core10.Image.createImage', the implementation+-- would observe the mismatched size and recognize its inability to+-- comprehend the external image’s layout (unless the implementation used+-- the application-provided size to select a refinement of the tiling+-- layout indicated by the /modifier/, which is strongly discouraged). The+-- implementation would observe the conflict, and reject image creation+-- with+-- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT'.+-- On the other hand, if the application did not provide the external+-- image’s size to 'Vulkan.Core10.Image.createImage', then the application+-- would observe after calling+-- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements' that the+-- external image’s size is less than the size required by the+-- implementation. The application would observe the conflict and refuse to+-- bind the 'Vulkan.Core10.Handles.Image' to the external memory. In both+-- cases, the result is explicit failure.+--+-- Suppose that the external image’s size is larger than the+-- implementation-calculated size. If the application provided the external+-- image’s size to 'Vulkan.Core10.Image.createImage', for reasons similar+-- to above the implementation would observe the mismatched size and+-- recognize its inability to comprehend the image data residing in the+-- extra size. The implementation, however, must assume that image data+-- resides in the entire size provided by the application. The+-- implementation would observe the conflict and reject image creation with+-- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT'.+-- On the other hand, if the application did not provide the external+-- image’s size to 'Vulkan.Core10.Image.createImage', then the application+-- would observe after calling+-- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements' that the+-- external image’s size is larger than the implementation-usable size. The+-- application would observe the conflict and refuse to bind the+-- 'Vulkan.Core10.Handles.Image' to the external memory. In both cases, the+-- result is explicit failure.+--+-- Therefore, an application-provided size provides no benefit, and this+-- extension should not require it. This decision renders+-- 'Vulkan.Core10.Image.SubresourceLayout'::@size@ an unused field during+-- image creation, and thus introduces a risk that implementations may+-- require applications to submit sideband creation parameters in the+-- unused field. To prevent implementations from relying on sideband data,+-- this extension /requires/ the application to set @size@ to 0.+--+-- === References+--+-- 1.  #VK_EXT_image_drm_format_modifier-fn1#+--     <https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import.txt EGL_EXT_image_dma_buf_import>+--+-- 2.  #VK_EXT_image_drm_format_modifier-fn2#+--     <https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt EGL_EXT_image_dma_buf_import_modifiers>+--+-- 3.  #VK_EXT_image_drm_format_modifier-fn3#+--     <https://www.khronos.org/registry/EGL/extensions/MESA/EGL_MESA_image_dma_buf_export.txt EGL_MESA_image_dma_buf_export>+--+-- 4.  #VK_EXT_image_drm_format_modifier-fn4#+--     <https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/drm/drm_mode.h?id=refs/tags/v4.10#n392 struct+--     drm_mode_fb_cmd2>+--+-- 5.  #VK_EXT_image_drm_format_modifier-fn5#+--     <https://cgit.freedesktop.org/mesa/mesa/tree/src/gbm/main/gbm.h?id=refs/tags/mesa-18.0.0-rc1 gbm.h>+--+-- === Version History+--+-- -   Revision 1, 2018-08-29 (Chad Versace)+--+--     -   First stable revision+--+-- = See Also+--+-- 'DrmFormatModifierPropertiesEXT', 'DrmFormatModifierPropertiesListEXT',+-- 'ImageDrmFormatModifierExplicitCreateInfoEXT',+-- 'ImageDrmFormatModifierListCreateInfoEXT',+-- 'ImageDrmFormatModifierPropertiesEXT',+-- 'PhysicalDeviceImageDrmFormatModifierInfoEXT',+-- 'getImageDrmFormatModifierPropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_image_drm_format_modifier  ( getImageDrmFormatModifierPropertiesEXT                                                            , DrmFormatModifierPropertiesListEXT(..)                                                            , DrmFormatModifierPropertiesEXT(..)@@ -605,7 +1132,7 @@     lift $ poke ((p `plusPtr` 16 :: Ptr Word64)) (drmFormatModifier)     lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (planeLayouts)) :: Word32))     pPPlaneLayouts' <- ContT $ allocaBytesAligned @SubresourceLayout ((Data.Vector.length (planeLayouts)) * 40) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPPlaneLayouts' `plusPtr` (40 * (i)) :: Ptr SubresourceLayout) (e) . ($ ())) (planeLayouts)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPPlaneLayouts' `plusPtr` (40 * (i)) :: Ptr SubresourceLayout) (e)) (planeLayouts)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr SubresourceLayout))) (pPPlaneLayouts')     lift $ f   cStructSize = 40@@ -615,7 +1142,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)     pPPlaneLayouts' <- ContT $ allocaBytesAligned @SubresourceLayout ((Data.Vector.length (mempty)) * 40) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPPlaneLayouts' `plusPtr` (40 * (i)) :: Ptr SubresourceLayout) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPPlaneLayouts' `plusPtr` (40 * (i)) :: Ptr SubresourceLayout) (e)) (mempty)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr SubresourceLayout))) (pPPlaneLayouts')     lift $ f 
src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs-boot view
@@ -1,4 +1,531 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_image_drm_format_modifier - device extension+--+-- == VK_EXT_image_drm_format_modifier+--+-- [__Name String__]+--     @VK_EXT_image_drm_format_modifier@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     159+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_bind_memory2@+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_image_format_list@+--+--     -   Requires @VK_KHR_sampler_ycbcr_conversion@+--+-- [__Contact__]+--+--     -   Chad Versace+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_image_drm_format_modifier:%20&body=@chadversary%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-08-29+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Antoine Labour, Google+--+--     -   Bas Nieuwenhuizen, Google+--+--     -   Chad Versace, Google+--+--     -   James Jones, NVIDIA+--+--     -   Jason Ekstrand, Intel+--+--     -   Jőrg Wagner, ARM+--+--     -   Kristian Høgsberg Kristensen, Google+--+--     -   Ray Smith, ARM+--+-- == Description+--+-- This extension provides the ability to use /DRM format modifiers/ with+-- images, enabling Vulkan to better integrate with the Linux ecosystem of+-- graphics, video, and display APIs.+--+-- Its functionality closely overlaps with+-- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^+-- and+-- @EGL_MESA_image_dma_buf_export@<VK_EXT_image_drm_format_modifier-fn3.html 3>\<\/link>^.+-- Unlike the EGL extensions, this extension does not require the use of a+-- specific handle type (such as a dma_buf) for external memory and+-- provides more explicit control of image creation.+--+-- == Introduction to DRM Format Modifiers+--+-- A /DRM format modifier/ is a 64-bit, vendor-prefixed, semi-opaque+-- unsigned integer. Most /modifiers/ represent a concrete, vendor-specific+-- tiling format for images. Some exceptions are @DRM_FORMAT_MOD_LINEAR@+-- (which is not vendor-specific); @DRM_FORMAT_MOD_NONE@ (which is an alias+-- of @DRM_FORMAT_MOD_LINEAR@ due to historical accident); and+-- @DRM_FORMAT_MOD_INVALID@ (which does not represent a tiling format). The+-- /modifier’s/ vendor prefix consists of the 8 most significant bits. The+-- canonical list of /modifiers/ and vendor prefixes is found in+-- <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/drm/drm_fourcc.h drm_fourcc.h>+-- in the Linux kernel source. The other dominant source of /modifiers/ are+-- vendor kernel trees.+--+-- One goal of /modifiers/ in the Linux ecosystem is to enumerate for each+-- vendor a reasonably sized set of tiling formats that are appropriate for+-- images shared across processes, APIs, and\/or devices, where each+-- participating component may possibly be from different vendors. A+-- non-goal is to enumerate all tiling formats supported by all vendors.+-- Some tiling formats used internally by vendors are inappropriate for+-- sharing; no /modifiers/ should be assigned to such tiling formats.+--+-- Modifier values typically do not /describe/ memory layouts. More+-- precisely, a /modifier/\'s lower 56 bits usually have no structure.+-- Instead, modifiers /name/ memory layouts; they name a small set of+-- vendor-preferred layouts for image sharing. As a consequence, in each+-- vendor namespace the modifier values are often sequentially allocated+-- starting at 1.+--+-- Each /modifier/ is usually supported by a single vendor and its name+-- matches the pattern @{VENDOR}_FORMAT_MOD_*@ or+-- @DRM_FORMAT_MOD_{VENDOR}_*@. Examples are @I915_FORMAT_MOD_X_TILED@ and+-- @DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED@. An exception is+-- @DRM_FORMAT_MOD_LINEAR@, which is supported by most vendors.+--+-- Many APIs in Linux use /modifiers/ to negotiate and specify the memory+-- layout of shared images. For example, a Wayland compositor and Wayland+-- client may, by relaying /modifiers/ over the Wayland protocol+-- @zwp_linux_dmabuf_v1@, negotiate a vendor-specific tiling format for a+-- shared @wl_buffer@. The client may allocate the underlying memory for+-- the @wl_buffer@ with GBM, providing the chosen /modifier/ to+-- @gbm_bo_create_with_modifiers@. The client may then import the+-- @wl_buffer@ into Vulkan for producing image content, providing the+-- resource’s dma_buf to+-- 'Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR' and+-- its /modifier/ to 'ImageDrmFormatModifierExplicitCreateInfoEXT'. The+-- compositor may then import the @wl_buffer@ into OpenGL for sampling,+-- providing the resource’s dma_buf and /modifier/ to @eglCreateImage@. The+-- compositor may also bypass OpenGL and submit the @wl_buffer@ directly to+-- the kernel’s display API, providing the dma_buf and /modifier/ through+-- @drm_mode_fb_cmd2@.+--+-- == Format Translation+--+-- /Modifier/-capable APIs often pair /modifiers/ with DRM formats, which+-- are defined in+-- <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/drm/drm_fourcc.h drm_fourcc.h>.+-- However, @VK_EXT_image_drm_format_modifier@ uses+-- 'Vulkan.Core10.Enums.Format.Format' instead of DRM formats. The+-- application must convert between 'Vulkan.Core10.Enums.Format.Format' and+-- DRM format when it sends or receives a DRM format to or from an external+-- API.+--+-- The mapping from 'Vulkan.Core10.Enums.Format.Format' to DRM format is+-- lossy. Therefore, when receiving a DRM format from an external API,+-- often the application must use information from the external API to+-- accurately map the DRM format to a 'Vulkan.Core10.Enums.Format.Format'.+-- For example, DRM formats do not distinguish between RGB and sRGB (as of+-- 2018-03-28); external information is required to identify the image’s+-- colorspace.+--+-- The mapping between 'Vulkan.Core10.Enums.Format.Format' and DRM format+-- is also incomplete. For some DRM formats there exist no corresponding+-- Vulkan format, and for some Vulkan formats there exist no corresponding+-- DRM format.+--+-- == Usage Patterns+--+-- Three primary usage patterns are intended for this extension:+--+-- -   __Negotiation.__ The application negotiates with /modifier/-aware,+--     external components to determine sets of image creation parameters+--     supported among all components.+--+--     In the Linux ecosystem, the negotiation usually assumes the image is+--     a 2D, single-sampled, non-mipmapped, non-array image; this extension+--     permits that assumption but does not require it. The result of the+--     negotiation usually resembles a set of tuples such as /(drmFormat,+--     drmFormatModifier)/, where each participating component supports all+--     tuples in the set.+--+--     Many details of this negotiation—such as the protocol used during+--     negotiation, the set of image creation parameters expressable in the+--     protocol, and how the protocol chooses which process and which API+--     will create the image—are outside the scope of this specification.+--+--     In this extension,+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'+--     with 'DrmFormatModifierPropertiesListEXT' serves a primary role+--     during the negotiation, and+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--     with 'PhysicalDeviceImageDrmFormatModifierInfoEXT' serves a+--     secondary role.+--+-- -   __Import.__ The application imports an image with a /modifier/.+--+--     In this pattern, the application receives from an external source+--     the image’s memory and its creation parameters, which are often the+--     result of the negotiation described above. Some image creation+--     parameters are implicitly defined by the external source; for+--     example, 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' is often+--     assumed. Some image creation parameters are usually explicit, such+--     as the image’s @format@, @drmFormatModifier@, and @extent@; and each+--     plane’s @offset@ and @rowPitch@.+--+--     Before creating the image, the application first verifies that the+--     physical device supports the received creation parameters by+--     querying+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'+--     with 'DrmFormatModifierPropertiesListEXT' and+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--     with 'PhysicalDeviceImageDrmFormatModifierInfoEXT'. Then the+--     application creates the image by chaining+--     'ImageDrmFormatModifierExplicitCreateInfoEXT' and+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'+--     onto 'Vulkan.Core10.Image.ImageCreateInfo'.+--+-- -   __Export.__ The application creates an image and allocates its+--     memory. Then the application exports to /modifier/-aware consumers+--     the image’s memory handles; its creation parameters; its /modifier/;+--     and the <VkSubresourceLayout.html offset>,+--     <VkSubresourceLayout.html size>, and+--     <VkSubresourceLayout.html rowPitch> of each /memory plane/.+--+--     In this pattern, the Vulkan device is the authority for the image;+--     it is the allocator of the image’s memory and the decider of the+--     image’s creation parameters. When choosing the image’s creation+--     parameters, the application usually chooses a tuple /(format,+--     drmFormatModifier)/ from the result of the negotiation described+--     above. The negotiation’s result often contains multiple tuples that+--     share the same format but differ in their /modifier/. In this case,+--     the application should defer the choice of the image’s /modifier/ to+--     the Vulkan implementation by providing all such /modifiers/ to+--     'ImageDrmFormatModifierListCreateInfoEXT'::@pDrmFormatModifiers@;+--     and the implementation should choose from @pDrmFormatModifiers@ the+--     optimal /modifier/ in consideration with the other image parameters.+--+--     The application creates the image by chaining+--     'ImageDrmFormatModifierListCreateInfoEXT' and+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'+--     onto 'Vulkan.Core10.Image.ImageCreateInfo'. The protocol and APIs by+--     which the application will share the image with external consumers+--     will likely determine the value of+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@.+--     The implementation chooses for the image an optimal /modifier/ from+--     'ImageDrmFormatModifierListCreateInfoEXT'::@pDrmFormatModifiers@.+--     The application then queries the implementation-chosen /modifier/+--     with 'getImageDrmFormatModifierPropertiesEXT', and queries the+--     memory layout of each plane with+--     'Vulkan.Core10.Image.getImageSubresourceLayout'.+--+--     The application then allocates the image’s memory with+--     'Vulkan.Core10.Memory.MemoryAllocateInfo', adding chained extending+--     structures for external memory; binds it to the image; and exports+--     the memory, for example, with+--     'Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdKHR'.+--+--     Finally, the application sends the image’s creation parameters, its+--     /modifier/, its per-plane memory layout, and the exported memory+--     handle to the external consumers. The details of how the application+--     transmits this information to external consumers is outside the+--     scope of this specification.+--+-- == Prior Art+--+-- Extension+-- @EGL_EXT_image_dma_buf_import@<VK_EXT_image_drm_format_modifier-fn1.html 1>\<\/link>^+-- introduced the ability to create an @EGLImage@ by importing for each+-- plane a dma_buf, offset, and row pitch.+--+-- Later, extension+-- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^+-- introduced the ability to query which combination of formats and+-- /modifiers/ the implementation supports and to specify /modifiers/+-- during creation of the @EGLImage@.+--+-- Extension+-- @EGL_MESA_image_dma_buf_export@<VK_EXT_image_drm_format_modifier-fn3.html 3>\<\/link>^+-- is the inverse of @EGL_EXT_image_dma_buf_import_modifiers@.+--+-- The Linux kernel modesetting API (KMS), when configuring the display’s+-- framebuffer with @struct+-- drm_mode_fb_cmd2@<VK_EXT_image_drm_format_modifier-fn4.html 4>\<\/link>^,+-- allows one to specify the frambuffer’s /modifier/ as well as a per-plane+-- memory handle, offset, and row pitch.+--+-- GBM, a graphics buffer manager for Linux, allows creation of a @gbm_bo@+-- (that is, a graphics /buffer object/) by importing data similar to that+-- in+-- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn1.html 1>\<\/link>^;+-- and symmetrically allows exporting the same data from the @gbm_bo@. See+-- the references to /modifier/ and /plane/ in+-- @gbm.h@<VK_EXT_image_drm_format_modifier-fn5.html 5>\<\/link>^.+--+-- == New Commands+--+-- -   'getImageDrmFormatModifierPropertiesEXT'+--+-- == New Structures+--+-- -   'DrmFormatModifierPropertiesEXT'+--+-- -   'ImageDrmFormatModifierPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2':+--+--     -   'DrmFormatModifierPropertiesListEXT'+--+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo':+--+--     -   'ImageDrmFormatModifierExplicitCreateInfoEXT'+--+--     -   'ImageDrmFormatModifierListCreateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2':+--+--     -   'PhysicalDeviceImageDrmFormatModifierInfoEXT'+--+-- == New Enum Constants+--+-- -   'EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME'+--+-- -   'EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageTiling.ImageTiling':+--+--     -   'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT'+--+-- == Issues+--+-- 1) Should this extension define a single DRM format modifier per+-- 'Vulkan.Core10.Handles.Image'? Or define one per plane?+--+-- ++--+-- __RESOLVED__: There exists a single DRM format modifier per+-- 'Vulkan.Core10.Handles.Image'.+--+-- __DISCUSSION__: Prior art, such as+-- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^,+-- @struct drm_mode_fb_cmd2@<VK_EXT_image_drm_format_modifier-fn4.html 4>\<\/link>^,+-- and @struct+-- gbm_import_fd_modifier_data@<VK_EXT_image_drm_format_modifier-fn5.html 5>\<\/link>^,+-- allows defining one /modifier/ per plane. However, developers of the GBM+-- and kernel APIs concede it was a mistake. Beginning in Linux 4.10, the+-- kernel requires that the application provide the same DRM format+-- /modifier/ for each plane. (See Linux commit+-- <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bae781b259269590109e8a4a8227331362b88212 bae781b259269590109e8a4a8227331362b88212>).+-- And GBM provides an entry point, @gbm_bo_get_modifier@, for querying the+-- /modifier/ of the image but does not provide one to query the modifier+-- of individual planes.+--+-- 2) When creating an image with+-- 'ImageDrmFormatModifierExplicitCreateInfoEXT', which is typically used+-- when /importing/ an image, should the application explicitly provide the+-- size of each plane?+--+-- ++--+-- __RESOLVED__: No. The application /must/ not provide the size. To+-- enforce this, the API requires that+-- 'ImageDrmFormatModifierExplicitCreateInfoEXT'::@pPlaneLayouts->size@+-- /must/ be 0.+--+-- __DISCUSSION__: Prior art, such as+-- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^,+-- @struct drm_mode_fb_cmd2@<VK_EXT_image_drm_format_modifier-fn4.html 4>\<\/link>^,+-- and @struct+-- gbm_import_fd_modifier_data@<VK_EXT_image_drm_format_modifier-fn5.html 5>\<\/link>^,+-- omits from the API the size of each plane. Instead, the APIs infer each+-- plane’s size from the import parameters, which include the image’s pixel+-- format and a dma_buf, offset, and row pitch for each plane.+--+-- However, Vulkan differs from EGL and GBM with regards to image creation+-- in the following ways:+--+-- -   __Undedicated allocation by default.__ When importing or exporting a+--     set of dma_bufs as an @EGLImage@ or @gbm_bo@, common practice+--     mandates that each dma_buf’s memory be dedicated (in the sense of+--     @VK_KHR_dedicated_allocation@) to the image (though not necessarily+--     dedicated to a single plane). In particular, neither the GBM+--     documentation nor the EGL extension specifications explicitly state+--     this requirement, but in light of common practice this is likely due+--     to under-specification rather than intentional omission. In+--     contrast, @VK_EXT_image_drm_format_modifier@ permits, but does not+--     require, the implementation to require dedicated allocations for+--     images created with+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'.+--+-- -   __Separation of image creation and memory allocation.__ When+--     importing a set of dma_bufs as an @EGLImage@ or @gbm_bo@, EGL and+--     GBM create the image resource and bind it to memory (the dma_bufs)+--     simultaneously. This allows EGL and GBM to query each dma_buf’s size+--     during image creation. In Vulkan, image creation and memory+--     allocation are independent unless a dedicated allocation is used (as+--     in @VK_KHR_dedicated_allocation@). Therefore, without requiring+--     dedicated allocation, Vulkan cannot query the size of each dma_buf+--     (or other external handle) when calculating the image’s memory+--     layout. Even if dedication allocation were required, Vulkan cannot+--     calculate the image’s memory layout until after the image is bound+--     to its dma_ufs.+--+-- The above differences complicate the potential inference of plane size+-- in Vulkan. Consider the following problematic cases:+--+-- -   __Padding.__ Some plane of the image may require+--     implementation-dependent padding.+--+-- -   __Metadata.__ For some /modifiers/, the image may have a metadata+--     plane which requires a non-trivial calculation to determine its+--     size.+--+-- -   __Mipmapped, array, and 3D images.__ The implementation may support+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'+--     for images whose @mipLevels@, @arrayLayers@, or @depth@ is greater+--     than 1. For such images with certain /modifiers/, the calculation of+--     each plane’s size may be non-trivial.+--+-- However, an application-provided plane size solves none of the above+-- problems.+--+-- For simplicity, consider an external image with a single memory plane.+-- The implementation is obviously capable calculating the image’s size+-- when its tiling is+-- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'. Likewise, any+-- reasonable implementation is capable of calculating the image’s size+-- when its tiling uses a supported /modifier/.+--+-- Suppose that the external image’s size is smaller than the+-- implementation-calculated size. If the application provided the external+-- image’s size to 'Vulkan.Core10.Image.createImage', the implementation+-- would observe the mismatched size and recognize its inability to+-- comprehend the external image’s layout (unless the implementation used+-- the application-provided size to select a refinement of the tiling+-- layout indicated by the /modifier/, which is strongly discouraged). The+-- implementation would observe the conflict, and reject image creation+-- with+-- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT'.+-- On the other hand, if the application did not provide the external+-- image’s size to 'Vulkan.Core10.Image.createImage', then the application+-- would observe after calling+-- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements' that the+-- external image’s size is less than the size required by the+-- implementation. The application would observe the conflict and refuse to+-- bind the 'Vulkan.Core10.Handles.Image' to the external memory. In both+-- cases, the result is explicit failure.+--+-- Suppose that the external image’s size is larger than the+-- implementation-calculated size. If the application provided the external+-- image’s size to 'Vulkan.Core10.Image.createImage', for reasons similar+-- to above the implementation would observe the mismatched size and+-- recognize its inability to comprehend the image data residing in the+-- extra size. The implementation, however, must assume that image data+-- resides in the entire size provided by the application. The+-- implementation would observe the conflict and reject image creation with+-- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT'.+-- On the other hand, if the application did not provide the external+-- image’s size to 'Vulkan.Core10.Image.createImage', then the application+-- would observe after calling+-- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements' that the+-- external image’s size is larger than the implementation-usable size. The+-- application would observe the conflict and refuse to bind the+-- 'Vulkan.Core10.Handles.Image' to the external memory. In both cases, the+-- result is explicit failure.+--+-- Therefore, an application-provided size provides no benefit, and this+-- extension should not require it. This decision renders+-- 'Vulkan.Core10.Image.SubresourceLayout'::@size@ an unused field during+-- image creation, and thus introduces a risk that implementations may+-- require applications to submit sideband creation parameters in the+-- unused field. To prevent implementations from relying on sideband data,+-- this extension /requires/ the application to set @size@ to 0.+--+-- === References+--+-- 1.  #VK_EXT_image_drm_format_modifier-fn1#+--     <https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import.txt EGL_EXT_image_dma_buf_import>+--+-- 2.  #VK_EXT_image_drm_format_modifier-fn2#+--     <https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt EGL_EXT_image_dma_buf_import_modifiers>+--+-- 3.  #VK_EXT_image_drm_format_modifier-fn3#+--     <https://www.khronos.org/registry/EGL/extensions/MESA/EGL_MESA_image_dma_buf_export.txt EGL_MESA_image_dma_buf_export>+--+-- 4.  #VK_EXT_image_drm_format_modifier-fn4#+--     <https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/drm/drm_mode.h?id=refs/tags/v4.10#n392 struct+--     drm_mode_fb_cmd2>+--+-- 5.  #VK_EXT_image_drm_format_modifier-fn5#+--     <https://cgit.freedesktop.org/mesa/mesa/tree/src/gbm/main/gbm.h?id=refs/tags/mesa-18.0.0-rc1 gbm.h>+--+-- === Version History+--+-- -   Revision 1, 2018-08-29 (Chad Versace)+--+--     -   First stable revision+--+-- = See Also+--+-- 'DrmFormatModifierPropertiesEXT', 'DrmFormatModifierPropertiesListEXT',+-- 'ImageDrmFormatModifierExplicitCreateInfoEXT',+-- 'ImageDrmFormatModifierListCreateInfoEXT',+-- 'ImageDrmFormatModifierPropertiesEXT',+-- 'PhysicalDeviceImageDrmFormatModifierInfoEXT',+-- 'getImageDrmFormatModifierPropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_image_drm_format_modifier  ( DrmFormatModifierPropertiesEXT                                                            , DrmFormatModifierPropertiesListEXT                                                            , ImageDrmFormatModifierExplicitCreateInfoEXT
src/Vulkan/Extensions/VK_EXT_image_robustness.hs view
@@ -1,4 +1,114 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_image_robustness - device extension+--+-- == VK_EXT_image_robustness+--+-- [__Name String__]+--     @VK_EXT_image_robustness@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     336+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Graeme Leese+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_image_robustness:%20&body=@gnl21%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-04-27+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Graeme Leese, Broadcom+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Spencer Fricke, Samsung+--+--     -   Courtney Goeltzenleuchter, Google+--+--     -   Slawomir Cygan, Intel+--+-- == Description+--+-- This extension adds stricter requirements for how out of bounds reads+-- from images are handled. Rather than returning undefined values, most+-- out of bounds reads return R, G, and B values of zero and alpha values+-- of either zero or one. Components not present in the image format may be+-- set to zero or to values based on the format as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceImageRobustnessFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME'+--+-- -   'EXT_IMAGE_ROBUSTNESS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT'+--+-- == Issues+--+-- 1.  How does this extension differ from VK_EXT_robustness2?+--+-- The guarantees provided by this extension are a subset of those provided+-- by the robustImageAccess2 feature of VK_EXT_robustness2. Where this+-- extension allows return values of (0, 0, 0, 0) or (0, 0, 0, 1),+-- robustImageAccess2 requires that a particular value dependent on the+-- image format be returned. This extension provides no guarantees about+-- the values returned for an access to an invalid Lod.+--+-- == Examples+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2020-04-27 (Graeme Leese)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceImageRobustnessFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_robustness Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_image_robustness  ( PhysicalDeviceImageRobustnessFeaturesEXT(..)                                                   , EXT_IMAGE_ROBUSTNESS_SPEC_VERSION                                                   , pattern EXT_IMAGE_ROBUSTNESS_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_image_robustness.hs-boot view
@@ -1,4 +1,114 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_image_robustness - device extension+--+-- == VK_EXT_image_robustness+--+-- [__Name String__]+--     @VK_EXT_image_robustness@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     336+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Graeme Leese+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_image_robustness:%20&body=@gnl21%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-04-27+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Graeme Leese, Broadcom+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Spencer Fricke, Samsung+--+--     -   Courtney Goeltzenleuchter, Google+--+--     -   Slawomir Cygan, Intel+--+-- == Description+--+-- This extension adds stricter requirements for how out of bounds reads+-- from images are handled. Rather than returning undefined values, most+-- out of bounds reads return R, G, and B values of zero and alpha values+-- of either zero or one. Components not present in the image format may be+-- set to zero or to values based on the format as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceImageRobustnessFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME'+--+-- -   'EXT_IMAGE_ROBUSTNESS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT'+--+-- == Issues+--+-- 1.  How does this extension differ from VK_EXT_robustness2?+--+-- The guarantees provided by this extension are a subset of those provided+-- by the robustImageAccess2 feature of VK_EXT_robustness2. Where this+-- extension allows return values of (0, 0, 0, 0) or (0, 0, 0, 1),+-- robustImageAccess2 requires that a particular value dependent on the+-- image format be returned. This extension provides no guarantees about+-- the values returned for an access to an invalid Lod.+--+-- == Examples+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2020-04-27 (Graeme Leese)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceImageRobustnessFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_robustness Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_image_robustness  (PhysicalDeviceImageRobustnessFeaturesEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs view
@@ -1,4 +1,87 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_index_type_uint8 - device extension+--+-- == VK_EXT_index_type_uint8+--+-- [__Name String__]+--     @VK_EXT_index_type_uint8@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     266+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_index_type_uint8:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-05-02+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension allows @uint8_t@ indices to be used with+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceIndexTypeUint8FeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_INDEX_TYPE_UINT8_EXTENSION_NAME'+--+-- -   'EXT_INDEX_TYPE_UINT8_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.IndexType.IndexType':+--+--     -   'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-05-02 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceIndexTypeUint8FeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_index_type_uint8 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_index_type_uint8  ( PhysicalDeviceIndexTypeUint8FeaturesEXT(..)                                                   , EXT_INDEX_TYPE_UINT8_SPEC_VERSION                                                   , pattern EXT_INDEX_TYPE_UINT8_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs-boot view
@@ -1,4 +1,87 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_index_type_uint8 - device extension+--+-- == VK_EXT_index_type_uint8+--+-- [__Name String__]+--     @VK_EXT_index_type_uint8@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     266+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_index_type_uint8:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-05-02+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension allows @uint8_t@ indices to be used with+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceIndexTypeUint8FeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_INDEX_TYPE_UINT8_EXTENSION_NAME'+--+-- -   'EXT_INDEX_TYPE_UINT8_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.IndexType.IndexType':+--+--     -   'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-05-02 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceIndexTypeUint8FeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_index_type_uint8 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_index_type_uint8  (PhysicalDeviceIndexTypeUint8FeaturesEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs view
@@ -1,4 +1,179 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_inline_uniform_block - device extension+--+-- == VK_EXT_inline_uniform_block+--+-- [__Name String__]+--     @VK_EXT_inline_uniform_block@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     139+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_maintenance1@+--+-- [__Contact__]+--+--     -   Daniel Rakos+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_inline_uniform_block:%20&body=@aqnuep%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-08-01+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Daniel Rakos, AMD+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Slawomir Grajewski, Intel+--+--     -   Neil Henning, Codeplay+--+-- == Description+--+-- This extension introduces the ability to back uniform blocks directly+-- with descriptor sets by storing inline uniform data within descriptor+-- pool storage. Compared to push constants this new construct allows+-- uniform data to be reused across multiple disjoint sets of draw or+-- dispatch commands and /may/ enable uniform data to be accessed with less+-- indirections compared to uniforms backed by buffer memory.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo':+--+--     -   'DescriptorPoolInlineUniformBlockCreateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceInlineUniformBlockFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceInlineUniformBlockPropertiesEXT'+--+-- -   Extending 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet':+--+--     -   'WriteDescriptorSetInlineUniformBlockEXT'+--+-- == New Enum Constants+--+-- -   'EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME'+--+-- -   'EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.DescriptorType.DescriptorType':+--+--     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT'+--+-- == Issues+--+-- 1) Do we need a new storage class for inline uniform blocks vs uniform+-- blocks?+--+-- __RESOLVED__: No. The @Uniform@ storage class is used to allow the same+-- syntax used for both uniform buffers and inline uniform blocks.+--+-- 2) Is the descriptor array index and array size expressed in terms of+-- bytes or dwords for inline uniform block descriptors?+--+-- __RESOLVED__: In bytes, but both /must/ be a multiple of 4, similar to+-- how push constant ranges are specified. The @descriptorCount@ of+-- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' thus provides+-- the total number of bytes a particular binding with an inline uniform+-- block descriptor type can hold, while the @srcArrayElement@,+-- @dstArrayElement@, and @descriptorCount@ members of+-- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet',+-- 'Vulkan.Core10.DescriptorSet.CopyDescriptorSet', and+-- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateEntry'+-- (where applicable) specify the byte offset and number of bytes to+-- write\/copy to the binding’s backing store. Additionally, the @stride@+-- member of+-- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateEntry'+-- is ignored for inline uniform blocks and a default value of one is used,+-- meaning that the data to update inline uniform block bindings with must+-- be contiguous in memory.+--+-- 3) What layout rules apply for uniform blocks corresponding to inline+-- constants?+--+-- __RESOLVED__: They use the same layout rules as uniform buffers.+--+-- 4) Do we need to add non-uniform indexing features\/properties as+-- introduced by @VK_EXT_descriptor_indexing@ for inline uniform blocks?+--+-- __RESOLVED__: No, because inline uniform blocks are not allowed to be+-- “arrayed”. A single binding with an inline uniform block descriptor type+-- corresponds to a single uniform block instance and the array indices+-- inside that binding refer to individual offsets within the uniform block+-- (see issue #2). However, this extension does introduce new+-- features\/properties about the level of support for update-after-bind+-- inline uniform blocks.+--+-- 5) Is the @descriptorBindingVariableDescriptorCount@ feature introduced+-- by @VK_EXT_descriptor_indexing@ supported for inline uniform blocks?+--+-- __RESOLVED__: Yes, as long as other inline uniform block specific limits+-- are respected.+--+-- 6) Do the robustness guarantees of @robustBufferAccess@ apply to inline+-- uniform block accesses?+--+-- __RESOLVED__: No, similarly to push constants, as they are not backed by+-- buffer memory like uniform buffers.+--+-- == Version History+--+-- -   Revision 1, 2018-08-01 (Daniel Rakos)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'DescriptorPoolInlineUniformBlockCreateInfoEXT',+-- 'PhysicalDeviceInlineUniformBlockFeaturesEXT',+-- 'PhysicalDeviceInlineUniformBlockPropertiesEXT',+-- 'WriteDescriptorSetInlineUniformBlockEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_inline_uniform_block Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_inline_uniform_block  ( PhysicalDeviceInlineUniformBlockFeaturesEXT(..)                                                       , PhysicalDeviceInlineUniformBlockPropertiesEXT(..)                                                       , WriteDescriptorSetInlineUniformBlockEXT(..)
src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs-boot view
@@ -1,4 +1,179 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_inline_uniform_block - device extension+--+-- == VK_EXT_inline_uniform_block+--+-- [__Name String__]+--     @VK_EXT_inline_uniform_block@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     139+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_maintenance1@+--+-- [__Contact__]+--+--     -   Daniel Rakos+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_inline_uniform_block:%20&body=@aqnuep%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-08-01+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Daniel Rakos, AMD+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Slawomir Grajewski, Intel+--+--     -   Neil Henning, Codeplay+--+-- == Description+--+-- This extension introduces the ability to back uniform blocks directly+-- with descriptor sets by storing inline uniform data within descriptor+-- pool storage. Compared to push constants this new construct allows+-- uniform data to be reused across multiple disjoint sets of draw or+-- dispatch commands and /may/ enable uniform data to be accessed with less+-- indirections compared to uniforms backed by buffer memory.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo':+--+--     -   'DescriptorPoolInlineUniformBlockCreateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceInlineUniformBlockFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceInlineUniformBlockPropertiesEXT'+--+-- -   Extending 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet':+--+--     -   'WriteDescriptorSetInlineUniformBlockEXT'+--+-- == New Enum Constants+--+-- -   'EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME'+--+-- -   'EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.DescriptorType.DescriptorType':+--+--     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT'+--+-- == Issues+--+-- 1) Do we need a new storage class for inline uniform blocks vs uniform+-- blocks?+--+-- __RESOLVED__: No. The @Uniform@ storage class is used to allow the same+-- syntax used for both uniform buffers and inline uniform blocks.+--+-- 2) Is the descriptor array index and array size expressed in terms of+-- bytes or dwords for inline uniform block descriptors?+--+-- __RESOLVED__: In bytes, but both /must/ be a multiple of 4, similar to+-- how push constant ranges are specified. The @descriptorCount@ of+-- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' thus provides+-- the total number of bytes a particular binding with an inline uniform+-- block descriptor type can hold, while the @srcArrayElement@,+-- @dstArrayElement@, and @descriptorCount@ members of+-- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet',+-- 'Vulkan.Core10.DescriptorSet.CopyDescriptorSet', and+-- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateEntry'+-- (where applicable) specify the byte offset and number of bytes to+-- write\/copy to the binding’s backing store. Additionally, the @stride@+-- member of+-- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateEntry'+-- is ignored for inline uniform blocks and a default value of one is used,+-- meaning that the data to update inline uniform block bindings with must+-- be contiguous in memory.+--+-- 3) What layout rules apply for uniform blocks corresponding to inline+-- constants?+--+-- __RESOLVED__: They use the same layout rules as uniform buffers.+--+-- 4) Do we need to add non-uniform indexing features\/properties as+-- introduced by @VK_EXT_descriptor_indexing@ for inline uniform blocks?+--+-- __RESOLVED__: No, because inline uniform blocks are not allowed to be+-- “arrayed”. A single binding with an inline uniform block descriptor type+-- corresponds to a single uniform block instance and the array indices+-- inside that binding refer to individual offsets within the uniform block+-- (see issue #2). However, this extension does introduce new+-- features\/properties about the level of support for update-after-bind+-- inline uniform blocks.+--+-- 5) Is the @descriptorBindingVariableDescriptorCount@ feature introduced+-- by @VK_EXT_descriptor_indexing@ supported for inline uniform blocks?+--+-- __RESOLVED__: Yes, as long as other inline uniform block specific limits+-- are respected.+--+-- 6) Do the robustness guarantees of @robustBufferAccess@ apply to inline+-- uniform block accesses?+--+-- __RESOLVED__: No, similarly to push constants, as they are not backed by+-- buffer memory like uniform buffers.+--+-- == Version History+--+-- -   Revision 1, 2018-08-01 (Daniel Rakos)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'DescriptorPoolInlineUniformBlockCreateInfoEXT',+-- 'PhysicalDeviceInlineUniformBlockFeaturesEXT',+-- 'PhysicalDeviceInlineUniformBlockPropertiesEXT',+-- 'WriteDescriptorSetInlineUniformBlockEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_inline_uniform_block Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_inline_uniform_block  ( DescriptorPoolInlineUniformBlockCreateInfoEXT                                                       , PhysicalDeviceInlineUniformBlockFeaturesEXT                                                       , PhysicalDeviceInlineUniformBlockPropertiesEXT
src/Vulkan/Extensions/VK_EXT_line_rasterization.hs view
@@ -1,4 +1,137 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_line_rasterization - device extension+--+-- == VK_EXT_line_rasterization+--+-- [__Name String__]+--     @VK_EXT_line_rasterization@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     260+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse CAD support>+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_line_rasterization:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-05-09+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Allen Jensen, NVIDIA+--+--     -   Jason Ekstrand, Intel+--+-- == Description+--+-- This extension adds some line rasterization features that are commonly+-- used in CAD applications and supported in other APIs like OpenGL.+-- Bresenham-style line rasterization is supported, smooth rectangular+-- lines (coverage to alpha) are supported, and stippled lines are+-- supported for all three line rasterization modes.+--+-- == New Commands+--+-- -   'cmdSetLineStippleEXT'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceLineRasterizationFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceLineRasterizationPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':+--+--     -   'PipelineRasterizationLineStateCreateInfoEXT'+--+-- == New Enums+--+-- -   'LineRasterizationModeEXT'+--+-- == New Enum Constants+--+-- -   'EXT_LINE_RASTERIZATION_EXTENSION_NAME'+--+-- -   'EXT_LINE_RASTERIZATION_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT'+--+-- == Issues+--+-- > (1) Do we need to support Bresenham-style and smooth lines with more than+-- >     one rasterization sample? i.e. the equivalent of+-- >     glDisable(GL_MULTISAMPLE) in OpenGL when the framebuffer has more than+-- >     one sample?+--+-- > RESOLVED: Yes.+-- > For simplicity, Bresenham line rasterization carries forward a few+-- > restrictions from OpenGL, such as not supporting per-sample shading, alpha+-- > to coverage, or alpha to one.+--+-- == Version History+--+-- -   Revision 1, 2019-05-09 (Jeff Bolz)+--+--     -   Initial draft+--+-- = See Also+--+-- 'LineRasterizationModeEXT',+-- 'PhysicalDeviceLineRasterizationFeaturesEXT',+-- 'PhysicalDeviceLineRasterizationPropertiesEXT',+-- 'PipelineRasterizationLineStateCreateInfoEXT', 'cmdSetLineStippleEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_line_rasterization Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_line_rasterization  ( cmdSetLineStippleEXT                                                     , PhysicalDeviceLineRasterizationFeaturesEXT(..)                                                     , PhysicalDeviceLineRasterizationPropertiesEXT(..)@@ -15,6 +148,8 @@                                                     , pattern EXT_LINE_RASTERIZATION_EXTENSION_NAME                                                     ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -22,15 +157,7 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.IO.Class (MonadIO) import Data.String (IsString) import Data.Typeable (Typeable)@@ -45,9 +172,9 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word16) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Vulkan.Core10.FundamentalTypes (bool32ToBool) import Vulkan.Core10.FundamentalTypes (boolToBool32)@@ -458,15 +585,15 @@ -- is 'Vulkan.Core10.FundamentalTypes.TRUE', otherwise lines are drawn as -- non-@strictLines@ parallelograms. Both of these modes are defined in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-basic Basic Line Segment Rasterization>.-pattern LINE_RASTERIZATION_MODE_DEFAULT_EXT = LineRasterizationModeEXT 0+pattern LINE_RASTERIZATION_MODE_DEFAULT_EXT            = LineRasterizationModeEXT 0 -- | 'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT' specifies lines drawn as if -- they were rectangles extruded from the line-pattern LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = LineRasterizationModeEXT 1+pattern LINE_RASTERIZATION_MODE_RECTANGULAR_EXT        = LineRasterizationModeEXT 1 -- | 'LINE_RASTERIZATION_MODE_BRESENHAM_EXT' specifies lines drawn by -- determining which pixel diamonds the line intersects and exits, as -- defined in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-bresenham Bresenham Line Segment Rasterization>.-pattern LINE_RASTERIZATION_MODE_BRESENHAM_EXT = LineRasterizationModeEXT 2+pattern LINE_RASTERIZATION_MODE_BRESENHAM_EXT          = LineRasterizationModeEXT 2 -- | 'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT' specifies lines drawn -- if they were rectangles extruded from the line, with alpha falloff, as -- defined in@@ -477,24 +604,32 @@              LINE_RASTERIZATION_MODE_BRESENHAM_EXT,              LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT :: LineRasterizationModeEXT #-} +conNameLineRasterizationModeEXT :: String+conNameLineRasterizationModeEXT = "LineRasterizationModeEXT"++enumPrefixLineRasterizationModeEXT :: String+enumPrefixLineRasterizationModeEXT = "LINE_RASTERIZATION_MODE_"++showTableLineRasterizationModeEXT :: [(LineRasterizationModeEXT, String)]+showTableLineRasterizationModeEXT =+  [ (LINE_RASTERIZATION_MODE_DEFAULT_EXT           , "DEFAULT_EXT")+  , (LINE_RASTERIZATION_MODE_RECTANGULAR_EXT       , "RECTANGULAR_EXT")+  , (LINE_RASTERIZATION_MODE_BRESENHAM_EXT         , "BRESENHAM_EXT")+  , (LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT, "RECTANGULAR_SMOOTH_EXT")+  ]+ instance Show LineRasterizationModeEXT where-  showsPrec p = \case-    LINE_RASTERIZATION_MODE_DEFAULT_EXT -> showString "LINE_RASTERIZATION_MODE_DEFAULT_EXT"-    LINE_RASTERIZATION_MODE_RECTANGULAR_EXT -> showString "LINE_RASTERIZATION_MODE_RECTANGULAR_EXT"-    LINE_RASTERIZATION_MODE_BRESENHAM_EXT -> showString "LINE_RASTERIZATION_MODE_BRESENHAM_EXT"-    LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT -> showString "LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT"-    LineRasterizationModeEXT x -> showParen (p >= 11) (showString "LineRasterizationModeEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixLineRasterizationModeEXT+                            showTableLineRasterizationModeEXT+                            conNameLineRasterizationModeEXT+                            (\(LineRasterizationModeEXT x) -> x)+                            (showsPrec 11)  instance Read LineRasterizationModeEXT where-  readPrec = parens (choose [("LINE_RASTERIZATION_MODE_DEFAULT_EXT", pure LINE_RASTERIZATION_MODE_DEFAULT_EXT)-                            , ("LINE_RASTERIZATION_MODE_RECTANGULAR_EXT", pure LINE_RASTERIZATION_MODE_RECTANGULAR_EXT)-                            , ("LINE_RASTERIZATION_MODE_BRESENHAM_EXT", pure LINE_RASTERIZATION_MODE_BRESENHAM_EXT)-                            , ("LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT", pure LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "LineRasterizationModeEXT")-                       v <- step readPrec-                       pure (LineRasterizationModeEXT v)))+  readPrec = enumReadPrec enumPrefixLineRasterizationModeEXT+                          showTableLineRasterizationModeEXT+                          conNameLineRasterizationModeEXT+                          LineRasterizationModeEXT   type EXT_LINE_RASTERIZATION_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_EXT_line_rasterization.hs-boot view
@@ -1,4 +1,137 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_line_rasterization - device extension+--+-- == VK_EXT_line_rasterization+--+-- [__Name String__]+--     @VK_EXT_line_rasterization@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     260+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse CAD support>+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_line_rasterization:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-05-09+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Allen Jensen, NVIDIA+--+--     -   Jason Ekstrand, Intel+--+-- == Description+--+-- This extension adds some line rasterization features that are commonly+-- used in CAD applications and supported in other APIs like OpenGL.+-- Bresenham-style line rasterization is supported, smooth rectangular+-- lines (coverage to alpha) are supported, and stippled lines are+-- supported for all three line rasterization modes.+--+-- == New Commands+--+-- -   'cmdSetLineStippleEXT'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceLineRasterizationFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceLineRasterizationPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':+--+--     -   'PipelineRasterizationLineStateCreateInfoEXT'+--+-- == New Enums+--+-- -   'LineRasterizationModeEXT'+--+-- == New Enum Constants+--+-- -   'EXT_LINE_RASTERIZATION_EXTENSION_NAME'+--+-- -   'EXT_LINE_RASTERIZATION_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT'+--+-- == Issues+--+-- > (1) Do we need to support Bresenham-style and smooth lines with more than+-- >     one rasterization sample? i.e. the equivalent of+-- >     glDisable(GL_MULTISAMPLE) in OpenGL when the framebuffer has more than+-- >     one sample?+--+-- > RESOLVED: Yes.+-- > For simplicity, Bresenham line rasterization carries forward a few+-- > restrictions from OpenGL, such as not supporting per-sample shading, alpha+-- > to coverage, or alpha to one.+--+-- == Version History+--+-- -   Revision 1, 2019-05-09 (Jeff Bolz)+--+--     -   Initial draft+--+-- = See Also+--+-- 'LineRasterizationModeEXT',+-- 'PhysicalDeviceLineRasterizationFeaturesEXT',+-- 'PhysicalDeviceLineRasterizationPropertiesEXT',+-- 'PipelineRasterizationLineStateCreateInfoEXT', 'cmdSetLineStippleEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_line_rasterization Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_line_rasterization  ( PhysicalDeviceLineRasterizationFeaturesEXT                                                     , PhysicalDeviceLineRasterizationPropertiesEXT                                                     , PipelineRasterizationLineStateCreateInfoEXT
src/Vulkan/Extensions/VK_EXT_memory_budget.hs view
@@ -1,4 +1,106 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_memory_budget - device extension+--+-- == VK_EXT_memory_budget+--+-- [__Name String__]+--     @VK_EXT_memory_budget@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     238+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_memory_budget:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-10-08+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+-- == Description+--+-- While running a Vulkan application, other processes on the machine might+-- also be attempting to use the same device memory, which can pose+-- problems. This extension adds support for querying the amount of memory+-- used and the total memory budget for a memory heap. The values returned+-- by this query are implementation-dependent and can depend on a variety+-- of factors including operating system and system load.+--+-- The 'PhysicalDeviceMemoryBudgetPropertiesEXT'::@heapBudget@ values can+-- be used as a guideline for how much total memory from each heap the+-- __current process__ can use at any given time, before allocations may+-- start failing or causing performance degradation. The values may change+-- based on other activity in the system that is outside the scope and+-- control of the Vulkan implementation.+--+-- The 'PhysicalDeviceMemoryBudgetPropertiesEXT'::@heapUsage@ will display+-- the __current process__ estimated heap usage.+--+-- With this information, the idea is for an application at some interval+-- (once per frame, per few seconds, etc) to query @heapBudget@ and+-- @heapUsage@. From here the application can notice if it is over budget+-- and decide how it wants to handle the memory situation (free it, move to+-- host memory, changing mipmap levels, etc). This extension is designed to+-- be used in concert with+-- <VK_EXT_memory_priority.html VK_EXT_memory_priority> to help with this+-- part of memory management.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceMemoryProperties2':+--+--     -   'PhysicalDeviceMemoryBudgetPropertiesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_MEMORY_BUDGET_EXTENSION_NAME'+--+-- -   'EXT_MEMORY_BUDGET_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2018-10-08 (Jeff Bolz)+--+--     -   Initial revision+--+-- = See Also+--+-- 'PhysicalDeviceMemoryBudgetPropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_budget Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_memory_budget  ( PhysicalDeviceMemoryBudgetPropertiesEXT(..)                                                , EXT_MEMORY_BUDGET_SPEC_VERSION                                                , pattern EXT_MEMORY_BUDGET_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_memory_budget.hs-boot view
@@ -1,4 +1,106 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_memory_budget - device extension+--+-- == VK_EXT_memory_budget+--+-- [__Name String__]+--     @VK_EXT_memory_budget@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     238+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_memory_budget:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-10-08+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+-- == Description+--+-- While running a Vulkan application, other processes on the machine might+-- also be attempting to use the same device memory, which can pose+-- problems. This extension adds support for querying the amount of memory+-- used and the total memory budget for a memory heap. The values returned+-- by this query are implementation-dependent and can depend on a variety+-- of factors including operating system and system load.+--+-- The 'PhysicalDeviceMemoryBudgetPropertiesEXT'::@heapBudget@ values can+-- be used as a guideline for how much total memory from each heap the+-- __current process__ can use at any given time, before allocations may+-- start failing or causing performance degradation. The values may change+-- based on other activity in the system that is outside the scope and+-- control of the Vulkan implementation.+--+-- The 'PhysicalDeviceMemoryBudgetPropertiesEXT'::@heapUsage@ will display+-- the __current process__ estimated heap usage.+--+-- With this information, the idea is for an application at some interval+-- (once per frame, per few seconds, etc) to query @heapBudget@ and+-- @heapUsage@. From here the application can notice if it is over budget+-- and decide how it wants to handle the memory situation (free it, move to+-- host memory, changing mipmap levels, etc). This extension is designed to+-- be used in concert with+-- <VK_EXT_memory_priority.html VK_EXT_memory_priority> to help with this+-- part of memory management.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceMemoryProperties2':+--+--     -   'PhysicalDeviceMemoryBudgetPropertiesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_MEMORY_BUDGET_EXTENSION_NAME'+--+-- -   'EXT_MEMORY_BUDGET_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2018-10-08 (Jeff Bolz)+--+--     -   Initial revision+--+-- = See Also+--+-- 'PhysicalDeviceMemoryBudgetPropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_budget Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_memory_budget  (PhysicalDeviceMemoryBudgetPropertiesEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_memory_priority.hs view
@@ -1,4 +1,96 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_memory_priority - device extension+--+-- == VK_EXT_memory_priority+--+-- [__Name String__]+--     @VK_EXT_memory_priority@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     239+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_memory_priority:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-10-08+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+-- == Description+--+-- This extension adds a @priority@ value specified at memory allocation+-- time. On some systems with both device-local and non-device-local memory+-- heaps, the implementation may transparently move memory from one heap to+-- another when a heap becomes full (for example, when the total memory+-- used across all processes exceeds the size of the heap). In such a case,+-- this priority value may be used to determine which allocations are more+-- likely to remain in device-local memory.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'MemoryPriorityAllocateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceMemoryPriorityFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_MEMORY_PRIORITY_EXTENSION_NAME'+--+-- -   'EXT_MEMORY_PRIORITY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2018-10-08 (Jeff Bolz)+--+--     -   Initial revision+--+-- = See Also+--+-- 'MemoryPriorityAllocateInfoEXT',+-- 'PhysicalDeviceMemoryPriorityFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_priority Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_memory_priority  ( PhysicalDeviceMemoryPriorityFeaturesEXT(..)                                                  , MemoryPriorityAllocateInfoEXT(..)                                                  , EXT_MEMORY_PRIORITY_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_memory_priority.hs-boot view
@@ -1,4 +1,96 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_memory_priority - device extension+--+-- == VK_EXT_memory_priority+--+-- [__Name String__]+--     @VK_EXT_memory_priority@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     239+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_memory_priority:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-10-08+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+-- == Description+--+-- This extension adds a @priority@ value specified at memory allocation+-- time. On some systems with both device-local and non-device-local memory+-- heaps, the implementation may transparently move memory from one heap to+-- another when a heap becomes full (for example, when the total memory+-- used across all processes exceeds the size of the heap). In such a case,+-- this priority value may be used to determine which allocations are more+-- likely to remain in device-local memory.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'MemoryPriorityAllocateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceMemoryPriorityFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_MEMORY_PRIORITY_EXTENSION_NAME'+--+-- -   'EXT_MEMORY_PRIORITY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2018-10-08 (Jeff Bolz)+--+--     -   Initial revision+--+-- = See Also+--+-- 'MemoryPriorityAllocateInfoEXT',+-- 'PhysicalDeviceMemoryPriorityFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_priority Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_memory_priority  ( MemoryPriorityAllocateInfoEXT                                                  , PhysicalDeviceMemoryPriorityFeaturesEXT                                                  ) where
src/Vulkan/Extensions/VK_EXT_metal_surface.hs view
@@ -1,4 +1,96 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_metal_surface - instance extension+--+-- == VK_EXT_metal_surface+--+-- [__Name String__]+--     @VK_EXT_metal_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     218+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Dzmitry Malyshau+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_metal_surface:%20&body=@kvark%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-10-01+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Dzmitry Malyshau, Mozilla Corp.+--+-- == Description+--+-- The @VK_EXT_metal_surface@ extension is an instance extension. It+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'+-- object (defined by the @VK_KHR_surface@ extension) from 'CAMetalLayer',+-- which is the native rendering surface of Apple’s Metal framework.+--+-- == New Base Types+--+-- -   'CAMetalLayer'+--+-- == New Commands+--+-- -   'createMetalSurfaceEXT'+--+-- == New Structures+--+-- -   'MetalSurfaceCreateInfoEXT'+--+-- == New Bitmasks+--+-- -   'MetalSurfaceCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_METAL_SURFACE_EXTENSION_NAME'+--+-- -   'EXT_METAL_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2018-10-01 (Dzmitry Malyshau)+--+--     -   Initial version+--+-- = See Also+--+-- 'CAMetalLayer', 'MetalSurfaceCreateFlagsEXT',+-- 'MetalSurfaceCreateInfoEXT', 'createMetalSurfaceEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_metal_surface  ( createMetalSurfaceEXT                                                , MetalSurfaceCreateInfoEXT(..)                                                , MetalSurfaceCreateFlagsEXT(..)@@ -10,6 +102,8 @@                                                , SurfaceKHR(..)                                                ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -21,15 +115,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -47,7 +134,7 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.NamedType ((:::))@@ -221,17 +308,27 @@   +conNameMetalSurfaceCreateFlagsEXT :: String+conNameMetalSurfaceCreateFlagsEXT = "MetalSurfaceCreateFlagsEXT"++enumPrefixMetalSurfaceCreateFlagsEXT :: String+enumPrefixMetalSurfaceCreateFlagsEXT = ""++showTableMetalSurfaceCreateFlagsEXT :: [(MetalSurfaceCreateFlagsEXT, String)]+showTableMetalSurfaceCreateFlagsEXT = []+ instance Show MetalSurfaceCreateFlagsEXT where-  showsPrec p = \case-    MetalSurfaceCreateFlagsEXT x -> showParen (p >= 11) (showString "MetalSurfaceCreateFlagsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixMetalSurfaceCreateFlagsEXT+                            showTableMetalSurfaceCreateFlagsEXT+                            conNameMetalSurfaceCreateFlagsEXT+                            (\(MetalSurfaceCreateFlagsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read MetalSurfaceCreateFlagsEXT where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "MetalSurfaceCreateFlagsEXT")-                       v <- step readPrec-                       pure (MetalSurfaceCreateFlagsEXT v)))+  readPrec = enumReadPrec enumPrefixMetalSurfaceCreateFlagsEXT+                          showTableMetalSurfaceCreateFlagsEXT+                          conNameMetalSurfaceCreateFlagsEXT+                          MetalSurfaceCreateFlagsEXT   type EXT_METAL_SURFACE_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_EXT_metal_surface.hs-boot view
@@ -1,4 +1,96 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_metal_surface - instance extension+--+-- == VK_EXT_metal_surface+--+-- [__Name String__]+--     @VK_EXT_metal_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     218+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Dzmitry Malyshau+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_metal_surface:%20&body=@kvark%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-10-01+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Dzmitry Malyshau, Mozilla Corp.+--+-- == Description+--+-- The @VK_EXT_metal_surface@ extension is an instance extension. It+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'+-- object (defined by the @VK_KHR_surface@ extension) from 'CAMetalLayer',+-- which is the native rendering surface of Apple’s Metal framework.+--+-- == New Base Types+--+-- -   'CAMetalLayer'+--+-- == New Commands+--+-- -   'createMetalSurfaceEXT'+--+-- == New Structures+--+-- -   'MetalSurfaceCreateInfoEXT'+--+-- == New Bitmasks+--+-- -   'MetalSurfaceCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_METAL_SURFACE_EXTENSION_NAME'+--+-- -   'EXT_METAL_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2018-10-01 (Dzmitry Malyshau)+--+--     -   Initial version+--+-- = See Also+--+-- 'CAMetalLayer', 'MetalSurfaceCreateFlagsEXT',+-- 'MetalSurfaceCreateInfoEXT', 'createMetalSurfaceEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_metal_surface  (MetalSurfaceCreateInfoEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_pci_bus_info.hs view
@@ -1,4 +1,102 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_pci_bus_info - device extension+--+-- == VK_EXT_pci_bus_info+--+-- [__Name String__]+--     @VK_EXT_pci_bus_info@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     213+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Matthaeus G. Chajdas+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_pci_bus_info:%20&body=@anteru%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-12-10+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Daniel Rakos, AMD+--+-- == Description+--+-- This extension adds a new query to obtain PCI bus information about a+-- physical device.+--+-- Not all physical devices have PCI bus information, either due to the+-- device not being connected to the system through a PCI interface or due+-- to platform specific restrictions and policies. Thus this extension is+-- only expected to be supported by physical devices which can provide the+-- information.+--+-- As a consequence, applications should always check for the presence of+-- the extension string for each individual physical device for which they+-- intend to issue the new query for and should not have any assumptions+-- about the availability of the extension on any given platform.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDevicePCIBusInfoPropertiesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_PCI_BUS_INFO_EXTENSION_NAME'+--+-- -   'EXT_PCI_BUS_INFO_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT'+--+-- == Version History+--+-- -   Revision 2, 2018-12-10 (Daniel Rakos)+--+--     -   Changed all members of the new structure to have the uint32_t+--         type+--+-- -   Revision 1, 2018-10-11 (Daniel Rakos)+--+--     -   Initial revision+--+-- = See Also+--+-- 'PhysicalDevicePCIBusInfoPropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pci_bus_info Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_pci_bus_info  ( PhysicalDevicePCIBusInfoPropertiesEXT(..)                                               , EXT_PCI_BUS_INFO_SPEC_VERSION                                               , pattern EXT_PCI_BUS_INFO_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_pci_bus_info.hs-boot view
@@ -1,4 +1,102 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_pci_bus_info - device extension+--+-- == VK_EXT_pci_bus_info+--+-- [__Name String__]+--     @VK_EXT_pci_bus_info@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     213+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Matthaeus G. Chajdas+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_pci_bus_info:%20&body=@anteru%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-12-10+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Daniel Rakos, AMD+--+-- == Description+--+-- This extension adds a new query to obtain PCI bus information about a+-- physical device.+--+-- Not all physical devices have PCI bus information, either due to the+-- device not being connected to the system through a PCI interface or due+-- to platform specific restrictions and policies. Thus this extension is+-- only expected to be supported by physical devices which can provide the+-- information.+--+-- As a consequence, applications should always check for the presence of+-- the extension string for each individual physical device for which they+-- intend to issue the new query for and should not have any assumptions+-- about the availability of the extension on any given platform.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDevicePCIBusInfoPropertiesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_PCI_BUS_INFO_EXTENSION_NAME'+--+-- -   'EXT_PCI_BUS_INFO_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT'+--+-- == Version History+--+-- -   Revision 2, 2018-12-10 (Daniel Rakos)+--+--     -   Changed all members of the new structure to have the uint32_t+--         type+--+-- -   Revision 1, 2018-10-11 (Daniel Rakos)+--+--     -   Initial revision+--+-- = See Also+--+-- 'PhysicalDevicePCIBusInfoPropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pci_bus_info Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_pci_bus_info  (PhysicalDevicePCIBusInfoPropertiesEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs view
@@ -1,4 +1,205 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_pipeline_creation_cache_control - device extension+--+-- == VK_EXT_pipeline_creation_cache_control+--+-- [__Name String__]+--     @VK_EXT_pipeline_creation_cache_control@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     298+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Gregory Grebe+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_pipeline_creation_cache_control:%20&body=@grgrebe_amd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-03-23+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Gregory Grebe, AMD+--+--     -   Tobias Hector, AMD+--+--     -   Matthaeus Chajdas, AMD+--+--     -   Mitch Singer, AMD+--+--     -   Spencer Fricke, Samsung Electronics+--+--     -   Stuart Smith, Imagination Technologies+--+--     -   Jeff Bolz, NVIDIA Corporation+--+--     -   Daniel Koch, NVIDIA Corporation+--+--     -   Dan Ginsburg, Valve Corporation+--+--     -   Jeff Leger, QUALCOMM+--+--     -   Michal Pietrasiuk, Intel+--+--     -   Jan-Harald Fredriksen, Arm Limited+--+-- == Description+--+-- This extension adds flags to @Vk*PipelineCreateInfo@ and+-- 'Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo' structures with+-- the aim of improving the predictability of pipeline creation cost. The+-- goal is to provide information about potentially expensive hazards+-- within the client driver during pipeline creation to the application+-- before carrying them out rather than after.+--+-- == Background+--+-- Pipeline creation is a costly operation, and the explicit nature of the+-- Vulkan design means that cost is not hidden from the developer.+-- Applications are also expected to schedule, prioritize, and load balance+-- all calls for pipeline creation. It is strongly advised that+-- applications create pipelines sufficiently ahead of their usage. Failure+-- to do so will result in an unresponsive application, intermittent+-- stuttering, or other poor user experiences. Proper usage of pipeline+-- caches and\/or derivative pipelines help mitigate this but is not+-- assured to eliminate disruption in all cases. In the event that an+-- ahead-of-time creation is not possible, considerations should be taken+-- to ensure that the current execution context is suitable for the+-- workload of pipeline creation including possible shader compilation.+--+-- Applications making API calls to create a pipeline must be prepared for+-- any of the following to occur:+--+-- -   OS\/kernel calls to be made by the ICD+--+-- -   Internal memory allocation not tracked by the @pAllocator@ passed to+--     @vkCreate*Pipelines@+--+-- -   Internal thread synchronization or yielding of the current thread’s+--     core+--+-- -   Extremely long (multi-millisecond+), blocking, compilation times+--+-- -   Arbitrary call stacks depths and stack memory usage+--+-- The job or task based game engines that are being developed to take+-- advantage of explicit graphics APIs like Vulkan may behave exceptionally+-- poorly if any of the above scenarios occur. However, most game engines+-- are already built to \"stream\" in assets dynamically as the user plays+-- the game. By adding control by way of+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags', we can+-- require an ICD to report back a failure in critical execution paths+-- rather than forcing an unexpected wait.+--+-- Applications can prevent unexpected compilation by setting+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'+-- on @Vk*PipelineCreateInfo@::@flags@. When set, an ICD must not attempt+-- pipeline or shader compilation to create the pipeline object. The ICD+-- will return the result+-- 'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'. An ICD may+-- still return a valid 'Vulkan.Core10.Handles.Pipeline' object by either+-- re-using existing pre-compiled objects such as those from a pipeline+-- cache, or derivative pipelines.+--+-- By default @vkCreate*Pipelines@ calls must attempt to create all+-- pipelines before returning. Setting+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'+-- on @Vk*PipelineCreateInfo@::@flags@ can be used as an escape hatch for+-- batched pipeline creates.+--+-- Hidden locks also add to the unpredictability of the cost of pipeline+-- creation. The most common case of locks inside the @vkCreate*Pipelines@+-- is internal synchronization of the 'Vulkan.Core10.Handles.PipelineCache'+-- object.+-- 'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT'+-- can be set when calling+-- 'Vulkan.Core10.PipelineCache.createPipelineCache' to state the cache is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.+--+-- The hope is that armed with this information application and engine+-- developers can leverage existing asset streaming systems to recover from+-- \"just-in-time\" pipeline creation stalls.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevicePipelineCreationCacheControlFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME'+--+-- -   'EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-11-01 (Gregory Grebe)+--+--     -   Initial revision+--+-- -   Revision 2, 2020-02-24 (Gregory Grebe)+--+--     -   Initial public revision+--+-- -   Revision 3, 2020-03-23 (Tobias Hector)+--+--     -   Changed+--         'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT' to a+--         success code, adding an alias for the original+--         'ERROR_PIPELINE_COMPILE_REQUIRED_EXT'. Also updated the xml to+--         include these codes as return values.+--+-- = See Also+--+-- 'PhysicalDevicePipelineCreationCacheControlFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_cache_control Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control  ( pattern ERROR_PIPELINE_COMPILE_REQUIRED_EXT                                                                  , PhysicalDevicePipelineCreationCacheControlFeaturesEXT(..)                                                                  , EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs-boot view
@@ -1,4 +1,205 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_pipeline_creation_cache_control - device extension+--+-- == VK_EXT_pipeline_creation_cache_control+--+-- [__Name String__]+--     @VK_EXT_pipeline_creation_cache_control@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     298+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Gregory Grebe+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_pipeline_creation_cache_control:%20&body=@grgrebe_amd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-03-23+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Gregory Grebe, AMD+--+--     -   Tobias Hector, AMD+--+--     -   Matthaeus Chajdas, AMD+--+--     -   Mitch Singer, AMD+--+--     -   Spencer Fricke, Samsung Electronics+--+--     -   Stuart Smith, Imagination Technologies+--+--     -   Jeff Bolz, NVIDIA Corporation+--+--     -   Daniel Koch, NVIDIA Corporation+--+--     -   Dan Ginsburg, Valve Corporation+--+--     -   Jeff Leger, QUALCOMM+--+--     -   Michal Pietrasiuk, Intel+--+--     -   Jan-Harald Fredriksen, Arm Limited+--+-- == Description+--+-- This extension adds flags to @Vk*PipelineCreateInfo@ and+-- 'Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo' structures with+-- the aim of improving the predictability of pipeline creation cost. The+-- goal is to provide information about potentially expensive hazards+-- within the client driver during pipeline creation to the application+-- before carrying them out rather than after.+--+-- == Background+--+-- Pipeline creation is a costly operation, and the explicit nature of the+-- Vulkan design means that cost is not hidden from the developer.+-- Applications are also expected to schedule, prioritize, and load balance+-- all calls for pipeline creation. It is strongly advised that+-- applications create pipelines sufficiently ahead of their usage. Failure+-- to do so will result in an unresponsive application, intermittent+-- stuttering, or other poor user experiences. Proper usage of pipeline+-- caches and\/or derivative pipelines help mitigate this but is not+-- assured to eliminate disruption in all cases. In the event that an+-- ahead-of-time creation is not possible, considerations should be taken+-- to ensure that the current execution context is suitable for the+-- workload of pipeline creation including possible shader compilation.+--+-- Applications making API calls to create a pipeline must be prepared for+-- any of the following to occur:+--+-- -   OS\/kernel calls to be made by the ICD+--+-- -   Internal memory allocation not tracked by the @pAllocator@ passed to+--     @vkCreate*Pipelines@+--+-- -   Internal thread synchronization or yielding of the current thread’s+--     core+--+-- -   Extremely long (multi-millisecond+), blocking, compilation times+--+-- -   Arbitrary call stacks depths and stack memory usage+--+-- The job or task based game engines that are being developed to take+-- advantage of explicit graphics APIs like Vulkan may behave exceptionally+-- poorly if any of the above scenarios occur. However, most game engines+-- are already built to \"stream\" in assets dynamically as the user plays+-- the game. By adding control by way of+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags', we can+-- require an ICD to report back a failure in critical execution paths+-- rather than forcing an unexpected wait.+--+-- Applications can prevent unexpected compilation by setting+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'+-- on @Vk*PipelineCreateInfo@::@flags@. When set, an ICD must not attempt+-- pipeline or shader compilation to create the pipeline object. The ICD+-- will return the result+-- 'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'. An ICD may+-- still return a valid 'Vulkan.Core10.Handles.Pipeline' object by either+-- re-using existing pre-compiled objects such as those from a pipeline+-- cache, or derivative pipelines.+--+-- By default @vkCreate*Pipelines@ calls must attempt to create all+-- pipelines before returning. Setting+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'+-- on @Vk*PipelineCreateInfo@::@flags@ can be used as an escape hatch for+-- batched pipeline creates.+--+-- Hidden locks also add to the unpredictability of the cost of pipeline+-- creation. The most common case of locks inside the @vkCreate*Pipelines@+-- is internal synchronization of the 'Vulkan.Core10.Handles.PipelineCache'+-- object.+-- 'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT'+-- can be set when calling+-- 'Vulkan.Core10.PipelineCache.createPipelineCache' to state the cache is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.+--+-- The hope is that armed with this information application and engine+-- developers can leverage existing asset streaming systems to recover from+-- \"just-in-time\" pipeline creation stalls.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevicePipelineCreationCacheControlFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME'+--+-- -   'EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-11-01 (Gregory Grebe)+--+--     -   Initial revision+--+-- -   Revision 2, 2020-02-24 (Gregory Grebe)+--+--     -   Initial public revision+--+-- -   Revision 3, 2020-03-23 (Tobias Hector)+--+--     -   Changed+--         'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT' to a+--         success code, adding an alias for the original+--         'ERROR_PIPELINE_COMPILE_REQUIRED_EXT'. Also updated the xml to+--         include these codes as return values.+--+-- = See Also+--+-- 'PhysicalDevicePipelineCreationCacheControlFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_cache_control Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control  (PhysicalDevicePipelineCreationCacheControlFeaturesEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs view
@@ -1,30 +1,141 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_pipeline_creation_feedback - device extension+--+-- == VK_EXT_pipeline_creation_feedback+--+-- [__Name String__]+--     @VK_EXT_pipeline_creation_feedback@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     193+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>+--+-- [__Contact__]+--+--     -   Jean-Francois Roy+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_pipeline_creation_feedback:%20&body=@jfroy%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-03-12+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jean-Francois Roy, Google+--+--     -   Hai Nguyen, Google+--+--     -   Andrew Ellem, Google+--+--     -   Bob Fraser, Google+--+--     -   Sujeevan Rajayogam, Google+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Jeff Leger, Qualcomm Technologies, Inc.+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Neil Henning, AMD+--+-- == Description+--+-- This extension adds a mechanism to provide feedback to an application+-- about pipeline creation, with the specific goal of allowing a feedback+-- loop between build systems and in-the-field application executions to+-- ensure effective pipeline caches are shipped to customers.+--+-- == New Structures+--+-- -   'PipelineCreationFeedbackEXT'+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',+--     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',+--     'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR':+--+--     -   'PipelineCreationFeedbackCreateInfoEXT'+--+-- == New Enums+--+-- -   'PipelineCreationFeedbackFlagBitsEXT'+--+-- == New Bitmasks+--+-- -   'PipelineCreationFeedbackFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME'+--+-- -   'EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-03-12 (Jean-Francois Roy)+--+--     -   Initial revision+--+-- = See Also+--+-- 'PipelineCreationFeedbackCreateInfoEXT', 'PipelineCreationFeedbackEXT',+-- 'PipelineCreationFeedbackFlagBitsEXT',+-- 'PipelineCreationFeedbackFlagsEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_feedback Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_pipeline_creation_feedback  ( PipelineCreationFeedbackEXT(..)                                                             , PipelineCreationFeedbackCreateInfoEXT(..)+                                                            , PipelineCreationFeedbackFlagsEXT                                                             , PipelineCreationFeedbackFlagBitsEXT( PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT                                                                                                  , PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT                                                                                                  , PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT                                                                                                  , ..                                                                                                  )-                                                            , PipelineCreationFeedbackFlagsEXT                                                             , EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION                                                             , pattern EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION                                                             , EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME                                                             , pattern EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME                                                             ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Data.String (IsString)@@ -36,9 +147,9 @@ import GHC.Generics (Generic) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32) import Data.Word (Word64)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.CStruct (FromCStruct)@@ -129,11 +240,11 @@ -- is set in @pPipelineCreationFeedback@. -- -- When chained to--- 'Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV', or -- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', the @i@ element of -- @pPipelineStageCreationFeedbacks@ corresponds to the @i@ element of--- 'Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR'::@pStages@,+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR'::@pStages@, -- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@pStages@, -- or 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@. When -- chained to 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo', the first@@ -155,10 +266,10 @@ -- -- -   #VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02670# --     When chained to---     'Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR',+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR', --     'PipelineCreationFeedbackEXT'::@pipelineStageCreationFeedbackCount@ --     /must/ equal---     'Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR'::@stageCount@+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR'::@stageCount@ -- -- -   #VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02969# --     When chained to@@ -190,7 +301,7 @@ -- 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo', -- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', -- 'PipelineCreationFeedbackEXT',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV', -- 'Vulkan.Core10.Enums.StructureType.StructureType' data PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfoEXT@@ -251,6 +362,8 @@            zero  +type PipelineCreationFeedbackFlagsEXT = PipelineCreationFeedbackFlagBitsEXT+ -- | VkPipelineCreationFeedbackFlagBitsEXT - Bitmask specifying pipeline or -- pipeline stage creation feedback --@@ -274,7 +387,7 @@ -- if it was able to avoid the large majority of pipeline or pipeline stage -- creation work by using the @pipelineCache@ parameter of -- 'Vulkan.Core10.Pipeline.createGraphicsPipelines',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.createRayTracingPipelinesKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR', -- 'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV', or -- 'Vulkan.Core10.Pipeline.createComputePipelines'. When an implementation -- sets this bit for the entire pipeline, it /may/ leave it unset for any@@ -288,7 +401,8 @@ -- it gets\" using the pipeline cache provided by the application. If an -- implementation uses an internal cache, it is discouraged from setting -- this bit as the feedback would be unactionable.-pattern PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = PipelineCreationFeedbackFlagBitsEXT 0x00000002+pattern PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT =+  PipelineCreationFeedbackFlagBitsEXT 0x00000002 -- | 'PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT' -- indicates that the base pipeline specified by the @basePipelineHandle@ -- or @basePipelineIndex@ member of the @Vk*PipelineCreateInfo@ structure@@ -307,24 +421,31 @@ -- this bit, while a 50% reduction would. pattern PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = PipelineCreationFeedbackFlagBitsEXT 0x00000004 -type PipelineCreationFeedbackFlagsEXT = PipelineCreationFeedbackFlagBitsEXT+conNamePipelineCreationFeedbackFlagBitsEXT :: String+conNamePipelineCreationFeedbackFlagBitsEXT = "PipelineCreationFeedbackFlagBitsEXT" +enumPrefixPipelineCreationFeedbackFlagBitsEXT :: String+enumPrefixPipelineCreationFeedbackFlagBitsEXT = "PIPELINE_CREATION_FEEDBACK_"++showTablePipelineCreationFeedbackFlagBitsEXT :: [(PipelineCreationFeedbackFlagBitsEXT, String)]+showTablePipelineCreationFeedbackFlagBitsEXT =+  [ (PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT                         , "VALID_BIT_EXT")+  , (PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT, "APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT")+  , (PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT    , "BASE_PIPELINE_ACCELERATION_BIT_EXT")+  ]+ instance Show PipelineCreationFeedbackFlagBitsEXT where-  showsPrec p = \case-    PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT -> showString "PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT"-    PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT -> showString "PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT"-    PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT -> showString "PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT"-    PipelineCreationFeedbackFlagBitsEXT x -> showParen (p >= 11) (showString "PipelineCreationFeedbackFlagBitsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineCreationFeedbackFlagBitsEXT+                            showTablePipelineCreationFeedbackFlagBitsEXT+                            conNamePipelineCreationFeedbackFlagBitsEXT+                            (\(PipelineCreationFeedbackFlagBitsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineCreationFeedbackFlagBitsEXT where-  readPrec = parens (choose [("PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT", pure PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT)-                            , ("PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT", pure PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT)-                            , ("PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT", pure PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineCreationFeedbackFlagBitsEXT")-                       v <- step readPrec-                       pure (PipelineCreationFeedbackFlagBitsEXT v)))+  readPrec = enumReadPrec enumPrefixPipelineCreationFeedbackFlagBitsEXT+                          showTablePipelineCreationFeedbackFlagBitsEXT+                          conNamePipelineCreationFeedbackFlagBitsEXT+                          PipelineCreationFeedbackFlagBitsEXT   type EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs-boot view
@@ -1,4 +1,120 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_pipeline_creation_feedback - device extension+--+-- == VK_EXT_pipeline_creation_feedback+--+-- [__Name String__]+--     @VK_EXT_pipeline_creation_feedback@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     193+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>+--+-- [__Contact__]+--+--     -   Jean-Francois Roy+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_pipeline_creation_feedback:%20&body=@jfroy%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-03-12+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jean-Francois Roy, Google+--+--     -   Hai Nguyen, Google+--+--     -   Andrew Ellem, Google+--+--     -   Bob Fraser, Google+--+--     -   Sujeevan Rajayogam, Google+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Jeff Leger, Qualcomm Technologies, Inc.+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Neil Henning, AMD+--+-- == Description+--+-- This extension adds a mechanism to provide feedback to an application+-- about pipeline creation, with the specific goal of allowing a feedback+-- loop between build systems and in-the-field application executions to+-- ensure effective pipeline caches are shipped to customers.+--+-- == New Structures+--+-- -   'PipelineCreationFeedbackEXT'+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',+--     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',+--     'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR':+--+--     -   'PipelineCreationFeedbackCreateInfoEXT'+--+-- == New Enums+--+-- -   'PipelineCreationFeedbackFlagBitsEXT'+--+-- == New Bitmasks+--+-- -   'PipelineCreationFeedbackFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME'+--+-- -   'EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-03-12 (Jean-Francois Roy)+--+--     -   Initial revision+--+-- = See Also+--+-- 'PipelineCreationFeedbackCreateInfoEXT', 'PipelineCreationFeedbackEXT',+-- 'PipelineCreationFeedbackFlagBitsEXT',+-- 'PipelineCreationFeedbackFlagsEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_feedback Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_pipeline_creation_feedback  ( PipelineCreationFeedbackCreateInfoEXT                                                             , PipelineCreationFeedbackEXT                                                             ) where
src/Vulkan/Extensions/VK_EXT_post_depth_coverage.hs view
@@ -1,4 +1,107 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_post_depth_coverage - device extension+--+-- == VK_EXT_post_depth_coverage+--+-- [__Name String__]+--     @VK_EXT_post_depth_coverage@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     156+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_post_depth_coverage:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-07-17+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_post_depth_coverage.html SPV_KHR_post_depth_coverage>+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_post_depth_coverage.txt GL_ARB_post_depth_coverage>+--         and+--         <https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_post_depth_coverage.txt GL_EXT_post_depth_coverage>+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   @SPV_KHR_post_depth_coverage@+--+-- which allows the fragment shader to control whether values in the+-- 'Vulkan.Core10.FundamentalTypes.SampleMask' built-in input variable+-- reflect the coverage after early+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil stencil>+-- tests are applied.+--+-- This extension adds a new @PostDepthCoverage@ execution mode under the+-- @SampleMaskPostDepthCoverage@ capability. When this mode is specified+-- along with @EarlyFragmentTests@, the value of an input variable+-- decorated with the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-samplemask >+-- built-in reflects the coverage after the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest early fragment tests>+-- are applied. Otherwise, it reflects the coverage before the depth and+-- stencil tests.+--+-- When using GLSL source-based shading languages, the+-- @post_depth_coverage@ layout qualifier from GL_ARB_post_depth_coverage+-- or GL_EXT_post_depth_coverage maps to the @PostDepthCoverage@ execution+-- mode.+--+-- == New Enum Constants+--+-- -   'EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME'+--+-- -   'EXT_POST_DEPTH_COVERAGE_SPEC_VERSION'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-postdepthcoverage SampleMaskPostDepthCoverage>+--+-- == Version History+--+-- -   Revision 1, 2017-07-17 (Daniel Koch)+--+--     -   Internal revisions+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_post_depth_coverage Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_post_depth_coverage  ( EXT_POST_DEPTH_COVERAGE_SPEC_VERSION                                                      , pattern EXT_POST_DEPTH_COVERAGE_SPEC_VERSION                                                      , EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME
src/Vulkan/Extensions/VK_EXT_private_data.hs view
@@ -1,4 +1,141 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_private_data - device extension+--+-- == VK_EXT_private_data+--+-- [__Name String__]+--     @VK_EXT_private_data@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     296+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Matthew Rusch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_private_data:%20&body=@mattruschnv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-03-25+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthew Rusch, NVIDIA+--+--     -   Nuno Subtil, NVIDIA+--+--     -   Piers Daniell, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- The \'VK_EXT_private_data\' extension is a device extension which+-- enables attaching arbitrary payloads to Vulkan objects. It introduces+-- the idea of private data slots as a means of storing a 64-bit unsigned+-- integer of application defined data. Private data slots can be created+-- or destroyed any time an associated device is available. Private data+-- slots can be reserved at device creation time, and limiting use to the+-- amount reserved will allow the extension to exhibit better performance+-- characteristics.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.PrivateDataSlotEXT'+--+-- == New Commands+--+-- -   'createPrivateDataSlotEXT'+--+-- -   'destroyPrivateDataSlotEXT'+--+-- -   'getPrivateDataEXT'+--+-- -   'setPrivateDataEXT'+--+-- == New Structures+--+-- -   'PrivateDataSlotCreateInfoEXT'+--+-- -   Extending 'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'DevicePrivateDataCreateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevicePrivateDataFeaturesEXT'+--+-- == New Enums+--+-- -   'PrivateDataSlotCreateFlagBitsEXT'+--+-- == New Bitmasks+--+-- -   'PrivateDataSlotCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_PRIVATE_DATA_EXTENSION_NAME'+--+-- -   'EXT_PRIVATE_DATA_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT'+--+-- == Examples+--+-- -   In progress+--+-- == Version History+--+-- -   Revision 1, 2020-01-15 (Matthew Rusch)+--+--     -   Initial draft+--+-- = See Also+--+-- 'DevicePrivateDataCreateInfoEXT',+-- 'PhysicalDevicePrivateDataFeaturesEXT',+-- 'PrivateDataSlotCreateFlagBitsEXT', 'PrivateDataSlotCreateFlagsEXT',+-- 'PrivateDataSlotCreateInfoEXT',+-- 'Vulkan.Extensions.Handles.PrivateDataSlotEXT',+-- 'createPrivateDataSlotEXT', 'destroyPrivateDataSlotEXT',+-- 'getPrivateDataEXT', 'setPrivateDataEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_private_data  ( createPrivateDataSlotEXT                                               , withPrivateDataSlotEXT                                               , destroyPrivateDataSlotEXT@@ -7,8 +144,8 @@                                               , DevicePrivateDataCreateInfoEXT(..)                                               , PrivateDataSlotCreateInfoEXT(..)                                               , PhysicalDevicePrivateDataFeaturesEXT(..)-                                              , PrivateDataSlotCreateFlagBitsEXT(..)                                               , PrivateDataSlotCreateFlagsEXT+                                              , PrivateDataSlotCreateFlagBitsEXT(..)                                               , EXT_PRIVATE_DATA_SPEC_VERSION                                               , pattern EXT_PRIVATE_DATA_SPEC_VERSION                                               , EXT_PRIVATE_DATA_EXTENSION_NAME@@ -16,6 +153,8 @@                                               , PrivateDataSlotEXT(..)                                               ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -27,15 +166,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -53,9 +185,9 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32) import Data.Word (Word64)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.Core10.FundamentalTypes (bool32ToBool)@@ -170,10 +302,10 @@ -- -- To ensure that 'destroyPrivateDataSlotEXT' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withPrivateDataSlotEXT :: forall io r . MonadIO io => Device -> PrivateDataSlotCreateInfoEXT -> Maybe AllocationCallbacks -> (io (PrivateDataSlotEXT) -> ((PrivateDataSlotEXT) -> io ()) -> r) -> r+withPrivateDataSlotEXT :: forall io r . MonadIO io => Device -> PrivateDataSlotCreateInfoEXT -> Maybe AllocationCallbacks -> (io PrivateDataSlotEXT -> (PrivateDataSlotEXT -> io ()) -> r) -> r withPrivateDataSlotEXT device pCreateInfo pAllocator b =   b (createPrivateDataSlotEXT device pCreateInfo pAllocator)     (\(o0) -> destroyPrivateDataSlotEXT device o0 pAllocator)@@ -557,6 +689,8 @@            zero  +type PrivateDataSlotCreateFlagsEXT = PrivateDataSlotCreateFlagBitsEXT+ -- | VkPrivateDataSlotCreateFlagBitsEXT - Bitmask specifying additional -- parameters for private data slot creation --@@ -568,19 +702,27 @@   -type PrivateDataSlotCreateFlagsEXT = PrivateDataSlotCreateFlagBitsEXT+conNamePrivateDataSlotCreateFlagBitsEXT :: String+conNamePrivateDataSlotCreateFlagBitsEXT = "PrivateDataSlotCreateFlagBitsEXT" +enumPrefixPrivateDataSlotCreateFlagBitsEXT :: String+enumPrefixPrivateDataSlotCreateFlagBitsEXT = ""++showTablePrivateDataSlotCreateFlagBitsEXT :: [(PrivateDataSlotCreateFlagBitsEXT, String)]+showTablePrivateDataSlotCreateFlagBitsEXT = []+ instance Show PrivateDataSlotCreateFlagBitsEXT where-  showsPrec p = \case-    PrivateDataSlotCreateFlagBitsEXT x -> showParen (p >= 11) (showString "PrivateDataSlotCreateFlagBitsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPrivateDataSlotCreateFlagBitsEXT+                            showTablePrivateDataSlotCreateFlagBitsEXT+                            conNamePrivateDataSlotCreateFlagBitsEXT+                            (\(PrivateDataSlotCreateFlagBitsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PrivateDataSlotCreateFlagBitsEXT where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PrivateDataSlotCreateFlagBitsEXT")-                       v <- step readPrec-                       pure (PrivateDataSlotCreateFlagBitsEXT v)))+  readPrec = enumReadPrec enumPrefixPrivateDataSlotCreateFlagBitsEXT+                          showTablePrivateDataSlotCreateFlagBitsEXT+                          conNamePrivateDataSlotCreateFlagBitsEXT+                          PrivateDataSlotCreateFlagBitsEXT   type EXT_PRIVATE_DATA_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_EXT_private_data.hs-boot view
@@ -1,4 +1,141 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_private_data - device extension+--+-- == VK_EXT_private_data+--+-- [__Name String__]+--     @VK_EXT_private_data@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     296+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Matthew Rusch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_private_data:%20&body=@mattruschnv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-03-25+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthew Rusch, NVIDIA+--+--     -   Nuno Subtil, NVIDIA+--+--     -   Piers Daniell, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- The \'VK_EXT_private_data\' extension is a device extension which+-- enables attaching arbitrary payloads to Vulkan objects. It introduces+-- the idea of private data slots as a means of storing a 64-bit unsigned+-- integer of application defined data. Private data slots can be created+-- or destroyed any time an associated device is available. Private data+-- slots can be reserved at device creation time, and limiting use to the+-- amount reserved will allow the extension to exhibit better performance+-- characteristics.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.PrivateDataSlotEXT'+--+-- == New Commands+--+-- -   'createPrivateDataSlotEXT'+--+-- -   'destroyPrivateDataSlotEXT'+--+-- -   'getPrivateDataEXT'+--+-- -   'setPrivateDataEXT'+--+-- == New Structures+--+-- -   'PrivateDataSlotCreateInfoEXT'+--+-- -   Extending 'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'DevicePrivateDataCreateInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevicePrivateDataFeaturesEXT'+--+-- == New Enums+--+-- -   'PrivateDataSlotCreateFlagBitsEXT'+--+-- == New Bitmasks+--+-- -   'PrivateDataSlotCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_PRIVATE_DATA_EXTENSION_NAME'+--+-- -   'EXT_PRIVATE_DATA_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT'+--+-- == Examples+--+-- -   In progress+--+-- == Version History+--+-- -   Revision 1, 2020-01-15 (Matthew Rusch)+--+--     -   Initial draft+--+-- = See Also+--+-- 'DevicePrivateDataCreateInfoEXT',+-- 'PhysicalDevicePrivateDataFeaturesEXT',+-- 'PrivateDataSlotCreateFlagBitsEXT', 'PrivateDataSlotCreateFlagsEXT',+-- 'PrivateDataSlotCreateInfoEXT',+-- 'Vulkan.Extensions.Handles.PrivateDataSlotEXT',+-- 'createPrivateDataSlotEXT', 'destroyPrivateDataSlotEXT',+-- 'getPrivateDataEXT', 'setPrivateDataEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_private_data  ( DevicePrivateDataCreateInfoEXT                                               , PhysicalDevicePrivateDataFeaturesEXT                                               , PrivateDataSlotCreateInfoEXT
src/Vulkan/Extensions/VK_EXT_queue_family_foreign.hs view
@@ -1,4 +1,107 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_queue_family_foreign - device extension+--+-- == VK_EXT_queue_family_foreign+--+-- [__Name String__]+--     @VK_EXT_queue_family_foreign@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     127+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_memory@+--+-- [__Contact__]+--+--     -   Chad Versace+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_queue_family_foreign:%20&body=@chadversary%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-11-01+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Chad Versace, Google+--+--     -   James Jones, NVIDIA+--+--     -   Jason Ekstrand, Intel+--+--     -   Jesse Hall, Google+--+--     -   Daniel Rakos, AMD+--+--     -   Ray Smith, ARM+--+-- == Description+--+-- This extension defines a special queue family,+-- 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT', which can be used+-- to transfer ownership of resources backed by external memory to foreign,+-- external queues. This is similar to+-- 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL_KHR', defined in+-- @VK_KHR_external_memory@. The key differences between the two are:+--+-- -   The queues represented by+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL_KHR' must share+--     the same physical device and the same driver version as the current+--     'Vulkan.Core10.Handles.Instance'.+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT' has no such+--     restrictions. It can represent devices and drivers from other+--     vendors, and can even represent non-Vulkan-capable devices.+--+-- -   All resources backed by external memory support+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL_KHR'. Support for+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT' is more+--     restrictive.+--+-- -   Applications should expect transitions to\/from+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT' to be more+--     expensive than transitions to\/from+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL_KHR'.+--+-- == New Enum Constants+--+-- -   'EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME'+--+-- -   'EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION'+--+-- -   'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'+--+-- == Version History+--+-- -   Revision 1, 2017-11-01 (Chad Versace)+--+--     -   Squashed internal revisions+--+-- = See Also+--+-- 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_FOREIGN_EXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_queue_family_foreign Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_queue_family_foreign  ( EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION                                                       , pattern EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION                                                       , EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME
src/Vulkan/Extensions/VK_EXT_robustness2.hs view
@@ -1,4 +1,129 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_robustness2 - device extension+--+-- == VK_EXT_robustness2+--+-- [__Name String__]+--     @VK_EXT_robustness2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     287+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Liam Middlebrook+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_robustness2:%20&body=@liam-middlebrook%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-01-29+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Liam Middlebrook, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension adds stricter requirements for how out of bounds reads+-- and writes are handled. Most accesses /must/ be tightly bounds-checked,+-- out of bounds writes /must/ be discarded, out of bound reads /must/+-- return zero. Rather than allowing multiple possible (0,0,0,x) vectors,+-- the out of bounds values are treated as zero, and then missing+-- components are inserted based on the format as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction vertex input attribute extraction>.+--+-- These additional requirements /may/ be expensive on some+-- implementations, and should only be enabled when truly necessary.+--+-- This extension also adds support for \"null descriptors\", where+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /can/ be used instead of a+-- valid handle. Accesses to null descriptors have well-defined behavior,+-- and don’t rely on robustness.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceRobustness2FeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceRobustness2PropertiesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_ROBUSTNESS_2_EXTENSION_NAME'+--+-- -   'EXT_ROBUSTNESS_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT'+--+-- == Issues+--+-- 1.  Why do+--     'PhysicalDeviceRobustness2PropertiesEXT'::@robustUniformBufferAccessSizeAlignment@+--     and+--     'PhysicalDeviceRobustness2PropertiesEXT'::@robustStorageBufferAccessSizeAlignment@+--     exist?+--+-- RESOLVED: Some implementations can’t efficiently tightly bounds-check+-- all buffer accesses. Rather, the size of the bound range is padded to+-- some power of two multiple, up to 256 bytes for uniform buffers and up+-- to 4 bytes for storage buffers, and that padded size is bounds-checked.+-- This is sufficient to implement D3D-like behavior, because D3D only+-- allows binding whole uniform buffers or ranges that are a multiple of+-- 256 bytes, and D3D raw and structured buffers only support 32-bit+-- accesses.+--+-- == Examples+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2019-11-01 (Jeff Bolz, Liam Middlebrook)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceRobustness2FeaturesEXT',+-- 'PhysicalDeviceRobustness2PropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_robustness2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_robustness2  ( PhysicalDeviceRobustness2FeaturesEXT(..)                                              , PhysicalDeviceRobustness2PropertiesEXT(..)                                              , EXT_ROBUSTNESS_2_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_robustness2.hs-boot view
@@ -1,4 +1,129 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_robustness2 - device extension+--+-- == VK_EXT_robustness2+--+-- [__Name String__]+--     @VK_EXT_robustness2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     287+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Liam Middlebrook+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_robustness2:%20&body=@liam-middlebrook%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-01-29+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Liam Middlebrook, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension adds stricter requirements for how out of bounds reads+-- and writes are handled. Most accesses /must/ be tightly bounds-checked,+-- out of bounds writes /must/ be discarded, out of bound reads /must/+-- return zero. Rather than allowing multiple possible (0,0,0,x) vectors,+-- the out of bounds values are treated as zero, and then missing+-- components are inserted based on the format as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction vertex input attribute extraction>.+--+-- These additional requirements /may/ be expensive on some+-- implementations, and should only be enabled when truly necessary.+--+-- This extension also adds support for \"null descriptors\", where+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /can/ be used instead of a+-- valid handle. Accesses to null descriptors have well-defined behavior,+-- and don’t rely on robustness.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceRobustness2FeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceRobustness2PropertiesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_ROBUSTNESS_2_EXTENSION_NAME'+--+-- -   'EXT_ROBUSTNESS_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT'+--+-- == Issues+--+-- 1.  Why do+--     'PhysicalDeviceRobustness2PropertiesEXT'::@robustUniformBufferAccessSizeAlignment@+--     and+--     'PhysicalDeviceRobustness2PropertiesEXT'::@robustStorageBufferAccessSizeAlignment@+--     exist?+--+-- RESOLVED: Some implementations can’t efficiently tightly bounds-check+-- all buffer accesses. Rather, the size of the bound range is padded to+-- some power of two multiple, up to 256 bytes for uniform buffers and up+-- to 4 bytes for storage buffers, and that padded size is bounds-checked.+-- This is sufficient to implement D3D-like behavior, because D3D only+-- allows binding whole uniform buffers or ranges that are a multiple of+-- 256 bytes, and D3D raw and structured buffers only support 32-bit+-- accesses.+--+-- == Examples+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2019-11-01 (Jeff Bolz, Liam Middlebrook)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceRobustness2FeaturesEXT',+-- 'PhysicalDeviceRobustness2PropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_robustness2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_robustness2  ( PhysicalDeviceRobustness2FeaturesEXT                                              , PhysicalDeviceRobustness2PropertiesEXT                                              ) where
src/Vulkan/Extensions/VK_EXT_sample_locations.hs view
@@ -1,4 +1,171 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_sample_locations - device extension+--+-- == VK_EXT_sample_locations+--+-- [__Name String__]+--     @VK_EXT_sample_locations@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     144+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Daniel Rakos+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_sample_locations:%20&body=@drakos-amd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-08-02+--+-- [__Contributors__]+--+--     -   Mais Alnasser, AMD+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Maciej Jesionowski, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Slawomir Grajewski, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Bill Licea-Kane, Qualcomm+--+-- == Description+--+-- This extension allows an application to modify the locations of samples+-- within a pixel used in rasterization. Additionally, it allows+-- applications to specify different sample locations for each pixel in a+-- group of adjacent pixels, which /can/ increase antialiasing quality+-- (particularly if a custom resolve shader is used that takes advantage of+-- these different locations).+--+-- It is common for implementations to optimize the storage of depth values+-- by storing values that /can/ be used to reconstruct depth at each sample+-- location, rather than storing separate depth values for each sample. For+-- example, the depth values from a single triangle /may/ be represented+-- using plane equations. When the depth value for a sample is needed, it+-- is automatically evaluated at the sample location. Modifying the sample+-- locations causes the reconstruction to no longer evaluate the same depth+-- values as when the samples were originally generated, thus the depth+-- aspect of a depth\/stencil attachment /must/ be cleared before rendering+-- to it using different sample locations.+--+-- Some implementations /may/ need to evaluate depth image values while+-- performing image layout transitions. To accommodate this, instances of+-- the 'SampleLocationsInfoEXT' structure /can/ be specified for each+-- situation where an explicit or automatic layout transition has to take+-- place. 'SampleLocationsInfoEXT' /can/ be chained from+-- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures to provide+-- sample locations for layout transitions performed by+-- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents' and+-- 'Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier' calls, and+-- 'RenderPassSampleLocationsBeginInfoEXT' /can/ be chained from+-- 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo' to provide+-- sample locations for layout transitions performed implicitly by a render+-- pass instance.+--+-- == New Commands+--+-- -   'cmdSetSampleLocationsEXT'+--+-- -   'getPhysicalDeviceMultisamplePropertiesEXT'+--+-- == New Structures+--+-- -   'AttachmentSampleLocationsEXT'+--+-- -   'MultisamplePropertiesEXT'+--+-- -   'SampleLocationEXT'+--+-- -   'SubpassSampleLocationsEXT'+--+-- -   Extending 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier':+--+--     -   'SampleLocationsInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceSampleLocationsPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':+--+--     -   'PipelineSampleLocationsStateCreateInfoEXT'+--+-- -   Extending 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo':+--+--     -   'RenderPassSampleLocationsBeginInfoEXT'+--+-- == New Enum Constants+--+-- -   'EXT_SAMPLE_LOCATIONS_EXTENSION_NAME'+--+-- -   'EXT_SAMPLE_LOCATIONS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2017-08-02 (Daniel Rakos)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'AttachmentSampleLocationsEXT', 'MultisamplePropertiesEXT',+-- 'PhysicalDeviceSampleLocationsPropertiesEXT',+-- 'PipelineSampleLocationsStateCreateInfoEXT',+-- 'RenderPassSampleLocationsBeginInfoEXT', 'SampleLocationEXT',+-- 'SampleLocationsInfoEXT', 'SubpassSampleLocationsEXT',+-- 'cmdSetSampleLocationsEXT', 'getPhysicalDeviceMultisamplePropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_sample_locations Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_sample_locations  ( cmdSetSampleLocationsEXT                                                   , getPhysicalDeviceMultisamplePropertiesEXT                                                   , SampleLocationEXT(..)@@ -344,10 +511,10 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr SampleCountFlagBits)) (sampleLocationsPerPixel)-    ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (sampleLocationGridSize) . ($ ())+    lift $ poke ((p `plusPtr` 20 :: Ptr Extent2D)) (sampleLocationGridSize)     lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (sampleLocations)) :: Word32))     pPSampleLocations' <- ContT $ allocaBytesAligned @SampleLocationEXT ((Data.Vector.length (sampleLocations)) * 8) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSampleLocations' `plusPtr` (8 * (i)) :: Ptr SampleLocationEXT) (e) . ($ ())) (sampleLocations)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPSampleLocations' `plusPtr` (8 * (i)) :: Ptr SampleLocationEXT) (e)) (sampleLocations)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr SampleLocationEXT))) (pPSampleLocations')     lift $ f   cStructSize = 40@@ -355,9 +522,9 @@   pokeZeroCStruct p f = evalContT $ do     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 20 :: Ptr Extent2D)) (zero)     pPSampleLocations' <- ContT $ allocaBytesAligned @SampleLocationEXT ((Data.Vector.length (mempty)) * 8) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSampleLocations' `plusPtr` (8 * (i)) :: Ptr SampleLocationEXT) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPSampleLocations' `plusPtr` (8 * (i)) :: Ptr SampleLocationEXT) (e)) (mempty)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr SampleLocationEXT))) (pPSampleLocations')     lift $ f @@ -741,34 +908,34 @@  instance ToCStruct PhysicalDeviceSampleLocationsPropertiesEXT where   withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PhysicalDeviceSampleLocationsPropertiesEXT{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr SampleCountFlags)) (sampleLocationSampleCounts)-    ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (maxSampleLocationGridSize) . ($ ())+  pokeCStruct p PhysicalDeviceSampleLocationsPropertiesEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SampleCountFlags)) (sampleLocationSampleCounts)+    poke ((p `plusPtr` 20 :: Ptr Extent2D)) (maxSampleLocationGridSize)     let pSampleLocationCoordinateRange' = lowerArrayPtr ((p `plusPtr` 28 :: Ptr (FixedArray 2 CFloat)))-    lift $ case (sampleLocationCoordinateRange) of+    case (sampleLocationCoordinateRange) of       (e0, e1) -> do         poke (pSampleLocationCoordinateRange' :: Ptr CFloat) (CFloat (e0))         poke (pSampleLocationCoordinateRange' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))-    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (sampleLocationSubPixelBits)-    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (variableSampleLocations))-    lift $ f+    poke ((p `plusPtr` 36 :: Ptr Word32)) (sampleLocationSubPixelBits)+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (variableSampleLocations))+    f   cStructSize = 48   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr SampleCountFlags)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (zero) . ($ ())+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SampleCountFlags)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Extent2D)) (zero)     let pSampleLocationCoordinateRange' = lowerArrayPtr ((p `plusPtr` 28 :: Ptr (FixedArray 2 CFloat)))-    lift $ case ((zero, zero)) of+    case ((zero, zero)) of       (e0, e1) -> do         poke (pSampleLocationCoordinateRange' :: Ptr CFloat) (CFloat (e0))         poke (pSampleLocationCoordinateRange' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))-    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ f+    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+    f  instance FromCStruct PhysicalDeviceSampleLocationsPropertiesEXT where   peekCStruct p = do@@ -782,6 +949,12 @@     pure $ PhysicalDeviceSampleLocationsPropertiesEXT              sampleLocationSampleCounts maxSampleLocationGridSize ((((\(CFloat a) -> a) sampleLocationCoordinateRange0), ((\(CFloat a) -> a) sampleLocationCoordinateRange1))) sampleLocationSubPixelBits (bool32ToBool variableSampleLocations) +instance Storable PhysicalDeviceSampleLocationsPropertiesEXT where+  sizeOf ~_ = 48+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero PhysicalDeviceSampleLocationsPropertiesEXT where   zero = PhysicalDeviceSampleLocationsPropertiesEXT            zero@@ -813,24 +986,30 @@  instance ToCStruct MultisamplePropertiesEXT where   withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p MultisamplePropertiesEXT{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (maxSampleLocationGridSize) . ($ ())-    lift $ f+  pokeCStruct p MultisamplePropertiesEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (maxSampleLocationGridSize)+    f   cStructSize = 24   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (zero)+    f  instance FromCStruct MultisamplePropertiesEXT where   peekCStruct p = do     maxSampleLocationGridSize <- peekCStruct @Extent2D ((p `plusPtr` 16 :: Ptr Extent2D))     pure $ MultisamplePropertiesEXT              maxSampleLocationGridSize++instance Storable MultisamplePropertiesEXT where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())  instance Zero MultisamplePropertiesEXT where   zero = MultisamplePropertiesEXT
src/Vulkan/Extensions/VK_EXT_sample_locations.hs-boot view
@@ -1,4 +1,171 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_sample_locations - device extension+--+-- == VK_EXT_sample_locations+--+-- [__Name String__]+--     @VK_EXT_sample_locations@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     144+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Daniel Rakos+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_sample_locations:%20&body=@drakos-amd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-08-02+--+-- [__Contributors__]+--+--     -   Mais Alnasser, AMD+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Maciej Jesionowski, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Slawomir Grajewski, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Bill Licea-Kane, Qualcomm+--+-- == Description+--+-- This extension allows an application to modify the locations of samples+-- within a pixel used in rasterization. Additionally, it allows+-- applications to specify different sample locations for each pixel in a+-- group of adjacent pixels, which /can/ increase antialiasing quality+-- (particularly if a custom resolve shader is used that takes advantage of+-- these different locations).+--+-- It is common for implementations to optimize the storage of depth values+-- by storing values that /can/ be used to reconstruct depth at each sample+-- location, rather than storing separate depth values for each sample. For+-- example, the depth values from a single triangle /may/ be represented+-- using plane equations. When the depth value for a sample is needed, it+-- is automatically evaluated at the sample location. Modifying the sample+-- locations causes the reconstruction to no longer evaluate the same depth+-- values as when the samples were originally generated, thus the depth+-- aspect of a depth\/stencil attachment /must/ be cleared before rendering+-- to it using different sample locations.+--+-- Some implementations /may/ need to evaluate depth image values while+-- performing image layout transitions. To accommodate this, instances of+-- the 'SampleLocationsInfoEXT' structure /can/ be specified for each+-- situation where an explicit or automatic layout transition has to take+-- place. 'SampleLocationsInfoEXT' /can/ be chained from+-- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures to provide+-- sample locations for layout transitions performed by+-- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents' and+-- 'Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier' calls, and+-- 'RenderPassSampleLocationsBeginInfoEXT' /can/ be chained from+-- 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo' to provide+-- sample locations for layout transitions performed implicitly by a render+-- pass instance.+--+-- == New Commands+--+-- -   'cmdSetSampleLocationsEXT'+--+-- -   'getPhysicalDeviceMultisamplePropertiesEXT'+--+-- == New Structures+--+-- -   'AttachmentSampleLocationsEXT'+--+-- -   'MultisamplePropertiesEXT'+--+-- -   'SampleLocationEXT'+--+-- -   'SubpassSampleLocationsEXT'+--+-- -   Extending 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier':+--+--     -   'SampleLocationsInfoEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceSampleLocationsPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':+--+--     -   'PipelineSampleLocationsStateCreateInfoEXT'+--+-- -   Extending 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo':+--+--     -   'RenderPassSampleLocationsBeginInfoEXT'+--+-- == New Enum Constants+--+-- -   'EXT_SAMPLE_LOCATIONS_EXTENSION_NAME'+--+-- -   'EXT_SAMPLE_LOCATIONS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2017-08-02 (Daniel Rakos)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'AttachmentSampleLocationsEXT', 'MultisamplePropertiesEXT',+-- 'PhysicalDeviceSampleLocationsPropertiesEXT',+-- 'PipelineSampleLocationsStateCreateInfoEXT',+-- 'RenderPassSampleLocationsBeginInfoEXT', 'SampleLocationEXT',+-- 'SampleLocationsInfoEXT', 'SubpassSampleLocationsEXT',+-- 'cmdSetSampleLocationsEXT', 'getPhysicalDeviceMultisamplePropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_sample_locations Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_sample_locations  ( AttachmentSampleLocationsEXT                                                   , MultisamplePropertiesEXT                                                   , PhysicalDeviceSampleLocationsPropertiesEXT
src/Vulkan/Extensions/VK_EXT_sampler_filter_minmax.hs view
@@ -1,4 +1,140 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_sampler_filter_minmax - device extension+--+-- == VK_EXT_sampler_filter_minmax+--+-- [__Name String__]+--     @VK_EXT_sampler_filter_minmax@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     131+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_sampler_filter_minmax:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-05-19+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Piers Daniell, NVIDIA+--+-- == Description+--+-- In unextended Vulkan, minification and magnification filters such as+-- LINEAR allow sampled image lookups to return a filtered texel value+-- produced by computing a weighted average of a collection of texels in+-- the neighborhood of the texture coordinate provided.+--+-- This extension provides a new sampler parameter which allows+-- applications to produce a filtered texel value by computing a+-- component-wise minimum (MIN) or maximum (MAX) of the texels that would+-- normally be averaged. The reduction mode is orthogonal to the+-- minification and magnification filter parameters. The filter parameters+-- are used to identify the set of texels used to produce a final filtered+-- value; the reduction mode identifies how these texels are combined.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the EXT suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceSamplerFilterMinmaxPropertiesEXT'+--+-- -   Extending 'Vulkan.Core10.Sampler.SamplerCreateInfo':+--+--     -   'SamplerReductionModeCreateInfoEXT'+--+-- == New Enums+--+-- -   'SamplerReductionModeEXT'+--+-- == New Enum Constants+--+-- -   'EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME'+--+-- -   'EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':+--+--     -   'FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core12.Enums.SamplerReductionMode.SamplerReductionMode':+--+--     -   'SAMPLER_REDUCTION_MODE_MAX_EXT'+--+--     -   'SAMPLER_REDUCTION_MODE_MIN_EXT'+--+--     -   'SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT'+--+--     -   'STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 2, 2017-05-19 (Piers Daniell)+--+--     -   Renamed to EXT+--+-- -   Revision 1, 2017-03-25 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceSamplerFilterMinmaxPropertiesEXT',+-- 'SamplerReductionModeCreateInfoEXT', 'SamplerReductionModeEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_sampler_filter_minmax Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_sampler_filter_minmax  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT                                                        , pattern STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT                                                        , pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT
src/Vulkan/Extensions/VK_EXT_scalar_block_layout.hs view
@@ -1,4 +1,109 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_scalar_block_layout - device extension+--+-- == VK_EXT_scalar_block_layout+--+-- [__Name String__]+--     @VK_EXT_scalar_block_layout@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     222+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_scalar_block_layout:%20&body=@tobski%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-11-14+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [__Contributors__]+--+--     -   Jeff Bolz+--+--     -   Jan-Harald Fredriksen+--+--     -   Graeme Leese+--+--     -   Jason Ekstrand+--+--     -   John Kessenich+--+-- == Description+--+-- This extension enables C-like structure layout for SPIR-V blocks. It+-- modifies the alignment rules for uniform buffers, storage buffers and+-- push constants, allowing non-scalar types to be aligned solely based on+-- the size of their components, without additional requirements.+--+-- == Promotion to Vulkan 1.2+--+-- Functionality in this extension is included in core Vulkan 1.2, with the+-- EXT suffix omitted. However, if Vulkan 1.2 is supported and this+-- extension is not, the @scalarBlockLayout@ capability is optional. The+-- original type, enum and command names are still available as aliases of+-- the core functionality.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceScalarBlockLayoutFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME'+--+-- -   'EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2018-11-14 (Tobias Hector)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceScalarBlockLayoutFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_scalar_block_layout Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_scalar_block_layout  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT                                                      , PhysicalDeviceScalarBlockLayoutFeaturesEXT                                                      , EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_separate_stencil_usage.hs view
@@ -1,4 +1,99 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_separate_stencil_usage - device extension+--+-- == VK_EXT_separate_stencil_usage+--+-- [__Name String__]+--     @VK_EXT_separate_stencil_usage@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     247+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Daniel Rakos+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_separate_stencil_usage:%20&body=@drakos-amd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-11-08+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Daniel Rakos, AMD+--+--     -   Jordan Logan, AMD+--+-- == Description+--+-- This extension allows specifying separate usage flags for the stencil+-- aspect of images with a depth-stencil format at image creation time.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the EXT suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo',+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2':+--+--     -   'ImageStencilUsageCreateInfoEXT'+--+-- == New Enum Constants+--+-- -   'EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME'+--+-- -   'EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2018-11-08 (Daniel Rakos)+--+--     -   Internal revisions.+--+-- = See Also+--+-- 'ImageStencilUsageCreateInfoEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_separate_stencil_usage Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_separate_stencil_usage  ( pattern STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT                                                         , ImageStencilUsageCreateInfoEXT                                                         , EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_shader_atomic_float.hs view
@@ -1,4 +1,105 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_shader_atomic_float - device extension+--+-- == VK_EXT_shader_atomic_float+--+-- [__Name String__]+--     @VK_EXT_shader_atomic_float@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     261+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Vikram Kushwaha+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_shader_atomic_float:%20&body=@vkushwaha-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-07-15+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_atomic_float_add.html SPV_EXT_shader_atomic_float_add>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/tree/master/extensions/ext/GLSL_EXT_shader_atomic_float.txt GL_EXT_shader_atomic_float>+--+-- [__Contributors__]+--+--     -   Vikram Kushwaha, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension allows a shader to contain floating-point atomic+-- operations on buffer, workgroup, and image memory. It also advertises+-- the SPIR-V @AtomicFloat32AddEXT@ and @AtomicFloat64AddEXT@ capabilities+-- that allows atomic addition on floating-points numbers. The supported+-- operations include @OpAtomicFAddEXT@, @OpAtomicExchange@, @OpAtomicLoad@+-- and @OpAtomicStore@.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderAtomicFloatFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME'+--+-- -   'EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32AddEXT AtomicFloat32AddEXT>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64AddEXT AtomicFloat64AddEXT>+--+-- == Version History+--+-- -   Revision 1, 2020-07-15 (Vikram Kushwaha)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceShaderAtomicFloatFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_atomic_float Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_shader_atomic_float  ( PhysicalDeviceShaderAtomicFloatFeaturesEXT(..)                                                      , EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION                                                      , pattern EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_shader_atomic_float.hs-boot view
@@ -1,4 +1,105 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_shader_atomic_float - device extension+--+-- == VK_EXT_shader_atomic_float+--+-- [__Name String__]+--     @VK_EXT_shader_atomic_float@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     261+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Vikram Kushwaha+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_shader_atomic_float:%20&body=@vkushwaha-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-07-15+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_atomic_float_add.html SPV_EXT_shader_atomic_float_add>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/tree/master/extensions/ext/GLSL_EXT_shader_atomic_float.txt GL_EXT_shader_atomic_float>+--+-- [__Contributors__]+--+--     -   Vikram Kushwaha, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension allows a shader to contain floating-point atomic+-- operations on buffer, workgroup, and image memory. It also advertises+-- the SPIR-V @AtomicFloat32AddEXT@ and @AtomicFloat64AddEXT@ capabilities+-- that allows atomic addition on floating-points numbers. The supported+-- operations include @OpAtomicFAddEXT@, @OpAtomicExchange@, @OpAtomicLoad@+-- and @OpAtomicStore@.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderAtomicFloatFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME'+--+-- -   'EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32AddEXT AtomicFloat32AddEXT>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64AddEXT AtomicFloat64AddEXT>+--+-- == Version History+--+-- -   Revision 1, 2020-07-15 (Vikram Kushwaha)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceShaderAtomicFloatFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_atomic_float Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_shader_atomic_float  (PhysicalDeviceShaderAtomicFloatFeaturesEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs view
@@ -1,4 +1,102 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_shader_demote_to_helper_invocation - device extension+--+-- == VK_EXT_shader_demote_to_helper_invocation+--+-- [__Name String__]+--     @VK_EXT_shader_demote_to_helper_invocation@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     277+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_shader_demote_to_helper_invocation:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-06-01+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_demote_to_helper_invocation.html SPV_EXT_demote_to_helper_invocation>+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension adds Vulkan support for the+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_demote_to_helper_invocation.html SPV_EXT_demote_to_helper_invocation>+-- SPIR-V extension. That SPIR-V extension provides a new instruction+-- @OpDemoteToHelperInvocationEXT@ allowing shaders to \"demote\" a+-- fragment shader invocation to behave like a helper invocation for its+-- duration. The demoted invocation will have no further side effects and+-- will not output to the framebuffer, but remains active and can+-- participate in computing derivatives and in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>.+-- This is a better match for the \"discard\" instruction in HLSL.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME'+--+-- -   'EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT'+--+-- == New SPIR-V Capability+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-demote DemoteToHelperInvocationEXT>+--+-- == Version History+--+-- -   Revision 1, 2019-06-01 (Jeff Bolz)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_demote_to_helper_invocation Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation  ( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(..)                                                                     , EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION                                                                     , pattern EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs-boot view
@@ -1,4 +1,102 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_shader_demote_to_helper_invocation - device extension+--+-- == VK_EXT_shader_demote_to_helper_invocation+--+-- [__Name String__]+--     @VK_EXT_shader_demote_to_helper_invocation@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     277+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_shader_demote_to_helper_invocation:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-06-01+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_demote_to_helper_invocation.html SPV_EXT_demote_to_helper_invocation>+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension adds Vulkan support for the+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_demote_to_helper_invocation.html SPV_EXT_demote_to_helper_invocation>+-- SPIR-V extension. That SPIR-V extension provides a new instruction+-- @OpDemoteToHelperInvocationEXT@ allowing shaders to \"demote\" a+-- fragment shader invocation to behave like a helper invocation for its+-- duration. The demoted invocation will have no further side effects and+-- will not output to the framebuffer, but remains active and can+-- participate in computing derivatives and in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>.+-- This is a better match for the \"discard\" instruction in HLSL.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME'+--+-- -   'EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT'+--+-- == New SPIR-V Capability+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-demote DemoteToHelperInvocationEXT>+--+-- == Version History+--+-- -   Revision 1, 2019-06-01 (Jeff Bolz)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_demote_to_helper_invocation Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation  (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs view
@@ -1,4 +1,113 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_shader_image_atomic_int64 - device extension+--+-- == VK_EXT_shader_image_atomic_int64+--+-- [__Name String__]+--     @VK_EXT_shader_image_atomic_int64@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     235+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_shader_image_atomic_int64:%20&body=@tobski%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-07-14+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus Chajdas, AMD+--+--     -   Graham Wihlidal, Epic Games+--+--     -   Tobias Hector, AMD+--+--     -   Jeff Bolz, Nvidia+--+--     -   Jason Ekstrand, Intel+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires the+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_EXT_shader_image_atomic_int64.html SPV_EXT_shader_image_int64>+--         SPIR-V extension.+--+--     -   This extension requires the+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_shader_image_int64.txt GLSL_EXT_shader_image_int64>+--         extension for GLSL source languages.+--+-- == Description+--+-- This extension extends existing 64-bit integer atomic support to enable+-- these operations on images as well.+--+-- When working with large 2- or 3-dimensional data sets (e.g.+-- rasterization or screen-space effects), image accesses are generally+-- more efficient than equivalent buffer accesses. This extension allows+-- applications relying on 64-bit integer atomics in this manner to quickly+-- improve performance with only relatively minor code changes.+--+-- 64-bit integer atomic support is guaranteed for optimally tiled images+-- with the 'Vulkan.Core10.Enums.Format.FORMAT_R64_UINT' and+-- 'Vulkan.Core10.Enums.Format.FORMAT_R64_SINT' formats.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderImageAtomicInt64FeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME'+--+-- -   'EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2020-07-14 (Tobias Hector)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceShaderImageAtomicInt64FeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_image_atomic_int64 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_shader_image_atomic_int64  ( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT(..)                                                            , EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION                                                            , pattern EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs-boot view
@@ -1,4 +1,113 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_shader_image_atomic_int64 - device extension+--+-- == VK_EXT_shader_image_atomic_int64+--+-- [__Name String__]+--     @VK_EXT_shader_image_atomic_int64@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     235+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_shader_image_atomic_int64:%20&body=@tobski%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-07-14+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus Chajdas, AMD+--+--     -   Graham Wihlidal, Epic Games+--+--     -   Tobias Hector, AMD+--+--     -   Jeff Bolz, Nvidia+--+--     -   Jason Ekstrand, Intel+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires the+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_EXT_shader_image_atomic_int64.html SPV_EXT_shader_image_int64>+--         SPIR-V extension.+--+--     -   This extension requires the+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_shader_image_int64.txt GLSL_EXT_shader_image_int64>+--         extension for GLSL source languages.+--+-- == Description+--+-- This extension extends existing 64-bit integer atomic support to enable+-- these operations on images as well.+--+-- When working with large 2- or 3-dimensional data sets (e.g.+-- rasterization or screen-space effects), image accesses are generally+-- more efficient than equivalent buffer accesses. This extension allows+-- applications relying on 64-bit integer atomics in this manner to quickly+-- improve performance with only relatively minor code changes.+--+-- 64-bit integer atomic support is guaranteed for optimally tiled images+-- with the 'Vulkan.Core10.Enums.Format.FORMAT_R64_UINT' and+-- 'Vulkan.Core10.Enums.Format.FORMAT_R64_SINT' formats.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderImageAtomicInt64FeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME'+--+-- -   'EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2020-07-14 (Tobias Hector)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceShaderImageAtomicInt64FeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_image_atomic_int64 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_shader_image_atomic_int64  (PhysicalDeviceShaderImageAtomicInt64FeaturesEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_shader_stencil_export.hs view
@@ -1,4 +1,86 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_shader_stencil_export - device extension+--+-- == VK_EXT_shader_stencil_export+--+-- [__Name String__]+--     @VK_EXT_shader_stencil_export@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     141+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Dominik Witczak+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_shader_stencil_export:%20&body=@dominikwitczakamd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-07-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_stencil_export.html SPV_EXT_shader_stencil_export>+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_stencil_export.txt GL_ARB_shader_stencil_export>+--+-- [__Contributors__]+--+--     -   Dominik Witczak, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Rex Xu, AMD+--+-- == Description+--+-- This extension adds support for the SPIR-V extension+-- @SPV_EXT_shader_stencil_export@, providing a mechanism whereby a shader+-- may generate the stencil reference value per invocation. When stencil+-- testing is enabled, this allows the test to be performed against the+-- value generated in the shader.+--+-- == New Enum Constants+--+-- -   'EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME'+--+-- -   'EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 1, 2017-07-19 (Dominik Witczak)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_stencil_export Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_shader_stencil_export  ( EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION                                                        , pattern EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION                                                        , EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME
src/Vulkan/Extensions/VK_EXT_shader_subgroup_ballot.hs view
@@ -1,4 +1,184 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_shader_subgroup_ballot - device extension+--+-- == VK_EXT_shader_subgroup_ballot+--+-- [__Name String__]+--     @VK_EXT_shader_subgroup_ballot@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     65+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-new-features Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_shader_subgroup_ballot:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-11-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_shader_ballot.html SPV_KHR_shader_ballot>+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_ballot.txt GL_ARB_shader_ballot>+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Neil Henning, Codeplay+--+--     -   Daniel Koch, NVIDIA Corporation+--+-- == Description+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   @SPV_KHR_shader_ballot@+--+-- This extension provides the ability for a group of invocations, which+-- execute in parallel, to do limited forms of cross-invocation+-- communication via a group broadcast of a invocation value, or broadcast+-- of a bitarray representing a predicate value from each invocation in the+-- group.+--+-- This extension provides access to a number of additional built-in shader+-- variables in Vulkan:+--+-- -   @SubgroupEqMaskKHR@, which contains the subgroup mask of the current+--     subgroup invocation,+--+-- -   @SubgroupGeMaskKHR@, which contains the subgroup mask of the+--     invocations greater than or equal to the current invocation,+--+-- -   @SubgroupGtMaskKHR@, which contains the subgroup mask of the+--     invocations greater than the current invocation,+--+-- -   @SubgroupLeMaskKHR@, which contains the subgroup mask of the+--     invocations less than or equal to the current invocation,+--+-- -   @SubgroupLtMaskKHR@, which contains the subgroup mask of the+--     invocations less than the current invocation,+--+-- -   @SubgroupLocalInvocationId@, which contains the index of an+--     invocation within a subgroup, and+--+-- -   @SubgroupSize@, which contains the maximum number of invocations in+--     a subgroup.+--+-- Additionally, this extension provides access to the new SPIR-V+-- instructions:+--+-- -   @OpSubgroupBallotKHR@,+--+-- -   @OpSubgroupFirstInvocationKHR@, and+--+-- -   @OpSubgroupReadInvocationKHR@,+--+-- When using GLSL source-based shader languages, the following variables+-- and shader functions from GL_ARB_shader_ballot can map to these SPIR-V+-- built-in decorations and instructions:+--+-- -   @in uint64_t gl_SubGroupEqMaskARB;@ → @SubgroupEqMaskKHR@,+--+-- -   @in uint64_t gl_SubGroupGeMaskARB;@ → @SubgroupGeMaskKHR@,+--+-- -   @in uint64_t gl_SubGroupGtMaskARB;@ → @SubgroupGtMaskKHR@,+--+-- -   @in uint64_t gl_SubGroupLeMaskARB;@ → @SubgroupLeMaskKHR@,+--+-- -   @in uint64_t gl_SubGroupLtMaskARB;@ → @SubgroupLtMaskKHR@,+--+-- -   @in uint gl_SubGroupInvocationARB;@ → @SubgroupLocalInvocationId@,+--+-- -   @uniform uint gl_SubGroupSizeARB;@ → @SubgroupSize@,+--+-- -   @ballotARB@() → @OpSubgroupBallotKHR@,+--+-- -   @readFirstInvocationARB@() → @OpSubgroupFirstInvocationKHR@, and+--+-- -   @readInvocationARB@() → @OpSubgroupReadInvocationKHR@.+--+-- == Deprecated by Vulkan 1.2+--+-- Most of the functionality in this extension is superseded by the core+-- Vulkan 1.1+-- <VkPhysicalDeviceSubgroupProperties.html subgroup operations>. However,+-- Vulkan 1.1 required the @OpGroupNonUniformBroadcast@ \"Id\" to be+-- constant. This restriction was removed in Vulkan 1.2 with the addition+-- of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroupBroadcastDynamicId subgroupBroadcastDynamicId>+-- feature.+--+-- == New Enum Constants+--+-- -   'EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME'+--+-- -   'EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION'+--+-- == New Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgeq SubgroupEqMaskKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgge SubgroupGeMaskKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sggt SubgroupGtMaskKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgle SubgroupLeMaskKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sglt SubgroupLtMaskKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgli SubgroupLocalInvocationId>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-subgroupballot SubgroupBallotKHR>+--+-- == Version History+--+-- -   Revision 1, 2016-11-28 (Daniel Koch)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_subgroup_ballot Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_shader_subgroup_ballot  ( EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION                                                         , pattern EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION                                                         , EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME
src/Vulkan/Extensions/VK_EXT_shader_subgroup_vote.hs view
@@ -1,4 +1,168 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_shader_subgroup_vote - device extension+--+-- == VK_EXT_shader_subgroup_vote+--+-- [__Name String__]+--     @VK_EXT_shader_subgroup_vote@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     66+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-new-features Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_shader_subgroup_vote:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-11-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_subgroup_vote.html SPV_KHR_subgroup_vote>+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_group_vote.txt GL_ARB_shader_group_vote>+--+-- [__Contributors__]+--+--     -   Neil Henning, Codeplay+--+--     -   Daniel Koch, NVIDIA Corporation+--+-- == Description+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   @SPV_KHR_subgroup_vote@+--+-- This extension provides new SPIR-V instructions:+--+-- -   @OpSubgroupAllKHR@,+--+-- -   @OpSubgroupAnyKHR@, and+--+-- -   @OpSubgroupAllEqualKHR@.+--+-- to compute the composite of a set of boolean conditions across a group+-- of shader invocations that are running concurrently (a /subgroup/).+-- These composite results may be used to execute shaders more efficiently+-- on a 'Vulkan.Core10.Handles.PhysicalDevice'.+--+-- When using GLSL source-based shader languages, the following shader+-- functions from GL_ARB_shader_group_vote can map to these SPIR-V+-- instructions:+--+-- -   @anyInvocationARB@() → @OpSubgroupAnyKHR@,+--+-- -   @allInvocationsARB@() → @OpSubgroupAllKHR@, and+--+-- -   @allInvocationsEqualARB@() → @OpSubgroupAllEqualKHR@.+--+-- The subgroup across which the boolean conditions are evaluated is+-- implementation-dependent, and this extension provides no guarantee over+-- how individual shader invocations are assigned to subgroups. In+-- particular, a subgroup has no necessary relationship with the compute+-- shader /local workgroup/ — any pair of shader invocations in a compute+-- local workgroup may execute in different subgroups as used by these+-- instructions.+--+-- Compute shaders operate on an explicitly specified group of threads (a+-- local workgroup), but many implementations will also group non-compute+-- shader invocations and execute them concurrently. When executing code+-- like+--+-- > if (condition) {+-- >   result = do_fast_path();+-- > } else {+-- >   result = do_general_path();+-- > }+--+-- where @condition@ diverges between invocations, an implementation might+-- first execute @do_fast_path@() for the invocations where @condition@ is+-- true and leave the other invocations dormant. Once @do_fast_path@()+-- returns, it might call @do_general_path@() for invocations where+-- @condition@ is @false@ and leave the other invocations dormant. In this+-- case, the shader executes __both__ the fast and the general path and+-- might be better off just using the general path for all invocations.+--+-- This extension provides the ability to avoid divergent execution by+-- evaluating a condition across an entire subgroup using code like:+--+-- > if (allInvocationsARB(condition)) {+-- >   result = do_fast_path();+-- > } else {+-- >   result = do_general_path();+-- > }+--+-- The built-in function @allInvocationsARB@() will return the same value+-- for all invocations in the group, so the group will either execute+-- @do_fast_path@() or @do_general_path@(), but never both. For example,+-- shader code might want to evaluate a complex function iteratively by+-- starting with an approximation of the result and then refining the+-- approximation. Some input values may require a small number of+-- iterations to generate an accurate result (@do_fast_path@) while others+-- require a larger number (@do_general_path@). In another example, shader+-- code might want to evaluate a complex function (@do_general_path@) that+-- can be greatly simplified when assuming a specific value for one of its+-- inputs (@do_fast_path@).+--+-- == Deprecated by Vulkan 1.1+--+-- All functionality in this extension is superseded by the core Vulkan 1.1+-- <VkPhysicalDeviceSubgroupProperties.html subgroup operations>.+--+-- == New Enum Constants+--+-- -   'EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME'+--+-- -   'EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-subgroupvote SubgroupVoteKHR>+--+-- == Version History+--+-- -   Revision 1, 2016-11-28 (Daniel Koch)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_subgroup_vote Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_shader_subgroup_vote  ( EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION                                                       , pattern EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION                                                       , EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME
src/Vulkan/Extensions/VK_EXT_shader_viewport_index_layer.hs view
@@ -1,4 +1,149 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_shader_viewport_index_layer - device extension+--+-- == VK_EXT_shader_viewport_index_layer+--+-- [__Name String__]+--     @VK_EXT_shader_viewport_index_layer@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     163+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_shader_viewport_index_layer:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-08-08+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_viewport_index_layer.html SPV_EXT_shader_viewport_index_layer>+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_viewport_layer_array.txt GL_ARB_shader_viewport_layer_array>,+--         <https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_layer.txt GL_AMD_vertex_shader_layer>,+--         <https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_viewport_index.txt GL_AMD_vertex_shader_viewport_index>,+--         and+--         <https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_array2.txt GL_NV_viewport_array2>+--+--     -   This extension requires the @multiViewport@ feature.+--+--     -   This extension interacts with the @tessellationShader@ feature.+--+-- [__Contributors__]+--+--     -   Piers Daniell, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Daniel Rakos, AMD+--+--     -   Slawomir Grajeswki, Intel+--+-- == Description+--+-- This extension adds support for the @ShaderViewportIndexLayerEXT@+-- capability from the @SPV_EXT_shader_viewport_index_layer@ extension in+-- Vulkan.+--+-- This extension allows variables decorated with the @Layer@ and+-- @ViewportIndex@ built-ins to be exported from vertex or tessellation+-- shaders, using the @ShaderViewportIndexLayerEXT@ capability.+--+-- When using GLSL source-based shading languages, the @gl_ViewportIndex@+-- and @gl_Layer@ built-in variables map to the SPIR-V @ViewportIndex@ and+-- @Layer@ built-in decorations, respectively. Behaviour of these variables+-- is extended as described in the @GL_ARB_shader_viewport_layer_array@ (or+-- the precursor @GL_AMD_vertex_shader_layer@,+-- @GL_AMD_vertex_shader_viewport_index@, and @GL_NV_viewport_array2@+-- extensions).+--+-- Note+--+-- The @ShaderViewportIndexLayerEXT@ capability is equivalent to the+-- @ShaderViewportIndexLayerNV@ capability added by+-- @VK_NV_viewport_array2@.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2.+--+-- The single @ShaderViewportIndexLayerEXT@ capability from the+-- @SPV_EXT_shader_viewport_index_layer@ extension is replaced by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-shader-viewport-index ShaderViewportIndex>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-shader-layer ShaderLayer>+-- capabilities from SPIR-V 1.5 which are enabled by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderOutputViewportIndex shaderOutputViewportIndex>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderOutputLayer shaderOutputLayer>+-- features, respectively. Additionally, if Vulkan 1.2 is supported but+-- this extension is not, these capabilities are optional.+--+-- Enabling both features is equivalent to enabling the+-- @VK_EXT_shader_viewport_index_layer@ extension.+--+-- == New Enum Constants+--+-- -   'EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME'+--+-- -   'EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION'+--+-- == New or Modified Built-In Variables+--+-- -   (modified)+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-layer Layer>+--+-- -   (modified)+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-viewportindex ViewportIndex>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-shader-viewport-index-layer ShaderViewportIndexLayerEXT>+--+-- == Version History+--+-- -   Revision 1, 2017-08-08 (Daniel Koch)+--+--     -   Internal drafts+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_viewport_index_layer Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_shader_viewport_index_layer  ( EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION                                                              , pattern EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION                                                              , EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME
src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs view
@@ -1,4 +1,166 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_subgroup_size_control - device extension+--+-- == VK_EXT_subgroup_size_control+--+-- [__Name String__]+--     @VK_EXT_subgroup_size_control@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     226+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+-- [__Contact__]+--+--     -   Neil Henning+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_subgroup_size_control:%20&body=@sheredom%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-03-05+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jason Ekstrand, Intel+--+--     -   Sławek Grajewski, Intel+--+--     -   Jesse Hall, Google+--+--     -   Neil Henning, AMD+--+--     -   Daniel Koch, NVIDIA+--+--     -   Jeff Leger, Qualcomm+--+--     -   Graeme Leese, Broadcom+--+--     -   Allan MacKinnon, Google+--+--     -   Mariusz Merecki, Intel+--+--     -   Graham Wihlidal, Electronic Arts+--+-- == Description+--+-- This extension enables an implementation to control the subgroup size by+-- allowing a varying subgroup size and also specifying a required subgroup+-- size.+--+-- It extends the subgroup support in Vulkan 1.1 to allow an implementation+-- to expose a varying subgroup size. Previously Vulkan exposed a single+-- subgroup size per physical device, with the expectation that+-- implementations will behave as if all subgroups have the same size. Some+-- implementations /may/ dispatch shaders with a varying subgroup size for+-- different subgroups. As a result they could implicitly split a large+-- subgroup into smaller subgroups or represent a small subgroup as a+-- larger subgroup, some of whose invocations were inactive on launch.+--+-- To aid developers in understanding the performance characteristics of+-- their programs, this extension exposes a minimum and maximum subgroup+-- size that a physical device supports and a pipeline create flag to+-- enable that pipeline to vary its subgroup size. If enabled, any+-- @SubgroupSize@ decorated variables in the SPIR-V shader modules provided+-- to pipeline creation /may/ vary between the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-min-subgroup-size minimum>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-size maximum>+-- subgroup sizes.+--+-- An implementation is also optionally allowed to support specifying a+-- required subgroup size for a given pipeline stage. Implementations+-- advertise which+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-required-subgroup-size-stages stages support a required subgroup size>,+-- and any pipeline of a supported stage can be passed a+-- 'PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT' structure to set+-- the subgroup size for that shader stage of the pipeline. For compute+-- shaders, this requires the developer to query the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroups-per-workgroup maxComputeWorkgroupSubgroups>+-- and ensure that:+--+-- \[s = { WorkGroupSize.x \times WorkGroupSize.y \times WorkgroupSize.z \leq SubgroupSize \times maxComputeWorkgroupSubgroups }\]+--+-- Developers can also specify a new pipeline shader stage create flag that+-- requires the implementation to have fully populated subgroups within+-- local workgroups. This requires the workgroup size in the X dimension to+-- be a multiple of the subgroup size.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceSubgroupSizeControlFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceSubgroupSizeControlPropertiesEXT'+--+-- -   Extending 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo':+--+--     -   'PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'+--+-- == New Enum Constants+--+-- -   'EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME'+--+-- -   'EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-03-05 (Neil Henning)+--+--     -   Initial draft+--+-- -   Revision 2, 2019-07-26 (Jason Ekstrand)+--+--     -   Add the missing 'PhysicalDeviceSubgroupSizeControlFeaturesEXT'+--         for querying subgroup size control features.+--+-- = See Also+--+-- 'PhysicalDeviceSubgroupSizeControlFeaturesEXT',+-- 'PhysicalDeviceSubgroupSizeControlPropertiesEXT',+-- 'PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_subgroup_size_control Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_subgroup_size_control  ( PhysicalDeviceSubgroupSizeControlFeaturesEXT(..)                                                        , PhysicalDeviceSubgroupSizeControlPropertiesEXT(..)                                                        , PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(..)
src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs-boot view
@@ -1,4 +1,166 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_subgroup_size_control - device extension+--+-- == VK_EXT_subgroup_size_control+--+-- [__Name String__]+--     @VK_EXT_subgroup_size_control@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     226+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+-- [__Contact__]+--+--     -   Neil Henning+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_subgroup_size_control:%20&body=@sheredom%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-03-05+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jason Ekstrand, Intel+--+--     -   Sławek Grajewski, Intel+--+--     -   Jesse Hall, Google+--+--     -   Neil Henning, AMD+--+--     -   Daniel Koch, NVIDIA+--+--     -   Jeff Leger, Qualcomm+--+--     -   Graeme Leese, Broadcom+--+--     -   Allan MacKinnon, Google+--+--     -   Mariusz Merecki, Intel+--+--     -   Graham Wihlidal, Electronic Arts+--+-- == Description+--+-- This extension enables an implementation to control the subgroup size by+-- allowing a varying subgroup size and also specifying a required subgroup+-- size.+--+-- It extends the subgroup support in Vulkan 1.1 to allow an implementation+-- to expose a varying subgroup size. Previously Vulkan exposed a single+-- subgroup size per physical device, with the expectation that+-- implementations will behave as if all subgroups have the same size. Some+-- implementations /may/ dispatch shaders with a varying subgroup size for+-- different subgroups. As a result they could implicitly split a large+-- subgroup into smaller subgroups or represent a small subgroup as a+-- larger subgroup, some of whose invocations were inactive on launch.+--+-- To aid developers in understanding the performance characteristics of+-- their programs, this extension exposes a minimum and maximum subgroup+-- size that a physical device supports and a pipeline create flag to+-- enable that pipeline to vary its subgroup size. If enabled, any+-- @SubgroupSize@ decorated variables in the SPIR-V shader modules provided+-- to pipeline creation /may/ vary between the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-min-subgroup-size minimum>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-size maximum>+-- subgroup sizes.+--+-- An implementation is also optionally allowed to support specifying a+-- required subgroup size for a given pipeline stage. Implementations+-- advertise which+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-required-subgroup-size-stages stages support a required subgroup size>,+-- and any pipeline of a supported stage can be passed a+-- 'PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT' structure to set+-- the subgroup size for that shader stage of the pipeline. For compute+-- shaders, this requires the developer to query the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroups-per-workgroup maxComputeWorkgroupSubgroups>+-- and ensure that:+--+-- \[s = { WorkGroupSize.x \times WorkGroupSize.y \times WorkgroupSize.z \leq SubgroupSize \times maxComputeWorkgroupSubgroups }\]+--+-- Developers can also specify a new pipeline shader stage create flag that+-- requires the implementation to have fully populated subgroups within+-- local workgroups. This requires the workgroup size in the X dimension to+-- be a multiple of the subgroup size.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceSubgroupSizeControlFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceSubgroupSizeControlPropertiesEXT'+--+-- -   Extending 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo':+--+--     -   'PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'+--+-- == New Enum Constants+--+-- -   'EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME'+--+-- -   'EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-03-05 (Neil Henning)+--+--     -   Initial draft+--+-- -   Revision 2, 2019-07-26 (Jason Ekstrand)+--+--     -   Add the missing 'PhysicalDeviceSubgroupSizeControlFeaturesEXT'+--         for querying subgroup size control features.+--+-- = See Also+--+-- 'PhysicalDeviceSubgroupSizeControlFeaturesEXT',+-- 'PhysicalDeviceSubgroupSizeControlPropertiesEXT',+-- 'PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_subgroup_size_control Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_subgroup_size_control  ( PhysicalDeviceSubgroupSizeControlFeaturesEXT                                                        , PhysicalDeviceSubgroupSizeControlPropertiesEXT                                                        , PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
src/Vulkan/Extensions/VK_EXT_swapchain_colorspace.hs view
@@ -1,4 +1,140 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_swapchain_colorspace - instance extension+--+-- == VK_EXT_swapchain_colorspace+--+-- [__Name String__]+--     @VK_EXT_swapchain_colorspace@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     105+--+-- [__Revision__]+--     4+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Courtney Goeltzenleuchter+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_swapchain_colorspace:%20&body=@courtney-g%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-04-26+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Courtney Goeltzenleuchter, Google+--+-- == Description+--+-- To be done.+--+-- == New Enum Constants+--+-- -   'EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME'+--+-- -   'EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Extensions.VK_KHR_surface.ColorSpaceKHR':+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_ADOBERGB_LINEAR_EXT'+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_ADOBERGB_NONLINEAR_EXT'+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_BT2020_LINEAR_EXT'+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_BT709_LINEAR_EXT'+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_BT709_NONLINEAR_EXT'+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_DCI_P3_NONLINEAR_EXT'+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_DISPLAY_P3_LINEAR_EXT'+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT'+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_DOLBYVISION_EXT'+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT'+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT'+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_HDR10_HLG_EXT'+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_HDR10_ST2084_EXT'+--+--     -   'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_PASS_THROUGH_EXT'+--+-- == Issues+--+-- 1) Does the spec need to specify which kinds of image formats support+-- the color spaces?+--+-- __RESOLVED__: Pixel format is independent of color space (though some+-- color spaces really want \/ need floating point color components to be+-- useful). Therefore, do not plan on documenting what formats support+-- which colorspaces. An application /can/ call+-- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceFormatsKHR' to+-- query what a particular implementation supports.+--+-- 2) How does application determine if HW supports appropriate transfer+-- function for a colorspace?+--+-- __RESOLVED__: Extension indicates that implementation /must/ not do the+-- OETF encoding if it is not sRGB. That responsibility falls to the+-- application shaders. Any other native OETF \/ EOTF functions supported+-- by an implementation can be described by separate extension.+--+-- == Version History+--+-- -   Revision 1, 2016-12-27 (Courtney Goeltzenleuchter)+--+--     -   Initial version+--+-- -   Revision 2, 2017-01-19 (Courtney Goeltzenleuchter)+--+--     -   Add pass through and multiple options for BT2020.+--+--     -   Clean up some issues with equations not displaying properly.+--+-- -   Revision 3, 2017-06-23 (Courtney Goeltzenleuchter)+--+--     -   Add extended sRGB non-linear enum.+--+-- -   Revision 4, 2019-04-26 (Graeme Leese)+--+--     -   Clarify colorspace transfer function usage.+--+--     -   Refer to normative definitions in the Data Format Specification.+--+--     -   Clarify DCI-P3 and Display P3 usage.+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_swapchain_colorspace Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_swapchain_colorspace  ( pattern COLOR_SPACE_DCI_P3_LINEAR_EXT                                                       , EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION                                                       , pattern EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs view
@@ -1,4 +1,95 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_texel_buffer_alignment - device extension+--+-- == VK_EXT_texel_buffer_alignment+--+-- [__Name String__]+--     @VK_EXT_texel_buffer_alignment@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     282+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_texel_buffer_alignment:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-06-06+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__; __Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension adds more expressive alignment requirements for uniform+-- and storage texel buffers. Some implementations have single texel+-- alignment requirements that can’t be expressed via+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minTexelBufferOffsetAlignment@.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceTexelBufferAlignmentFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceTexelBufferAlignmentPropertiesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME'+--+-- -   'EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-06-06 (Jeff Bolz)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceTexelBufferAlignmentFeaturesEXT',+-- 'PhysicalDeviceTexelBufferAlignmentPropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_texel_buffer_alignment Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_texel_buffer_alignment  ( PhysicalDeviceTexelBufferAlignmentFeaturesEXT(..)                                                         , PhysicalDeviceTexelBufferAlignmentPropertiesEXT(..)                                                         , EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs-boot view
@@ -1,4 +1,95 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_texel_buffer_alignment - device extension+--+-- == VK_EXT_texel_buffer_alignment+--+-- [__Name String__]+--     @VK_EXT_texel_buffer_alignment@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     282+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_texel_buffer_alignment:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-06-06+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__; __Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension adds more expressive alignment requirements for uniform+-- and storage texel buffers. Some implementations have single texel+-- alignment requirements that can’t be expressed via+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minTexelBufferOffsetAlignment@.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceTexelBufferAlignmentFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceTexelBufferAlignmentPropertiesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME'+--+-- -   'EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-06-06 (Jeff Bolz)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceTexelBufferAlignmentFeaturesEXT',+-- 'PhysicalDeviceTexelBufferAlignmentPropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_texel_buffer_alignment Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_texel_buffer_alignment  ( PhysicalDeviceTexelBufferAlignmentFeaturesEXT                                                         , PhysicalDeviceTexelBufferAlignmentPropertiesEXT                                                         ) where
src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs view
@@ -1,4 +1,145 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_texture_compression_astc_hdr - device extension+--+-- == VK_EXT_texture_compression_astc_hdr+--+-- [__Name String__]+--     @VK_EXT_texture_compression_astc_hdr@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     67+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jan-Harald Fredriksen+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_texture_compression_astc_hdr:%20&body=@janharaldfredriksen-arm%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-05-28+--+-- [__IP Status__]+--     No known issues.+--+-- [__Contributors__]+--+--     -   Jan-Harald Fredriksen, Arm+--+-- == Description+--+-- This extension adds support for textures compressed using the Adaptive+-- Scalable Texture Compression (ASTC) High Dynamic Range (HDR) profile.+--+-- When this extension is enabled, the HDR profile is supported for all+-- ASTC formats listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-astc ASTC Compressed Image Formats>.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME'+--+-- -   'EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT'+--+-- == Issues+--+-- 1) Should we add a feature or limit for this functionality?+--+-- Yes. It is consistent with the ASTC LDR support to add a feature like+-- textureCompressionASTC_HDR.+--+-- The feature is strictly speaking redundant as long as this is just an+-- extension; it would be sufficient to just enable the extension. But+-- adding the feature is more forward-looking if wanted to make this an+-- optional core feature in the future.+--+-- 2) Should we introduce new format enums for HDR?+--+-- Yes. Vulkan 1.0 describes the ASTC format enums as UNORM, e.g.+-- 'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_UNORM_BLOCK', so it’s+-- confusing to make these contain HDR data. Note that the OpenGL (ES)+-- extensions did not make this distinction because a single ASTC HDR+-- texture may contain both unorm and float blocks. Implementations /may/+-- not be able to distinguish between LDR and HDR ASTC textures internally+-- and just treat them as the same format, i.e. if this extension is+-- supported then sampling from a+-- 'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_UNORM_BLOCK' image format+-- /may/ return HDR results. Applications /can/ get predictable results by+-- using the appropriate image format.+--+-- == Version History+--+-- -   Revision 1, 2019-05-28 (Jan-Harald Fredriksen)+--+--     -   Initial version+--+-- = See Also+--+-- 'PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_texture_compression_astc_hdr Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr  ( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(..)                                                               , EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION                                                               , pattern EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs-boot view
@@ -1,4 +1,145 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_texture_compression_astc_hdr - device extension+--+-- == VK_EXT_texture_compression_astc_hdr+--+-- [__Name String__]+--     @VK_EXT_texture_compression_astc_hdr@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     67+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jan-Harald Fredriksen+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_texture_compression_astc_hdr:%20&body=@janharaldfredriksen-arm%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-05-28+--+-- [__IP Status__]+--     No known issues.+--+-- [__Contributors__]+--+--     -   Jan-Harald Fredriksen, Arm+--+-- == Description+--+-- This extension adds support for textures compressed using the Adaptive+-- Scalable Texture Compression (ASTC) High Dynamic Range (HDR) profile.+--+-- When this extension is enabled, the HDR profile is supported for all+-- ASTC formats listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-astc ASTC Compressed Image Formats>.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME'+--+-- -   'EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT'+--+-- == Issues+--+-- 1) Should we add a feature or limit for this functionality?+--+-- Yes. It is consistent with the ASTC LDR support to add a feature like+-- textureCompressionASTC_HDR.+--+-- The feature is strictly speaking redundant as long as this is just an+-- extension; it would be sufficient to just enable the extension. But+-- adding the feature is more forward-looking if wanted to make this an+-- optional core feature in the future.+--+-- 2) Should we introduce new format enums for HDR?+--+-- Yes. Vulkan 1.0 describes the ASTC format enums as UNORM, e.g.+-- 'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_UNORM_BLOCK', so it’s+-- confusing to make these contain HDR data. Note that the OpenGL (ES)+-- extensions did not make this distinction because a single ASTC HDR+-- texture may contain both unorm and float blocks. Implementations /may/+-- not be able to distinguish between LDR and HDR ASTC textures internally+-- and just treat them as the same format, i.e. if this extension is+-- supported then sampling from a+-- 'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_UNORM_BLOCK' image format+-- /may/ return HDR results. Applications /can/ get predictable results by+-- using the appropriate image format.+--+-- == Version History+--+-- -   Revision 1, 2019-05-28 (Jan-Harald Fredriksen)+--+--     -   Initial version+--+-- = See Also+--+-- 'PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_texture_compression_astc_hdr Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr  (PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_tooling_info.hs view
@@ -1,6 +1,175 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_tooling_info - device extension+--+-- == VK_EXT_tooling_info+--+-- [__Name String__]+--     @VK_EXT_tooling_info@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     246+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_tooling_info:%20&body=@tobski%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-11-05+--+-- [__Contributors__]+--+--     -   Rolando Caloca+--+--     -   Matthaeus Chajdas+--+--     -   Baldur Karlsson+--+--     -   Daniel Rakos+--+-- == Description+--+-- When an error occurs during application development, a common question+-- is \"What tools are actually running right now?\" This extension adds+-- the ability to query that information directly from the Vulkan+-- implementation.+--+-- Outdated versions of one tool might not play nicely with another, or+-- perhaps a tool is not actually running when it should have been. Trying+-- to figure that out can cause headaches as it is necessary to consult+-- each known tool to figure out what is going on — in some cases the tool+-- might not even be known.+--+-- Typically, the expectation is that developers will simply print out this+-- information for visual inspection when an issue occurs, however a small+-- amount of semantic information about what the tool is doing is provided+-- to help identify it programmatically. For example, if the advertised+-- limits or features of an implementation are unexpected, is there a tool+-- active which modifies these limits? Or if an application is providing+-- debug markers, but the implementation is not actually doing anything+-- with that information, this can quickly point that out.+--+-- == New Commands+--+-- -   'getPhysicalDeviceToolPropertiesEXT'+--+-- == New Structures+--+-- -   'PhysicalDeviceToolPropertiesEXT'+--+-- == New Enums+--+-- -   'ToolPurposeFlagBitsEXT'+--+-- == New Bitmasks+--+-- -   'ToolPurposeFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_TOOLING_INFO_EXTENSION_NAME'+--+-- -   'EXT_TOOLING_INFO_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_marker VK_EXT_debug_marker>+-- is supported:+--+-- -   Extending 'ToolPurposeFlagBitsEXT':+--+--     -   'TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_report VK_EXT_debug_report>+-- is supported:+--+-- -   Extending 'ToolPurposeFlagBitsEXT':+--+--     -   'TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils VK_EXT_debug_utils>+-- is supported:+--+-- -   Extending 'ToolPurposeFlagBitsEXT':+--+--     -   'TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT'+--+--     -   'TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT'+--+-- == Examples+--+-- __Printing Tool Information__+--+-- > uint32_t num_tools;+-- > VkPhysicalDeviceToolPropertiesEXT *pToolProperties;+-- > vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, &num_tools, NULL);+-- >+-- > pToolProperties = (VkPhysicalDeviceToolPropertiesEXT*)malloc(sizeof(VkPhysicalDeviceToolPropertiesEXT) * num_tools);+-- >+-- > vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, &num_tools, pToolProperties);+-- >+-- > for (int i = 0; i < num_tools; ++i) {+-- >     printf("%s:\n", pToolProperties[i].name);+-- >     printf("Version:\n");+-- >     printf("%s:\n", pToolProperties[i].version);+-- >     printf("Description:\n");+-- >     printf("\t%s\n", pToolProperties[i].description);+-- >     printf("Purposes:\n");+-- >     printf("\t%s\n", VkToolPurposeFlagBitsEXT_to_string(pToolProperties[i].purposes));+-- >     if (strnlen_s(pToolProperties[i].layer,VK_MAX_EXTENSION_NAME_SIZE) > 0) {+-- >         printf("Corresponding Layer:\n");+-- >         printf("\t%s\n", pToolProperties[i].layer);+-- >     }+-- > }+--+-- == Issues+--+-- 1) Why is this information separate from the layer mechanism?+--+-- Some tooling may be built into a driver, or be part of the Vulkan loader+-- etc. - and so tying this information directly to layers would’ve been+-- awkward at best.+--+-- == Version History+--+-- -   Revision 1, 2018-11-05 (Tobias Hector)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceToolPropertiesEXT', 'ToolPurposeFlagBitsEXT',+-- 'ToolPurposeFlagsEXT', 'getPhysicalDeviceToolPropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_tooling_info Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_tooling_info  ( getPhysicalDeviceToolPropertiesEXT                                               , PhysicalDeviceToolPropertiesEXT(..)+                                              , ToolPurposeFlagsEXT                                               , ToolPurposeFlagBitsEXT( TOOL_PURPOSE_VALIDATION_BIT_EXT                                                                       , TOOL_PURPOSE_PROFILING_BIT_EXT                                                                       , TOOL_PURPOSE_TRACING_BIT_EXT@@ -10,7 +179,6 @@                                                                       , TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT                                                                       , ..                                                                       )-                                              , ToolPurposeFlagsEXT                                               , EXT_TOOLING_INFO_SPEC_VERSION                                               , pattern EXT_TOOLING_INFO_SPEC_VERSION                                               , EXT_TOOLING_INFO_EXTENSION_NAME@@ -18,6 +186,8 @@                                               ) where  import Vulkan.CStruct.Utils (FixedArray)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -29,15 +199,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.ByteString (packCString) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT)@@ -58,8 +221,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.ByteString (ByteString) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))@@ -248,6 +411,8 @@            mempty  +type ToolPurposeFlagsEXT = ToolPurposeFlagBitsEXT+ -- | VkToolPurposeFlagBitsEXT - Bitmask specifying the purposes of an active -- tool --@@ -259,14 +424,14 @@  -- | 'TOOL_PURPOSE_VALIDATION_BIT_EXT' specifies that the tool provides -- validation of API usage.-pattern TOOL_PURPOSE_VALIDATION_BIT_EXT = ToolPurposeFlagBitsEXT 0x00000001+pattern TOOL_PURPOSE_VALIDATION_BIT_EXT          = ToolPurposeFlagBitsEXT 0x00000001 -- | 'TOOL_PURPOSE_PROFILING_BIT_EXT' specifies that the tool provides -- profiling of API usage.-pattern TOOL_PURPOSE_PROFILING_BIT_EXT = ToolPurposeFlagBitsEXT 0x00000002+pattern TOOL_PURPOSE_PROFILING_BIT_EXT           = ToolPurposeFlagBitsEXT 0x00000002 -- | 'TOOL_PURPOSE_TRACING_BIT_EXT' specifies that the tool is capturing data -- about the application’s API usage, including anything from simple -- logging to capturing data for later replay.-pattern TOOL_PURPOSE_TRACING_BIT_EXT = ToolPurposeFlagBitsEXT 0x00000004+pattern TOOL_PURPOSE_TRACING_BIT_EXT             = ToolPurposeFlagBitsEXT 0x00000004 -- | 'TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT' specifies that the tool -- provides additional API features\/extensions on top of the underlying -- implementation.@@ -274,7 +439,7 @@ -- | 'TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT' specifies that the tool -- modifies the API features\/limits\/extensions presented to the -- application.-pattern TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = ToolPurposeFlagBitsEXT 0x00000010+pattern TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT  = ToolPurposeFlagBitsEXT 0x00000010 -- | 'TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT' specifies that the tool consumes -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-debug-markers debug markers> -- or@@ -282,39 +447,42 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-queue-labels queue labels>, -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-command-buffer-labels command buffer labels>-pattern TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = ToolPurposeFlagBitsEXT 0x00000040+pattern TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT       = ToolPurposeFlagBitsEXT 0x00000040 -- | 'TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT' specifies that the tool reports -- additional information to the application via callbacks specified by -- 'Vulkan.Extensions.VK_EXT_debug_report.createDebugReportCallbackEXT' or -- 'Vulkan.Extensions.VK_EXT_debug_utils.createDebugUtilsMessengerEXT'-pattern TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = ToolPurposeFlagBitsEXT 0x00000020+pattern TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT     = ToolPurposeFlagBitsEXT 0x00000020 -type ToolPurposeFlagsEXT = ToolPurposeFlagBitsEXT+conNameToolPurposeFlagBitsEXT :: String+conNameToolPurposeFlagBitsEXT = "ToolPurposeFlagBitsEXT" +enumPrefixToolPurposeFlagBitsEXT :: String+enumPrefixToolPurposeFlagBitsEXT = "TOOL_PURPOSE_"++showTableToolPurposeFlagBitsEXT :: [(ToolPurposeFlagBitsEXT, String)]+showTableToolPurposeFlagBitsEXT =+  [ (TOOL_PURPOSE_VALIDATION_BIT_EXT         , "VALIDATION_BIT_EXT")+  , (TOOL_PURPOSE_PROFILING_BIT_EXT          , "PROFILING_BIT_EXT")+  , (TOOL_PURPOSE_TRACING_BIT_EXT            , "TRACING_BIT_EXT")+  , (TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT, "ADDITIONAL_FEATURES_BIT_EXT")+  , (TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT , "MODIFYING_FEATURES_BIT_EXT")+  , (TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT      , "DEBUG_MARKERS_BIT_EXT")+  , (TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT    , "DEBUG_REPORTING_BIT_EXT")+  ]+ instance Show ToolPurposeFlagBitsEXT where-  showsPrec p = \case-    TOOL_PURPOSE_VALIDATION_BIT_EXT -> showString "TOOL_PURPOSE_VALIDATION_BIT_EXT"-    TOOL_PURPOSE_PROFILING_BIT_EXT -> showString "TOOL_PURPOSE_PROFILING_BIT_EXT"-    TOOL_PURPOSE_TRACING_BIT_EXT -> showString "TOOL_PURPOSE_TRACING_BIT_EXT"-    TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT -> showString "TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT"-    TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT -> showString "TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT"-    TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT -> showString "TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"-    TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT -> showString "TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"-    ToolPurposeFlagBitsEXT x -> showParen (p >= 11) (showString "ToolPurposeFlagBitsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixToolPurposeFlagBitsEXT+                            showTableToolPurposeFlagBitsEXT+                            conNameToolPurposeFlagBitsEXT+                            (\(ToolPurposeFlagBitsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ToolPurposeFlagBitsEXT where-  readPrec = parens (choose [("TOOL_PURPOSE_VALIDATION_BIT_EXT", pure TOOL_PURPOSE_VALIDATION_BIT_EXT)-                            , ("TOOL_PURPOSE_PROFILING_BIT_EXT", pure TOOL_PURPOSE_PROFILING_BIT_EXT)-                            , ("TOOL_PURPOSE_TRACING_BIT_EXT", pure TOOL_PURPOSE_TRACING_BIT_EXT)-                            , ("TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT", pure TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT)-                            , ("TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT", pure TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT)-                            , ("TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT", pure TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT)-                            , ("TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT", pure TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ToolPurposeFlagBitsEXT")-                       v <- step readPrec-                       pure (ToolPurposeFlagBitsEXT v)))+  readPrec = enumReadPrec enumPrefixToolPurposeFlagBitsEXT+                          showTableToolPurposeFlagBitsEXT+                          conNameToolPurposeFlagBitsEXT+                          ToolPurposeFlagBitsEXT   type EXT_TOOLING_INFO_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_EXT_tooling_info.hs-boot view
@@ -1,4 +1,172 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_tooling_info - device extension+--+-- == VK_EXT_tooling_info+--+-- [__Name String__]+--     @VK_EXT_tooling_info@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     246+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_tooling_info:%20&body=@tobski%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-11-05+--+-- [__Contributors__]+--+--     -   Rolando Caloca+--+--     -   Matthaeus Chajdas+--+--     -   Baldur Karlsson+--+--     -   Daniel Rakos+--+-- == Description+--+-- When an error occurs during application development, a common question+-- is \"What tools are actually running right now?\" This extension adds+-- the ability to query that information directly from the Vulkan+-- implementation.+--+-- Outdated versions of one tool might not play nicely with another, or+-- perhaps a tool is not actually running when it should have been. Trying+-- to figure that out can cause headaches as it is necessary to consult+-- each known tool to figure out what is going on — in some cases the tool+-- might not even be known.+--+-- Typically, the expectation is that developers will simply print out this+-- information for visual inspection when an issue occurs, however a small+-- amount of semantic information about what the tool is doing is provided+-- to help identify it programmatically. For example, if the advertised+-- limits or features of an implementation are unexpected, is there a tool+-- active which modifies these limits? Or if an application is providing+-- debug markers, but the implementation is not actually doing anything+-- with that information, this can quickly point that out.+--+-- == New Commands+--+-- -   'getPhysicalDeviceToolPropertiesEXT'+--+-- == New Structures+--+-- -   'PhysicalDeviceToolPropertiesEXT'+--+-- == New Enums+--+-- -   'ToolPurposeFlagBitsEXT'+--+-- == New Bitmasks+--+-- -   'ToolPurposeFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_TOOLING_INFO_EXTENSION_NAME'+--+-- -   'EXT_TOOLING_INFO_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_marker VK_EXT_debug_marker>+-- is supported:+--+-- -   Extending 'ToolPurposeFlagBitsEXT':+--+--     -   'TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_report VK_EXT_debug_report>+-- is supported:+--+-- -   Extending 'ToolPurposeFlagBitsEXT':+--+--     -   'TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils VK_EXT_debug_utils>+-- is supported:+--+-- -   Extending 'ToolPurposeFlagBitsEXT':+--+--     -   'TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT'+--+--     -   'TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT'+--+-- == Examples+--+-- __Printing Tool Information__+--+-- > uint32_t num_tools;+-- > VkPhysicalDeviceToolPropertiesEXT *pToolProperties;+-- > vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, &num_tools, NULL);+-- >+-- > pToolProperties = (VkPhysicalDeviceToolPropertiesEXT*)malloc(sizeof(VkPhysicalDeviceToolPropertiesEXT) * num_tools);+-- >+-- > vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, &num_tools, pToolProperties);+-- >+-- > for (int i = 0; i < num_tools; ++i) {+-- >     printf("%s:\n", pToolProperties[i].name);+-- >     printf("Version:\n");+-- >     printf("%s:\n", pToolProperties[i].version);+-- >     printf("Description:\n");+-- >     printf("\t%s\n", pToolProperties[i].description);+-- >     printf("Purposes:\n");+-- >     printf("\t%s\n", VkToolPurposeFlagBitsEXT_to_string(pToolProperties[i].purposes));+-- >     if (strnlen_s(pToolProperties[i].layer,VK_MAX_EXTENSION_NAME_SIZE) > 0) {+-- >         printf("Corresponding Layer:\n");+-- >         printf("\t%s\n", pToolProperties[i].layer);+-- >     }+-- > }+--+-- == Issues+--+-- 1) Why is this information separate from the layer mechanism?+--+-- Some tooling may be built into a driver, or be part of the Vulkan loader+-- etc. - and so tying this information directly to layers would’ve been+-- awkward at best.+--+-- == Version History+--+-- -   Revision 1, 2018-11-05 (Tobias Hector)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceToolPropertiesEXT', 'ToolPurposeFlagBitsEXT',+-- 'ToolPurposeFlagsEXT', 'getPhysicalDeviceToolPropertiesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_tooling_info Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_tooling_info  (PhysicalDeviceToolPropertiesEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_transform_feedback.hs view
@@ -1,4 +1,237 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_transform_feedback - device extension+--+-- == VK_EXT_transform_feedback+--+-- [__Name String__]+--     @VK_EXT_transform_feedback@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     29+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Special Uses__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse OpenGL \/ ES support>+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse D3D support>+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_transform_feedback:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-10-09+--+-- [__Contributors__]+--+--     -   Baldur Karlsson, Valve+--+--     -   Boris Zanin, Mobica+--+--     -   Daniel Rakos, AMD+--+--     -   Donald Scorgie, Imagination+--+--     -   Henri Verbeet, CodeWeavers+--+--     -   Jan-Harald Fredriksen, Arm+--+--     -   Jason Ekstrand, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jesse Barker, Unity+--+--     -   Jesse Hall, Google+--+--     -   Pierre-Loup Griffais, Valve+--+--     -   Philip Rebohle, DXVK+--+--     -   Ruihao Zhang, Qualcomm+--+--     -   Samuel Pitoiset, Valve+--+--     -   Slawomir Grajewski, Intel+--+--     -   Stu Smith, Imagination Technologies+--+-- == Description+--+-- This extension adds transform feedback to the Vulkan API by exposing the+-- SPIR-V @TransformFeedback@ and @GeometryStreams@ capabilities to capture+-- vertex, tessellation or geometry shader outputs to one or more buffers.+-- It adds API functionality to bind transform feedback buffers to capture+-- the primitives emitted by the graphics pipeline from SPIR-V outputs+-- decorated for transform feedback. The transform feedback capture can be+-- paused and resumed by way of storing and retrieving a byte counter. The+-- captured data can be drawn again where the vertex count is derived from+-- the byte counter without CPU intervention. If the implementation is+-- capable, a vertex stream other than zero can be rasterized.+--+-- All these features are designed to match the full capabilities of OpenGL+-- core transform feedback functionality and beyond. Many of the features+-- are optional to allow base OpenGL ES GPUs to also implement this+-- extension.+--+-- The primary purpose of the functionality exposed by this extension is to+-- support translation layers from other 3D APIs. This functionality is not+-- considered forward looking, and is not expected to be promoted to a KHR+-- extension or to core Vulkan. Unless this is needed for translation, it+-- is recommended that developers use alternative techniques of using the+-- GPU to process and capture vertex data.+--+-- == New Commands+--+-- -   'cmdBeginQueryIndexedEXT'+--+-- -   'cmdBeginTransformFeedbackEXT'+--+-- -   'cmdBindTransformFeedbackBuffersEXT'+--+-- -   'cmdDrawIndirectByteCountEXT'+--+-- -   'cmdEndQueryIndexedEXT'+--+-- -   'cmdEndTransformFeedbackEXT'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceTransformFeedbackFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceTransformFeedbackPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':+--+--     -   'PipelineRasterizationStateStreamCreateInfoEXT'+--+-- == New Bitmasks+--+-- -   'PipelineRasterizationStateStreamCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME'+--+-- -   'EXT_TRANSFORM_FEEDBACK_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':+--+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT'+--+-- == Issues+--+-- 1) Should we include pause\/resume functionality?+--+-- __RESOLVED__: Yes, this is needed to ease layering other APIs which have+-- this functionality. To pause use 'cmdEndTransformFeedbackEXT' and+-- provide valid buffer handles in the @pCounterBuffers@ array and offsets+-- in the @pCounterBufferOffsets@ array for the implementation to save the+-- resume points. Then to resume use 'cmdBeginTransformFeedbackEXT' with+-- the previous @pCounterBuffers@ and @pCounterBufferOffsets@ values.+-- Between the pause and resume there needs to be a memory barrier for the+-- counter buffers with a source access of+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'+-- at pipeline stage+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'+-- to a destination access of+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'+-- at pipeline stage+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'.+--+-- 2) How does this interact with multiview?+--+-- __RESOLVED__: Transform feedback cannot be made active in a render pass+-- with multiview enabled.+--+-- 3) How should queries be done?+--+-- __RESOLVED__: There is a new query type+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'.+-- A query pool created with this type will capture 2 integers -+-- numPrimitivesWritten and numPrimitivesNeeded - for the specified vertex+-- stream output from the last vertex processing stage. The vertex stream+-- output queried is zero by default, but can be specified with the new+-- 'cmdBeginQueryIndexedEXT' and 'cmdEndQueryIndexedEXT' commands.+--+-- == Version History+--+-- -   Revision 1, 2018-10-09 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceTransformFeedbackFeaturesEXT',+-- 'PhysicalDeviceTransformFeedbackPropertiesEXT',+-- 'PipelineRasterizationStateStreamCreateFlagsEXT',+-- 'PipelineRasterizationStateStreamCreateInfoEXT',+-- 'cmdBeginQueryIndexedEXT', 'cmdBeginTransformFeedbackEXT',+-- 'cmdBindTransformFeedbackBuffersEXT', 'cmdDrawIndirectByteCountEXT',+-- 'cmdEndQueryIndexedEXT', 'cmdEndTransformFeedbackEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_transform_feedback  ( cmdBindTransformFeedbackBuffersEXT                                                     , cmdBeginTransformFeedbackEXT                                                     , cmdUseTransformFeedbackEXT@@ -17,6 +250,8 @@                                                     , pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME                                                     ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -24,15 +259,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import qualified Data.Vector (imapM_)@@ -53,8 +281,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)@@ -1780,17 +2008,27 @@   +conNamePipelineRasterizationStateStreamCreateFlagsEXT :: String+conNamePipelineRasterizationStateStreamCreateFlagsEXT = "PipelineRasterizationStateStreamCreateFlagsEXT"++enumPrefixPipelineRasterizationStateStreamCreateFlagsEXT :: String+enumPrefixPipelineRasterizationStateStreamCreateFlagsEXT = ""++showTablePipelineRasterizationStateStreamCreateFlagsEXT :: [(PipelineRasterizationStateStreamCreateFlagsEXT, String)]+showTablePipelineRasterizationStateStreamCreateFlagsEXT = []+ instance Show PipelineRasterizationStateStreamCreateFlagsEXT where-  showsPrec p = \case-    PipelineRasterizationStateStreamCreateFlagsEXT x -> showParen (p >= 11) (showString "PipelineRasterizationStateStreamCreateFlagsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineRasterizationStateStreamCreateFlagsEXT+                            showTablePipelineRasterizationStateStreamCreateFlagsEXT+                            conNamePipelineRasterizationStateStreamCreateFlagsEXT+                            (\(PipelineRasterizationStateStreamCreateFlagsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineRasterizationStateStreamCreateFlagsEXT where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineRasterizationStateStreamCreateFlagsEXT")-                       v <- step readPrec-                       pure (PipelineRasterizationStateStreamCreateFlagsEXT v)))+  readPrec = enumReadPrec enumPrefixPipelineRasterizationStateStreamCreateFlagsEXT+                          showTablePipelineRasterizationStateStreamCreateFlagsEXT+                          conNamePipelineRasterizationStateStreamCreateFlagsEXT+                          PipelineRasterizationStateStreamCreateFlagsEXT   type EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_EXT_transform_feedback.hs-boot view
@@ -1,4 +1,237 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_transform_feedback - device extension+--+-- == VK_EXT_transform_feedback+--+-- [__Name String__]+--     @VK_EXT_transform_feedback@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     29+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Special Uses__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse OpenGL \/ ES support>+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse D3D support>+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_transform_feedback:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-10-09+--+-- [__Contributors__]+--+--     -   Baldur Karlsson, Valve+--+--     -   Boris Zanin, Mobica+--+--     -   Daniel Rakos, AMD+--+--     -   Donald Scorgie, Imagination+--+--     -   Henri Verbeet, CodeWeavers+--+--     -   Jan-Harald Fredriksen, Arm+--+--     -   Jason Ekstrand, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jesse Barker, Unity+--+--     -   Jesse Hall, Google+--+--     -   Pierre-Loup Griffais, Valve+--+--     -   Philip Rebohle, DXVK+--+--     -   Ruihao Zhang, Qualcomm+--+--     -   Samuel Pitoiset, Valve+--+--     -   Slawomir Grajewski, Intel+--+--     -   Stu Smith, Imagination Technologies+--+-- == Description+--+-- This extension adds transform feedback to the Vulkan API by exposing the+-- SPIR-V @TransformFeedback@ and @GeometryStreams@ capabilities to capture+-- vertex, tessellation or geometry shader outputs to one or more buffers.+-- It adds API functionality to bind transform feedback buffers to capture+-- the primitives emitted by the graphics pipeline from SPIR-V outputs+-- decorated for transform feedback. The transform feedback capture can be+-- paused and resumed by way of storing and retrieving a byte counter. The+-- captured data can be drawn again where the vertex count is derived from+-- the byte counter without CPU intervention. If the implementation is+-- capable, a vertex stream other than zero can be rasterized.+--+-- All these features are designed to match the full capabilities of OpenGL+-- core transform feedback functionality and beyond. Many of the features+-- are optional to allow base OpenGL ES GPUs to also implement this+-- extension.+--+-- The primary purpose of the functionality exposed by this extension is to+-- support translation layers from other 3D APIs. This functionality is not+-- considered forward looking, and is not expected to be promoted to a KHR+-- extension or to core Vulkan. Unless this is needed for translation, it+-- is recommended that developers use alternative techniques of using the+-- GPU to process and capture vertex data.+--+-- == New Commands+--+-- -   'cmdBeginQueryIndexedEXT'+--+-- -   'cmdBeginTransformFeedbackEXT'+--+-- -   'cmdBindTransformFeedbackBuffersEXT'+--+-- -   'cmdDrawIndirectByteCountEXT'+--+-- -   'cmdEndQueryIndexedEXT'+--+-- -   'cmdEndTransformFeedbackEXT'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceTransformFeedbackFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceTransformFeedbackPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':+--+--     -   'PipelineRasterizationStateStreamCreateInfoEXT'+--+-- == New Bitmasks+--+-- -   'PipelineRasterizationStateStreamCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME'+--+-- -   'EXT_TRANSFORM_FEEDBACK_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT'+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':+--+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT'+--+-- == Issues+--+-- 1) Should we include pause\/resume functionality?+--+-- __RESOLVED__: Yes, this is needed to ease layering other APIs which have+-- this functionality. To pause use 'cmdEndTransformFeedbackEXT' and+-- provide valid buffer handles in the @pCounterBuffers@ array and offsets+-- in the @pCounterBufferOffsets@ array for the implementation to save the+-- resume points. Then to resume use 'cmdBeginTransformFeedbackEXT' with+-- the previous @pCounterBuffers@ and @pCounterBufferOffsets@ values.+-- Between the pause and resume there needs to be a memory barrier for the+-- counter buffers with a source access of+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'+-- at pipeline stage+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'+-- to a destination access of+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'+-- at pipeline stage+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'.+--+-- 2) How does this interact with multiview?+--+-- __RESOLVED__: Transform feedback cannot be made active in a render pass+-- with multiview enabled.+--+-- 3) How should queries be done?+--+-- __RESOLVED__: There is a new query type+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'.+-- A query pool created with this type will capture 2 integers -+-- numPrimitivesWritten and numPrimitivesNeeded - for the specified vertex+-- stream output from the last vertex processing stage. The vertex stream+-- output queried is zero by default, but can be specified with the new+-- 'cmdBeginQueryIndexedEXT' and 'cmdEndQueryIndexedEXT' commands.+--+-- == Version History+--+-- -   Revision 1, 2018-10-09 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceTransformFeedbackFeaturesEXT',+-- 'PhysicalDeviceTransformFeedbackPropertiesEXT',+-- 'PipelineRasterizationStateStreamCreateFlagsEXT',+-- 'PipelineRasterizationStateStreamCreateInfoEXT',+-- 'cmdBeginQueryIndexedEXT', 'cmdBeginTransformFeedbackEXT',+-- 'cmdBindTransformFeedbackBuffersEXT', 'cmdDrawIndirectByteCountEXT',+-- 'cmdEndQueryIndexedEXT', 'cmdEndTransformFeedbackEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_transform_feedback  ( PhysicalDeviceTransformFeedbackFeaturesEXT                                                     , PhysicalDeviceTransformFeedbackPropertiesEXT                                                     , PipelineRasterizationStateStreamCreateInfoEXT
src/Vulkan/Extensions/VK_EXT_validation_cache.hs view
@@ -1,4 +1,127 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_validation_cache - device extension+--+-- == VK_EXT_validation_cache+--+-- [__Name String__]+--     @VK_EXT_validation_cache@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     161+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Cort Stratton+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_validation_cache:%20&body=@cdwfs%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-08-29+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Cort Stratton, Google+--+--     -   Chris Forbes, Google+--+-- == Description+--+-- This extension provides a mechanism for caching the results of+-- potentially expensive internal validation operations across multiple+-- runs of a Vulkan application. At the core is the+-- 'Vulkan.Extensions.Handles.ValidationCacheEXT' object type, which is+-- managed similarly to the existing 'Vulkan.Core10.Handles.PipelineCache'.+--+-- The new struct 'ShaderModuleValidationCacheCreateInfoEXT' can be+-- included in the @pNext@ chain at+-- 'Vulkan.Core10.Shader.createShaderModule' time. It contains a+-- 'Vulkan.Extensions.Handles.ValidationCacheEXT' to use when validating+-- the 'Vulkan.Core10.Handles.ShaderModule'.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.ValidationCacheEXT'+--+-- == New Commands+--+-- -   'createValidationCacheEXT'+--+-- -   'destroyValidationCacheEXT'+--+-- -   'getValidationCacheDataEXT'+--+-- -   'mergeValidationCachesEXT'+--+-- == New Structures+--+-- -   'ValidationCacheCreateInfoEXT'+--+-- -   Extending 'Vulkan.Core10.Shader.ShaderModuleCreateInfo':+--+--     -   'ShaderModuleValidationCacheCreateInfoEXT'+--+-- == New Enums+--+-- -   'ValidationCacheHeaderVersionEXT'+--+-- == New Bitmasks+--+-- -   'ValidationCacheCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_VALIDATION_CACHE_EXTENSION_NAME'+--+-- -   'EXT_VALIDATION_CACHE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_VALIDATION_CACHE_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2017-08-29 (Cort Stratton)+--+--     -   Initial draft+--+-- = See Also+--+-- 'ShaderModuleValidationCacheCreateInfoEXT',+-- 'ValidationCacheCreateFlagsEXT', 'ValidationCacheCreateInfoEXT',+-- 'Vulkan.Extensions.Handles.ValidationCacheEXT',+-- 'ValidationCacheHeaderVersionEXT', 'createValidationCacheEXT',+-- 'destroyValidationCacheEXT', 'getValidationCacheDataEXT',+-- 'mergeValidationCachesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_cache Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_validation_cache  ( createValidationCacheEXT                                                   , withValidationCacheEXT                                                   , destroyValidationCacheEXT@@ -17,6 +140,8 @@                                                   , ValidationCacheEXT(..)                                                   ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -29,16 +154,9 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import GHC.Show (showsPrec) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.ByteString (packCStringLen) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT)@@ -64,9 +182,9 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32) import Data.Word (Word64)-import Text.Read.Lex (Lexeme(Ident)) import Data.ByteString (ByteString) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))@@ -201,10 +319,10 @@ -- -- To ensure that 'destroyValidationCacheEXT' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withValidationCacheEXT :: forall io r . MonadIO io => Device -> ValidationCacheCreateInfoEXT -> Maybe AllocationCallbacks -> (io (ValidationCacheEXT) -> ((ValidationCacheEXT) -> io ()) -> r) -> r+withValidationCacheEXT :: forall io r . MonadIO io => Device -> ValidationCacheCreateInfoEXT -> Maybe AllocationCallbacks -> (io ValidationCacheEXT -> (ValidationCacheEXT -> io ()) -> r) -> r withValidationCacheEXT device pCreateInfo pAllocator b =   b (createValidationCacheEXT device pCreateInfo pAllocator)     (\(o0) -> destroyValidationCacheEXT device o0 pAllocator)@@ -667,17 +785,27 @@   +conNameValidationCacheCreateFlagsEXT :: String+conNameValidationCacheCreateFlagsEXT = "ValidationCacheCreateFlagsEXT"++enumPrefixValidationCacheCreateFlagsEXT :: String+enumPrefixValidationCacheCreateFlagsEXT = ""++showTableValidationCacheCreateFlagsEXT :: [(ValidationCacheCreateFlagsEXT, String)]+showTableValidationCacheCreateFlagsEXT = []+ instance Show ValidationCacheCreateFlagsEXT where-  showsPrec p = \case-    ValidationCacheCreateFlagsEXT x -> showParen (p >= 11) (showString "ValidationCacheCreateFlagsEXT 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixValidationCacheCreateFlagsEXT+                            showTableValidationCacheCreateFlagsEXT+                            conNameValidationCacheCreateFlagsEXT+                            (\(ValidationCacheCreateFlagsEXT x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ValidationCacheCreateFlagsEXT where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "ValidationCacheCreateFlagsEXT")-                       v <- step readPrec-                       pure (ValidationCacheCreateFlagsEXT v)))+  readPrec = enumReadPrec enumPrefixValidationCacheCreateFlagsEXT+                          showTableValidationCacheCreateFlagsEXT+                          conNameValidationCacheCreateFlagsEXT+                          ValidationCacheCreateFlagsEXT   -- | VkValidationCacheHeaderVersionEXT - Encode validation cache version@@ -694,18 +822,27 @@ pattern VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = ValidationCacheHeaderVersionEXT 1 {-# complete VALIDATION_CACHE_HEADER_VERSION_ONE_EXT :: ValidationCacheHeaderVersionEXT #-} +conNameValidationCacheHeaderVersionEXT :: String+conNameValidationCacheHeaderVersionEXT = "ValidationCacheHeaderVersionEXT"++enumPrefixValidationCacheHeaderVersionEXT :: String+enumPrefixValidationCacheHeaderVersionEXT = "VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"++showTableValidationCacheHeaderVersionEXT :: [(ValidationCacheHeaderVersionEXT, String)]+showTableValidationCacheHeaderVersionEXT = [(VALIDATION_CACHE_HEADER_VERSION_ONE_EXT, "")]+ instance Show ValidationCacheHeaderVersionEXT where-  showsPrec p = \case-    VALIDATION_CACHE_HEADER_VERSION_ONE_EXT -> showString "VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"-    ValidationCacheHeaderVersionEXT x -> showParen (p >= 11) (showString "ValidationCacheHeaderVersionEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixValidationCacheHeaderVersionEXT+                            showTableValidationCacheHeaderVersionEXT+                            conNameValidationCacheHeaderVersionEXT+                            (\(ValidationCacheHeaderVersionEXT x) -> x)+                            (showsPrec 11)  instance Read ValidationCacheHeaderVersionEXT where-  readPrec = parens (choose [("VALIDATION_CACHE_HEADER_VERSION_ONE_EXT", pure VALIDATION_CACHE_HEADER_VERSION_ONE_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ValidationCacheHeaderVersionEXT")-                       v <- step readPrec-                       pure (ValidationCacheHeaderVersionEXT v)))+  readPrec = enumReadPrec enumPrefixValidationCacheHeaderVersionEXT+                          showTableValidationCacheHeaderVersionEXT+                          conNameValidationCacheHeaderVersionEXT+                          ValidationCacheHeaderVersionEXT   type EXT_VALIDATION_CACHE_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_EXT_validation_cache.hs-boot view
@@ -1,4 +1,127 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_validation_cache - device extension+--+-- == VK_EXT_validation_cache+--+-- [__Name String__]+--     @VK_EXT_validation_cache@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     161+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Cort Stratton+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_validation_cache:%20&body=@cdwfs%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-08-29+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Cort Stratton, Google+--+--     -   Chris Forbes, Google+--+-- == Description+--+-- This extension provides a mechanism for caching the results of+-- potentially expensive internal validation operations across multiple+-- runs of a Vulkan application. At the core is the+-- 'Vulkan.Extensions.Handles.ValidationCacheEXT' object type, which is+-- managed similarly to the existing 'Vulkan.Core10.Handles.PipelineCache'.+--+-- The new struct 'ShaderModuleValidationCacheCreateInfoEXT' can be+-- included in the @pNext@ chain at+-- 'Vulkan.Core10.Shader.createShaderModule' time. It contains a+-- 'Vulkan.Extensions.Handles.ValidationCacheEXT' to use when validating+-- the 'Vulkan.Core10.Handles.ShaderModule'.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.ValidationCacheEXT'+--+-- == New Commands+--+-- -   'createValidationCacheEXT'+--+-- -   'destroyValidationCacheEXT'+--+-- -   'getValidationCacheDataEXT'+--+-- -   'mergeValidationCachesEXT'+--+-- == New Structures+--+-- -   'ValidationCacheCreateInfoEXT'+--+-- -   Extending 'Vulkan.Core10.Shader.ShaderModuleCreateInfo':+--+--     -   'ShaderModuleValidationCacheCreateInfoEXT'+--+-- == New Enums+--+-- -   'ValidationCacheHeaderVersionEXT'+--+-- == New Bitmasks+--+-- -   'ValidationCacheCreateFlagsEXT'+--+-- == New Enum Constants+--+-- -   'EXT_VALIDATION_CACHE_EXTENSION_NAME'+--+-- -   'EXT_VALIDATION_CACHE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_VALIDATION_CACHE_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT'+--+-- == Version History+--+-- -   Revision 1, 2017-08-29 (Cort Stratton)+--+--     -   Initial draft+--+-- = See Also+--+-- 'ShaderModuleValidationCacheCreateInfoEXT',+-- 'ValidationCacheCreateFlagsEXT', 'ValidationCacheCreateInfoEXT',+-- 'Vulkan.Extensions.Handles.ValidationCacheEXT',+-- 'ValidationCacheHeaderVersionEXT', 'createValidationCacheEXT',+-- 'destroyValidationCacheEXT', 'getValidationCacheDataEXT',+-- 'mergeValidationCachesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_cache Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_validation_cache  ( ShaderModuleValidationCacheCreateInfoEXT                                                   , ValidationCacheCreateInfoEXT                                                   ) where
src/Vulkan/Extensions/VK_EXT_validation_features.hs view
@@ -1,4 +1,127 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_validation_features - instance extension+--+-- == VK_EXT_validation_features+--+-- [__Name String__]+--     @VK_EXT_validation_features@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     248+--+-- [__Revision__]+--     4+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Debugging tools>+--+-- [__Contact__]+--+--     -   Karl Schultz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_validation_features:%20&body=@karl-lunarg%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-11-14+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Karl Schultz, LunarG+--+--     -   Dave Houlton, LunarG+--+--     -   Mark Lobodzinski, LunarG+--+--     -   Camden Stocker, LunarG+--+--     -   Tony Barbour, LunarG+--+--     -   John Zulauf, LunarG+--+-- == Description+--+-- This extension provides the 'ValidationFeaturesEXT' struct that can be+-- included in the @pNext@ chain of the+-- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure passed+-- as the @pCreateInfo@ parameter of+-- 'Vulkan.Core10.DeviceInitialization.createInstance'. The structure+-- contains an array of 'ValidationFeatureEnableEXT' enum values that+-- enable specific validation features that are disabled by default. The+-- structure also contains an array of 'ValidationFeatureDisableEXT' enum+-- values that disable specific validation layer features that are enabled+-- by default.+--+-- Note+--+-- The @VK_EXT_validation_features@ extension subsumes all the+-- functionality provided in the @VK_EXT_validation_flags@ extension.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo':+--+--     -   'ValidationFeaturesEXT'+--+-- == New Enums+--+-- -   'ValidationFeatureDisableEXT'+--+-- -   'ValidationFeatureEnableEXT'+--+-- == New Enum Constants+--+-- -   'EXT_VALIDATION_FEATURES_EXTENSION_NAME'+--+-- -   'EXT_VALIDATION_FEATURES_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VALIDATION_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2018-11-14 (Karl Schultz)+--+--     -   Initial revision+--+-- -   Revision 2, 2019-08-06 (Mark Lobodzinski)+--+--     -   Add Best Practices enable+--+-- -   Revision 3, 2020-03-04 (Tony Barbour)+--+--     -   Add Debug Printf enable+--+-- -   Revision 4, 2020-07-29 (John Zulauf)+--+--     -   Add Synchronization Validation enable+--+-- = See Also+--+-- 'ValidationFeatureDisableEXT', 'ValidationFeatureEnableEXT',+-- 'ValidationFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_features Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_validation_features  ( ValidationFeaturesEXT(..)                                                      , ValidationFeatureEnableEXT( VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT                                                                                  , VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT@@ -22,18 +145,12 @@                                                      , pattern EXT_VALIDATION_FEATURES_EXTENSION_NAME                                                      ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Data.Vector (generateM)@@ -48,8 +165,8 @@ import Data.Int (Int32) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)@@ -171,7 +288,7 @@ -- validation is enabled. Activating this feature instruments shader -- programs to generate additional diagnostic data. This feature is -- disabled by default.-pattern VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = ValidationFeatureEnableEXT 0+pattern VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT                      = ValidationFeatureEnableEXT 0 -- | 'VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT' -- specifies that the validation layers reserve a descriptor set binding -- slot for their own use. The layer reports a value for@@ -186,44 +303,51 @@ -- the output of warnings related to common misuse of the API, but which -- are not explicitly prohibited by the specification. This feature is -- disabled by default.-pattern VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = ValidationFeatureEnableEXT 2+pattern VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT                    = ValidationFeatureEnableEXT 2 -- | 'VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT' specifies that the layers -- will process @debugPrintfEXT@ operations in shaders and send the -- resulting output to the debug callback. This feature is disabled by -- default.-pattern VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = ValidationFeatureEnableEXT 3+pattern VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT                      = ValidationFeatureEnableEXT 3 -- | 'VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT' specifies -- that Vulkan synchronization validation is enabled. This feature reports -- resource access conflicts due to missing or incorrect synchronization -- operations between actions (Draw, Copy, Dispatch, Blit) reading or -- writing the same regions of memory. This feature is disabled by default.-pattern VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = ValidationFeatureEnableEXT 4+pattern VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT        = ValidationFeatureEnableEXT 4 {-# complete VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT,              VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT,              VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT,              VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT,              VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT :: ValidationFeatureEnableEXT #-} +conNameValidationFeatureEnableEXT :: String+conNameValidationFeatureEnableEXT = "ValidationFeatureEnableEXT"++enumPrefixValidationFeatureEnableEXT :: String+enumPrefixValidationFeatureEnableEXT = "VALIDATION_FEATURE_ENABLE_"++showTableValidationFeatureEnableEXT :: [(ValidationFeatureEnableEXT, String)]+showTableValidationFeatureEnableEXT =+  [ (VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT                     , "GPU_ASSISTED_EXT")+  , (VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT, "GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT")+  , (VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT                   , "BEST_PRACTICES_EXT")+  , (VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT                     , "DEBUG_PRINTF_EXT")+  , (VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT       , "SYNCHRONIZATION_VALIDATION_EXT")+  ]+ instance Show ValidationFeatureEnableEXT where-  showsPrec p = \case-    VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT -> showString "VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT"-    VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT -> showString "VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT"-    VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT -> showString "VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT"-    VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT -> showString "VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT"-    VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT -> showString "VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT"-    ValidationFeatureEnableEXT x -> showParen (p >= 11) (showString "ValidationFeatureEnableEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixValidationFeatureEnableEXT+                            showTableValidationFeatureEnableEXT+                            conNameValidationFeatureEnableEXT+                            (\(ValidationFeatureEnableEXT x) -> x)+                            (showsPrec 11)  instance Read ValidationFeatureEnableEXT where-  readPrec = parens (choose [("VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT", pure VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT)-                            , ("VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT", pure VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT)-                            , ("VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT", pure VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT)-                            , ("VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT", pure VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT)-                            , ("VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT", pure VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ValidationFeatureEnableEXT")-                       v <- step readPrec-                       pure (ValidationFeatureEnableEXT v)))+  readPrec = enumReadPrec enumPrefixValidationFeatureEnableEXT+                          showTableValidationFeatureEnableEXT+                          conNameValidationFeatureEnableEXT+                          ValidationFeatureEnableEXT   -- | VkValidationFeatureDisableEXT - Specify validation features to disable@@ -236,16 +360,16 @@  -- | 'VALIDATION_FEATURE_DISABLE_ALL_EXT' specifies that all validation -- checks are disabled.-pattern VALIDATION_FEATURE_DISABLE_ALL_EXT = ValidationFeatureDisableEXT 0+pattern VALIDATION_FEATURE_DISABLE_ALL_EXT              = ValidationFeatureDisableEXT 0 -- | 'VALIDATION_FEATURE_DISABLE_SHADERS_EXT' specifies that shader -- validation is disabled. This feature is enabled by default.-pattern VALIDATION_FEATURE_DISABLE_SHADERS_EXT = ValidationFeatureDisableEXT 1+pattern VALIDATION_FEATURE_DISABLE_SHADERS_EXT          = ValidationFeatureDisableEXT 1 -- | 'VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT' specifies that thread -- safety validation is disabled. This feature is enabled by default.-pattern VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = ValidationFeatureDisableEXT 2+pattern VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT    = ValidationFeatureDisableEXT 2 -- | 'VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT' specifies that stateless -- parameter validation is disabled. This feature is enabled by default.-pattern VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = ValidationFeatureDisableEXT 3+pattern VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT   = ValidationFeatureDisableEXT 3 -- | 'VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT' specifies that object -- lifetime validation is disabled. This feature is enabled by default. pattern VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = ValidationFeatureDisableEXT 4@@ -253,11 +377,11 @@ -- validation checks are disabled. This feature is enabled by default. If -- this feature is disabled, the shader validation and GPU-assisted -- validation features are also disabled.-pattern VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = ValidationFeatureDisableEXT 5+pattern VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT      = ValidationFeatureDisableEXT 5 -- | 'VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT' specifies that -- protection against duplicate non-dispatchable object handles is -- disabled. This feature is enabled by default.-pattern VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = ValidationFeatureDisableEXT 6+pattern VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT   = ValidationFeatureDisableEXT 6 {-# complete VALIDATION_FEATURE_DISABLE_ALL_EXT,              VALIDATION_FEATURE_DISABLE_SHADERS_EXT,              VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT,@@ -266,30 +390,35 @@              VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT,              VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT :: ValidationFeatureDisableEXT #-} +conNameValidationFeatureDisableEXT :: String+conNameValidationFeatureDisableEXT = "ValidationFeatureDisableEXT"++enumPrefixValidationFeatureDisableEXT :: String+enumPrefixValidationFeatureDisableEXT = "VALIDATION_FEATURE_DISABLE_"++showTableValidationFeatureDisableEXT :: [(ValidationFeatureDisableEXT, String)]+showTableValidationFeatureDisableEXT =+  [ (VALIDATION_FEATURE_DISABLE_ALL_EXT             , "ALL_EXT")+  , (VALIDATION_FEATURE_DISABLE_SHADERS_EXT         , "SHADERS_EXT")+  , (VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT   , "THREAD_SAFETY_EXT")+  , (VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT  , "API_PARAMETERS_EXT")+  , (VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT, "OBJECT_LIFETIMES_EXT")+  , (VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT     , "CORE_CHECKS_EXT")+  , (VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT  , "UNIQUE_HANDLES_EXT")+  ]+ instance Show ValidationFeatureDisableEXT where-  showsPrec p = \case-    VALIDATION_FEATURE_DISABLE_ALL_EXT -> showString "VALIDATION_FEATURE_DISABLE_ALL_EXT"-    VALIDATION_FEATURE_DISABLE_SHADERS_EXT -> showString "VALIDATION_FEATURE_DISABLE_SHADERS_EXT"-    VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT -> showString "VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT"-    VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT -> showString "VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT"-    VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT -> showString "VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT"-    VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT -> showString "VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT"-    VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT -> showString "VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT"-    ValidationFeatureDisableEXT x -> showParen (p >= 11) (showString "ValidationFeatureDisableEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixValidationFeatureDisableEXT+                            showTableValidationFeatureDisableEXT+                            conNameValidationFeatureDisableEXT+                            (\(ValidationFeatureDisableEXT x) -> x)+                            (showsPrec 11)  instance Read ValidationFeatureDisableEXT where-  readPrec = parens (choose [("VALIDATION_FEATURE_DISABLE_ALL_EXT", pure VALIDATION_FEATURE_DISABLE_ALL_EXT)-                            , ("VALIDATION_FEATURE_DISABLE_SHADERS_EXT", pure VALIDATION_FEATURE_DISABLE_SHADERS_EXT)-                            , ("VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT", pure VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT)-                            , ("VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT", pure VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT)-                            , ("VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT", pure VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT)-                            , ("VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT", pure VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT)-                            , ("VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT", pure VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ValidationFeatureDisableEXT")-                       v <- step readPrec-                       pure (ValidationFeatureDisableEXT v)))+  readPrec = enumReadPrec enumPrefixValidationFeatureDisableEXT+                          showTableValidationFeatureDisableEXT+                          conNameValidationFeatureDisableEXT+                          ValidationFeatureDisableEXT   type EXT_VALIDATION_FEATURES_SPEC_VERSION = 4
src/Vulkan/Extensions/VK_EXT_validation_features.hs-boot view
@@ -1,4 +1,127 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_validation_features - instance extension+--+-- == VK_EXT_validation_features+--+-- [__Name String__]+--     @VK_EXT_validation_features@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     248+--+-- [__Revision__]+--     4+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Debugging tools>+--+-- [__Contact__]+--+--     -   Karl Schultz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_validation_features:%20&body=@karl-lunarg%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-11-14+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Karl Schultz, LunarG+--+--     -   Dave Houlton, LunarG+--+--     -   Mark Lobodzinski, LunarG+--+--     -   Camden Stocker, LunarG+--+--     -   Tony Barbour, LunarG+--+--     -   John Zulauf, LunarG+--+-- == Description+--+-- This extension provides the 'ValidationFeaturesEXT' struct that can be+-- included in the @pNext@ chain of the+-- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure passed+-- as the @pCreateInfo@ parameter of+-- 'Vulkan.Core10.DeviceInitialization.createInstance'. The structure+-- contains an array of 'ValidationFeatureEnableEXT' enum values that+-- enable specific validation features that are disabled by default. The+-- structure also contains an array of 'ValidationFeatureDisableEXT' enum+-- values that disable specific validation layer features that are enabled+-- by default.+--+-- Note+--+-- The @VK_EXT_validation_features@ extension subsumes all the+-- functionality provided in the @VK_EXT_validation_flags@ extension.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo':+--+--     -   'ValidationFeaturesEXT'+--+-- == New Enums+--+-- -   'ValidationFeatureDisableEXT'+--+-- -   'ValidationFeatureEnableEXT'+--+-- == New Enum Constants+--+-- -   'EXT_VALIDATION_FEATURES_EXTENSION_NAME'+--+-- -   'EXT_VALIDATION_FEATURES_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VALIDATION_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2018-11-14 (Karl Schultz)+--+--     -   Initial revision+--+-- -   Revision 2, 2019-08-06 (Mark Lobodzinski)+--+--     -   Add Best Practices enable+--+-- -   Revision 3, 2020-03-04 (Tony Barbour)+--+--     -   Add Debug Printf enable+--+-- -   Revision 4, 2020-07-29 (John Zulauf)+--+--     -   Add Synchronization Validation enable+--+-- = See Also+--+-- 'ValidationFeatureDisableEXT', 'ValidationFeatureEnableEXT',+-- 'ValidationFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_features Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_validation_features  (ValidationFeaturesEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_validation_flags.hs view
@@ -1,4 +1,109 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_validation_flags - instance extension+--+-- == VK_EXT_validation_flags+--+-- [__Name String__]+--     @VK_EXT_validation_flags@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     62+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_EXT_validation_features@ extension+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Debugging tools>+--+-- [__Contact__]+--+--     -   Tobin Ehlis+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_validation_flags:%20&body=@tobine%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-08-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Tobin Ehlis, Google+--+--     -   Courtney Goeltzenleuchter, Google+--+-- == Description+--+-- This extension provides the 'ValidationFlagsEXT' struct that can be+-- included in the @pNext@ chain of the+-- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure passed+-- as the @pCreateInfo@ parameter of+-- 'Vulkan.Core10.DeviceInitialization.createInstance'. The structure+-- contains an array of 'ValidationCheckEXT' values that will be disabled+-- by the validation layers.+--+-- == Deprecation by @VK_EXT_validation_features@+--+-- Functionality in this extension is subsumed into the+-- @VK_EXT_validation_features@ extension.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo':+--+--     -   'ValidationFlagsEXT'+--+-- == New Enums+--+-- -   'ValidationCheckEXT'+--+-- == New Enum Constants+--+-- -   'EXT_VALIDATION_FLAGS_EXTENSION_NAME'+--+-- -   'EXT_VALIDATION_FLAGS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VALIDATION_FLAGS_EXT'+--+-- == Version History+--+-- -   Revision 2, 2019-08-19 (Mark Lobodzinski)+--+--     -   Marked as deprecated+--+-- -   Revision 1, 2016-08-26 (Courtney Goeltzenleuchter)+--+--     -   Initial draft+--+-- = See Also+--+-- 'ValidationCheckEXT', 'ValidationFlagsEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_flags Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_validation_flags  ( ValidationFlagsEXT(..)                                                   , ValidationCheckEXT( VALIDATION_CHECK_ALL_EXT                                                                       , VALIDATION_CHECK_SHADERS_EXT@@ -10,18 +115,12 @@                                                   , pattern EXT_VALIDATION_FLAGS_EXTENSION_NAME                                                   ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Data.Vector (generateM)@@ -36,8 +135,8 @@ import Data.Int (Int32) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)@@ -116,27 +215,32 @@  -- | 'VALIDATION_CHECK_ALL_EXT' specifies that all validation checks are -- disabled.-pattern VALIDATION_CHECK_ALL_EXT = ValidationCheckEXT 0+pattern VALIDATION_CHECK_ALL_EXT     = ValidationCheckEXT 0 -- | 'VALIDATION_CHECK_SHADERS_EXT' specifies that shader validation is -- disabled. pattern VALIDATION_CHECK_SHADERS_EXT = ValidationCheckEXT 1 {-# complete VALIDATION_CHECK_ALL_EXT,              VALIDATION_CHECK_SHADERS_EXT :: ValidationCheckEXT #-} +conNameValidationCheckEXT :: String+conNameValidationCheckEXT = "ValidationCheckEXT"++enumPrefixValidationCheckEXT :: String+enumPrefixValidationCheckEXT = "VALIDATION_CHECK_"++showTableValidationCheckEXT :: [(ValidationCheckEXT, String)]+showTableValidationCheckEXT = [(VALIDATION_CHECK_ALL_EXT, "ALL_EXT"), (VALIDATION_CHECK_SHADERS_EXT, "SHADERS_EXT")]+ instance Show ValidationCheckEXT where-  showsPrec p = \case-    VALIDATION_CHECK_ALL_EXT -> showString "VALIDATION_CHECK_ALL_EXT"-    VALIDATION_CHECK_SHADERS_EXT -> showString "VALIDATION_CHECK_SHADERS_EXT"-    ValidationCheckEXT x -> showParen (p >= 11) (showString "ValidationCheckEXT " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixValidationCheckEXT+                            showTableValidationCheckEXT+                            conNameValidationCheckEXT+                            (\(ValidationCheckEXT x) -> x)+                            (showsPrec 11)  instance Read ValidationCheckEXT where-  readPrec = parens (choose [("VALIDATION_CHECK_ALL_EXT", pure VALIDATION_CHECK_ALL_EXT)-                            , ("VALIDATION_CHECK_SHADERS_EXT", pure VALIDATION_CHECK_SHADERS_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ValidationCheckEXT")-                       v <- step readPrec-                       pure (ValidationCheckEXT v)))+  readPrec =+    enumReadPrec enumPrefixValidationCheckEXT showTableValidationCheckEXT conNameValidationCheckEXT ValidationCheckEXT   type EXT_VALIDATION_FLAGS_SPEC_VERSION = 2
src/Vulkan/Extensions/VK_EXT_validation_flags.hs-boot view
@@ -1,4 +1,109 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_validation_flags - instance extension+--+-- == VK_EXT_validation_flags+--+-- [__Name String__]+--     @VK_EXT_validation_flags@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     62+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_EXT_validation_features@ extension+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Debugging tools>+--+-- [__Contact__]+--+--     -   Tobin Ehlis+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_validation_flags:%20&body=@tobine%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-08-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Tobin Ehlis, Google+--+--     -   Courtney Goeltzenleuchter, Google+--+-- == Description+--+-- This extension provides the 'ValidationFlagsEXT' struct that can be+-- included in the @pNext@ chain of the+-- 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo' structure passed+-- as the @pCreateInfo@ parameter of+-- 'Vulkan.Core10.DeviceInitialization.createInstance'. The structure+-- contains an array of 'ValidationCheckEXT' values that will be disabled+-- by the validation layers.+--+-- == Deprecation by @VK_EXT_validation_features@+--+-- Functionality in this extension is subsumed into the+-- @VK_EXT_validation_features@ extension.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.DeviceInitialization.InstanceCreateInfo':+--+--     -   'ValidationFlagsEXT'+--+-- == New Enums+--+-- -   'ValidationCheckEXT'+--+-- == New Enum Constants+--+-- -   'EXT_VALIDATION_FLAGS_EXTENSION_NAME'+--+-- -   'EXT_VALIDATION_FLAGS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VALIDATION_FLAGS_EXT'+--+-- == Version History+--+-- -   Revision 2, 2019-08-19 (Mark Lobodzinski)+--+--     -   Marked as deprecated+--+-- -   Revision 1, 2016-08-26 (Courtney Goeltzenleuchter)+--+--     -   Initial draft+--+-- = See Also+--+-- 'ValidationCheckEXT', 'ValidationFlagsEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_flags Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_validation_flags  (ValidationFlagsEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs view
@@ -1,4 +1,169 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_vertex_attribute_divisor - device extension+--+-- == VK_EXT_vertex_attribute_divisor+--+-- [__Name String__]+--     @VK_EXT_vertex_attribute_divisor@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     191+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Vikram Kushwaha+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_vertex_attribute_divisor:%20&body=@vkushwaha%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-08-03+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Vikram Kushwaha, NVIDIA+--+--     -   Jason Ekstrand, Intel+--+-- == Description+--+-- This extension allows instance-rate vertex attributes to be repeated for+-- certain number of instances instead of advancing for every instance when+-- instanced rendering is enabled.+--+-- == New Structures+--+-- -   'VertexInputBindingDivisorDescriptionEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceVertexAttributeDivisorFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceVertexAttributeDivisorPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo':+--+--     -   'PipelineVertexInputDivisorStateCreateInfoEXT'+--+-- == New Enum Constants+--+-- -   'EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME'+--+-- -   'EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT'+--+-- == Issues+--+-- 1) What is the effect of a non-zero value for @firstInstance@?+--+-- __RESOLVED__: The Vulkan API should follow the OpenGL convention and+-- offset attribute fetching by @firstInstance@ while computing vertex+-- attribute offsets.+--+-- 2) Should zero be an allowed divisor?+--+-- __RESOLVED__: Yes. A zero divisor means the vertex attribute is repeated+-- for all instances.+--+-- == Examples+--+-- To create a vertex binding such that the first binding uses instanced+-- rendering and the same attribute is used for every 4 draw instances, an+-- application could use the following set of structures:+--+-- >     const VkVertexInputBindingDivisorDescriptionEXT divisorDesc =+-- >     {+-- >         0,+-- >         4+-- >     };+-- >+-- >     const VkPipelineVertexInputDivisorStateCreateInfoEXT divisorInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT, // sType+-- >         NULL,                                                             // pNext+-- >         1,                                                                // vertexBindingDivisorCount+-- >         &divisorDesc                                                      // pVertexBindingDivisors+-- >     }+-- >+-- >     const VkVertexInputBindingDescription binding =+-- >     {+-- >         0,                                                                // binding+-- >         sizeof(Vertex),                                                   // stride+-- >         VK_VERTEX_INPUT_RATE_INSTANCE                                     // inputRate+-- >     };+-- >+-- >     const VkPipelineVertexInputStateCreateInfo viInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO,              // sType+-- >         &divisorInfo,                                                     // pNext+-- >         ...+-- >     };+-- >     //...+--+-- == Version History+--+-- -   Revision 1, 2017-12-04 (Vikram Kushwaha)+--+--     -   First Version+--+-- -   Revision 2, 2018-07-16 (Jason Ekstrand)+--+--     -   Adjust the interaction between @divisor@ and @firstInstance@ to+--         match the OpenGL convention.+--+--     -   Disallow divisors of zero.+--+-- -   Revision 3, 2018-08-03 (Vikram Kushwaha)+--+--     -   Allow a zero divisor.+--+--     -   Add a physical device features structure to query\/enable this+--         feature.+--+-- = See Also+--+-- 'PhysicalDeviceVertexAttributeDivisorFeaturesEXT',+-- 'PhysicalDeviceVertexAttributeDivisorPropertiesEXT',+-- 'PipelineVertexInputDivisorStateCreateInfoEXT',+-- 'VertexInputBindingDivisorDescriptionEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_vertex_attribute_divisor Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_vertex_attribute_divisor  ( VertexInputBindingDivisorDescriptionEXT(..)                                                           , PipelineVertexInputDivisorStateCreateInfoEXT(..)                                                           , PhysicalDeviceVertexAttributeDivisorPropertiesEXT(..)@@ -164,7 +329,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexBindingDivisors)) :: Word32))     pPVertexBindingDivisors' <- ContT $ allocaBytesAligned @VertexInputBindingDivisorDescriptionEXT ((Data.Vector.length (vertexBindingDivisors)) * 8) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPVertexBindingDivisors' `plusPtr` (8 * (i)) :: Ptr VertexInputBindingDivisorDescriptionEXT) (e) . ($ ())) (vertexBindingDivisors)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexBindingDivisors' `plusPtr` (8 * (i)) :: Ptr VertexInputBindingDivisorDescriptionEXT) (e)) (vertexBindingDivisors)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDivisorDescriptionEXT))) (pPVertexBindingDivisors')     lift $ f   cStructSize = 32@@ -173,7 +338,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     pPVertexBindingDivisors' <- ContT $ allocaBytesAligned @VertexInputBindingDivisorDescriptionEXT ((Data.Vector.length (mempty)) * 8) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPVertexBindingDivisors' `plusPtr` (8 * (i)) :: Ptr VertexInputBindingDivisorDescriptionEXT) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexBindingDivisors' `plusPtr` (8 * (i)) :: Ptr VertexInputBindingDivisorDescriptionEXT) (e)) (mempty)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDivisorDescriptionEXT))) (pPVertexBindingDivisors')     lift $ f 
src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs-boot view
@@ -1,4 +1,169 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_vertex_attribute_divisor - device extension+--+-- == VK_EXT_vertex_attribute_divisor+--+-- [__Name String__]+--     @VK_EXT_vertex_attribute_divisor@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     191+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Vikram Kushwaha+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_vertex_attribute_divisor:%20&body=@vkushwaha%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-08-03+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Vikram Kushwaha, NVIDIA+--+--     -   Jason Ekstrand, Intel+--+-- == Description+--+-- This extension allows instance-rate vertex attributes to be repeated for+-- certain number of instances instead of advancing for every instance when+-- instanced rendering is enabled.+--+-- == New Structures+--+-- -   'VertexInputBindingDivisorDescriptionEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceVertexAttributeDivisorFeaturesEXT'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceVertexAttributeDivisorPropertiesEXT'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo':+--+--     -   'PipelineVertexInputDivisorStateCreateInfoEXT'+--+-- == New Enum Constants+--+-- -   'EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME'+--+-- -   'EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT'+--+-- == Issues+--+-- 1) What is the effect of a non-zero value for @firstInstance@?+--+-- __RESOLVED__: The Vulkan API should follow the OpenGL convention and+-- offset attribute fetching by @firstInstance@ while computing vertex+-- attribute offsets.+--+-- 2) Should zero be an allowed divisor?+--+-- __RESOLVED__: Yes. A zero divisor means the vertex attribute is repeated+-- for all instances.+--+-- == Examples+--+-- To create a vertex binding such that the first binding uses instanced+-- rendering and the same attribute is used for every 4 draw instances, an+-- application could use the following set of structures:+--+-- >     const VkVertexInputBindingDivisorDescriptionEXT divisorDesc =+-- >     {+-- >         0,+-- >         4+-- >     };+-- >+-- >     const VkPipelineVertexInputDivisorStateCreateInfoEXT divisorInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT, // sType+-- >         NULL,                                                             // pNext+-- >         1,                                                                // vertexBindingDivisorCount+-- >         &divisorDesc                                                      // pVertexBindingDivisors+-- >     }+-- >+-- >     const VkVertexInputBindingDescription binding =+-- >     {+-- >         0,                                                                // binding+-- >         sizeof(Vertex),                                                   // stride+-- >         VK_VERTEX_INPUT_RATE_INSTANCE                                     // inputRate+-- >     };+-- >+-- >     const VkPipelineVertexInputStateCreateInfo viInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO,              // sType+-- >         &divisorInfo,                                                     // pNext+-- >         ...+-- >     };+-- >     //...+--+-- == Version History+--+-- -   Revision 1, 2017-12-04 (Vikram Kushwaha)+--+--     -   First Version+--+-- -   Revision 2, 2018-07-16 (Jason Ekstrand)+--+--     -   Adjust the interaction between @divisor@ and @firstInstance@ to+--         match the OpenGL convention.+--+--     -   Disallow divisors of zero.+--+-- -   Revision 3, 2018-08-03 (Vikram Kushwaha)+--+--     -   Allow a zero divisor.+--+--     -   Add a physical device features structure to query\/enable this+--         feature.+--+-- = See Also+--+-- 'PhysicalDeviceVertexAttributeDivisorFeaturesEXT',+-- 'PhysicalDeviceVertexAttributeDivisorPropertiesEXT',+-- 'PipelineVertexInputDivisorStateCreateInfoEXT',+-- 'VertexInputBindingDivisorDescriptionEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_vertex_attribute_divisor Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_vertex_attribute_divisor  ( PhysicalDeviceVertexAttributeDivisorFeaturesEXT                                                           , PhysicalDeviceVertexAttributeDivisorPropertiesEXT                                                           , PipelineVertexInputDivisorStateCreateInfoEXT
src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs view
@@ -1,4 +1,83 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_ycbcr_image_arrays - device extension+--+-- == VK_EXT_ycbcr_image_arrays+--+-- [__Name String__]+--     @VK_EXT_ycbcr_image_arrays@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     253+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_sampler_ycbcr_conversion@+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_ycbcr_image_arrays:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-01-15+--+-- [__Contributors__]+--+--     -   Piers Daniell, NVIDIA+--+-- == Description+--+-- This extension allows images of a format that requires+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>+-- to be created with multiple array layers, which is otherwise restricted.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceYcbcrImageArraysFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME'+--+-- -   'EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-01-15 (Piers Daniell)+--+--     -   Initial revision+--+-- = See Also+--+-- 'PhysicalDeviceYcbcrImageArraysFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_ycbcr_image_arrays Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_ycbcr_image_arrays  ( PhysicalDeviceYcbcrImageArraysFeaturesEXT(..)                                                     , EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION                                                     , pattern EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION
src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs-boot view
@@ -1,4 +1,83 @@ {-# language CPP #-}+-- | = Name+--+-- VK_EXT_ycbcr_image_arrays - device extension+--+-- == VK_EXT_ycbcr_image_arrays+--+-- [__Name String__]+--     @VK_EXT_ycbcr_image_arrays@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     253+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_sampler_ycbcr_conversion@+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_ycbcr_image_arrays:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-01-15+--+-- [__Contributors__]+--+--     -   Piers Daniell, NVIDIA+--+-- == Description+--+-- This extension allows images of a format that requires+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>+-- to be created with multiple array layers, which is otherwise restricted.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceYcbcrImageArraysFeaturesEXT'+--+-- == New Enum Constants+--+-- -   'EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME'+--+-- -   'EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT'+--+-- == Version History+--+-- -   Revision 1, 2019-01-15 (Piers Daniell)+--+--     -   Initial revision+--+-- = See Also+--+-- 'PhysicalDeviceYcbcrImageArraysFeaturesEXT'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_ycbcr_image_arrays Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_ycbcr_image_arrays  (PhysicalDeviceYcbcrImageArraysFeaturesEXT) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs view
@@ -1,4 +1,96 @@ {-# language CPP #-}+-- | = Name+--+-- VK_FUCHSIA_imagepipe_surface - instance extension+--+-- == VK_FUCHSIA_imagepipe_surface+--+-- [__Name String__]+--     @VK_FUCHSIA_imagepipe_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     215+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Craig Stout+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_FUCHSIA_imagepipe_surface:%20&body=@cdotstout%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-07-27+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Craig Stout, Google+--+--     -   Ian Elliott, Google+--+--     -   Jesse Hall, Google+--+-- == Description+--+-- The @VK_FUCHSIA_imagepipe_surface@ extension is an instance extension.+-- It provides a mechanism to create a+-- 'Vulkan.Extensions.Handles.SurfaceKHR' object (defined by the+-- @VK_KHR_surface@ extension) that refers to a Fuchsia @imagePipeHandle@.+--+-- == New Commands+--+-- -   'createImagePipeSurfaceFUCHSIA'+--+-- == New Structures+--+-- -   'ImagePipeSurfaceCreateInfoFUCHSIA'+--+-- == New Bitmasks+--+-- -   'ImagePipeSurfaceCreateFlagsFUCHSIA'+--+-- == New Enum Constants+--+-- -   'FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME'+--+-- -   'FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA'+--+-- == Version History+--+-- -   Revision 1, 2018-07-27 (Craig Stout)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'ImagePipeSurfaceCreateFlagsFUCHSIA',+-- 'ImagePipeSurfaceCreateInfoFUCHSIA', 'createImagePipeSurfaceFUCHSIA'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_imagepipe_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface  ( createImagePipeSurfaceFUCHSIA                                                        , ImagePipeSurfaceCreateInfoFUCHSIA(..)                                                        , ImagePipeSurfaceCreateFlagsFUCHSIA(..)@@ -10,6 +102,8 @@                                                        , SurfaceKHR(..)                                                        ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -21,15 +115,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -47,8 +134,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.NamedType ((:::))@@ -226,17 +313,27 @@   +conNameImagePipeSurfaceCreateFlagsFUCHSIA :: String+conNameImagePipeSurfaceCreateFlagsFUCHSIA = "ImagePipeSurfaceCreateFlagsFUCHSIA"++enumPrefixImagePipeSurfaceCreateFlagsFUCHSIA :: String+enumPrefixImagePipeSurfaceCreateFlagsFUCHSIA = ""++showTableImagePipeSurfaceCreateFlagsFUCHSIA :: [(ImagePipeSurfaceCreateFlagsFUCHSIA, String)]+showTableImagePipeSurfaceCreateFlagsFUCHSIA = []+ instance Show ImagePipeSurfaceCreateFlagsFUCHSIA where-  showsPrec p = \case-    ImagePipeSurfaceCreateFlagsFUCHSIA x -> showParen (p >= 11) (showString "ImagePipeSurfaceCreateFlagsFUCHSIA 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixImagePipeSurfaceCreateFlagsFUCHSIA+                            showTableImagePipeSurfaceCreateFlagsFUCHSIA+                            conNameImagePipeSurfaceCreateFlagsFUCHSIA+                            (\(ImagePipeSurfaceCreateFlagsFUCHSIA x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ImagePipeSurfaceCreateFlagsFUCHSIA where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "ImagePipeSurfaceCreateFlagsFUCHSIA")-                       v <- step readPrec-                       pure (ImagePipeSurfaceCreateFlagsFUCHSIA v)))+  readPrec = enumReadPrec enumPrefixImagePipeSurfaceCreateFlagsFUCHSIA+                          showTableImagePipeSurfaceCreateFlagsFUCHSIA+                          conNameImagePipeSurfaceCreateFlagsFUCHSIA+                          ImagePipeSurfaceCreateFlagsFUCHSIA   type FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs-boot view
@@ -1,4 +1,96 @@ {-# language CPP #-}+-- | = Name+--+-- VK_FUCHSIA_imagepipe_surface - instance extension+--+-- == VK_FUCHSIA_imagepipe_surface+--+-- [__Name String__]+--     @VK_FUCHSIA_imagepipe_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     215+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Craig Stout+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_FUCHSIA_imagepipe_surface:%20&body=@cdotstout%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-07-27+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Craig Stout, Google+--+--     -   Ian Elliott, Google+--+--     -   Jesse Hall, Google+--+-- == Description+--+-- The @VK_FUCHSIA_imagepipe_surface@ extension is an instance extension.+-- It provides a mechanism to create a+-- 'Vulkan.Extensions.Handles.SurfaceKHR' object (defined by the+-- @VK_KHR_surface@ extension) that refers to a Fuchsia @imagePipeHandle@.+--+-- == New Commands+--+-- -   'createImagePipeSurfaceFUCHSIA'+--+-- == New Structures+--+-- -   'ImagePipeSurfaceCreateInfoFUCHSIA'+--+-- == New Bitmasks+--+-- -   'ImagePipeSurfaceCreateFlagsFUCHSIA'+--+-- == New Enum Constants+--+-- -   'FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME'+--+-- -   'FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA'+--+-- == Version History+--+-- -   Revision 1, 2018-07-27 (Craig Stout)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'ImagePipeSurfaceCreateFlagsFUCHSIA',+-- 'ImagePipeSurfaceCreateInfoFUCHSIA', 'createImagePipeSurfaceFUCHSIA'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_imagepipe_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface  (ImagePipeSurfaceCreateInfoFUCHSIA) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_GGP_frame_token.hs view
@@ -1,4 +1,89 @@ {-# language CPP #-}+-- | = Name+--+-- VK_GGP_frame_token - device extension+--+-- == VK_GGP_frame_token+--+-- [__Name String__]+--     @VK_GGP_frame_token@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     192+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+--     -   Requires @VK_GGP_stream_descriptor_surface@+--+-- [__Contact__]+--+--     -   Jean-Francois Roy+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_GGP_frame_token:%20&body=@jfroy%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-01-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jean-Francois Roy, Google+--+--     -   Richard O’Grady, Google+--+-- == Description+--+-- This extension allows an application that uses the @VK_KHR_swapchain@+-- extension in combination with a Google Games Platform surface provided+-- by the @VK_GGP_stream_descriptor_surface@ extension to associate a+-- Google Games Platform frame token with a present operation.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':+--+--     -   'PresentFrameTokenGGP'+--+-- == New Enum Constants+--+-- -   'GGP_FRAME_TOKEN_EXTENSION_NAME'+--+-- -   'GGP_FRAME_TOKEN_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP'+--+-- == Version History+--+-- -   Revision 1, 2018-11-26 (Jean-Francois Roy)+--+--     -   Initial revision.+--+-- = See Also+--+-- 'PresentFrameTokenGGP'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GGP_frame_token Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_GGP_frame_token  ( PresentFrameTokenGGP(..)                                              , GGP_FRAME_TOKEN_SPEC_VERSION                                              , pattern GGP_FRAME_TOKEN_SPEC_VERSION
src/Vulkan/Extensions/VK_GGP_frame_token.hs-boot view
@@ -1,4 +1,89 @@ {-# language CPP #-}+-- | = Name+--+-- VK_GGP_frame_token - device extension+--+-- == VK_GGP_frame_token+--+-- [__Name String__]+--     @VK_GGP_frame_token@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     192+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+--     -   Requires @VK_GGP_stream_descriptor_surface@+--+-- [__Contact__]+--+--     -   Jean-Francois Roy+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_GGP_frame_token:%20&body=@jfroy%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-01-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jean-Francois Roy, Google+--+--     -   Richard O’Grady, Google+--+-- == Description+--+-- This extension allows an application that uses the @VK_KHR_swapchain@+-- extension in combination with a Google Games Platform surface provided+-- by the @VK_GGP_stream_descriptor_surface@ extension to associate a+-- Google Games Platform frame token with a present operation.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':+--+--     -   'PresentFrameTokenGGP'+--+-- == New Enum Constants+--+-- -   'GGP_FRAME_TOKEN_EXTENSION_NAME'+--+-- -   'GGP_FRAME_TOKEN_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP'+--+-- == Version History+--+-- -   Revision 1, 2018-11-26 (Jean-Francois Roy)+--+--     -   Initial revision.+--+-- = See Also+--+-- 'PresentFrameTokenGGP'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GGP_frame_token Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_GGP_frame_token  (PresentFrameTokenGGP) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs view
@@ -1,4 +1,122 @@ {-# language CPP #-}+-- | = Name+--+-- VK_GGP_stream_descriptor_surface - instance extension+--+-- == VK_GGP_stream_descriptor_surface+--+-- [__Name String__]+--     @VK_GGP_stream_descriptor_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     50+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Jean-Francois Roy+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_GGP_stream_descriptor_surface:%20&body=@jfroy%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-01-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jean-Francois Roy, Google+--+--     -   Brad Grantham, Google+--+--     -   Connor Smith, Google+--+--     -   Cort Stratton, Google+--+--     -   Hai Nguyen, Google+--+--     -   Ian Elliott, Google+--+--     -   Jesse Hall, Google+--+--     -   Jim Ray, Google+--+--     -   Katherine Wu, Google+--+--     -   Kaye Mason, Google+--+--     -   Kuangye Guo, Google+--+--     -   Mark Segal, Google+--+--     -   Nicholas Vining, Google+--+--     -   Paul Lalonde, Google+--+--     -   Richard O’Grady, Google+--+-- == Description+--+-- The @VK_GGP_stream_descriptor_surface@ extension is an instance+-- extension. It provides a mechanism to create a+-- 'Vulkan.Extensions.Handles.SurfaceKHR' object (defined by the+-- @VK_KHR_surface@ extension) that refers to a Google Games Platform+-- 'GgpStreamDescriptor'.+--+-- == New Commands+--+-- -   'createStreamDescriptorSurfaceGGP'+--+-- == New Structures+--+-- -   'StreamDescriptorSurfaceCreateInfoGGP'+--+-- == New Bitmasks+--+-- -   'StreamDescriptorSurfaceCreateFlagsGGP'+--+-- == New Enum Constants+--+-- -   'GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME'+--+-- -   'GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP'+--+-- == Version History+--+-- -   Revision 1, 2018-11-26 (Jean-Francois Roy)+--+--     -   Initial revision.+--+-- = See Also+--+-- 'StreamDescriptorSurfaceCreateFlagsGGP',+-- 'StreamDescriptorSurfaceCreateInfoGGP',+-- 'createStreamDescriptorSurfaceGGP'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GGP_stream_descriptor_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_GGP_stream_descriptor_surface  ( createStreamDescriptorSurfaceGGP                                                            , StreamDescriptorSurfaceCreateInfoGGP(..)                                                            , StreamDescriptorSurfaceCreateFlagsGGP(..)@@ -10,6 +128,8 @@                                                            , SurfaceKHR(..)                                                            ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -21,15 +141,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -47,8 +160,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.NamedType ((:::))@@ -230,17 +343,27 @@   +conNameStreamDescriptorSurfaceCreateFlagsGGP :: String+conNameStreamDescriptorSurfaceCreateFlagsGGP = "StreamDescriptorSurfaceCreateFlagsGGP"++enumPrefixStreamDescriptorSurfaceCreateFlagsGGP :: String+enumPrefixStreamDescriptorSurfaceCreateFlagsGGP = ""++showTableStreamDescriptorSurfaceCreateFlagsGGP :: [(StreamDescriptorSurfaceCreateFlagsGGP, String)]+showTableStreamDescriptorSurfaceCreateFlagsGGP = []+ instance Show StreamDescriptorSurfaceCreateFlagsGGP where-  showsPrec p = \case-    StreamDescriptorSurfaceCreateFlagsGGP x -> showParen (p >= 11) (showString "StreamDescriptorSurfaceCreateFlagsGGP 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixStreamDescriptorSurfaceCreateFlagsGGP+                            showTableStreamDescriptorSurfaceCreateFlagsGGP+                            conNameStreamDescriptorSurfaceCreateFlagsGGP+                            (\(StreamDescriptorSurfaceCreateFlagsGGP x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read StreamDescriptorSurfaceCreateFlagsGGP where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "StreamDescriptorSurfaceCreateFlagsGGP")-                       v <- step readPrec-                       pure (StreamDescriptorSurfaceCreateFlagsGGP v)))+  readPrec = enumReadPrec enumPrefixStreamDescriptorSurfaceCreateFlagsGGP+                          showTableStreamDescriptorSurfaceCreateFlagsGGP+                          conNameStreamDescriptorSurfaceCreateFlagsGGP+                          StreamDescriptorSurfaceCreateFlagsGGP   type GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs-boot view
@@ -1,4 +1,122 @@ {-# language CPP #-}+-- | = Name+--+-- VK_GGP_stream_descriptor_surface - instance extension+--+-- == VK_GGP_stream_descriptor_surface+--+-- [__Name String__]+--     @VK_GGP_stream_descriptor_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     50+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Jean-Francois Roy+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_GGP_stream_descriptor_surface:%20&body=@jfroy%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-01-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jean-Francois Roy, Google+--+--     -   Brad Grantham, Google+--+--     -   Connor Smith, Google+--+--     -   Cort Stratton, Google+--+--     -   Hai Nguyen, Google+--+--     -   Ian Elliott, Google+--+--     -   Jesse Hall, Google+--+--     -   Jim Ray, Google+--+--     -   Katherine Wu, Google+--+--     -   Kaye Mason, Google+--+--     -   Kuangye Guo, Google+--+--     -   Mark Segal, Google+--+--     -   Nicholas Vining, Google+--+--     -   Paul Lalonde, Google+--+--     -   Richard O’Grady, Google+--+-- == Description+--+-- The @VK_GGP_stream_descriptor_surface@ extension is an instance+-- extension. It provides a mechanism to create a+-- 'Vulkan.Extensions.Handles.SurfaceKHR' object (defined by the+-- @VK_KHR_surface@ extension) that refers to a Google Games Platform+-- 'GgpStreamDescriptor'.+--+-- == New Commands+--+-- -   'createStreamDescriptorSurfaceGGP'+--+-- == New Structures+--+-- -   'StreamDescriptorSurfaceCreateInfoGGP'+--+-- == New Bitmasks+--+-- -   'StreamDescriptorSurfaceCreateFlagsGGP'+--+-- == New Enum Constants+--+-- -   'GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME'+--+-- -   'GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP'+--+-- == Version History+--+-- -   Revision 1, 2018-11-26 (Jean-Francois Roy)+--+--     -   Initial revision.+--+-- = See Also+--+-- 'StreamDescriptorSurfaceCreateFlagsGGP',+-- 'StreamDescriptorSurfaceCreateInfoGGP',+-- 'createStreamDescriptorSurfaceGGP'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GGP_stream_descriptor_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_GGP_stream_descriptor_surface  (StreamDescriptorSurfaceCreateInfoGGP) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_GOOGLE_decorate_string.hs view
@@ -1,4 +1,78 @@ {-# language CPP #-}+-- | = Name+--+-- VK_GOOGLE_decorate_string - device extension+--+-- == VK_GOOGLE_decorate_string+--+-- [__Name String__]+--     @VK_GOOGLE_decorate_string@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     225+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Hai Nguyen+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_GOOGLE_decorate_string:%20&body=@chaoticbob%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-07-09+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/GOOGLE/SPV_GOOGLE_decorate_string.html SPV_GOOGLE_decorate_string>+--+-- [__Contributors__]+--+--     -   Hai Nguyen, Google+--+--     -   Neil Henning, AMD+--+-- == Description+--+-- The @VK_GOOGLE_decorate_string@ extension allows use of the+-- @SPV_GOOGLE_decorate_string@ extension in SPIR-V shader modules.+--+-- == New Enum Constants+--+-- -   'GOOGLE_DECORATE_STRING_EXTENSION_NAME'+--+-- -   'GOOGLE_DECORATE_STRING_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 1, 2018-07-09 (Neil Henning)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GOOGLE_decorate_string Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_GOOGLE_decorate_string  ( GOOGLE_DECORATE_STRING_SPEC_VERSION                                                     , pattern GOOGLE_DECORATE_STRING_SPEC_VERSION                                                     , GOOGLE_DECORATE_STRING_EXTENSION_NAME
src/Vulkan/Extensions/VK_GOOGLE_display_timing.hs view
@@ -1,4 +1,127 @@ {-# language CPP #-}+-- | = Name+--+-- VK_GOOGLE_display_timing - device extension+--+-- == VK_GOOGLE_display_timing+--+-- [__Name String__]+--     @VK_GOOGLE_display_timing@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     93+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+-- [__Contact__]+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_GOOGLE_display_timing:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-02-14+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Ian Elliott, Google+--+--     -   Jesse Hall, Google+--+-- == Description+--+-- This device extension allows an application that uses the+-- @VK_KHR_swapchain@ extension to obtain information about the+-- presentation engine’s display, to obtain timing information about each+-- present, and to schedule a present to happen no earlier than a desired+-- time. An application can use this to minimize various visual anomalies+-- (e.g. stuttering).+--+-- Traditional game and real-time animation applications need to correctly+-- position their geometry for when the presentable image will be presented+-- to the user. To accomplish this, applications need various timing+-- information about the presentation engine’s display. They need to know+-- when presentable images were actually presented, and when they could+-- have been presented. Applications also need to tell the presentation+-- engine to display an image no sooner than a given time. This allows the+-- application to avoid stuttering, so the animation looks smooth to the+-- user.+--+-- This extension treats variable-refresh-rate (VRR) displays as if they+-- are fixed-refresh-rate (FRR) displays.+--+-- == New Commands+--+-- -   'getPastPresentationTimingGOOGLE'+--+-- -   'getRefreshCycleDurationGOOGLE'+--+-- == New Structures+--+-- -   'PastPresentationTimingGOOGLE'+--+-- -   'PresentTimeGOOGLE'+--+-- -   'RefreshCycleDurationGOOGLE'+--+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':+--+--     -   'PresentTimesInfoGOOGLE'+--+-- == New Enum Constants+--+-- -   'GOOGLE_DISPLAY_TIMING_EXTENSION_NAME'+--+-- -   'GOOGLE_DISPLAY_TIMING_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE'+--+-- == Examples+--+-- Note+--+-- The example code for the this extension (like the @VK_KHR_surface@ and+-- @VK_GOOGLE_display_timing@ extensions) is contained in the cube demo+-- that is shipped with the official Khronos SDK, and is being kept+-- up-to-date in that location (see:+-- <https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c>+-- ).+--+-- == Version History+--+-- -   Revision 1, 2017-02-14 (Ian Elliott)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PastPresentationTimingGOOGLE', 'PresentTimeGOOGLE',+-- 'PresentTimesInfoGOOGLE', 'RefreshCycleDurationGOOGLE',+-- 'getPastPresentationTimingGOOGLE', 'getRefreshCycleDurationGOOGLE'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GOOGLE_display_timing Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_GOOGLE_display_timing  ( getRefreshCycleDurationGOOGLE                                                    , getPastPresentationTimingGOOGLE                                                    , RefreshCycleDurationGOOGLE(..)@@ -450,7 +573,7 @@       then pure nullPtr       else do         pPTimes <- ContT $ allocaBytesAligned @PresentTimeGOOGLE (((Data.Vector.length (times))) * 16) 8-        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPTimes `plusPtr` (16 * (i)) :: Ptr PresentTimeGOOGLE) (e) . ($ ())) ((times))+        lift $ Data.Vector.imapM_ (\i e -> poke (pPTimes `plusPtr` (16 * (i)) :: Ptr PresentTimeGOOGLE) (e)) ((times))         pure $ pPTimes     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr PresentTimeGOOGLE))) pTimes''     lift $ f
src/Vulkan/Extensions/VK_GOOGLE_display_timing.hs-boot view
@@ -1,4 +1,127 @@ {-# language CPP #-}+-- | = Name+--+-- VK_GOOGLE_display_timing - device extension+--+-- == VK_GOOGLE_display_timing+--+-- [__Name String__]+--     @VK_GOOGLE_display_timing@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     93+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+-- [__Contact__]+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_GOOGLE_display_timing:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-02-14+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Ian Elliott, Google+--+--     -   Jesse Hall, Google+--+-- == Description+--+-- This device extension allows an application that uses the+-- @VK_KHR_swapchain@ extension to obtain information about the+-- presentation engine’s display, to obtain timing information about each+-- present, and to schedule a present to happen no earlier than a desired+-- time. An application can use this to minimize various visual anomalies+-- (e.g. stuttering).+--+-- Traditional game and real-time animation applications need to correctly+-- position their geometry for when the presentable image will be presented+-- to the user. To accomplish this, applications need various timing+-- information about the presentation engine’s display. They need to know+-- when presentable images were actually presented, and when they could+-- have been presented. Applications also need to tell the presentation+-- engine to display an image no sooner than a given time. This allows the+-- application to avoid stuttering, so the animation looks smooth to the+-- user.+--+-- This extension treats variable-refresh-rate (VRR) displays as if they+-- are fixed-refresh-rate (FRR) displays.+--+-- == New Commands+--+-- -   'getPastPresentationTimingGOOGLE'+--+-- -   'getRefreshCycleDurationGOOGLE'+--+-- == New Structures+--+-- -   'PastPresentationTimingGOOGLE'+--+-- -   'PresentTimeGOOGLE'+--+-- -   'RefreshCycleDurationGOOGLE'+--+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':+--+--     -   'PresentTimesInfoGOOGLE'+--+-- == New Enum Constants+--+-- -   'GOOGLE_DISPLAY_TIMING_EXTENSION_NAME'+--+-- -   'GOOGLE_DISPLAY_TIMING_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE'+--+-- == Examples+--+-- Note+--+-- The example code for the this extension (like the @VK_KHR_surface@ and+-- @VK_GOOGLE_display_timing@ extensions) is contained in the cube demo+-- that is shipped with the official Khronos SDK, and is being kept+-- up-to-date in that location (see:+-- <https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c>+-- ).+--+-- == Version History+--+-- -   Revision 1, 2017-02-14 (Ian Elliott)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PastPresentationTimingGOOGLE', 'PresentTimeGOOGLE',+-- 'PresentTimesInfoGOOGLE', 'RefreshCycleDurationGOOGLE',+-- 'getPastPresentationTimingGOOGLE', 'getRefreshCycleDurationGOOGLE'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GOOGLE_display_timing Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_GOOGLE_display_timing  ( PastPresentationTimingGOOGLE                                                    , PresentTimeGOOGLE                                                    , PresentTimesInfoGOOGLE
src/Vulkan/Extensions/VK_GOOGLE_hlsl_functionality1.hs view
@@ -1,4 +1,78 @@ {-# language CPP #-}+-- | = Name+--+-- VK_GOOGLE_hlsl_functionality1 - device extension+--+-- == VK_GOOGLE_hlsl_functionality1+--+-- [__Name String__]+--     @VK_GOOGLE_hlsl_functionality1@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     224+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Hai Nguyen+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_GOOGLE_hlsl_functionality1:%20&body=@chaoticbob%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-07-09+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/GOOGLE/SPV_GOOGLE_hlsl_functionality1.html SPV_GOOGLE_hlsl_functionality1>+--+-- [__Contributors__]+--+--     -   Hai Nguyen, Google+--+--     -   Neil Henning, AMD+--+-- == Description+--+-- The @VK_GOOGLE_hlsl_functionality1@ extension allows use of the+-- @SPV_GOOGLE_hlsl_functionality1@ extension in SPIR-V shader modules.+--+-- == New Enum Constants+--+-- -   'GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME'+--+-- -   'GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 1, 2018-07-09 (Neil Henning)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GOOGLE_hlsl_functionality1 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_GOOGLE_hlsl_functionality1  ( GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION                                                         , pattern GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION                                                         , GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME
src/Vulkan/Extensions/VK_GOOGLE_user_type.hs view
@@ -1,4 +1,78 @@ {-# language CPP #-}+-- | = Name+--+-- VK_GOOGLE_user_type - device extension+--+-- == VK_GOOGLE_user_type+--+-- [__Name String__]+--     @VK_GOOGLE_user_type@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     290+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Kaye Mason+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_GOOGLE_user_type:%20&body=@chaleur%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-07-09+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/GOOGLE/SPV_GOOGLE_user_type.asciidoc SPV_GOOGLE_user_type>+--+-- [__Contributors__]+--+--     -   Kaye Mason, Google+--+--     -   Hai Nguyen, Google+--+-- == Description+--+-- The @VK_GOOGLE_user_type@ extension allows use of the+-- @SPV_GOOGLE_user_type@ extension in SPIR-V shader modules.+--+-- == New Enum Constants+--+-- -   'GOOGLE_USER_TYPE_EXTENSION_NAME'+--+-- -   'GOOGLE_USER_TYPE_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 1, 2019-09-07 (Kaye Mason)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GOOGLE_user_type Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_GOOGLE_user_type  ( GOOGLE_USER_TYPE_SPEC_VERSION                                               , pattern GOOGLE_USER_TYPE_SPEC_VERSION                                               , GOOGLE_USER_TYPE_EXTENSION_NAME
src/Vulkan/Extensions/VK_IMG_filter_cubic.hs view
@@ -1,4 +1,101 @@ {-# language CPP #-}+-- | = Name+--+-- VK_IMG_filter_cubic - device extension+--+-- == VK_IMG_filter_cubic+--+-- [__Name String__]+--     @VK_IMG_filter_cubic@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     16+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_IMG_filter_cubic:%20&body=@tobski%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-02-23+--+-- [__Contributors__]+--+--     -   Tobias Hector, Imagination Technologies+--+-- == Description+--+-- @VK_IMG_filter_cubic@ adds an additional, high quality cubic filtering+-- mode to Vulkan, using a Catmull-Rom bicubic filter. Performing this kind+-- of filtering can be done in a shader by using 16 samples and a number of+-- instructions, but this can be inefficient. The cubic filter mode exposes+-- an optimized high quality texture sampling using fixed texture sampling+-- functionality.+--+-- == New Enum Constants+--+-- -   'IMG_FILTER_CUBIC_EXTENSION_NAME'+--+-- -   'IMG_FILTER_CUBIC_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.Filter.Filter':+--+--     -   'Vulkan.Core10.Enums.Filter.FILTER_CUBIC_IMG'+--+-- -   Extending+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':+--+--     -   'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG'+--+-- == Example+--+-- Creating a sampler with the new filter for both magnification and+-- minification+--+-- >     VkSamplerCreateInfo createInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO // sType+-- >         // Other members set to application-desired values+-- >     };+-- >+-- >     createInfo.magFilter = VK_FILTER_CUBIC_IMG;+-- >     createInfo.minFilter = VK_FILTER_CUBIC_IMG;+-- >+-- >     VkSampler sampler;+-- >     VkResult result = vkCreateSampler(+-- >         device,+-- >         &createInfo,+-- >         &sampler);+--+-- == Version History+--+-- -   Revision 1, 2016-02-23 (Tobias Hector)+--+--     -   Initial version+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_IMG_filter_cubic Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_IMG_filter_cubic  ( IMG_FILTER_CUBIC_SPEC_VERSION                                               , pattern IMG_FILTER_CUBIC_SPEC_VERSION                                               , IMG_FILTER_CUBIC_EXTENSION_NAME
src/Vulkan/Extensions/VK_IMG_format_pvrtc.hs view
@@ -1,4 +1,89 @@ {-# language CPP #-}+-- | = Name+--+-- VK_IMG_format_pvrtc - device extension+--+-- == VK_IMG_format_pvrtc+--+-- [__Name String__]+--     @VK_IMG_format_pvrtc@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     55+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Stuart Smith+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-09-02+--+-- [__IP Status__]+--     Imagination Technologies Proprietary+--+-- [__Contributors__]+--+--     -   Stuart Smith, Imagination Technologies+--+-- == Description+--+-- @VK_IMG_format_pvrtc@ provides additional texture compression+-- functionality specific to Imagination Technologies PowerVR Texture+-- compression format (called PVRTC).+--+-- == New Enum Constants+--+-- -   'IMG_FORMAT_PVRTC_EXTENSION_NAME'+--+-- -   'IMG_FORMAT_PVRTC_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG'+--+--     -   'Vulkan.Core10.Enums.Format.FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG'+--+-- == Version History+--+-- -   Revision 1, 2019-09-02 (Stuart Smith)+--+--     -   Initial version+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_IMG_format_pvrtc Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_IMG_format_pvrtc  ( IMG_FORMAT_PVRTC_SPEC_VERSION                                               , pattern IMG_FORMAT_PVRTC_SPEC_VERSION                                               , IMG_FORMAT_PVRTC_EXTENSION_NAME
src/Vulkan/Extensions/VK_INTEL_performance_query.hs view
@@ -1,4 +1,318 @@ {-# language CPP #-}+-- | = Name+--+-- VK_INTEL_performance_query - device extension+--+-- == VK_INTEL_performance_query+--+-- [__Name String__]+--     @VK_INTEL_performance_query@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     211+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>+--+-- [__Contact__]+--+--     -   Lionel Landwerlin+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_INTEL_performance_query:%20&body=@llandwerlin%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-05-16+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Lionel Landwerlin, Intel+--+--     -   Piotr Maciejewski, Intel+--+-- == Description+--+-- This extension allows an application to capture performance data to be+-- interpreted by a external application or library.+--+-- Such a library is available at :+-- <https://github.com/intel/metrics-discovery>+--+-- Performance analysis tools such as+-- <https://software.intel.com/content/www/us/en/develop/tools/graphics-performance-analyzers.html Graphics Performance Analyzers>+-- make use of this extension and the metrics-discovery library to present+-- the data in a human readable way.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.PerformanceConfigurationINTEL'+--+-- == New Commands+--+-- -   'acquirePerformanceConfigurationINTEL'+--+-- -   'cmdSetPerformanceMarkerINTEL'+--+-- -   'cmdSetPerformanceOverrideINTEL'+--+-- -   'cmdSetPerformanceStreamMarkerINTEL'+--+-- -   'getPerformanceParameterINTEL'+--+-- -   'initializePerformanceApiINTEL'+--+-- -   'queueSetPerformanceConfigurationINTEL'+--+-- -   'releasePerformanceConfigurationINTEL'+--+-- -   'uninitializePerformanceApiINTEL'+--+-- == New Structures+--+-- -   'InitializePerformanceApiInfoINTEL'+--+-- -   'PerformanceConfigurationAcquireInfoINTEL'+--+-- -   'PerformanceMarkerInfoINTEL'+--+-- -   'PerformanceOverrideInfoINTEL'+--+-- -   'PerformanceStreamMarkerInfoINTEL'+--+-- -   'PerformanceValueINTEL'+--+-- -   Extending 'Vulkan.Core10.Query.QueryPoolCreateInfo':+--+--     -   'QueryPoolPerformanceQueryCreateInfoINTEL'+--+-- == New Unions+--+-- -   'PerformanceValueDataINTEL'+--+-- == New Enums+--+-- -   'PerformanceConfigurationTypeINTEL'+--+-- -   'PerformanceOverrideTypeINTEL'+--+-- -   'PerformanceParameterTypeINTEL'+--+-- -   'PerformanceValueTypeINTEL'+--+-- -   'QueryPoolSamplingModeINTEL'+--+-- == New Enum Constants+--+-- -   'INTEL_PERFORMANCE_QUERY_EXTENSION_NAME'+--+-- -   'INTEL_PERFORMANCE_QUERY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL'+--+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':+--+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_INTEL'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL'+--+-- == Example Code+--+-- > // A previously created device+-- > VkDevice device;+-- >+-- > // A queue derived from the device+-- > VkQueue queue;+-- >+-- > VkInitializePerformanceApiInfoINTEL performanceApiInfoIntel = {+-- >   VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL,+-- >   NULL,+-- >   NULL+-- > };+-- >+-- > vkInitializePerformanceApiINTEL(+-- >   device,+-- >   &performanceApiInfoIntel);+-- >+-- > VkQueryPoolPerformanceQueryCreateInfoINTEL queryPoolIntel = {+-- >   VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL,+-- >   NULL,+-- >   VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL,+-- > };+-- >+-- > VkQueryPoolCreateInfo queryPoolCreateInfo = {+-- >   VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,+-- >   &queryPoolIntel,+-- >   0,+-- >   VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL,+-- >   1,+-- >   0+-- > };+-- >+-- > VkQueryPool queryPool;+-- >+-- > VkResult result = vkCreateQueryPool(+-- >   device,+-- >   &queryPoolCreateInfo,+-- >   NULL,+-- >   &queryPool);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > // A command buffer we want to record counters on+-- > VkCommandBuffer commandBuffer;+-- >+-- > VkCommandBufferBeginInfo commandBufferBeginInfo = {+-- >   VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,+-- >   NULL,+-- >   VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,+-- >   NULL+-- > };+-- >+-- > result = vkBeginCommandBuffer(commandBuffer, &commandBufferBeginInfo);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > vkCmdResetQueryPool(+-- >   commandBuffer,+-- >   queryPool,+-- >   0,+-- >   1);+-- >+-- > vkCmdBeginQuery(+-- >   commandBuffer,+-- >   queryPool,+-- >   0,+-- >   0);+-- >+-- > // Perform the commands you want to get performance information on+-- > // ...+-- >+-- > // Perform a barrier to ensure all previous commands were complete before+-- > // ending the query+-- > vkCmdPipelineBarrier(commandBuffer,+-- >   VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,+-- >   VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,+-- >   0,+-- >   0,+-- >   NULL,+-- >   0,+-- >   NULL,+-- >   0,+-- >   NULL);+-- >+-- > vkCmdEndQuery(+-- >   commandBuffer,+-- >   queryPool,+-- >   0);+-- >+-- > result = vkEndCommandBuffer(commandBuffer);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > VkPerformanceConfigurationAcquireInfoINTEL performanceConfigurationAcquireInfo = {+-- >   VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL,+-- >   NULL,+-- >   VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL+-- > };+-- >+-- > VkPerformanceConfigurationINTEL performanceConfigurationIntel;+-- >+-- > result = vkAcquirePerformanceConfigurationINTEL(+-- >   device,+-- >   &performanceConfigurationAcquireInfo,+-- >   &performanceConfigurationIntel);+-- >+-- > vkQueueSetPerformanceConfigurationINTEL(queue, performanceConfigurationIntel);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > // Submit the command buffer and wait for its completion+-- > // ...+-- >+-- > result = vkReleasePerformanceConfigurationINTEL(+-- >   device,+-- >   performanceConfigurationIntel);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > // Get the report size from metrics-discovery's QueryReportSize+-- >+-- > result = vkGetQueryPoolResults(+-- >   device,+-- >   queryPool,+-- >   0, 1, QueryReportSize,+-- >   data, QueryReportSize, 0);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > // The data can then be passed back to metrics-discovery from which+-- > // human readable values can be queried.+--+-- == Version History+--+-- -   Revision 2, 2020-03-06 (Lionel Landwerlin)+--+--     -   Rename VkQueryPoolCreateInfoINTEL in+--         VkQueryPoolPerformanceQueryCreateInfoINTEL+--+-- -   Revision 1, 2018-05-16 (Lionel Landwerlin)+--+--     -   Initial revision+--+-- = See Also+--+-- 'InitializePerformanceApiInfoINTEL',+-- 'PerformanceConfigurationAcquireInfoINTEL',+-- 'Vulkan.Extensions.Handles.PerformanceConfigurationINTEL',+-- 'PerformanceConfigurationTypeINTEL', 'PerformanceMarkerInfoINTEL',+-- 'PerformanceOverrideInfoINTEL', 'PerformanceOverrideTypeINTEL',+-- 'PerformanceParameterTypeINTEL', 'PerformanceStreamMarkerInfoINTEL',+-- 'PerformanceValueDataINTEL', 'PerformanceValueINTEL',+-- 'PerformanceValueTypeINTEL', 'QueryPoolCreateInfoINTEL',+-- 'QueryPoolPerformanceQueryCreateInfoINTEL',+-- 'QueryPoolSamplingModeINTEL', 'acquirePerformanceConfigurationINTEL',+-- 'cmdSetPerformanceMarkerINTEL', 'cmdSetPerformanceOverrideINTEL',+-- 'cmdSetPerformanceStreamMarkerINTEL', 'getPerformanceParameterINTEL',+-- 'initializePerformanceApiINTEL',+-- 'queueSetPerformanceConfigurationINTEL',+-- 'releasePerformanceConfigurationINTEL',+-- 'uninitializePerformanceApiINTEL'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_INTEL_performance_query  ( initializePerformanceApiINTEL                                                      , uninitializePerformanceApiINTEL                                                      , cmdSetPerformanceMarkerINTEL@@ -47,6 +361,8 @@                                                      , PerformanceConfigurationINTEL(..)                                                      ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -59,15 +375,7 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.ByteString (packCString) import Data.ByteString (useAsCString) import Control.Monad.Trans.Class (lift)@@ -90,9 +398,9 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32) import Data.Word (Word64)-import Text.Read.Lex (Lexeme(Ident)) import Data.ByteString (ByteString) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))@@ -1169,21 +1477,33 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- No documentation found for Nested "VkPerformanceConfigurationTypeINTEL" "VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL"-pattern PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = PerformanceConfigurationTypeINTEL 0+pattern PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL =+  PerformanceConfigurationTypeINTEL 0 {-# complete PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL :: PerformanceConfigurationTypeINTEL #-} +conNamePerformanceConfigurationTypeINTEL :: String+conNamePerformanceConfigurationTypeINTEL = "PerformanceConfigurationTypeINTEL"++enumPrefixPerformanceConfigurationTypeINTEL :: String+enumPrefixPerformanceConfigurationTypeINTEL =+  "PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL"++showTablePerformanceConfigurationTypeINTEL :: [(PerformanceConfigurationTypeINTEL, String)]+showTablePerformanceConfigurationTypeINTEL =+  [(PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL, "")]+ instance Show PerformanceConfigurationTypeINTEL where-  showsPrec p = \case-    PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL -> showString "PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL"-    PerformanceConfigurationTypeINTEL x -> showParen (p >= 11) (showString "PerformanceConfigurationTypeINTEL " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixPerformanceConfigurationTypeINTEL+                            showTablePerformanceConfigurationTypeINTEL+                            conNamePerformanceConfigurationTypeINTEL+                            (\(PerformanceConfigurationTypeINTEL x) -> x)+                            (showsPrec 11)  instance Read PerformanceConfigurationTypeINTEL where-  readPrec = parens (choose [("PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL", pure PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL)]-                     +++-                     prec 10 (do-                       expectP (Ident "PerformanceConfigurationTypeINTEL")-                       v <- step readPrec-                       pure (PerformanceConfigurationTypeINTEL v)))+  readPrec = enumReadPrec enumPrefixPerformanceConfigurationTypeINTEL+                          showTablePerformanceConfigurationTypeINTEL+                          conNamePerformanceConfigurationTypeINTEL+                          PerformanceConfigurationTypeINTEL   -- | VkQueryPoolSamplingModeINTEL - Enum specifying how performance queries@@ -1202,18 +1522,27 @@ pattern QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = QueryPoolSamplingModeINTEL 0 {-# complete QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL :: QueryPoolSamplingModeINTEL #-} +conNameQueryPoolSamplingModeINTEL :: String+conNameQueryPoolSamplingModeINTEL = "QueryPoolSamplingModeINTEL"++enumPrefixQueryPoolSamplingModeINTEL :: String+enumPrefixQueryPoolSamplingModeINTEL = "QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL"++showTableQueryPoolSamplingModeINTEL :: [(QueryPoolSamplingModeINTEL, String)]+showTableQueryPoolSamplingModeINTEL = [(QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL, "")]+ instance Show QueryPoolSamplingModeINTEL where-  showsPrec p = \case-    QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL -> showString "QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL"-    QueryPoolSamplingModeINTEL x -> showParen (p >= 11) (showString "QueryPoolSamplingModeINTEL " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixQueryPoolSamplingModeINTEL+                            showTableQueryPoolSamplingModeINTEL+                            conNameQueryPoolSamplingModeINTEL+                            (\(QueryPoolSamplingModeINTEL x) -> x)+                            (showsPrec 11)  instance Read QueryPoolSamplingModeINTEL where-  readPrec = parens (choose [("QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL", pure QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL)]-                     +++-                     prec 10 (do-                       expectP (Ident "QueryPoolSamplingModeINTEL")-                       v <- step readPrec-                       pure (QueryPoolSamplingModeINTEL v)))+  readPrec = enumReadPrec enumPrefixQueryPoolSamplingModeINTEL+                          showTableQueryPoolSamplingModeINTEL+                          conNameQueryPoolSamplingModeINTEL+                          QueryPoolSamplingModeINTEL   -- | VkPerformanceOverrideTypeINTEL - Performance override type@@ -1226,7 +1555,7 @@  -- | 'PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL' turns all rendering -- operations into noop.-pattern PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = PerformanceOverrideTypeINTEL 0+pattern PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL    = PerformanceOverrideTypeINTEL 0 -- | 'PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL' stalls the stream of -- commands until all previously emitted commands have completed and all -- caches been flushed and invalidated.@@ -1234,20 +1563,30 @@ {-# complete PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL,              PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL :: PerformanceOverrideTypeINTEL #-} +conNamePerformanceOverrideTypeINTEL :: String+conNamePerformanceOverrideTypeINTEL = "PerformanceOverrideTypeINTEL"++enumPrefixPerformanceOverrideTypeINTEL :: String+enumPrefixPerformanceOverrideTypeINTEL = "PERFORMANCE_OVERRIDE_TYPE_"++showTablePerformanceOverrideTypeINTEL :: [(PerformanceOverrideTypeINTEL, String)]+showTablePerformanceOverrideTypeINTEL =+  [ (PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL   , "NULL_HARDWARE_INTEL")+  , (PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL, "FLUSH_GPU_CACHES_INTEL")+  ]+ instance Show PerformanceOverrideTypeINTEL where-  showsPrec p = \case-    PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL -> showString "PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL"-    PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL -> showString "PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL"-    PerformanceOverrideTypeINTEL x -> showParen (p >= 11) (showString "PerformanceOverrideTypeINTEL " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixPerformanceOverrideTypeINTEL+                            showTablePerformanceOverrideTypeINTEL+                            conNamePerformanceOverrideTypeINTEL+                            (\(PerformanceOverrideTypeINTEL x) -> x)+                            (showsPrec 11)  instance Read PerformanceOverrideTypeINTEL where-  readPrec = parens (choose [("PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL", pure PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL)-                            , ("PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL", pure PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL)]-                     +++-                     prec 10 (do-                       expectP (Ident "PerformanceOverrideTypeINTEL")-                       v <- step readPrec-                       pure (PerformanceOverrideTypeINTEL v)))+  readPrec = enumReadPrec enumPrefixPerformanceOverrideTypeINTEL+                          showTablePerformanceOverrideTypeINTEL+                          conNamePerformanceOverrideTypeINTEL+                          PerformanceOverrideTypeINTEL   -- | VkPerformanceParameterTypeINTEL - Parameters that can be queried@@ -1260,7 +1599,7 @@  -- | 'PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL' has a boolean -- result which tells whether hardware counters can be captured.-pattern PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = PerformanceParameterTypeINTEL 0+pattern PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL    = PerformanceParameterTypeINTEL 0 -- | 'PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL' has a 32 -- bits integer result which tells how many bits can be written into the -- 'PerformanceValueINTEL' value.@@ -1268,20 +1607,30 @@ {-# complete PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL,              PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL :: PerformanceParameterTypeINTEL #-} +conNamePerformanceParameterTypeINTEL :: String+conNamePerformanceParameterTypeINTEL = "PerformanceParameterTypeINTEL"++enumPrefixPerformanceParameterTypeINTEL :: String+enumPrefixPerformanceParameterTypeINTEL = "PERFORMANCE_PARAMETER_TYPE_"++showTablePerformanceParameterTypeINTEL :: [(PerformanceParameterTypeINTEL, String)]+showTablePerformanceParameterTypeINTEL =+  [ (PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL   , "HW_COUNTERS_SUPPORTED_INTEL")+  , (PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL, "STREAM_MARKER_VALID_BITS_INTEL")+  ]+ instance Show PerformanceParameterTypeINTEL where-  showsPrec p = \case-    PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL -> showString "PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL"-    PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL -> showString "PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL"-    PerformanceParameterTypeINTEL x -> showParen (p >= 11) (showString "PerformanceParameterTypeINTEL " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixPerformanceParameterTypeINTEL+                            showTablePerformanceParameterTypeINTEL+                            conNamePerformanceParameterTypeINTEL+                            (\(PerformanceParameterTypeINTEL x) -> x)+                            (showsPrec 11)  instance Read PerformanceParameterTypeINTEL where-  readPrec = parens (choose [("PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL", pure PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL)-                            , ("PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL", pure PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL)]-                     +++-                     prec 10 (do-                       expectP (Ident "PerformanceParameterTypeINTEL")-                       v <- step readPrec-                       pure (PerformanceParameterTypeINTEL v)))+  readPrec = enumReadPrec enumPrefixPerformanceParameterTypeINTEL+                          showTablePerformanceParameterTypeINTEL+                          conNamePerformanceParameterTypeINTEL+                          PerformanceParameterTypeINTEL   -- | VkPerformanceValueTypeINTEL - Type of the parameters that can be queried@@ -1297,9 +1646,9 @@ -- No documentation found for Nested "VkPerformanceValueTypeINTEL" "VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL" pattern PERFORMANCE_VALUE_TYPE_UINT64_INTEL = PerformanceValueTypeINTEL 1 -- No documentation found for Nested "VkPerformanceValueTypeINTEL" "VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL"-pattern PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = PerformanceValueTypeINTEL 2+pattern PERFORMANCE_VALUE_TYPE_FLOAT_INTEL  = PerformanceValueTypeINTEL 2 -- No documentation found for Nested "VkPerformanceValueTypeINTEL" "VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL"-pattern PERFORMANCE_VALUE_TYPE_BOOL_INTEL = PerformanceValueTypeINTEL 3+pattern PERFORMANCE_VALUE_TYPE_BOOL_INTEL   = PerformanceValueTypeINTEL 3 -- No documentation found for Nested "VkPerformanceValueTypeINTEL" "VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL" pattern PERFORMANCE_VALUE_TYPE_STRING_INTEL = PerformanceValueTypeINTEL 4 {-# complete PERFORMANCE_VALUE_TYPE_UINT32_INTEL,@@ -1308,26 +1657,33 @@              PERFORMANCE_VALUE_TYPE_BOOL_INTEL,              PERFORMANCE_VALUE_TYPE_STRING_INTEL :: PerformanceValueTypeINTEL #-} +conNamePerformanceValueTypeINTEL :: String+conNamePerformanceValueTypeINTEL = "PerformanceValueTypeINTEL"++enumPrefixPerformanceValueTypeINTEL :: String+enumPrefixPerformanceValueTypeINTEL = "PERFORMANCE_VALUE_TYPE_"++showTablePerformanceValueTypeINTEL :: [(PerformanceValueTypeINTEL, String)]+showTablePerformanceValueTypeINTEL =+  [ (PERFORMANCE_VALUE_TYPE_UINT32_INTEL, "UINT32_INTEL")+  , (PERFORMANCE_VALUE_TYPE_UINT64_INTEL, "UINT64_INTEL")+  , (PERFORMANCE_VALUE_TYPE_FLOAT_INTEL , "FLOAT_INTEL")+  , (PERFORMANCE_VALUE_TYPE_BOOL_INTEL  , "BOOL_INTEL")+  , (PERFORMANCE_VALUE_TYPE_STRING_INTEL, "STRING_INTEL")+  ]+ instance Show PerformanceValueTypeINTEL where-  showsPrec p = \case-    PERFORMANCE_VALUE_TYPE_UINT32_INTEL -> showString "PERFORMANCE_VALUE_TYPE_UINT32_INTEL"-    PERFORMANCE_VALUE_TYPE_UINT64_INTEL -> showString "PERFORMANCE_VALUE_TYPE_UINT64_INTEL"-    PERFORMANCE_VALUE_TYPE_FLOAT_INTEL -> showString "PERFORMANCE_VALUE_TYPE_FLOAT_INTEL"-    PERFORMANCE_VALUE_TYPE_BOOL_INTEL -> showString "PERFORMANCE_VALUE_TYPE_BOOL_INTEL"-    PERFORMANCE_VALUE_TYPE_STRING_INTEL -> showString "PERFORMANCE_VALUE_TYPE_STRING_INTEL"-    PerformanceValueTypeINTEL x -> showParen (p >= 11) (showString "PerformanceValueTypeINTEL " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixPerformanceValueTypeINTEL+                            showTablePerformanceValueTypeINTEL+                            conNamePerformanceValueTypeINTEL+                            (\(PerformanceValueTypeINTEL x) -> x)+                            (showsPrec 11)  instance Read PerformanceValueTypeINTEL where-  readPrec = parens (choose [("PERFORMANCE_VALUE_TYPE_UINT32_INTEL", pure PERFORMANCE_VALUE_TYPE_UINT32_INTEL)-                            , ("PERFORMANCE_VALUE_TYPE_UINT64_INTEL", pure PERFORMANCE_VALUE_TYPE_UINT64_INTEL)-                            , ("PERFORMANCE_VALUE_TYPE_FLOAT_INTEL", pure PERFORMANCE_VALUE_TYPE_FLOAT_INTEL)-                            , ("PERFORMANCE_VALUE_TYPE_BOOL_INTEL", pure PERFORMANCE_VALUE_TYPE_BOOL_INTEL)-                            , ("PERFORMANCE_VALUE_TYPE_STRING_INTEL", pure PERFORMANCE_VALUE_TYPE_STRING_INTEL)]-                     +++-                     prec 10 (do-                       expectP (Ident "PerformanceValueTypeINTEL")-                       v <- step readPrec-                       pure (PerformanceValueTypeINTEL v)))+  readPrec = enumReadPrec enumPrefixPerformanceValueTypeINTEL+                          showTablePerformanceValueTypeINTEL+                          conNamePerformanceValueTypeINTEL+                          PerformanceValueTypeINTEL   -- No documentation found for TopLevel "VkQueryPoolCreateInfoINTEL"
src/Vulkan/Extensions/VK_INTEL_performance_query.hs-boot view
@@ -1,4 +1,318 @@ {-# language CPP #-}+-- | = Name+--+-- VK_INTEL_performance_query - device extension+--+-- == VK_INTEL_performance_query+--+-- [__Name String__]+--     @VK_INTEL_performance_query@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     211+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>+--+-- [__Contact__]+--+--     -   Lionel Landwerlin+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_INTEL_performance_query:%20&body=@llandwerlin%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-05-16+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Lionel Landwerlin, Intel+--+--     -   Piotr Maciejewski, Intel+--+-- == Description+--+-- This extension allows an application to capture performance data to be+-- interpreted by a external application or library.+--+-- Such a library is available at :+-- <https://github.com/intel/metrics-discovery>+--+-- Performance analysis tools such as+-- <https://software.intel.com/content/www/us/en/develop/tools/graphics-performance-analyzers.html Graphics Performance Analyzers>+-- make use of this extension and the metrics-discovery library to present+-- the data in a human readable way.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.PerformanceConfigurationINTEL'+--+-- == New Commands+--+-- -   'acquirePerformanceConfigurationINTEL'+--+-- -   'cmdSetPerformanceMarkerINTEL'+--+-- -   'cmdSetPerformanceOverrideINTEL'+--+-- -   'cmdSetPerformanceStreamMarkerINTEL'+--+-- -   'getPerformanceParameterINTEL'+--+-- -   'initializePerformanceApiINTEL'+--+-- -   'queueSetPerformanceConfigurationINTEL'+--+-- -   'releasePerformanceConfigurationINTEL'+--+-- -   'uninitializePerformanceApiINTEL'+--+-- == New Structures+--+-- -   'InitializePerformanceApiInfoINTEL'+--+-- -   'PerformanceConfigurationAcquireInfoINTEL'+--+-- -   'PerformanceMarkerInfoINTEL'+--+-- -   'PerformanceOverrideInfoINTEL'+--+-- -   'PerformanceStreamMarkerInfoINTEL'+--+-- -   'PerformanceValueINTEL'+--+-- -   Extending 'Vulkan.Core10.Query.QueryPoolCreateInfo':+--+--     -   'QueryPoolPerformanceQueryCreateInfoINTEL'+--+-- == New Unions+--+-- -   'PerformanceValueDataINTEL'+--+-- == New Enums+--+-- -   'PerformanceConfigurationTypeINTEL'+--+-- -   'PerformanceOverrideTypeINTEL'+--+-- -   'PerformanceParameterTypeINTEL'+--+-- -   'PerformanceValueTypeINTEL'+--+-- -   'QueryPoolSamplingModeINTEL'+--+-- == New Enum Constants+--+-- -   'INTEL_PERFORMANCE_QUERY_EXTENSION_NAME'+--+-- -   'INTEL_PERFORMANCE_QUERY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL'+--+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':+--+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_INTEL'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL'+--+-- == Example Code+--+-- > // A previously created device+-- > VkDevice device;+-- >+-- > // A queue derived from the device+-- > VkQueue queue;+-- >+-- > VkInitializePerformanceApiInfoINTEL performanceApiInfoIntel = {+-- >   VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL,+-- >   NULL,+-- >   NULL+-- > };+-- >+-- > vkInitializePerformanceApiINTEL(+-- >   device,+-- >   &performanceApiInfoIntel);+-- >+-- > VkQueryPoolPerformanceQueryCreateInfoINTEL queryPoolIntel = {+-- >   VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL,+-- >   NULL,+-- >   VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL,+-- > };+-- >+-- > VkQueryPoolCreateInfo queryPoolCreateInfo = {+-- >   VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,+-- >   &queryPoolIntel,+-- >   0,+-- >   VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL,+-- >   1,+-- >   0+-- > };+-- >+-- > VkQueryPool queryPool;+-- >+-- > VkResult result = vkCreateQueryPool(+-- >   device,+-- >   &queryPoolCreateInfo,+-- >   NULL,+-- >   &queryPool);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > // A command buffer we want to record counters on+-- > VkCommandBuffer commandBuffer;+-- >+-- > VkCommandBufferBeginInfo commandBufferBeginInfo = {+-- >   VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,+-- >   NULL,+-- >   VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,+-- >   NULL+-- > };+-- >+-- > result = vkBeginCommandBuffer(commandBuffer, &commandBufferBeginInfo);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > vkCmdResetQueryPool(+-- >   commandBuffer,+-- >   queryPool,+-- >   0,+-- >   1);+-- >+-- > vkCmdBeginQuery(+-- >   commandBuffer,+-- >   queryPool,+-- >   0,+-- >   0);+-- >+-- > // Perform the commands you want to get performance information on+-- > // ...+-- >+-- > // Perform a barrier to ensure all previous commands were complete before+-- > // ending the query+-- > vkCmdPipelineBarrier(commandBuffer,+-- >   VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,+-- >   VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,+-- >   0,+-- >   0,+-- >   NULL,+-- >   0,+-- >   NULL,+-- >   0,+-- >   NULL);+-- >+-- > vkCmdEndQuery(+-- >   commandBuffer,+-- >   queryPool,+-- >   0);+-- >+-- > result = vkEndCommandBuffer(commandBuffer);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > VkPerformanceConfigurationAcquireInfoINTEL performanceConfigurationAcquireInfo = {+-- >   VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL,+-- >   NULL,+-- >   VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL+-- > };+-- >+-- > VkPerformanceConfigurationINTEL performanceConfigurationIntel;+-- >+-- > result = vkAcquirePerformanceConfigurationINTEL(+-- >   device,+-- >   &performanceConfigurationAcquireInfo,+-- >   &performanceConfigurationIntel);+-- >+-- > vkQueueSetPerformanceConfigurationINTEL(queue, performanceConfigurationIntel);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > // Submit the command buffer and wait for its completion+-- > // ...+-- >+-- > result = vkReleasePerformanceConfigurationINTEL(+-- >   device,+-- >   performanceConfigurationIntel);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > // Get the report size from metrics-discovery's QueryReportSize+-- >+-- > result = vkGetQueryPoolResults(+-- >   device,+-- >   queryPool,+-- >   0, 1, QueryReportSize,+-- >   data, QueryReportSize, 0);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > // The data can then be passed back to metrics-discovery from which+-- > // human readable values can be queried.+--+-- == Version History+--+-- -   Revision 2, 2020-03-06 (Lionel Landwerlin)+--+--     -   Rename VkQueryPoolCreateInfoINTEL in+--         VkQueryPoolPerformanceQueryCreateInfoINTEL+--+-- -   Revision 1, 2018-05-16 (Lionel Landwerlin)+--+--     -   Initial revision+--+-- = See Also+--+-- 'InitializePerformanceApiInfoINTEL',+-- 'PerformanceConfigurationAcquireInfoINTEL',+-- 'Vulkan.Extensions.Handles.PerformanceConfigurationINTEL',+-- 'PerformanceConfigurationTypeINTEL', 'PerformanceMarkerInfoINTEL',+-- 'PerformanceOverrideInfoINTEL', 'PerformanceOverrideTypeINTEL',+-- 'PerformanceParameterTypeINTEL', 'PerformanceStreamMarkerInfoINTEL',+-- 'PerformanceValueDataINTEL', 'PerformanceValueINTEL',+-- 'PerformanceValueTypeINTEL', 'QueryPoolCreateInfoINTEL',+-- 'QueryPoolPerformanceQueryCreateInfoINTEL',+-- 'QueryPoolSamplingModeINTEL', 'acquirePerformanceConfigurationINTEL',+-- 'cmdSetPerformanceMarkerINTEL', 'cmdSetPerformanceOverrideINTEL',+-- 'cmdSetPerformanceStreamMarkerINTEL', 'getPerformanceParameterINTEL',+-- 'initializePerformanceApiINTEL',+-- 'queueSetPerformanceConfigurationINTEL',+-- 'releasePerformanceConfigurationINTEL',+-- 'uninitializePerformanceApiINTEL'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_INTEL_performance_query  ( InitializePerformanceApiInfoINTEL                                                      , PerformanceConfigurationAcquireInfoINTEL                                                      , PerformanceMarkerInfoINTEL
src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs view
@@ -1,4 +1,97 @@ {-# language CPP #-}+-- | = Name+--+-- VK_INTEL_shader_integer_functions2 - device extension+--+-- == VK_INTEL_shader_integer_functions2+--+-- [__Name String__]+--     @VK_INTEL_shader_integer_functions2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     210+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Ian Romanick+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_INTEL_shader_integer_functions2:%20&body=@ianromanick%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-04-30+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Ian Romanick, Intel+--+--     -   Ben Ashbaugh, Intel+--+-- == Description+--+-- This extension adds support for several new integer instructions in+-- SPIR-V for use in graphics shaders. Many of these instructions have+-- pre-existing counterparts in the Kernel environment.+--+-- The added integer functions are defined by the+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/INTEL/SPV_INTEL_shader_integer_functions2.html SPV_INTEL_shader_integer_functions>+-- SPIR-V extension and can be used with the+-- GL_INTEL_shader_integer_functions2 GLSL extension.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL'+--+-- == New Enum Constants+--+-- -   'INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME'+--+-- -   'INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-cooperativeMatrix IntegerFunctions2INTEL>+--+-- == Version History+--+-- -   Revision 1, 2019-04-30 (Ian Romanick)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_shader_integer_functions2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_INTEL_shader_integer_functions2  ( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(..)                                                              , INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION                                                              , pattern INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION
src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs-boot view
@@ -1,4 +1,97 @@ {-# language CPP #-}+-- | = Name+--+-- VK_INTEL_shader_integer_functions2 - device extension+--+-- == VK_INTEL_shader_integer_functions2+--+-- [__Name String__]+--     @VK_INTEL_shader_integer_functions2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     210+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Ian Romanick+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_INTEL_shader_integer_functions2:%20&body=@ianromanick%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-04-30+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Ian Romanick, Intel+--+--     -   Ben Ashbaugh, Intel+--+-- == Description+--+-- This extension adds support for several new integer instructions in+-- SPIR-V for use in graphics shaders. Many of these instructions have+-- pre-existing counterparts in the Kernel environment.+--+-- The added integer functions are defined by the+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/INTEL/SPV_INTEL_shader_integer_functions2.html SPV_INTEL_shader_integer_functions>+-- SPIR-V extension and can be used with the+-- GL_INTEL_shader_integer_functions2 GLSL extension.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL'+--+-- == New Enum Constants+--+-- -   'INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME'+--+-- -   'INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-cooperativeMatrix IntegerFunctions2INTEL>+--+-- == Version History+--+-- -   Revision 1, 2019-04-30 (Ian Romanick)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_shader_integer_functions2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_INTEL_shader_integer_functions2  (PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_KHR_16bit_storage.hs view
@@ -1,4 +1,141 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_16bit_storage - device extension+--+-- == VK_KHR_16bit_storage+--+-- [__Name String__]+--     @VK_KHR_16bit_storage@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     84+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_storage_buffer_storage_class@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Jan-Harald Fredriksen+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_16bit_storage:%20&body=@janharaldfredriksen-arm%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-05+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_16bit_storage.html SPV_KHR_16bit_storage>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GL_EXT_shader_16bit_storage.txt GL_EXT_shader_16bit_storage>+--+-- [__Contributors__]+--+--     -   Alexander Galazin, ARM+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Joerg Wagner, ARM+--+--     -   Neil Henning, Codeplay+--+--     -   Jeff Bolz, Nvidia+--+--     -   Daniel Koch, Nvidia+--+--     -   David Neto, Google+--+--     -   John Kessenich, Google+--+-- == Description+--+-- The @VK_KHR_16bit_storage@ extension allows use of 16-bit types in+-- shader input and output interfaces, and push constant blocks. This+-- extension introduces several new optional features which map to SPIR-V+-- capabilities and allow access to 16-bit data in @Block@-decorated+-- objects in the @Uniform@ and the @StorageBuffer@ storage classes, and+-- objects in the @PushConstant@ storage class. This extension allows+-- 16-bit variables to be declared and used as user-defined shader inputs+-- and outputs but does not change location assignment and component+-- assignment rules.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. However, if Vulkan 1.1 is supported and this+-- extension is not, the @storageBuffer16BitAccess@ capability is optional.+-- The original type, enum and command names are still available as aliases+-- of the core functionality.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevice16BitStorageFeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_16BIT_STORAGE_EXTENSION_NAME'+--+-- -   'KHR_16BIT_STORAGE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-16bitstorage StorageBuffer16BitAccess>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-16bitstorage UniformAndStorageBuffer16BitAccess>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-16bitstorage StoragePushConstant16>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-16bitstorage StorageInputOutput16>+--+-- == Version History+--+-- -   Revision 1, 2017-03-23 (Alexander Galazin)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDevice16BitStorageFeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_16bit_storage Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_16bit_storage  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR                                                , PhysicalDevice16BitStorageFeaturesKHR                                                , KHR_16BIT_STORAGE_SPEC_VERSION
src/Vulkan/Extensions/VK_KHR_8bit_storage.hs view
@@ -1,4 +1,125 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_8bit_storage - device extension+--+-- == VK_KHR_8bit_storage+--+-- [__Name String__]+--     @VK_KHR_8bit_storage@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     178+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_storage_buffer_storage_class@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Alexander Galazin+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_8bit_storage:%20&body=@alegal-arm%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-02-05+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_8bit_storage.html SPV_KHR_8bit_storage>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GL_EXT_shader_16bit_storage.txt GL_EXT_shader_16bit_storage>+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Alexander Galazin, Arm+--+-- == Description+--+-- The @VK_KHR_8bit_storage@ extension allows use of 8-bit types in uniform+-- and storage buffers, and push constant blocks. This extension introduces+-- several new optional features which map to SPIR-V capabilities and allow+-- access to 8-bit data in @Block@-decorated objects in the @Uniform@ and+-- the @StorageBuffer@ storage classes, and objects in the @PushConstant@+-- storage class.+--+-- The @StorageBuffer8BitAccess@ capability /must/ be supported by all+-- implementations of this extension. The other capabilities are optional.+--+-- == Promotion to Vulkan 1.2+--+-- Functionality in this extension is included in core Vulkan 1.2, with the+-- KHR suffix omitted. However, if Vulkan 1.2 is supported and this+-- extension is not, the @StorageBuffer8BitAccess@ capability is optional.+-- The original type, enum and command names are still available as aliases+-- of the core functionality.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevice8BitStorageFeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_8BIT_STORAGE_EXTENSION_NAME'+--+-- -   'KHR_8BIT_STORAGE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-8bitstorage StorageBuffer8BitAccess>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-8bitstorage UniformAndStorageBuffer8BitAccess>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-8bitstorage StoragePushConstant8>+--+-- == Version History+--+-- -   Revision 1, 2018-02-05 (Alexander Galazin)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDevice8BitStorageFeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_8bit_storage Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_8bit_storage  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR                                               , PhysicalDevice8BitStorageFeaturesKHR                                               , KHR_8BIT_STORAGE_SPEC_VERSION
+ src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs view
@@ -0,0 +1,7122 @@+{-# language CPP #-}+-- | = Name+--+-- VK_KHR_acceleration_structure - device extension+--+-- == VK_KHR_acceleration_structure+--+-- [__Name String__]+--     @VK_KHR_acceleration_structure@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     151+--+-- [__Revision__]+--     11+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+--     -   Requires @VK_EXT_descriptor_indexing@+--+--     -   Requires @VK_KHR_buffer_device_address@+--+--     -   Requires @VK_KHR_deferred_host_operations@+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_acceleration_structure:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-11-12+--+-- [__Contributors__]+--+--     -   Matthäus Chajdas, AMD+--+--     -   Greg Grebe, AMD+--+--     -   Nicolai Hähnle, AMD+--+--     -   Tobias Hector, AMD+--+--     -   Dave Oldcorn, AMD+--+--     -   Skyler Saleh, AMD+--+--     -   Mathieu Robart, Arm+--+--     -   Marius Bjorge, Arm+--+--     -   Tom Olson, Arm+--+--     -   Sebastian Tafuri, EA+--+--     -   Henrik Rydgard, Embark+--+--     -   Juan Cañada, Epic Games+--+--     -   Patrick Kelly, Epic Games+--+--     -   Yuriy O’Donnell, Epic Games+--+--     -   Michael Doggett, Facebook\/Oculus+--+--     -   Ricardo Garcia, Igalia+--+--     -   Andrew Garrard, Imagination+--+--     -   Don Scorgie, Imagination+--+--     -   Dae Kim, Imagination+--+--     -   Joshua Barczak, Intel+--+--     -   Slawek Grajewski, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Pascal Gautron, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Christoph Kubisch, NVIDIA+--+--     -   Ashwin Lele, NVIDIA+--+--     -   Robert Stepinski, NVIDIA+--+--     -   Martin Stich, NVIDIA+--+--     -   Nuno Subtil, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+--     -   Jon Leech, Khronos+--+--     -   Jeroen van Schijndel, OTOY+--+--     -   Juul Joosten, OTOY+--+--     -   Alex Bourd, Qualcomm+--+--     -   Roman Larionov, Qualcomm+--+--     -   David McAllister, Qualcomm+--+--     -   Lewis Gordon, Samsung+--+--     -   Ralph Potter, Samsung+--+--     -   Jasper Bekkers, Traverse Research+--+--     -   Jesse Barker, Unity+--+--     -   Baldur Karlsson, Valve+--+-- == Description+--+-- In order to be efficient, rendering techniques such as ray tracing need+-- a quick way to identify which primitives may be intersected by a ray+-- traversing the geometries. Acceleration structures are the most common+-- way to represent the geometry spatially sorted, in order to quickly+-- identify such potential intersections.+--+-- This extension adds new functionalities:+--+-- -   Acceleration structure objects and build commands+--+-- -   Structures to describe geometry inputs to acceleration structure+--     builds+--+-- -   Acceleration structure copy commands+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.AccelerationStructureKHR'+--+-- == New Commands+--+-- -   'buildAccelerationStructuresKHR'+--+-- -   'cmdBuildAccelerationStructuresIndirectKHR'+--+-- -   'cmdBuildAccelerationStructuresKHR'+--+-- -   'cmdCopyAccelerationStructureKHR'+--+-- -   'cmdCopyAccelerationStructureToMemoryKHR'+--+-- -   'cmdCopyMemoryToAccelerationStructureKHR'+--+-- -   'cmdWriteAccelerationStructuresPropertiesKHR'+--+-- -   'copyAccelerationStructureKHR'+--+-- -   'copyAccelerationStructureToMemoryKHR'+--+-- -   'copyMemoryToAccelerationStructureKHR'+--+-- -   'createAccelerationStructureKHR'+--+-- -   'destroyAccelerationStructureKHR'+--+-- -   'getAccelerationStructureBuildSizesKHR'+--+-- -   'getAccelerationStructureDeviceAddressKHR'+--+-- -   'getDeviceAccelerationStructureCompatibilityKHR'+--+-- -   'writeAccelerationStructuresPropertiesKHR'+--+-- == New Structures+--+-- -   'AabbPositionsKHR'+--+-- -   'AccelerationStructureBuildGeometryInfoKHR'+--+-- -   'AccelerationStructureBuildRangeInfoKHR'+--+-- -   'AccelerationStructureBuildSizesInfoKHR'+--+-- -   'AccelerationStructureCreateInfoKHR'+--+-- -   'AccelerationStructureDeviceAddressInfoKHR'+--+-- -   'AccelerationStructureGeometryAabbsDataKHR'+--+-- -   'AccelerationStructureGeometryInstancesDataKHR'+--+-- -   'AccelerationStructureGeometryKHR'+--+-- -   'AccelerationStructureGeometryTrianglesDataKHR'+--+-- -   'AccelerationStructureInstanceKHR'+--+-- -   'AccelerationStructureVersionInfoKHR'+--+-- -   'CopyAccelerationStructureInfoKHR'+--+-- -   'CopyAccelerationStructureToMemoryInfoKHR'+--+-- -   'CopyMemoryToAccelerationStructureInfoKHR'+--+-- -   'TransformMatrixKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceAccelerationStructureFeaturesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceAccelerationStructurePropertiesKHR'+--+-- -   Extending 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet':+--+--     -   'WriteDescriptorSetAccelerationStructureKHR'+--+-- == New Unions+--+-- -   'AccelerationStructureGeometryDataKHR'+--+-- -   'DeviceOrHostAddressConstKHR'+--+-- -   'DeviceOrHostAddressKHR'+--+-- == New Enums+--+-- -   'AccelerationStructureBuildTypeKHR'+--+-- -   'AccelerationStructureCompatibilityKHR'+--+-- -   'AccelerationStructureCreateFlagBitsKHR'+--+-- -   'AccelerationStructureTypeKHR'+--+-- -   'BuildAccelerationStructureFlagBitsKHR'+--+-- -   'BuildAccelerationStructureModeKHR'+--+-- -   'CopyAccelerationStructureModeKHR'+--+-- -   'GeometryFlagBitsKHR'+--+-- -   'GeometryInstanceFlagBitsKHR'+--+-- -   'GeometryTypeKHR'+--+-- == New Bitmasks+--+-- -   'AccelerationStructureCreateFlagsKHR'+--+-- -   'BuildAccelerationStructureFlagsKHR'+--+-- -   'GeometryFlagsKHR'+--+-- -   'GeometryInstanceFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME'+--+-- -   'KHR_ACCELERATION_STRUCTURE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT':+--+--     -   'Vulkan.Extensions.VK_EXT_debug_report.DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.DescriptorType.DescriptorType':+--+--     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':+--+--     -   'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.IndexType.IndexType':+--+--     -   'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':+--+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'+--+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR'+--+-- == Issues+--+-- (1) How does this extension differ from VK_NV_ray_tracing?+--+-- __DISCUSSION__:+--+-- The following is a summary of the main functional differences between+-- VK_KHR_acceleration_structure and VK_NV_ray_tracing:+--+-- -   added acceleration structure serialization \/ deserialization+--     ('COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR',+--     'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR',+--     'cmdCopyAccelerationStructureToMemoryKHR',+--     'cmdCopyMemoryToAccelerationStructureKHR')+--+-- -   document+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives and instances>+--+-- -   added 'PhysicalDeviceAccelerationStructureFeaturesKHR' structure+--+-- -   added indirect and batched acceleration structure builds+--     ('cmdBuildAccelerationStructuresIndirectKHR')+--+-- -   added+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>+--     commands+--+-- -   reworked geometry structures so they could be better shared between+--     device, host, and indirect builds+--+-- -   explicitly made 'Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     use device addresses+--+-- -   added acceleration structure compatibility check function+--     ('getDeviceAccelerationStructureCompatibilityKHR')+--+-- -   add parameter for requesting memory requirements for host and\/or+--     device build+--+-- -   added format feature for acceleration structure build vertex formats+--     ('Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR')+--+-- (2) Can you give a more detailed comparision of differences and+-- similarities between VK_NV_ray_tracing and+-- VK_KHR_acceleration_structure?+--+-- __DISCUSSION__:+--+-- The following is a more detailed comparision of which commands,+-- structures, and enums are aliased, changed, or removed.+--+-- -   Aliased functionality — enums, structures, and commands that are+--     considered equivalent:+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTypeNV' ↔+--         'GeometryTypeKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureTypeNV'+--         ↔ 'AccelerationStructureTypeKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.CopyAccelerationStructureModeNV'+--         ↔ 'CopyAccelerationStructureModeKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryFlagsNV' ↔+--         'GeometryFlagsKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryFlagBitsNV' ↔+--         'GeometryFlagBitsKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryInstanceFlagsNV' ↔+--         'GeometryInstanceFlagsKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryInstanceFlagBitsNV'+--         ↔ 'GeometryInstanceFlagBitsKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.BuildAccelerationStructureFlagsNV'+--         ↔ 'BuildAccelerationStructureFlagsKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.BuildAccelerationStructureFlagBitsNV'+--         ↔ 'BuildAccelerationStructureFlagBitsKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.TransformMatrixNV' ↔+--         'TransformMatrixKHR' (added to VK_NV_ray_tracing for descriptive+--         purposes)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AabbPositionsNV' ↔+--         'AabbPositionsKHR' (added to VK_NV_ray_tracing for descriptive+--         purposes)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureInstanceNV'+--         ↔ 'AccelerationStructureInstanceKHR' (added to VK_NV_ray_tracing+--         for descriptive purposes)+--+-- -   Changed enums, structures, and commands:+--+--     -   renamed+--         'Vulkan.Extensions.VK_NV_ray_tracing.GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV'+--         → 'GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR' in+--         'GeometryInstanceFlagBitsKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV' →+--         'AccelerationStructureGeometryTrianglesDataKHR' (device or host+--         address instead of buffer+offset)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV' →+--         'AccelerationStructureGeometryAabbsDataKHR' (device or host+--         address instead of buffer+offset)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryDataNV' →+--         'AccelerationStructureGeometryDataKHR' (union of+--         triangle\/aabbs\/instances)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV' →+--         'AccelerationStructureGeometryKHR' (changed type of geometry)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV'+--         → 'AccelerationStructureCreateInfoKHR' (reshuffle geometry+--         layout\/info)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'+--         → 'PhysicalDeviceAccelerationStructurePropertiesKHR' (for+--         acceleration structure properties, renamed @maxTriangleCount@ to+--         @maxPrimitiveCount@, added per stage and update after bind+--         limits) and+--         'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR'+--         (for ray tracing pipeline properties)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsInfoNV'+--         (deleted - replaced by allocating on top of+--         'Vulkan.Core10.Handles.Buffer')+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'+--         → 'WriteDescriptorSetAccelerationStructureKHR' (different+--         acceleration structure type)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV'+--         → 'createAccelerationStructureKHR' (device address, different+--         geometry layout\/info)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureMemoryRequirementsNV'+--         (deleted - replaced by allocating on top of+--         'Vulkan.Core10.Handles.Buffer')+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV'+--         → 'cmdBuildAccelerationStructuresKHR' (params moved to structs,+--         layout differences)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV'+--         → 'cmdCopyAccelerationStructureKHR' (params to struct,+--         extendable)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'+--         → 'getAccelerationStructureDeviceAddressKHR' (device address+--         instead of handle)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsTypeNV'+--         → size queries for scratch space moved to+--         'getAccelerationStructureBuildSizesKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.destroyAccelerationStructureNV'+--         → 'destroyAccelerationStructureKHR' (different acceleration+--         structure types)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'+--         → 'cmdWriteAccelerationStructuresPropertiesKHR' (different+--         acceleration structure types)+--+-- -   Added enums, structures and commands:+--+--     -   'GEOMETRY_TYPE_INSTANCES_KHR' to 'GeometryTypeKHR' enum+--+--     -   'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR',+--         'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR' to+--         'CopyAccelerationStructureModeKHR' enum+--+--     -   'PhysicalDeviceAccelerationStructureFeaturesKHR' structure+--+--     -   'AccelerationStructureBuildTypeKHR' enum+--+--     -   'BuildAccelerationStructureModeKHR' enum+--+--     -   'DeviceOrHostAddressKHR' and 'DeviceOrHostAddressConstKHR'+--         unions+--+--     -   'AccelerationStructureBuildRangeInfoKHR' struct+--+--     -   'AccelerationStructureGeometryInstancesDataKHR' struct+--+--     -   'AccelerationStructureDeviceAddressInfoKHR' struct+--+--     -   'AccelerationStructureVersionInfoKHR' struct+--+--     -   'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR'+--         struct+--+--     -   'CopyAccelerationStructureToMemoryInfoKHR' struct+--+--     -   'CopyMemoryToAccelerationStructureInfoKHR' struct+--+--     -   'CopyAccelerationStructureInfoKHR' struct+--+--     -   'buildAccelerationStructuresKHR' command (host build)+--+--     -   'copyAccelerationStructureKHR' command (host copy)+--+--     -   'copyAccelerationStructureToMemoryKHR' (host serialize)+--+--     -   'copyMemoryToAccelerationStructureKHR' (host deserialize)+--+--     -   'writeAccelerationStructuresPropertiesKHR' (host properties)+--+--     -   'cmdCopyAccelerationStructureToMemoryKHR' (device serialize)+--+--     -   'cmdCopyMemoryToAccelerationStructureKHR' (device deserialize)+--+--     -   'getDeviceAccelerationStructureCompatibilityKHR' (serialization)+--+-- (3) What are the changes between the public provisional+-- (VK_KHR_ray_tracing v8) release and the internal provisional+-- (VK_KHR_ray_tracing v9) release?+--+-- -   added @geometryFlags@ to+--     @VkAccelerationStructureCreateGeometryTypeInfoKHR@ (later reworked+--     to obsolete this)+--+-- -   added @minAccelerationStructureScratchOffsetAlignment@ property to+--     VkPhysicalDeviceRayTracingPropertiesKHR+--+-- -   fix naming and return enum from+--     'getDeviceAccelerationStructureCompatibilityKHR'+--+--     -   renamed @VkAccelerationStructureVersionKHR@ to+--         'AccelerationStructureVersionInfoKHR'+--+--     -   renamed @VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR@+--         to+--         'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR'+--+--     -   removed @VK_ERROR_INCOMPATIBLE_VERSION_KHR@+--+--     -   added 'AccelerationStructureCompatibilityKHR' enum+--+--     -   remove return value from+--         'getDeviceAccelerationStructureCompatibilityKHR' and added+--         return enum parameter+--+-- -   Require Vulkan 1.1+--+-- -   added creation time capture and replay flags+--+--     -   added 'AccelerationStructureCreateFlagBitsKHR' and+--         'AccelerationStructureCreateFlagsKHR'+--+--     -   renamed the @flags@ member of+--         'AccelerationStructureCreateInfoKHR' to @buildFlags@ (later+--         removed) and added the @createFlags@ member+--+-- -   change 'cmdBuildAccelerationStructuresIndirectKHR' to use buffer+--     device address for indirect parameter+--+-- -   make+--     <VK_KHR_deferred_host_operations.html VK_KHR_deferred_host_operations>+--     an interaction instead of a required extension (later went back on+--     this)+--+-- -   renamed @VkAccelerationStructureBuildOffsetInfoKHR@ to+--     'AccelerationStructureBuildRangeInfoKHR'+--+--     -   renamed the @ppOffsetInfos@ parameter of+--         'cmdBuildAccelerationStructuresKHR' to @ppBuildRangeInfos@+--+-- -   Re-unify geometry description between build and create+--+--     -   remove @VkAccelerationStructureCreateGeometryTypeInfoKHR@ and+--         @VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR@+--+--     -   added @VkAccelerationStructureCreateSizeInfoKHR@ structure+--         (later removed)+--+--     -   change type of the @pGeometryInfos@ member of+--         'AccelerationStructureCreateInfoKHR' from+--         @VkAccelerationStructureCreateGeometryTypeInfoKHR@ to+--         'AccelerationStructureGeometryKHR' (later removed)+--+--     -   added @pCreateSizeInfos@ member to+--         'AccelerationStructureCreateInfoKHR' (later removed)+--+-- -   Fix ppGeometries ambiguity, add pGeometries+--+--     -   remove @geometryArrayOfPointers@ member of+--         VkAccelerationStructureBuildGeometryInfoKHR+--+--     -   disambiguate two meanings of @ppGeometries@ by explicitly adding+--         @pGeometries@ to the 'AccelerationStructureBuildGeometryInfoKHR'+--         structure and require one of them be @NULL@+--+-- -   added+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     support for acceleration structures+--+-- -   changed the @update@ member of+--     'AccelerationStructureBuildGeometryInfoKHR' from a bool to the+--     @mode@ 'BuildAccelerationStructureModeKHR' enum which allows future+--     extensibility in update types+--+-- -   Clarify deferred host ops for pipeline creation+--+--     -   'Vulkan.Extensions.Handles.DeferredOperationKHR' is now a+--         top-level parameter for 'buildAccelerationStructuresKHR',+--         'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR',+--         'copyAccelerationStructureToMemoryKHR',+--         'copyAccelerationStructureKHR', and+--         'copyMemoryToAccelerationStructureKHR'+--+--     -   removed @VkDeferredOperationInfoKHR@ structure+--+--     -   change deferred host creation\/return parameter behavior such+--         that the implementation can modify such parameters until the+--         deferred host operation completes+--+--     -   <VK_KHR_deferred_host_operations.html VK_KHR_deferred_host_operations>+--         is required again+--+-- -   Change acceleration structure build to always be sized+--+--     -   de-alias+--         'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsTypeNV'+--         and @VkAccelerationStructureMemoryRequirementsTypeKHR@ and+--         remove @VkAccelerationStructureMemoryRequirementsTypeKHR@+--+--     -   add 'getAccelerationStructureBuildSizesKHR' command and+--         'AccelerationStructureBuildSizesInfoKHR' structure and+--         'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR'+--         enum to query sizes for acceleration structures and scratch+--         storage+--+--     -   move size queries for scratch space to+--         'getAccelerationStructureBuildSizesKHR'+--+--     -   remove @compactedSize@, @buildFlags@, @maxGeometryCount@,+--         @pGeometryInfos@, @pCreateSizeInfos@ members of+--         'AccelerationStructureCreateInfoKHR' and add the @size@ member+--+--     -   add @maxVertex@ member to+--         'AccelerationStructureGeometryTrianglesDataKHR' structure+--+--     -   remove @VkAccelerationStructureCreateSizeInfoKHR@ structure+--+-- (4) What are the changes between the internal provisional+-- (VK_KHR_ray_tracing v9) release and the final+-- (VK_KHR_acceleration_structure v11) release?+--+-- -   refactor VK_KHR_ray_tracing into 3 extensions, enabling+--     implementation flexibility and decoupling ray query support from ray+--     pipelines:+--+--     -   <VK_KHR_acceleration_structure.html VK_KHR_acceleration_structure>+--         (for acceleration structure operations)+--+--     -   <VK_KHR_ray_tracing_pipeline.html VK_KHR_ray_tracing_pipeline>+--         (for ray tracing pipeline and shader stages)+--+--     -   <VK_KHR_ray_query.html VK_KHR_ray_query> (for ray queries in+--         existing shader stages)+--+-- -   clarify buffer usage flags for ray tracing+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.BUFFER_USAGE_RAY_TRACING_BIT_NV'+--         is left alone in <VK_NV_ray_tracing.html VK_NV_ray_tracing>+--         (required on @scratch@ and @instanceData@)+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'+--         is added as an alias of+--         'Vulkan.Extensions.VK_NV_ray_tracing.BUFFER_USAGE_RAY_TRACING_BIT_NV'+--         in+--         <VK_KHR_ray_tracing_pipeline.html VK_KHR_ray_tracing_pipeline>+--         and is required on shader binding table buffers+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'+--         is added in+--         <VK_KHR_acceleration_structure.html VK_KHR_acceleration_structure>+--         for all vertex, index, transform, aabb, and instance buffer data+--         referenced by device build commands+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'+--         is used for @scratchData@+--+-- -   add max primitive counts (@ppMaxPrimitiveCounts@) to+--     'cmdBuildAccelerationStructuresIndirectKHR'+--+-- -   Allocate acceleration structures from @VkBuffers@ and add a mode to+--     constrain the device address+--+--     -   de-alias+--         'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',+--         'Vulkan.Extensions.VK_NV_ray_tracing.bindAccelerationStructureMemoryNV',+--         and remove @VkBindAccelerationStructureMemoryInfoKHR@,+--         @VkAccelerationStructureMemoryRequirementsInfoKHR@, and+--         @vkGetAccelerationStructureMemoryRequirementsKHR@+--+--     -   acceleration structures now take a+--         'Vulkan.Core10.Handles.Buffer' and offset at creation time for+--         memory placement+--+--     -   add a new+--         'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'+--         buffer usage such buffers+--+--     -   add a new 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' acceleration+--         structure type for layering+--+-- -   move 'GEOMETRY_TYPE_INSTANCES_KHR' to main enum instead of being+--     added via extension+--+-- -   make build commands more consistent - all now build multiple+--     acceleration structures and are named plurally+--     ('cmdBuildAccelerationStructuresIndirectKHR',+--     'cmdBuildAccelerationStructuresKHR',+--     'buildAccelerationStructuresKHR')+--+-- -   add interactions with+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+--     for acceleration structures, including a new feature+--     (@descriptorBindingAccelerationStructureUpdateAfterBind@) and 3 new+--     properties (@maxPerStageDescriptorAccelerationStructures@,+--     @maxPerStageDescriptorUpdateAfterBindAccelerationStructures@,+--     @maxDescriptorSetUpdateAfterBindAccelerationStructures@)+--+-- -   extension is no longer provisional+--+-- -   define synchronization requirements for builds, traces, and copies+--+-- -   define synchronization requirements for AS build inputs and indirect+--     build buffer+--+-- (5) What is 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' for?+--+-- RESOLVED: It is primarily intended for API layering. In DXR, the+-- acceleration structure is basically just a buffer in a special layout,+-- and you don’t know at creation time whether it will be used as a top or+-- bottom level acceleration structure. We thus added a generic+-- acceleration structure type whose type is unknown at creation time, but+-- is specified at build type instead. Applications which are written+-- directly for Vulkan should not use it.+--+-- == Version History+--+-- -   Revision 1, 2019-12-05 (Members of the Vulkan Ray Tracing TSG)+--+--     -   Internal revisions (forked from VK_NV_ray_tracing)+--+-- -   Revision 2, 2019-12-20 (Daniel Koch, Eric Werness)+--+--     -   Add const version of DeviceOrHostAddress (!3515)+--+--     -   Add VU to clarify that only handles in the current pipeline are+--         valid (!3518)+--+--     -   Restore some missing VUs and add in-place update language+--         (#1902, !3522)+--+--     -   rename VkAccelerationStructureInstanceKHR member from+--         accelerationStructure to accelerationStructureReference to+--         better match its type (!3523)+--+--     -   Allow VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS for pipeline+--         creation if shader group handles cannot be re-used. (!3523)+--+--     -   update documentation for the+--         VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS error code and add+--         missing documentation for new return codes from+--         VK_KHR_deferred_host_operations (!3523)+--+--     -   list new query types for VK_KHR_ray_tracing (!3523)+--+--     -   Fix VU statements for VkAccelerationStructureGeometryKHR+--         referring to correct union members and update to use more+--         current wording (!3523)+--+-- -   Revision 3, 2020-01-10 (Daniel Koch, Jon Leech, Christoph Kubisch)+--+--     -   Fix \'instance of\' and \'that\/which contains\/defines\' markup+--         issues (!3528)+--+--     -   factor out VK_KHR_pipeline_library as stand-alone extension+--         (!3540)+--+--     -   Resolve Vulkan-hpp issues (!3543)+--+--     -   add missing require for VkGeometryInstanceFlagsKHR+--+--     -   de-alias VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV+--         since the KHR structure is no longer equivalent+--+--     -   add len to pDataSize attribute for+--         vkWriteAccelerationStructuresPropertiesKHR+--+-- -   Revision 4, 2020-01-23 (Daniel Koch, Eric Werness)+--+--     -   Improve vkWriteAccelerationStructuresPropertiesKHR, add return+--         value and VUs (#1947)+--+--     -   Clarify language to allow multiple raygen shaders (#1959)+--+--     -   Various editorial feedback (!3556)+--+--     -   Add language to help deal with looped self-intersecting fans+--         (#1901)+--+--     -   Change vkCmdTraceRays{Indirect}KHR args to pointers (!3559)+--+--     -   Add scratch address validation language (#1941, !3551)+--+--     -   Fix definition and add hierarchy information for shader call+--         scope (#1977, !3571)+--+-- -   Revision 5, 2020-02-04 (Eric Werness, Jeff Bolz, Daniel Koch)+--+--     -   remove vestigial accelerationStructureUUID (!3582)+--+--     -   update definition of repack instructions and improve memory+--         model interactions (#1910, #1913, !3584)+--+--     -   Fix wrong sType for VkPhysicalDeviceRayTracingFeaturesKHR+--         (#1988)+--+--     -   Use provisional SPIR-V capabilities (#1987)+--+--     -   require rayTraversalPrimitiveCulling if rayQuery is supported+--         (#1927)+--+--     -   Miss shaders do not have object parameters (!3592)+--+--     -   Fix missing required types in XML (!3592)+--+--     -   clarify matching conditions for update (!3592)+--+--     -   add goal that host and device builds be similar (!3592)+--+--     -   clarify that @maxPrimitiveCount@ limit should apply to triangles+--         and AABBs (!3592)+--+--     -   Require alignment for instance arrayOfPointers (!3592)+--+--     -   Zero is a valid value for instance flags (!3592)+--+--     -   Add some alignment VUs that got lost in refactoring (!3592)+--+--     -   Recommend TMin epsilon rather than culling (!3592)+--+--     -   Get angle from dot product not cross product (!3592)+--+--     -   Clarify that AH can access the payload and attributes (!3592)+--+--     -   Match DXR behavior for inactive primitive definition (!3592)+--+--     -   Use a more generic term than degenerate for inactive to avoid+--         confusion (!3592)+--+-- -   Revision 6, 2020-02-20 (Daniel Koch)+--+--     -   fix some dangling NV references (#1996)+--+--     -   rename VkCmdTraceRaysIndirectCommandKHR to+--         VkTraceRaysIndirectCommandKHR (!3607)+--+--     -   update contributor list (!3611)+--+--     -   use uint64_t instead of VkAccelerationStructureReferenceKHR in+--         VkAccelerationStructureInstanceKHR (#2004)+--+-- -   Revision 7, 2020-02-28 (Tobias Hector)+--+--     -   remove HitTKHR SPIR-V builtin (spirv\/spirv-extensions#7)+--+-- -   Revision 8, 2020-03-06 (Tobias Hector, Dae Kim, Daniel Koch, Jeff+--     Bolz, Eric Werness)+--+--     -   explicitly state that Tmax is updated when new closest+--         intersection is accepted (#2020,!3536)+--+--     -   Made references to min and max t values consistent (!3644)+--+--     -   finish enumerating differences relative to VK_NV_ray_tracing in+--         issues (1) and (2) (#1974,!3642)+--+--     -   fix formatting in some math equations (!3642)+--+--     -   Restrict the Hit Kind operand of @OpReportIntersectionKHR@ to+--         7-bits (spirv\/spirv-extensions#8,!3646)+--+--     -   Say ray tracing \'/should/\' be watertight (#2008,!3631)+--+--     -   Clarify memory requirements for ray tracing buffers+--         (#2005,!3649)+--+--     -   Add callable size limits (#1997,!3652)+--+-- -   Revision 9, 2020-04-15 (Eric Werness, Daniel Koch, Tobias Hector,+--     Joshua Barczak)+--+--     -   Add geometry flags to acceleration structure creation (!3672)+--+--     -   add build scratch memory alignment+--         (minAccelerationStructureScratchOffsetAlignment) (#2065,!3725)+--+--     -   fix naming and return enum from+--         vkGetDeviceAccelerationStructureCompatibilityKHR (#2051,!3726)+--+--     -   require SPIR-V 1.4 (#2096,!3777)+--+--     -   added creation time capture\/replay flags (#2104,!3774)+--+--     -   require Vulkan 1.1 (#2133,!3806)+--+--     -   use device addresses instead of VkBuffers for ray tracing+--         commands (#2074,!3815)+--+--     -   add interactions with Vulkan 1.2 and VK_KHR_vulkan_memory_model+--         (#2133,!3830)+--+--     -   make VK_KHR_pipeline_library an interaction instead of required+--         (#2045,#2108,!3830)+--+--     -   make VK_KHR_deferred_host_operations an interaction instead of+--         required (#2045,!3830)+--+--     -   removed maxCallableSize and added explicit stack size management+--         for ray pipelines (#1997,!3817,!3772,!3844)+--+--     -   improved documentation for VkAccelerationStructureVersionInfoKHR+--         (#2135,3835)+--+--     -   rename VkAccelerationStructureBuildOffsetInfoKHR to+--         VkAccelerationStructureBuildRangeInfoKHR (#2058,!3754)+--+--     -   Re-unify geometry description between build and create (!3754)+--+--     -   Fix ppGeometries ambiguity, add pGeometries (#2032,!3811)+--+--     -   add interactions with VK_EXT_robustness2 and allow+--         nullDescriptor support for acceleration structures (#1920,!3848)+--+--     -   added future extensibility for AS updates (#2114,!3849)+--+--     -   Fix VU for dispatchrays and add a limit on the size of the full+--         grid (#2160,!3851)+--+--     -   Add shaderGroupHandleAlignment property (#2180,!3875)+--+--     -   Clarify deferred host ops for pipeline creation (#2067,!3813)+--+--     -   Change acceleration structure build to always be sized+--         (#2131,#2197,#2198,!3854,!3883,!3880)+--+-- -   Revision 10, 2020-07-03 (Mathieu Robart, Daniel Koch, Eric Werness,+--     Tobias Hector)+--+--     -   Decomposition of the specification, from VK_KHR_ray_tracing to+--         VK_KHR_acceleration_structure (#1918,!3912)+--+--     -   clarify buffer usage flags for ray tracing (#2181,!3939)+--+--     -   add max primitive counts to build indirect command (#2233,!3944)+--+--     -   Allocate acceleration structures from VkBuffers and add a mode+--         to constrain the device address (#2131,!3936)+--+--     -   Move VK_GEOMETRY_TYPE_INSTANCES_KHR to main enum (#2243,!3952)+--+--     -   make build commands more consistent (#2247,!3958)+--+--     -   add interactions with UPDATE_AFTER_BIND (#2128,!3986)+--+--     -   correct and expand build command VUs (!4020)+--+--     -   fix copy command VUs (!4018)+--+--     -   added various alignment requirements (#2229,!3943)+--+--     -   fix valid usage for arrays of geometryCount items (#2198,!4010)+--+--     -   define what is allowed to change on RTAS updates and relevant+--         VUs (#2177,!3961)+--+-- -   Revision 11, 2020-11-12 (Eric Werness, Josh Barczak, Daniel Koch,+--     Tobias Hector)+--+--     -   de-alias NV and KHR acceleration structure types and associated+--         commands (#2271,!4035)+--+--     -   specify alignment for host copy commands (#2273,!4037)+--+--     -   document+--         'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'+--+--     -   specify that acceleration structures are non-linear+--         (#2289,!4068)+--+--     -   add several missing VUs for strides, vertexFormat, and indexType+--         (#2315,!4069)+--+--     -   restore VUs for VkAccelerationStructureBuildGeometryInfoKHR+--         (#2337,!4098)+--+--     -   ban multi-instance memory for host operations (#2324,!4102)+--+--     -   allow dstAccelerationStructure to be null for+--         vkGetAccelerationStructureBuildSizesKHR (#2330,!4111)+--+--     -   more build VU cleanup (#2138,#4130)+--+--     -   specify host endianness for AS serialization (#2261,!4136)+--+--     -   add invertible transform matrix VU (#1710,!4140)+--+--     -   require geometryCount to be 1 for TLAS builds (!4145)+--+--     -   improved validity conditions for build addresses (#4142)+--+--     -   add single statement SPIR-V VUs, build limit VUs (!4158)+--+--     -   document limits for vertex and aabb strides (#2390,!4184)+--+--     -   specify that+--         'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+--         applies to AS copies (#2382,#4173)+--+--     -   define sync for AS build inputs and indirect buffer+--         (#2407,!4208)+--+-- = See Also+--+-- 'AabbPositionsKHR', 'AccelerationStructureBuildGeometryInfoKHR',+-- 'AccelerationStructureBuildRangeInfoKHR',+-- 'AccelerationStructureBuildSizesInfoKHR',+-- 'AccelerationStructureBuildTypeKHR',+-- 'AccelerationStructureCompatibilityKHR',+-- 'AccelerationStructureCreateFlagBitsKHR',+-- 'AccelerationStructureCreateFlagsKHR',+-- 'AccelerationStructureCreateInfoKHR',+-- 'AccelerationStructureDeviceAddressInfoKHR',+-- 'AccelerationStructureGeometryAabbsDataKHR',+-- 'AccelerationStructureGeometryDataKHR',+-- 'AccelerationStructureGeometryInstancesDataKHR',+-- 'AccelerationStructureGeometryKHR',+-- 'AccelerationStructureGeometryTrianglesDataKHR',+-- 'AccelerationStructureInstanceKHR',+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'AccelerationStructureTypeKHR', 'AccelerationStructureVersionInfoKHR',+-- 'BuildAccelerationStructureFlagBitsKHR',+-- 'BuildAccelerationStructureFlagsKHR',+-- 'BuildAccelerationStructureModeKHR', 'CopyAccelerationStructureInfoKHR',+-- 'CopyAccelerationStructureModeKHR',+-- 'CopyAccelerationStructureToMemoryInfoKHR',+-- 'CopyMemoryToAccelerationStructureInfoKHR',+-- 'DeviceOrHostAddressConstKHR', 'DeviceOrHostAddressKHR',+-- 'GeometryFlagBitsKHR', 'GeometryFlagsKHR',+-- 'GeometryInstanceFlagBitsKHR', 'GeometryInstanceFlagsKHR',+-- 'GeometryTypeKHR', 'PhysicalDeviceAccelerationStructureFeaturesKHR',+-- 'PhysicalDeviceAccelerationStructurePropertiesKHR',+-- 'TransformMatrixKHR', 'WriteDescriptorSetAccelerationStructureKHR',+-- 'buildAccelerationStructuresKHR',+-- 'cmdBuildAccelerationStructuresIndirectKHR',+-- 'cmdBuildAccelerationStructuresKHR', 'cmdCopyAccelerationStructureKHR',+-- 'cmdCopyAccelerationStructureToMemoryKHR',+-- 'cmdCopyMemoryToAccelerationStructureKHR',+-- 'cmdWriteAccelerationStructuresPropertiesKHR',+-- 'copyAccelerationStructureKHR', 'copyAccelerationStructureToMemoryKHR',+-- 'copyMemoryToAccelerationStructureKHR',+-- 'createAccelerationStructureKHR', 'destroyAccelerationStructureKHR',+-- 'getAccelerationStructureBuildSizesKHR',+-- 'getAccelerationStructureDeviceAddressKHR',+-- 'getDeviceAccelerationStructureCompatibilityKHR',+-- 'writeAccelerationStructuresPropertiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_KHR_acceleration_structure  ( destroyAccelerationStructureKHR+                                                        , cmdCopyAccelerationStructureKHR+                                                        , copyAccelerationStructureKHR+                                                        , cmdCopyAccelerationStructureToMemoryKHR+                                                        , copyAccelerationStructureToMemoryKHR+                                                        , cmdCopyMemoryToAccelerationStructureKHR+                                                        , copyMemoryToAccelerationStructureKHR+                                                        , cmdWriteAccelerationStructuresPropertiesKHR+                                                        , writeAccelerationStructuresPropertiesKHR+                                                        , getDeviceAccelerationStructureCompatibilityKHR+                                                        , createAccelerationStructureKHR+                                                        , withAccelerationStructureKHR+                                                        , cmdBuildAccelerationStructuresKHR+                                                        , cmdBuildAccelerationStructuresIndirectKHR+                                                        , buildAccelerationStructuresKHR+                                                        , getAccelerationStructureDeviceAddressKHR+                                                        , getAccelerationStructureBuildSizesKHR+                                                        , WriteDescriptorSetAccelerationStructureKHR(..)+                                                        , PhysicalDeviceAccelerationStructureFeaturesKHR(..)+                                                        , PhysicalDeviceAccelerationStructurePropertiesKHR(..)+                                                        , AccelerationStructureGeometryTrianglesDataKHR(..)+                                                        , AccelerationStructureGeometryAabbsDataKHR(..)+                                                        , AccelerationStructureGeometryInstancesDataKHR(..)+                                                        , AccelerationStructureGeometryKHR(..)+                                                        , AccelerationStructureBuildGeometryInfoKHR(..)+                                                        , AccelerationStructureBuildRangeInfoKHR(..)+                                                        , AccelerationStructureCreateInfoKHR(..)+                                                        , AabbPositionsKHR(..)+                                                        , TransformMatrixKHR(..)+                                                        , AccelerationStructureInstanceKHR(..)+                                                        , AccelerationStructureDeviceAddressInfoKHR(..)+                                                        , AccelerationStructureVersionInfoKHR(..)+                                                        , CopyAccelerationStructureInfoKHR(..)+                                                        , CopyAccelerationStructureToMemoryInfoKHR(..)+                                                        , CopyMemoryToAccelerationStructureInfoKHR(..)+                                                        , AccelerationStructureBuildSizesInfoKHR(..)+                                                        , DeviceOrHostAddressKHR(..)+                                                        , DeviceOrHostAddressConstKHR(..)+                                                        , AccelerationStructureGeometryDataKHR(..)+                                                        , GeometryInstanceFlagsKHR+                                                        , GeometryInstanceFlagBitsKHR( GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR+                                                                                     , GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR+                                                                                     , GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR+                                                                                     , GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR+                                                                                     , ..+                                                                                     )+                                                        , GeometryFlagsKHR+                                                        , GeometryFlagBitsKHR( GEOMETRY_OPAQUE_BIT_KHR+                                                                             , GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR+                                                                             , ..+                                                                             )+                                                        , BuildAccelerationStructureFlagsKHR+                                                        , BuildAccelerationStructureFlagBitsKHR( BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR+                                                                                               , BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR+                                                                                               , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR+                                                                                               , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR+                                                                                               , BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR+                                                                                               , ..+                                                                                               )+                                                        , AccelerationStructureCreateFlagsKHR+                                                        , AccelerationStructureCreateFlagBitsKHR( ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR+                                                                                                , ..+                                                                                                )+                                                        , CopyAccelerationStructureModeKHR( COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR+                                                                                          , COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR+                                                                                          , COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR+                                                                                          , COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR+                                                                                          , ..+                                                                                          )+                                                        , BuildAccelerationStructureModeKHR( BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR+                                                                                           , BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR+                                                                                           , ..+                                                                                           )+                                                        , AccelerationStructureTypeKHR( ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR+                                                                                      , ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR+                                                                                      , ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR+                                                                                      , ..+                                                                                      )+                                                        , GeometryTypeKHR( GEOMETRY_TYPE_TRIANGLES_KHR+                                                                         , GEOMETRY_TYPE_AABBS_KHR+                                                                         , GEOMETRY_TYPE_INSTANCES_KHR+                                                                         , ..+                                                                         )+                                                        , AccelerationStructureBuildTypeKHR( ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR+                                                                                           , ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR+                                                                                           , ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR+                                                                                           , ..+                                                                                           )+                                                        , AccelerationStructureCompatibilityKHR( ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR+                                                                                               , ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR+                                                                                               , ..+                                                                                               )+                                                        , KHR_ACCELERATION_STRUCTURE_SPEC_VERSION+                                                        , pattern KHR_ACCELERATION_STRUCTURE_SPEC_VERSION+                                                        , KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME+                                                        , pattern KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME+                                                        , AccelerationStructureKHR(..)+                                                        , DeferredOperationKHR(..)+                                                        , DebugReportObjectTypeEXT(..)+                                                        ) where++import Vulkan.CStruct.Utils (FixedArray)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec)+import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Control.Monad.IO.Class (liftIO)+import Data.Bits ((.&.))+import Data.Bits ((.|.))+import Data.Bits (shiftL)+import Data.Bits (shiftR)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import GHC.Ptr (nullFunPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Numeric (showHex)+import qualified Data.ByteString (length)+import Data.ByteString (packCStringLen)+import Data.ByteString.Unsafe (unsafeUseAsCString)+import Data.Coerce (coerce)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Control.Monad.Trans.Cont (runContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import qualified Data.Vector (null)+import Foreign.C.Types (CSize(..))+import Control.Monad.IO.Class (MonadIO)+import Data.Bits (Bits)+import Data.Bits (FiniteBits)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.Generics (Generic)+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Word (Word8)+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Vulkan.CStruct.Utils (advancePtrBytes)+import Vulkan.Core10.FundamentalTypes (bool32ToBool)+import Vulkan.Core10.FundamentalTypes (boolToBool32)+import Vulkan.CStruct.Utils (lowerArrayPtr)+import Vulkan.NamedType ((:::))+import Vulkan.Extensions.Handles (AccelerationStructureKHR)+import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Vulkan.Core10.FundamentalTypes (Bool32)+import Vulkan.Core10.Handles (Buffer)+import Vulkan.Core10.Handles (CommandBuffer)+import Vulkan.Core10.Handles (CommandBuffer(..))+import Vulkan.Core10.Handles (CommandBuffer_T)+import Vulkan.Extensions.Handles (DeferredOperationKHR)+import Vulkan.Extensions.Handles (DeferredOperationKHR(..))+import Vulkan.Core10.Handles (Device)+import Vulkan.Core10.Handles (Device(..))+import Vulkan.Core10.FundamentalTypes (DeviceAddress)+import Vulkan.Dynamic (DeviceCmds(pVkBuildAccelerationStructuresKHR))+import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructuresIndirectKHR))+import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructuresKHR))+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureKHR))+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureToMemoryKHR))+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMemoryToAccelerationStructureKHR))+import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteAccelerationStructuresPropertiesKHR))+import Vulkan.Dynamic (DeviceCmds(pVkCopyAccelerationStructureKHR))+import Vulkan.Dynamic (DeviceCmds(pVkCopyAccelerationStructureToMemoryKHR))+import Vulkan.Dynamic (DeviceCmds(pVkCopyMemoryToAccelerationStructureKHR))+import Vulkan.Dynamic (DeviceCmds(pVkCreateAccelerationStructureKHR))+import Vulkan.Dynamic (DeviceCmds(pVkDestroyAccelerationStructureKHR))+import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureBuildSizesKHR))+import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureDeviceAddressKHR))+import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceAccelerationStructureCompatibilityKHR))+import Vulkan.Dynamic (DeviceCmds(pVkWriteAccelerationStructuresPropertiesKHR))+import Vulkan.Core10.FundamentalTypes (DeviceSize)+import Vulkan.Core10.Handles (Device_T)+import Vulkan.Core10.FundamentalTypes (Flags)+import Vulkan.Core10.Enums.Format (Format)+import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (FromCStruct(..))+import Vulkan.Core10.Enums.IndexType (IndexType)+import Vulkan.Core10.Handles (QueryPool)+import Vulkan.Core10.Handles (QueryPool(..))+import Vulkan.Core10.Enums.QueryType (QueryType)+import Vulkan.Core10.Enums.QueryType (QueryType(..))+import Vulkan.Core10.Enums.Result (Result)+import Vulkan.Core10.Enums.Result (Result(..))+import Vulkan.Core10.Enums.StructureType (StructureType)+import Vulkan.CStruct (ToCStruct)+import Vulkan.CStruct (ToCStruct(..))+import Vulkan.Exception (VulkanException(..))+import Vulkan.Zero (Zero)+import Vulkan.Zero (Zero(..))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR))+import Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Vulkan.Core10.APIConstants (pattern UUID_SIZE)+import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))+import Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))+import Vulkan.Extensions.Handles (DeferredOperationKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkDestroyAccelerationStructureKHR+  :: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> AccelerationStructureKHR -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyAccelerationStructureKHR - Destroy an acceleration structure+-- object+--+-- == Valid Usage+--+-- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02442#+--     All submitted commands that refer to @accelerationStructure@ /must/+--     have completed execution+--+-- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02443#+--     If 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were+--     provided when @accelerationStructure@ was created, a compatible set+--     of callbacks /must/ be provided here+--+-- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02444#+--     If no 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were+--     provided when @accelerationStructure@ was created, @pAllocator@+--     /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkDestroyAccelerationStructureKHR-device-parameter# @device@+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parameter#+--     If @accelerationStructure@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @accelerationStructure@+--     /must/ be a valid+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   #VUID-vkDestroyAccelerationStructureKHR-pAllocator-parameter# If+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parent#+--     If @accelerationStructure@ is a valid handle, it /must/ have been+--     created, allocated, or retrieved from @device@+--+-- == Host Synchronization+--+-- -   Host access to @accelerationStructure@ /must/ be externally+--     synchronized+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Vulkan.Core10.Handles.Device'+destroyAccelerationStructureKHR :: forall io+                                 . (MonadIO io)+                                => -- | @device@ is the logical device that destroys the buffer.+                                   Device+                                -> -- | @accelerationStructure@ is the acceleration structure to destroy.+                                   AccelerationStructureKHR+                                -> -- | @pAllocator@ controls host memory allocation as described in the+                                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+                                   -- chapter.+                                   ("allocator" ::: Maybe AllocationCallbacks)+                                -> io ()+destroyAccelerationStructureKHR device accelerationStructure allocator = liftIO . evalContT $ do+  let vkDestroyAccelerationStructureKHRPtr = pVkDestroyAccelerationStructureKHR (deviceCmds (device :: Device))+  lift $ unless (vkDestroyAccelerationStructureKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyAccelerationStructureKHR is null" Nothing Nothing+  let vkDestroyAccelerationStructureKHR' = mkVkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHRPtr+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  lift $ vkDestroyAccelerationStructureKHR' (deviceHandle (device)) (accelerationStructure) pAllocator+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdCopyAccelerationStructureKHR+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyAccelerationStructureInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyAccelerationStructureInfoKHR -> IO ()++-- | vkCmdCopyAccelerationStructureKHR - Copy an acceleration structure+--+-- = Description+--+-- Accesses to @pInfo@->@src@ and @pInfo@->@dst@ /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>+-- with the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>+-- and an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>+-- of+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'+-- or+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'+-- as appropriate.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-buffer-03737# The @buffer@+--     used to create @pInfo@->@src@ /must/ be bound to device memory+--+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-buffer-03738# The @buffer@+--     used to create @pInfo@->@dst@ /must/ be bound to device memory+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-pInfo-parameter# @pInfo@+--     /must/ be a valid pointer to a valid+--     'CopyAccelerationStructureInfoKHR' structure+--+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-recording#+--     @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdCopyAccelerationStructureKHR-renderpass# This command+--     /must/ only be called outside of a render pass instance+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'CopyAccelerationStructureInfoKHR'+cmdCopyAccelerationStructureKHR :: forall io+                                 . (MonadIO io)+                                => -- | @commandBuffer@ is the command buffer into which the command will be+                                   -- recorded.+                                   CommandBuffer+                                -> -- | @pInfo@ is a pointer to a 'CopyAccelerationStructureInfoKHR' structure+                                   -- defining the copy operation.+                                   CopyAccelerationStructureInfoKHR+                                -> io ()+cmdCopyAccelerationStructureKHR commandBuffer info = liftIO . evalContT $ do+  let vkCmdCopyAccelerationStructureKHRPtr = pVkCmdCopyAccelerationStructureKHR (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdCopyAccelerationStructureKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyAccelerationStructureKHR is null" Nothing Nothing+  let vkCmdCopyAccelerationStructureKHR' = mkVkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHRPtr+  pInfo <- ContT $ withCStruct (info)+  lift $ vkCmdCopyAccelerationStructureKHR' (commandBufferHandle (commandBuffer)) pInfo+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCopyAccelerationStructureKHR+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr CopyAccelerationStructureInfoKHR -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Ptr CopyAccelerationStructureInfoKHR -> IO Result++-- | vkCopyAccelerationStructureKHR - Copy an acceleration structure on the+-- host+--+-- = Description+--+-- This command fulfills the same task as 'cmdCopyAccelerationStructureKHR'+-- but is executed by the host.+--+-- == Valid Usage+--+-- -   #VUID-vkCopyAccelerationStructureKHR-deferredOperation-03677# If+--     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     it /must/ be a valid+--     'Vulkan.Extensions.Handles.DeferredOperationKHR' object+--+-- -   #VUID-vkCopyAccelerationStructureKHR-deferredOperation-03678# Any+--     previous deferred operation that was associated with+--     @deferredOperation@ /must/ be complete+--+-- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03727# The @buffer@ used+--     to create @pInfo@->@src@ /must/ be bound to host-visible device+--     memory+--+-- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03728# The @buffer@ used+--     to create @pInfo@->@dst@ /must/ be bound to host-visible device+--     memory+--+-- -   #VUID-vkCopyAccelerationStructureKHR-accelerationStructureHostCommands-03582#+--     The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>+--     feature /must/ be enabled+--+-- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03780# The @buffer@ used+--     to create @pInfo@->@src@ /must/ be bound to memory that was not+--     allocated with multiple instances+--+-- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03781# The @buffer@ used+--     to create @pInfo@->@dst@ /must/ be bound to memory that was not+--     allocated with multiple instances+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCopyAccelerationStructureKHR-device-parameter# @device@+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkCopyAccelerationStructureKHR-deferredOperation-parameter# If+--     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @deferredOperation@ /must/ be a valid+--     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle+--+-- -   #VUID-vkCopyAccelerationStructureKHR-pInfo-parameter# @pInfo@ /must/+--     be a valid pointer to a valid 'CopyAccelerationStructureInfoKHR'+--     structure+--+-- -   #VUID-vkCopyAccelerationStructureKHR-deferredOperation-parent# If+--     @deferredOperation@ is a valid handle, it /must/ have been created,+--     allocated, or retrieved from @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'CopyAccelerationStructureInfoKHR',+-- 'Vulkan.Extensions.Handles.DeferredOperationKHR',+-- 'Vulkan.Core10.Handles.Device'+copyAccelerationStructureKHR :: forall io+                              . (MonadIO io)+                             => -- | @device@ is the device which owns the acceleration structures.+                                Device+                             -> -- | @deferredOperation@ is an optional+                                -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to+                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>+                                -- for this command.+                                DeferredOperationKHR+                             -> -- | @pInfo@ is a pointer to a 'CopyAccelerationStructureInfoKHR' structure+                                -- defining the copy operation.+                                CopyAccelerationStructureInfoKHR+                             -> io (Result)+copyAccelerationStructureKHR device deferredOperation info = liftIO . evalContT $ do+  let vkCopyAccelerationStructureKHRPtr = pVkCopyAccelerationStructureKHR (deviceCmds (device :: Device))+  lift $ unless (vkCopyAccelerationStructureKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyAccelerationStructureKHR is null" Nothing Nothing+  let vkCopyAccelerationStructureKHR' = mkVkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHRPtr+  pInfo <- ContT $ withCStruct (info)+  r <- lift $ vkCopyAccelerationStructureKHR' (deviceHandle (device)) (deferredOperation) pInfo+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdCopyAccelerationStructureToMemoryKHR+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyAccelerationStructureToMemoryInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyAccelerationStructureToMemoryInfoKHR -> IO ()++-- | vkCmdCopyAccelerationStructureToMemoryKHR - Copy an acceleration+-- structure to device memory+--+-- = Description+--+-- Accesses to @pInfo@->@src@ /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>+-- with the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>+-- and an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>+-- of+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'.+-- Accesses to the buffer indicated by @pInfo@->@dst.deviceAddress@ /must/+-- be synchronized with the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+-- pipeline stage and an access type of+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT'.+--+-- This command produces the same results as+-- 'copyAccelerationStructureToMemoryKHR', but writes its result to a+-- device address, and is executed on the device rather than the host. The+-- output /may/ not necessarily be bit-for-bit identical, but it can be+-- equally used by either 'cmdCopyMemoryToAccelerationStructureKHR' or+-- 'copyMemoryToAccelerationStructureKHR'.+--+-- The defined header structure for the serialized data consists of:+--+-- -   'Vulkan.Core10.APIConstants.UUID_SIZE' bytes of data matching+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@driverUUID@+--+-- -   'Vulkan.Core10.APIConstants.UUID_SIZE' bytes of data identifying the+--     compatibility for comparison using+--     'getDeviceAccelerationStructureCompatibilityKHR'+--+-- -   A 64-bit integer of the total size matching the value queried using+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'+--+-- -   A 64-bit integer of the deserialized size to be passed in to+--     'AccelerationStructureCreateInfoKHR'::@size@+--+-- -   A 64-bit integer of the count of the number of acceleration+--     structure handles following. This will be zero for a bottom-level+--     acceleration structure.+--+-- The corresponding handles matching the values returned by+-- 'getAccelerationStructureDeviceAddressKHR' or+-- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'+-- are tightly packed in the buffer following the count. The application is+-- expected to store a mapping between those handles and the original+-- application-generated bottom-level acceleration structures to provide+-- when deserializing. The serialized data is written to the buffer (or+-- read from the buffer) according to the host endianness.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03739#+--     @pInfo@->@dst.deviceAddress@ /must/ be a valid device address for a+--     buffer bound to device memory.+--+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03740#+--     @pInfo@->@dst.deviceAddress@ /must/ be aligned to @256@ bytes+--+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03741# If the+--     buffer pointed to by @pInfo@->@dst.deviceAddress@ is non-sparse then+--     it /must/ be bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-03559# The+--     @buffer@ used to create @pInfo@->@src@ /must/ be bound to device+--     memory+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-parameter#+--     @pInfo@ /must/ be a valid pointer to a valid+--     'CopyAccelerationStructureToMemoryInfoKHR' structure+--+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-recording#+--     @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-cmdpool#+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-renderpass# This+--     command /must/ only be called outside of a render pass instance+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'CopyAccelerationStructureToMemoryInfoKHR'+cmdCopyAccelerationStructureToMemoryKHR :: forall io+                                         . (MonadIO io)+                                        => -- | @commandBuffer@ is the command buffer into which the command will be+                                           -- recorded.+                                           CommandBuffer+                                        -> -- | @pInfo@ is an a pointer to a 'CopyAccelerationStructureToMemoryInfoKHR'+                                           -- structure defining the copy operation.+                                           CopyAccelerationStructureToMemoryInfoKHR+                                        -> io ()+cmdCopyAccelerationStructureToMemoryKHR commandBuffer info = liftIO . evalContT $ do+  let vkCmdCopyAccelerationStructureToMemoryKHRPtr = pVkCmdCopyAccelerationStructureToMemoryKHR (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdCopyAccelerationStructureToMemoryKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyAccelerationStructureToMemoryKHR is null" Nothing Nothing+  let vkCmdCopyAccelerationStructureToMemoryKHR' = mkVkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHRPtr+  pInfo <- ContT $ withCStruct (info)+  lift $ vkCmdCopyAccelerationStructureToMemoryKHR' (commandBufferHandle (commandBuffer)) pInfo+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCopyAccelerationStructureToMemoryKHR+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr CopyAccelerationStructureToMemoryInfoKHR -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Ptr CopyAccelerationStructureToMemoryInfoKHR -> IO Result++-- | vkCopyAccelerationStructureToMemoryKHR - Serialize an acceleration+-- structure on the host+--+-- = Description+--+-- This command fulfills the same task as+-- 'cmdCopyAccelerationStructureToMemoryKHR' but is executed by the host.+--+-- This command produces the same results as+-- 'cmdCopyAccelerationStructureToMemoryKHR', but writes its result+-- directly to a host pointer, and is executed on the host rather than the+-- device. The output /may/ not necessarily be bit-for-bit identical, but+-- it can be equally used by either+-- 'cmdCopyMemoryToAccelerationStructureKHR' or+-- 'copyMemoryToAccelerationStructureKHR'.+--+-- == Valid Usage+--+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-03677#+--     If @deferredOperation@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ be a valid+--     'Vulkan.Extensions.Handles.DeferredOperationKHR' object+--+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-03678#+--     Any previous deferred operation that was associated with+--     @deferredOperation@ /must/ be complete+--+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03731# The+--     @buffer@ used to create @pInfo@->@src@ /must/ be bound to+--     host-visible device memory+--+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03732#+--     @pInfo@->@dst.hostAddress@ /must/ be a valid host pointer+--+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03751#+--     @pInfo@->@dst.hostAddress@ /must/ be aligned to 16 bytes+--+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-accelerationStructureHostCommands-03584#+--     The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>+--     feature /must/ be enabled+--+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03783# The+--     @buffer@ used to create @pInfo@->@src@ /must/ be bound to memory+--     that was not allocated with multiple instances+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-device-parameter#+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parameter#+--     If @deferredOperation@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @deferredOperation@ /must/+--     be a valid 'Vulkan.Extensions.Handles.DeferredOperationKHR' handle+--+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-parameter#+--     @pInfo@ /must/ be a valid pointer to a valid+--     'CopyAccelerationStructureToMemoryInfoKHR' structure+--+-- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parent#+--     If @deferredOperation@ is a valid handle, it /must/ have been+--     created, allocated, or retrieved from @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'CopyAccelerationStructureToMemoryInfoKHR',+-- 'Vulkan.Extensions.Handles.DeferredOperationKHR',+-- 'Vulkan.Core10.Handles.Device'+copyAccelerationStructureToMemoryKHR :: forall io+                                      . (MonadIO io)+                                     => -- | @device@ is the device which owns @pInfo@->@src@.+                                        Device+                                     -> -- | @deferredOperation@ is an optional+                                        -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to+                                        -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>+                                        -- for this command.+                                        DeferredOperationKHR+                                     -> -- | @pInfo@ is a pointer to a 'CopyAccelerationStructureToMemoryInfoKHR'+                                        -- structure defining the copy operation.+                                        CopyAccelerationStructureToMemoryInfoKHR+                                     -> io (Result)+copyAccelerationStructureToMemoryKHR device deferredOperation info = liftIO . evalContT $ do+  let vkCopyAccelerationStructureToMemoryKHRPtr = pVkCopyAccelerationStructureToMemoryKHR (deviceCmds (device :: Device))+  lift $ unless (vkCopyAccelerationStructureToMemoryKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyAccelerationStructureToMemoryKHR is null" Nothing Nothing+  let vkCopyAccelerationStructureToMemoryKHR' = mkVkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHRPtr+  pInfo <- ContT $ withCStruct (info)+  r <- lift $ vkCopyAccelerationStructureToMemoryKHR' (deviceHandle (device)) (deferredOperation) pInfo+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdCopyMemoryToAccelerationStructureKHR+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyMemoryToAccelerationStructureInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyMemoryToAccelerationStructureInfoKHR -> IO ()++-- | vkCmdCopyMemoryToAccelerationStructureKHR - Copy device memory to an+-- acceleration structure+--+-- = Description+--+-- Accesses to @pInfo@->@dst@ /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>+-- with the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>+-- and an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>+-- of+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'.+-- Accesses to the buffer indicated by @pInfo@->@src.deviceAddress@ /must/+-- be synchronized with the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+-- pipeline stage and an access type of+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_READ_BIT'.+--+-- This command can accept acceleration structures produced by either+-- 'cmdCopyAccelerationStructureToMemoryKHR' or+-- 'copyAccelerationStructureToMemoryKHR'.+--+-- The structure provided as input to deserialize is as described in+-- 'cmdCopyAccelerationStructureToMemoryKHR', with any acceleration+-- structure handles filled in with the newly-queried handles to bottom+-- level acceleration structures created before deserialization. These do+-- not need to be built at deserialize time, but /must/ be created.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03742#+--     @pInfo@->@src.deviceAddress@ /must/ be a valid device address for a+--     buffer bound to device memory.+--+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03743#+--     @pInfo@->@src.deviceAddress@ /must/ be aligned to @256@ bytes+--+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03744# If the+--     buffer pointed to by @pInfo@->@src.deviceAddress@ is non-sparse then+--     it /must/ be bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-buffer-03745# The+--     @buffer@ used to create @pInfo@->@dst@ /must/ be bound to device+--     memory+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-parameter#+--     @pInfo@ /must/ be a valid pointer to a valid+--     'CopyMemoryToAccelerationStructureInfoKHR' structure+--+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-recording#+--     @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-cmdpool#+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-renderpass# This+--     command /must/ only be called outside of a render pass instance+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'CopyMemoryToAccelerationStructureInfoKHR'+cmdCopyMemoryToAccelerationStructureKHR :: forall io+                                         . (MonadIO io)+                                        => -- | @commandBuffer@ is the command buffer into which the command will be+                                           -- recorded.+                                           CommandBuffer+                                        -> -- | @pInfo@ is a pointer to a 'CopyMemoryToAccelerationStructureInfoKHR'+                                           -- structure defining the copy operation.+                                           CopyMemoryToAccelerationStructureInfoKHR+                                        -> io ()+cmdCopyMemoryToAccelerationStructureKHR commandBuffer info = liftIO . evalContT $ do+  let vkCmdCopyMemoryToAccelerationStructureKHRPtr = pVkCmdCopyMemoryToAccelerationStructureKHR (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdCopyMemoryToAccelerationStructureKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyMemoryToAccelerationStructureKHR is null" Nothing Nothing+  let vkCmdCopyMemoryToAccelerationStructureKHR' = mkVkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHRPtr+  pInfo <- ContT $ withCStruct (info)+  lift $ vkCmdCopyMemoryToAccelerationStructureKHR' (commandBufferHandle (commandBuffer)) pInfo+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCopyMemoryToAccelerationStructureKHR+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMemoryToAccelerationStructureInfoKHR -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Ptr CopyMemoryToAccelerationStructureInfoKHR -> IO Result++-- | vkCopyMemoryToAccelerationStructureKHR - Deserialize an acceleration+-- structure on the host+--+-- = Description+--+-- This command fulfills the same task as+-- 'cmdCopyMemoryToAccelerationStructureKHR' but is executed by the host.+--+-- This command can accept acceleration structures produced by either+-- 'cmdCopyAccelerationStructureToMemoryKHR' or+-- 'copyAccelerationStructureToMemoryKHR'.+--+-- == Valid Usage+--+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-03677#+--     If @deferredOperation@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ be a valid+--     'Vulkan.Extensions.Handles.DeferredOperationKHR' object+--+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-03678#+--     Any previous deferred operation that was associated with+--     @deferredOperation@ /must/ be complete+--+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03729#+--     @pInfo@->@src.hostAddress@ /must/ be a valid host pointer+--+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03750#+--     @pInfo@->@src.hostAddress@ /must/ be aligned to 16 bytes+--+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03730# The+--     @buffer@ used to create @pInfo@->@dst@ /must/ be bound to+--     host-visible device memory+--+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-accelerationStructureHostCommands-03583#+--     The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>+--     feature /must/ be enabled+--+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03782# The+--     @buffer@ used to create @pInfo@->@dst@ /must/ be bound to memory+--     that was not allocated with multiple instances+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-device-parameter#+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parameter#+--     If @deferredOperation@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @deferredOperation@ /must/+--     be a valid 'Vulkan.Extensions.Handles.DeferredOperationKHR' handle+--+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-parameter#+--     @pInfo@ /must/ be a valid pointer to a valid+--     'CopyMemoryToAccelerationStructureInfoKHR' structure+--+-- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parent#+--     If @deferredOperation@ is a valid handle, it /must/ have been+--     created, allocated, or retrieved from @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'CopyMemoryToAccelerationStructureInfoKHR',+-- 'Vulkan.Extensions.Handles.DeferredOperationKHR',+-- 'Vulkan.Core10.Handles.Device'+copyMemoryToAccelerationStructureKHR :: forall io+                                      . (MonadIO io)+                                     => -- | @device@ is the device which owns @pInfo->dst@.+                                        Device+                                     -> -- | @deferredOperation@ is an optional+                                        -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to+                                        -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>+                                        -- for this command.+                                        DeferredOperationKHR+                                     -> -- | @pInfo@ is a pointer to a 'CopyMemoryToAccelerationStructureInfoKHR'+                                        -- structure defining the copy operation.+                                        CopyMemoryToAccelerationStructureInfoKHR+                                     -> io (Result)+copyMemoryToAccelerationStructureKHR device deferredOperation info = liftIO . evalContT $ do+  let vkCopyMemoryToAccelerationStructureKHRPtr = pVkCopyMemoryToAccelerationStructureKHR (deviceCmds (device :: Device))+  lift $ unless (vkCopyMemoryToAccelerationStructureKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyMemoryToAccelerationStructureKHR is null" Nothing Nothing+  let vkCopyMemoryToAccelerationStructureKHR' = mkVkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHRPtr+  pInfo <- ContT $ withCStruct (info)+  r <- lift $ vkCopyMemoryToAccelerationStructureKHR' (deviceHandle (device)) (deferredOperation) pInfo+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdWriteAccelerationStructuresPropertiesKHR+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> QueryPool -> Word32 -> IO ()++-- | vkCmdWriteAccelerationStructuresPropertiesKHR - Write acceleration+-- structure result parameters to query results.+--+-- = Description+--+-- Accesses to any of the acceleration structures listed in+-- @pAccelerationStructures@ /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>+-- with the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>+-- and an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>+-- of+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02493#+--     @queryPool@ /must/ have been created with a @queryType@ matching+--     @queryType@+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02494#+--     The queries identified by @queryPool@ and @firstQuery@ /must/ be+--     /unavailable/+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-buffer-03736#+--     The @buffer@ used to create each acceleration structure in+--     @pAccelerationStructures@ /must/ be bound to device memory+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431#+--     All acceleration structures in @pAccelerationStructures@ /must/ have+--     been built with+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' if+--     @queryType@ is+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-03432#+--     @queryType@ /must/ be+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'+--     or+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter#+--     @pAccelerationStructures@ /must/ be a valid pointer to an array of+--     @accelerationStructureCount@ valid+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handles+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-parameter#+--     @queryType@ /must/ be a valid+--     'Vulkan.Core10.Enums.QueryType.QueryType' value+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-parameter#+--     @queryPool@ /must/ be a valid 'Vulkan.Core10.Handles.QueryPool'+--     handle+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-recording#+--     @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-cmdpool#+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-renderpass# This+--     command /must/ only be called outside of a render pass instance+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength#+--     @accelerationStructureCount@ /must/ be greater than @0@+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commonparent#+--     Each of @commandBuffer@, @queryPool@, and the elements of+--     @pAccelerationStructures@ /must/ have been created, allocated, or+--     retrieved from the same 'Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.Handles.QueryPool',+-- 'Vulkan.Core10.Enums.QueryType.QueryType'+cmdWriteAccelerationStructuresPropertiesKHR :: forall io+                                             . (MonadIO io)+                                            => -- | @commandBuffer@ is the command buffer into which the command will be+                                               -- recorded.+                                               CommandBuffer+                                            -> -- | @pAccelerationStructures@ is a pointer to an array of existing+                                               -- previously built acceleration structures.+                                               ("accelerationStructures" ::: Vector AccelerationStructureKHR)+                                            -> -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value+                                               -- specifying the type of queries managed by the pool.+                                               QueryType+                                            -> -- | @queryPool@ is the query pool that will manage the results of the query.+                                               QueryPool+                                            -> -- | @firstQuery@ is the first query index within the query pool that will+                                               -- contain the @accelerationStructureCount@ number of results.+                                               ("firstQuery" ::: Word32)+                                            -> io ()+cmdWriteAccelerationStructuresPropertiesKHR commandBuffer accelerationStructures queryType queryPool firstQuery = liftIO . evalContT $ do+  let vkCmdWriteAccelerationStructuresPropertiesKHRPtr = pVkCmdWriteAccelerationStructuresPropertiesKHR (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdWriteAccelerationStructuresPropertiesKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteAccelerationStructuresPropertiesKHR is null" Nothing Nothing+  let vkCmdWriteAccelerationStructuresPropertiesKHR' = mkVkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHRPtr+  pPAccelerationStructures <- ContT $ allocaBytesAligned @AccelerationStructureKHR ((Data.Vector.length (accelerationStructures)) * 8) 8+  lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (accelerationStructures)+  lift $ vkCmdWriteAccelerationStructuresPropertiesKHR' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32)) (pPAccelerationStructures) (queryType) (queryPool) (firstQuery)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkWriteAccelerationStructuresPropertiesKHR+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> CSize -> Ptr () -> CSize -> IO Result) -> Ptr Device_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> CSize -> Ptr () -> CSize -> IO Result++-- | vkWriteAccelerationStructuresPropertiesKHR - Query acceleration+-- structure meta-data on the host+--+-- = Description+--+-- This command fulfills the same task as+-- 'cmdWriteAccelerationStructuresPropertiesKHR' but is executed by the+-- host.+--+-- == Valid Usage+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431#+--     All acceleration structures in @pAccelerationStructures@ /must/ have+--     been built with+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' if+--     @queryType@ is+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03432#+--     @queryType@ /must/ be+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'+--     or+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03448# If+--     @queryType@ is+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',+--     then @stride@ /must/ be a multiple of the size of+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03449# If+--     @queryType@ is+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',+--     then @data@ /must/ point to a+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03450# If+--     @queryType@ is+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR',+--     then @stride@ /must/ be a multiple of the size of+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03451# If+--     @queryType@ is+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR',+--     then @data@ /must/ point to a+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-03452#+--     @dataSize@ /must/ be greater than or equal to+--     @accelerationStructureCount@*@stride@+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03733# The+--     @buffer@ used to create each acceleration structure in+--     @pAccelerationStructures@ /must/ be bound to host-visible device+--     memory+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureHostCommands-03585#+--     The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>+--     feature /must/ be enabled+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03784# The+--     @buffer@ used to create each acceleration structure in+--     @pAccelerationStructures@ /must/ be bound to memory that was not+--     allocated with multiple instances+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-device-parameter#+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter#+--     @pAccelerationStructures@ /must/ be a valid pointer to an array of+--     @accelerationStructureCount@ valid+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handles+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-parameter#+--     @queryType@ /must/ be a valid+--     'Vulkan.Core10.Enums.QueryType.QueryType' value+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pData-parameter#+--     @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength#+--     @accelerationStructureCount@ /must/ be greater than @0@+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-arraylength#+--     @dataSize@ /must/ be greater than @0@+--+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parent#+--     Each element of @pAccelerationStructures@ /must/ have been created,+--     allocated, or retrieved from @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Vulkan.Core10.Handles.Device',+-- 'Vulkan.Core10.Enums.QueryType.QueryType'+writeAccelerationStructuresPropertiesKHR :: forall io+                                          . (MonadIO io)+                                         => -- | @device@ is the device which owns the acceleration structures in+                                            -- @pAccelerationStructures@.+                                            Device+                                         -> -- | @pAccelerationStructures@ points to an array of existing previously+                                            -- built acceleration structures.+                                            ("accelerationStructures" ::: Vector AccelerationStructureKHR)+                                         -> -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value+                                            -- specifying the property to be queried.+                                            QueryType+                                         -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.+                                            ("dataSize" ::: Word64)+                                         -> -- | @pData@ is a pointer to a user-allocated buffer where the results will+                                            -- be written.+                                            ("data" ::: Ptr ())+                                         -> -- | @stride@ is the stride in bytes between results for individual queries+                                            -- within @pData@.+                                            ("stride" ::: Word64)+                                         -> io ()+writeAccelerationStructuresPropertiesKHR device accelerationStructures queryType dataSize data' stride = liftIO . evalContT $ do+  let vkWriteAccelerationStructuresPropertiesKHRPtr = pVkWriteAccelerationStructuresPropertiesKHR (deviceCmds (device :: Device))+  lift $ unless (vkWriteAccelerationStructuresPropertiesKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkWriteAccelerationStructuresPropertiesKHR is null" Nothing Nothing+  let vkWriteAccelerationStructuresPropertiesKHR' = mkVkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHRPtr+  pPAccelerationStructures <- ContT $ allocaBytesAligned @AccelerationStructureKHR ((Data.Vector.length (accelerationStructures)) * 8) 8+  lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (accelerationStructures)+  r <- lift $ vkWriteAccelerationStructuresPropertiesKHR' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32)) (pPAccelerationStructures) (queryType) (CSize (dataSize)) (data') (CSize (stride))+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetDeviceAccelerationStructureCompatibilityKHR+  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureVersionInfoKHR -> Ptr AccelerationStructureCompatibilityKHR -> IO ()) -> Ptr Device_T -> Ptr AccelerationStructureVersionInfoKHR -> Ptr AccelerationStructureCompatibilityKHR -> IO ()++-- | vkGetDeviceAccelerationStructureCompatibilityKHR - Check if a serialized+-- acceleration structure is compatible with the current device+--+-- == Valid Usage+--+-- -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-rayTracingPipeline-03661#+--     The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-device-parameter#+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pVersionInfo-parameter#+--     @pVersionInfo@ /must/ be a valid pointer to a valid+--     'AccelerationStructureVersionInfoKHR' structure+--+-- -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pCompatibility-parameter#+--     @pCompatibility@ /must/ be a valid pointer to a+--     'AccelerationStructureCompatibilityKHR' value+--+-- = See Also+--+-- 'AccelerationStructureCompatibilityKHR',+-- 'AccelerationStructureVersionInfoKHR', 'Vulkan.Core10.Handles.Device'+getDeviceAccelerationStructureCompatibilityKHR :: forall io+                                                . (MonadIO io)+                                               => -- | @device@ is the device to check the version against.+                                                  Device+                                               -> -- | @pVersionInfo@ points to the 'AccelerationStructureVersionInfoKHR'+                                                  -- version information to check against the device.+                                                  AccelerationStructureVersionInfoKHR+                                               -> io (AccelerationStructureCompatibilityKHR)+getDeviceAccelerationStructureCompatibilityKHR device versionInfo = liftIO . evalContT $ do+  let vkGetDeviceAccelerationStructureCompatibilityKHRPtr = pVkGetDeviceAccelerationStructureCompatibilityKHR (deviceCmds (device :: Device))+  lift $ unless (vkGetDeviceAccelerationStructureCompatibilityKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceAccelerationStructureCompatibilityKHR is null" Nothing Nothing+  let vkGetDeviceAccelerationStructureCompatibilityKHR' = mkVkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHRPtr+  pVersionInfo <- ContT $ withCStruct (versionInfo)+  pPCompatibility <- ContT $ bracket (callocBytes @AccelerationStructureCompatibilityKHR 4) free+  lift $ vkGetDeviceAccelerationStructureCompatibilityKHR' (deviceHandle (device)) pVersionInfo (pPCompatibility)+  pCompatibility <- lift $ peek @AccelerationStructureCompatibilityKHR pPCompatibility+  pure $ (pCompatibility)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCreateAccelerationStructureKHR+  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr AccelerationStructureKHR -> IO Result) -> Ptr Device_T -> Ptr AccelerationStructureCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr AccelerationStructureKHR -> IO Result++-- | vkCreateAccelerationStructureKHR - Create a new acceleration structure+-- object+--+-- = Description+--+-- Similar to other objects in Vulkan, the acceleration structure creation+-- merely creates an object with a specific “shape”. The type and quantity+-- of geometry that can be built into an acceleration structure is+-- determined by the parameters of 'AccelerationStructureCreateInfoKHR'.+--+-- Populating the data in the object after allocating and binding memory is+-- done with commands such as 'cmdBuildAccelerationStructuresKHR',+-- 'buildAccelerationStructuresKHR', 'cmdCopyAccelerationStructureKHR', and+-- 'copyAccelerationStructureKHR'.+--+-- The input buffers passed to acceleration structure build commands will+-- be referenced by the implementation for the duration of the command.+-- After the command completes, the acceleration structure /may/ hold a+-- reference to any acceleration structure specified by an active instance+-- contained therein. Apart from this referencing, acceleration structures+-- /must/ be fully self-contained. The application /may/ re-use or free any+-- memory which was used by the command as an input or as scratch without+-- affecting the results of ray traversal.+--+-- == Valid Usage+--+-- -   #VUID-vkCreateAccelerationStructureKHR-accelerationStructure-03611#+--     The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>+--     feature /must/ be enabled+--+-- -   #VUID-vkCreateAccelerationStructureKHR-deviceAddress-03488# If+--     'AccelerationStructureCreateInfoKHR'::@deviceAddress@ is not zero,+--     the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureCaptureReplay accelerationStructureCaptureReplay>+--     feature /must/ be enabled+--+-- -   #VUID-vkCreateAccelerationStructureKHR-device-03489# If @device@ was+--     created with multiple physical devices, then the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCreateAccelerationStructureKHR-device-parameter# @device@+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkCreateAccelerationStructureKHR-pCreateInfo-parameter#+--     @pCreateInfo@ /must/ be a valid pointer to a valid+--     'AccelerationStructureCreateInfoKHR' structure+--+-- -   #VUID-vkCreateAccelerationStructureKHR-pAllocator-parameter# If+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   #VUID-vkCreateAccelerationStructureKHR-pAccelerationStructure-parameter#+--     @pAccelerationStructure@ /must/ be a valid pointer to a+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'+--+-- = See Also+--+-- 'AccelerationStructureCreateInfoKHR',+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Vulkan.Core10.Handles.Device'+createAccelerationStructureKHR :: forall io+                                . (MonadIO io)+                               => -- | @device@ is the logical device that creates the acceleration structure+                                  -- object.+                                  Device+                               -> -- | @pCreateInfo@ is a pointer to a 'AccelerationStructureCreateInfoKHR'+                                  -- structure containing parameters affecting creation of the acceleration+                                  -- structure.+                                  AccelerationStructureCreateInfoKHR+                               -> -- | @pAllocator@ controls host memory allocation as described in the+                                  -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+                                  -- chapter.+                                  ("allocator" ::: Maybe AllocationCallbacks)+                               -> io (AccelerationStructureKHR)+createAccelerationStructureKHR device createInfo allocator = liftIO . evalContT $ do+  let vkCreateAccelerationStructureKHRPtr = pVkCreateAccelerationStructureKHR (deviceCmds (device :: Device))+  lift $ unless (vkCreateAccelerationStructureKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateAccelerationStructureKHR is null" Nothing Nothing+  let vkCreateAccelerationStructureKHR' = mkVkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHRPtr+  pCreateInfo <- ContT $ withCStruct (createInfo)+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  pPAccelerationStructure <- ContT $ bracket (callocBytes @AccelerationStructureKHR 8) free+  r <- lift $ vkCreateAccelerationStructureKHR' (deviceHandle (device)) pCreateInfo pAllocator (pPAccelerationStructure)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pAccelerationStructure <- lift $ peek @AccelerationStructureKHR pPAccelerationStructure+  pure $ (pAccelerationStructure)++-- | A convenience wrapper to make a compatible pair of calls to+-- 'createAccelerationStructureKHR' and 'destroyAccelerationStructureKHR'+--+-- To ensure that 'destroyAccelerationStructureKHR' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument.+--+withAccelerationStructureKHR :: forall io r . MonadIO io => Device -> AccelerationStructureCreateInfoKHR -> Maybe AllocationCallbacks -> (io AccelerationStructureKHR -> (AccelerationStructureKHR -> io ()) -> r) -> r+withAccelerationStructureKHR device pCreateInfo pAllocator b =+  b (createAccelerationStructureKHR device pCreateInfo pAllocator)+    (\(o0) -> destroyAccelerationStructureKHR device o0 pAllocator)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdBuildAccelerationStructuresKHR+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr (Ptr AccelerationStructureBuildRangeInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr (Ptr AccelerationStructureBuildRangeInfoKHR) -> IO ()++-- | vkCmdBuildAccelerationStructuresKHR - Build an acceleration structure+--+-- = Description+--+-- The 'cmdBuildAccelerationStructuresKHR' command provides the ability to+-- initiate multiple acceleration structures builds, however there is no+-- ordering or synchronization implied between any of the individual+-- acceleration structure builds.+--+-- Note+--+-- This means that an application /cannot/ build a top-level acceleration+-- structure in the same 'cmdBuildAccelerationStructuresKHR' call as the+-- associated bottom-level or instance acceleration structures are being+-- built. There also /cannot/ be any memory aliasing between any+-- acceleration structure memories or scratch memories being used by any of+-- the builds.+--+-- Accesses to the acceleration structure scratch buffers as identified by+-- the 'AccelerationStructureBuildGeometryInfoKHR'→@scratchData@ buffer+-- device addresses /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>+-- with the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>+-- and an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>+-- of+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'+-- or+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'.+-- Similarly for accesses to each+-- 'AccelerationStructureBuildGeometryInfoKHR'→@srcAccelerationStructure@+-- and+-- 'AccelerationStructureBuildGeometryInfoKHR'→@dstAccelerationStructure@.+--+-- Accesses to other input buffers as identified by any used values of+-- 'AccelerationStructureGeometryTrianglesDataKHR'→@vertexData@,+-- 'AccelerationStructureGeometryTrianglesDataKHR'→@indexData@,+-- 'AccelerationStructureGeometryTrianglesDataKHR'→@transformData@,+-- 'AccelerationStructureGeometryAabbsDataKHR'→@data@, and+-- 'AccelerationStructureGeometryInstancesDataKHR'→@data@ /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>+-- with the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>+-- and an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>+-- of 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_SHADER_READ_BIT'.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03403# The+--     @srcAccelerationStructure@ member of any element of @pInfos@ /must/+--     not be the same acceleration structure as the+--     @dstAccelerationStructure@ member of any other element of @pInfos@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03698#+--     The @dstAccelerationStructure@ member of any element of @pInfos@+--     /must/ not be the same acceleration structure as the+--     @dstAccelerationStructure@ member of any other element of @pInfos@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03800#+--     The @dstAccelerationStructure@ member of any element of @pInfos@+--     /must/ be a valid+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03699# For each+--     element of @pInfos@, if its @type@ member is+--     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', its+--     @dstAccelerationStructure@ member /must/ have been created with a+--     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to+--     either 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' or+--     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03700# For each+--     element of @pInfos@, if its @type@ member is+--     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR', its+--     @dstAccelerationStructure@ member /must/ have been created with a+--     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to+--     either 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' or+--     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03663# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR',+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives>+--     in its @srcAccelerationStructure@ member /must/ not be made active+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03664# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', active primitives in+--     its @srcAccelerationStructure@ member /must/ not be made+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive>+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-None-03407# The+--     @dstAccelerationStructure@ member of any element of @pInfos@ /must/+--     not be referenced by the @geometry.instances.data@ member of any+--     element of @pGeometries@ or @ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03701#+--     The range of memory backing the @dstAccelerationStructure@ member of+--     any element of @pInfos@ that is accessed by this command /must/ not+--     overlap the memory backing the @srcAccelerationStructure@ member of+--     any other element of @pInfos@ with a @mode@ equal to+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', which is accessed by+--     this command+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03702#+--     The range of memory backing the @dstAccelerationStructure@ member of+--     any element of @pInfos@ that is accessed by this command /must/ not+--     overlap the memory backing the @dstAccelerationStructure@ member of+--     any other element of @pInfos@, which is accessed by this command+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03703#+--     The range of memory backing the @dstAccelerationStructure@ member of+--     any element of @pInfos@ that is accessed by this command /must/ not+--     overlap the memory backing the @scratchData@ member of any element+--     of @pInfos@ (including the same element), which is accessed by this+--     command+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03704# The+--     range of memory backing the @scratchData@ member of any element of+--     @pInfos@ that is accessed by this command /must/ not overlap the+--     memory backing the @scratchData@ member of any other element of+--     @pInfos@, which is accessed by this command+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03705# The+--     range of memory backing the @scratchData@ member of any element of+--     @pInfos@ that is accessed by this command /must/ not overlap the+--     memory backing the @srcAccelerationStructure@ member of any element+--     of @pInfos@ with a @mode@ equal to+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' (including the same+--     element), which is accessed by this command+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03706#+--     The range of memory backing the @dstAccelerationStructure@ member of+--     any element of @pInfos@ that is accessed by this command /must/ not+--     overlap the memory backing any acceleration structure referenced by+--     the @geometry.instances.data@ member of any element of @pGeometries@+--     or @ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@,+--     which is accessed by this command+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03666# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its+--     @srcAccelerationStructure@ member /must/ not be+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03667# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its+--     @srcAccelerationStructure@ member /must/ have been built before with+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' set in+--     'AccelerationStructureBuildGeometryInfoKHR'::@flags@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03668# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its+--     @srcAccelerationStructure@ and @dstAccelerationStructure@ members+--     /must/ either be the same+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR', or not have+--     any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03758# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @geometryCount@+--     member /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03759# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @flags@ member+--     /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03760# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @type@ member+--     /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03761# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, its @geometryType@ member+--     /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03762# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, its @flags@ member /must/+--     have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03763# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.vertexFormat@+--     member /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03764# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.maxVertex@+--     member /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03765# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.indexType@+--     member /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03766# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if its+--     @geometry.triangles.transformData@ member was NULL when+--     @srcAccelerationStructure@ was last built, then it must be NULL.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03767# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if its+--     @geometry.triangles.transformData@ member was not NULL when+--     @srcAccelerationStructure@ was last built, then it may not be NULL.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03768# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and @geometry.triangles.indexType@ is+--     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then the+--     value of each index referenced index must be the same as the+--     corresponding index value when @srcAccelerationStructure@ was last+--     built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-primitiveCount-03769# For+--     each 'AccelerationStructureBuildRangeInfoKHR' referenced by this+--     command, its @primitiveCount@ member /must/ have the same value+--     which was specified when @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-firstVertex-03770# For+--     each 'AccelerationStructureBuildRangeInfoKHR' referenced by this+--     command, if the corresponding geometry uses indices, its+--     @firstVertex@ member /must/ have the same value which was specified+--     when @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03801# For each+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', the+--     corresponding @ppBuildRangeInfos@[i][j].@primitiveCount@ /must/ be+--     less than or equal to+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxInstanceCount@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03707# For each+--     element of @pInfos@, the @buffer@ used to create its+--     @dstAccelerationStructure@ member /must/ be bound to device memory+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03708# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' the @buffer@ used to+--     create its @srcAccelerationStructure@ member /must/ be bound to+--     device memory+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03709# For each+--     element of @pInfos@, the @buffer@ used to create each acceleration+--     structure referenced by the @geometry.instances.data@ member of any+--     element of @pGeometries@ or @ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR' /must/ be bound to device memory+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03671# If+--     @pInfos@[i].@mode@ is 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR',+--     all addresses between @pInfos@[i].@scratchData.deviceAddress@ and+--     @pInfos@[i].@scratchData.deviceAddress@ + N - 1 /must/ be in the+--     buffer device address range of the same buffer, where N is given by+--     the @buildScratchSize@ member of the+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive+--     count+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03672# If+--     @pInfos@[i].@mode@ is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', all addresses+--     between @pInfos@[i].@scratchData.deviceAddress@ and+--     @pInfos@[i].@scratchData.deviceAddress@ + N - 1 /must/ be in the+--     buffer device address range of the same buffer, where N is given by+--     the @updateScratchSize@ member of the+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive+--     count+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-geometry-03673# The+--     buffers from which the buffer device addresses for all of the+--     @geometry.triangles.vertexData@, @geometry.triangles.indexData@,+--     @geometry.triangles.transformData@, @geometry.aabbs.data@, and+--     @geometry.instances.data@ members of all @pInfos@[i].@pGeometries@+--     and @pInfos@[i].@ppGeometries@ /must/ have been created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'+--     usage flag+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03674# The buffer+--     from which the buffer device address+--     @pInfos@[i].@scratchData.deviceAddress@ is queried /must/ have been+--     created with+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'+--     usage flag+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03802# For each+--     element of @pInfos@, its @scratchData.deviceAddress@ member /must/+--     be a valid device address obtained from+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03803# For each+--     element of @pInfos@, if @scratchData.deviceAddress@ is the address+--     of a non-sparse buffer then it /must/ be bound completely and+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03710# For each+--     element of @pInfos@, its @scratchData.deviceAddress@ member /must/+--     be a multiple of+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@minAccelerationStructureScratchOffsetAlignment@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03804# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR',+--     @geometry.triangles.vertexData.deviceAddress@ /must/ be a valid+--     device address obtained from+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03805# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if+--     @geometry.triangles.vertexData.deviceAddress@ is the address of a+--     non-sparse buffer then it /must/ be bound completely and+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03711# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR',+--     @geometry.triangles.vertexData.deviceAddress@ /must/ be aligned to+--     the size in bytes of the smallest component of the format in+--     @vertexFormat@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03806# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if+--     @geometry.triangles.indexType@ is not+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',+--     @geometry.triangles.indexData.deviceAddress@ /must/ be a valid+--     device address obtained from+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03807# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if+--     @geometry.triangles.indexType@ is not+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', if+--     @geometry.triangles.indexData.deviceAddress@ is the address of a+--     non-sparse buffer then it /must/ be bound completely and+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03712# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', and with+--     @geometry.triangles.indexType@ not equal to+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',+--     @geometry.triangles.indexData.deviceAddress@ /must/ be aligned to+--     the size in bytes of the type in @indexType@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03808# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if+--     @geometry.triangles.transformData.deviceAddress@ is not @0@, it+--     /must/ be a valid device address obtained from+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03809# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if+--     @geometry.triangles.transformData.deviceAddress@ is the address of a+--     non-sparse buffer then it /must/ be bound completely and+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03810# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if+--     @geometry.triangles.transformData.deviceAddress@ is not @0@, it+--     /must/ be aligned to @16@ bytes+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03811# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_AABBS_KHR',+--     @geometry.aabbs.data.deviceAddress@ /must/ be a valid device address+--     obtained from+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03812# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_AABBS_KHR', if+--     @geometry.aabbs.data.deviceAddress@ is the address of a non-sparse+--     buffer then it /must/ be bound completely and contiguously to a+--     single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03714# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_AABBS_KHR',+--     @geometry.aabbs.data.deviceAddress@ /must/ be aligned to @8@ bytes+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03715# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', if+--     @geometry.arrayOfPointers@ is+--     'Vulkan.Core10.FundamentalTypes.FALSE',+--     @geometry.instances.data.deviceAddress@ /must/ be aligned to @16@+--     bytes+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03716# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', if+--     @geometry.arrayOfPointers@ is 'Vulkan.Core10.FundamentalTypes.TRUE',+--     @geometry.instances.data.deviceAddress@ /must/ be aligned to @8@+--     bytes+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03717# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', if+--     @geometry.arrayOfPointers@ is 'Vulkan.Core10.FundamentalTypes.TRUE',+--     each element of @geometry.instances.data.deviceAddress@ in device+--     memory /must/ be aligned to @16@ bytes+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03813# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR',+--     @geometry.instances.data.deviceAddress@ /must/ be a valid device+--     address obtained from+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03814# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', if+--     @geometry.instances.data.deviceAddress@ is the address of a+--     non-sparse buffer then it /must/ be bound completely and+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03815# For any+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', each+--     'AccelerationStructureInstanceKHR'::@accelerationStructureReference@+--     value in @geometry.instances.data.deviceAddress@ /must/ be a valid+--     device address containing a value obtained from+--     'getAccelerationStructureDeviceAddressKHR'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03675# For each+--     @pInfos@[i], @dstAccelerationStructure@ /must/ have been created+--     with a value of 'AccelerationStructureCreateInfoKHR'::@size@ greater+--     than or equal to the memory size required by the build operation, as+--     returned by 'getAccelerationStructureBuildSizesKHR' with+--     @pBuildInfo@ = @pInfos@[i] and with each element of the+--     @pMaxPrimitiveCounts@ array greater than or equal to the equivalent+--     @ppBuildRangeInfos@[i][j].@primitiveCount@ values for @j@ in+--     [0,@pInfos@[i].@geometryCount@)+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676#+--     Each element of @ppBuildRangeInfos@[i] /must/ be a valid pointer to+--     an array of @pInfos@[i].@geometryCount@+--     'AccelerationStructureBuildRangeInfoKHR' structures+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-parameter# @pInfos@+--     /must/ be a valid pointer to an array of @infoCount@ valid+--     'AccelerationStructureBuildGeometryInfoKHR' structures+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter#+--     @ppBuildRangeInfos@ /must/ be a valid pointer to an array of+--     @infoCount@ 'AccelerationStructureBuildRangeInfoKHR' structures+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-recording#+--     @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-renderpass# This command+--     /must/ only be called outside of a render pass instance+--+-- -   #VUID-vkCmdBuildAccelerationStructuresKHR-infoCount-arraylength#+--     @infoCount@ /must/ be greater than @0@+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'AccelerationStructureBuildGeometryInfoKHR',+-- 'AccelerationStructureBuildRangeInfoKHR',+-- 'Vulkan.Core10.Handles.CommandBuffer'+cmdBuildAccelerationStructuresKHR :: forall io+                                   . (MonadIO io)+                                  => -- | @commandBuffer@ is the command buffer into which the command will be+                                     -- recorded.+                                     CommandBuffer+                                  -> -- | @pInfos@ is an array of @infoCount@+                                     -- 'AccelerationStructureBuildGeometryInfoKHR' structures defining the+                                     -- geometry used to build each acceleration structure.+                                     ("infos" ::: Vector AccelerationStructureBuildGeometryInfoKHR)+                                  -> -- | @ppBuildRangeInfos@ is an array of @infoCount@ pointers to arrays of+                                     -- 'AccelerationStructureBuildRangeInfoKHR' structures. Each+                                     -- @ppBuildRangeInfos@[i] is an array of @pInfos@[i].@geometryCount@+                                     -- 'AccelerationStructureBuildRangeInfoKHR' structures defining dynamic+                                     -- offsets to the addresses where geometry data is stored, as defined by+                                     -- @pInfos@[i].+                                     ("buildRangeInfos" ::: Vector (Vector AccelerationStructureBuildRangeInfoKHR))+                                  -> io ()+cmdBuildAccelerationStructuresKHR commandBuffer infos buildRangeInfos = liftIO . evalContT $ do+  let vkCmdBuildAccelerationStructuresKHRPtr = pVkCmdBuildAccelerationStructuresKHR (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdBuildAccelerationStructuresKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBuildAccelerationStructuresKHR is null" Nothing Nothing+  let vkCmdBuildAccelerationStructuresKHR' = mkVkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHRPtr+  let pInfosLength = Data.Vector.length $ (infos)+  lift $ unless ((Data.Vector.length $ (buildRangeInfos)) == pInfosLength) $+    throwIO $ IOError Nothing InvalidArgument "" "ppBuildRangeInfos and pInfos must have the same length" Nothing Nothing+  pPInfos <- ContT $ allocaBytesAligned @AccelerationStructureBuildGeometryInfoKHR ((Data.Vector.length (infos)) * 80) 8+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (80 * (i)) :: Ptr AccelerationStructureBuildGeometryInfoKHR) (e) . ($ ())) (infos)+  pPpBuildRangeInfos <- ContT $ allocaBytesAligned @(Ptr AccelerationStructureBuildRangeInfoKHR) ((Data.Vector.length (buildRangeInfos)) * 8) 8+  Data.Vector.imapM_ (\i e -> do+    pPpBuildRangeInfos' <- ContT $ allocaBytesAligned @AccelerationStructureBuildRangeInfoKHR ((Data.Vector.length (e)) * 16) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPpBuildRangeInfos' `plusPtr` (16 * (i)) :: Ptr AccelerationStructureBuildRangeInfoKHR) (e)) (e)+    lift $ poke (pPpBuildRangeInfos `plusPtr` (8 * (i)) :: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) (pPpBuildRangeInfos')) (buildRangeInfos)+  lift $ vkCmdBuildAccelerationStructuresKHR' (commandBufferHandle (commandBuffer)) ((fromIntegral pInfosLength :: Word32)) (pPInfos) (pPpBuildRangeInfos)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdBuildAccelerationStructuresIndirectKHR+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr DeviceAddress -> Ptr Word32 -> Ptr (Ptr Word32) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr DeviceAddress -> Ptr Word32 -> Ptr (Ptr Word32) -> IO ()++-- | vkCmdBuildAccelerationStructuresIndirectKHR - Build an acceleration+-- structure with some parameters provided on the device+--+-- = Description+--+-- Accesses to acceleration structures, scratch buffers, vertex buffers,+-- index buffers, and instance buffers must be synchronized as with+-- 'cmdBuildAccelerationStructuresKHR'.+--+-- Accesses to any element of @pIndirectDeviceAddresses@ /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>+-- with the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>+-- and an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>+-- of+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_INDIRECT_COMMAND_READ_BIT'.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03403# The+--     @srcAccelerationStructure@ member of any element of @pInfos@ /must/+--     not be the same acceleration structure as the+--     @dstAccelerationStructure@ member of any other element of @pInfos@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03698#+--     The @dstAccelerationStructure@ member of any element of @pInfos@+--     /must/ not be the same acceleration structure as the+--     @dstAccelerationStructure@ member of any other element of @pInfos@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03800#+--     The @dstAccelerationStructure@ member of any element of @pInfos@+--     /must/ be a valid+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03699# For+--     each element of @pInfos@, if its @type@ member is+--     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', its+--     @dstAccelerationStructure@ member /must/ have been created with a+--     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to+--     either 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' or+--     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03700# For+--     each element of @pInfos@, if its @type@ member is+--     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR', its+--     @dstAccelerationStructure@ member /must/ have been created with a+--     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to+--     either 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' or+--     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03663# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR',+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives>+--     in its @srcAccelerationStructure@ member /must/ not be made active+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03664# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', active primitives in+--     its @srcAccelerationStructure@ member /must/ not be made+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive>+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-None-03407# The+--     @dstAccelerationStructure@ member of any element of @pInfos@ /must/+--     not be referenced by the @geometry.instances.data@ member of any+--     element of @pGeometries@ or @ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03701#+--     The range of memory backing the @dstAccelerationStructure@ member of+--     any element of @pInfos@ that is accessed by this command /must/ not+--     overlap the memory backing the @srcAccelerationStructure@ member of+--     any other element of @pInfos@ with a @mode@ equal to+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', which is accessed by+--     this command+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03702#+--     The range of memory backing the @dstAccelerationStructure@ member of+--     any element of @pInfos@ that is accessed by this command /must/ not+--     overlap the memory backing the @dstAccelerationStructure@ member of+--     any other element of @pInfos@, which is accessed by this command+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03703#+--     The range of memory backing the @dstAccelerationStructure@ member of+--     any element of @pInfos@ that is accessed by this command /must/ not+--     overlap the memory backing the @scratchData@ member of any element+--     of @pInfos@ (including the same element), which is accessed by this+--     command+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03704#+--     The range of memory backing the @scratchData@ member of any element+--     of @pInfos@ that is accessed by this command /must/ not overlap the+--     memory backing the @scratchData@ member of any other element of+--     @pInfos@, which is accessed by this command+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03705#+--     The range of memory backing the @scratchData@ member of any element+--     of @pInfos@ that is accessed by this command /must/ not overlap the+--     memory backing the @srcAccelerationStructure@ member of any element+--     of @pInfos@ with a @mode@ equal to+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' (including the same+--     element), which is accessed by this command+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03706#+--     The range of memory backing the @dstAccelerationStructure@ member of+--     any element of @pInfos@ that is accessed by this command /must/ not+--     overlap the memory backing any acceleration structure referenced by+--     the @geometry.instances.data@ member of any element of @pGeometries@+--     or @ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@,+--     which is accessed by this command+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03666# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its+--     @srcAccelerationStructure@ member /must/ not be+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03667# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its+--     @srcAccelerationStructure@ member /must/ have been built before with+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' set in+--     'AccelerationStructureBuildGeometryInfoKHR'::@flags@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03668# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its+--     @srcAccelerationStructure@ and @dstAccelerationStructure@ members+--     /must/ either be the same+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR', or not have+--     any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03758# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @geometryCount@+--     member /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03759# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @flags@ member+--     /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03760# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @type@ member+--     /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03761# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, its @geometryType@ member+--     /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03762# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, its @flags@ member /must/+--     have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03763# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.vertexFormat@+--     member /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03764# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.maxVertex@+--     member /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03765# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.indexType@+--     member /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03766# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if its+--     @geometry.triangles.transformData@ member was NULL when+--     @srcAccelerationStructure@ was last built, then it must be NULL.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03767# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if its+--     @geometry.triangles.transformData@ member was not NULL when+--     @srcAccelerationStructure@ was last built, then it may not be NULL.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03768# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and @geometry.triangles.indexType@ is+--     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then the+--     value of each index referenced index must be the same as the+--     corresponding index value when @srcAccelerationStructure@ was last+--     built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-primitiveCount-03769#+--     For each 'AccelerationStructureBuildRangeInfoKHR' referenced by this+--     command, its @primitiveCount@ member /must/ have the same value+--     which was specified when @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-firstVertex-03770#+--     For each 'AccelerationStructureBuildRangeInfoKHR' referenced by this+--     command, if the corresponding geometry uses indices, its+--     @firstVertex@ member /must/ have the same value which was specified+--     when @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03801# For+--     each element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR', the corresponding+--     @ppMaxPrimitiveCounts@[i][j] /must/ be less than or equal to+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxInstanceCount@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03707# For+--     each element of @pInfos@, the @buffer@ used to create its+--     @dstAccelerationStructure@ member /must/ be bound to device memory+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03708# For+--     each element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' the @buffer@ used to+--     create its @srcAccelerationStructure@ member /must/ be bound to+--     device memory+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03709# For+--     each element of @pInfos@, the @buffer@ used to create each+--     acceleration structure referenced by the @geometry.instances.data@+--     member of any element of @pGeometries@ or @ppGeometries@ with a+--     @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR' /must/ be bound to+--     device memory+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03671# If+--     @pInfos@[i].@mode@ is 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR',+--     all addresses between @pInfos@[i].@scratchData.deviceAddress@ and+--     @pInfos@[i].@scratchData.deviceAddress@ + N - 1 /must/ be in the+--     buffer device address range of the same buffer, where N is given by+--     the @buildScratchSize@ member of the+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive+--     count+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03672# If+--     @pInfos@[i].@mode@ is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', all addresses+--     between @pInfos@[i].@scratchData.deviceAddress@ and+--     @pInfos@[i].@scratchData.deviceAddress@ + N - 1 /must/ be in the+--     buffer device address range of the same buffer, where N is given by+--     the @updateScratchSize@ member of the+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive+--     count+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-geometry-03673#+--     The buffers from which the buffer device addresses for all of the+--     @geometry.triangles.vertexData@, @geometry.triangles.indexData@,+--     @geometry.triangles.transformData@, @geometry.aabbs.data@, and+--     @geometry.instances.data@ members of all @pInfos@[i].@pGeometries@+--     and @pInfos@[i].@ppGeometries@ /must/ have been created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'+--     usage flag+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03674# The+--     buffer from which the buffer device address+--     @pInfos@[i].@scratchData.deviceAddress@ is queried /must/ have been+--     created with+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'+--     usage flag+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03802# For+--     each element of @pInfos@, its @scratchData.deviceAddress@ member+--     /must/ be a valid device address obtained from+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03803# For+--     each element of @pInfos@, if @scratchData.deviceAddress@ is the+--     address of a non-sparse buffer then it /must/ be bound completely+--     and contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory'+--     object+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03710# For+--     each element of @pInfos@, its @scratchData.deviceAddress@ member+--     /must/ be a multiple of+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@minAccelerationStructureScratchOffsetAlignment@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03804# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_TRIANGLES_KHR',+--     @geometry.triangles.vertexData.deviceAddress@ /must/ be a valid+--     device address obtained from+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03805# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if+--     @geometry.triangles.vertexData.deviceAddress@ is the address of a+--     non-sparse buffer then it /must/ be bound completely and+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03711# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_TRIANGLES_KHR',+--     @geometry.triangles.vertexData.deviceAddress@ /must/ be aligned to+--     the size in bytes of the smallest component of the format in+--     @vertexFormat@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03806# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if @geometry.triangles.indexType@ is+--     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',+--     @geometry.triangles.indexData.deviceAddress@ /must/ be a valid+--     device address obtained from+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03807# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if @geometry.triangles.indexType@ is+--     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', if+--     @geometry.triangles.indexData.deviceAddress@ is the address of a+--     non-sparse buffer then it /must/ be bound completely and+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03712# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and with+--     @geometry.triangles.indexType@ not equal to+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',+--     @geometry.triangles.indexData.deviceAddress@ /must/ be aligned to+--     the size in bytes of the type in @indexType@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03808# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if+--     @geometry.triangles.transformData.deviceAddress@ is not @0@, it+--     /must/ be a valid device address obtained from+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03809# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if+--     @geometry.triangles.transformData.deviceAddress@ is the address of a+--     non-sparse buffer then it /must/ be bound completely and+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03810# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if+--     @geometry.triangles.transformData.deviceAddress@ is not @0@, it+--     /must/ be aligned to @16@ bytes+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03811# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_AABBS_KHR', @geometry.aabbs.data.deviceAddress@+--     /must/ be a valid device address obtained from+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03812# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_AABBS_KHR', if @geometry.aabbs.data.deviceAddress@ is+--     the address of a non-sparse buffer then it /must/ be bound+--     completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03714# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_AABBS_KHR', @geometry.aabbs.data.deviceAddress@+--     /must/ be aligned to @8@ bytes+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03715# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR', if @geometry.arrayOfPointers@ is+--     'Vulkan.Core10.FundamentalTypes.FALSE',+--     @geometry.instances.data.deviceAddress@ /must/ be aligned to @16@+--     bytes+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03716# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR', if @geometry.arrayOfPointers@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE',+--     @geometry.instances.data.deviceAddress@ /must/ be aligned to @8@+--     bytes+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03717# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR', if @geometry.arrayOfPointers@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE', each element of+--     @geometry.instances.data.deviceAddress@ in device memory /must/ be+--     aligned to @16@ bytes+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03813# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR',+--     @geometry.instances.data.deviceAddress@ /must/ be a valid device+--     address obtained from+--     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03814# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR', if+--     @geometry.instances.data.deviceAddress@ is the address of a+--     non-sparse buffer then it /must/ be bound completely and+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03815# For+--     any element of @pInfos@[i].@pGeometries@ or+--     @pInfos@[i].@ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR', each+--     'AccelerationStructureInstanceKHR'::@accelerationStructureReference@+--     value in @geometry.instances.data.deviceAddress@ /must/ be a valid+--     device address containing a value obtained from+--     'getAccelerationStructureDeviceAddressKHR'+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03645#+--     For any element of @pIndirectDeviceAddresses@, if the buffer from+--     which it was queried is non-sparse then it /must/ be bound+--     completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03646#+--     For any element of @pIndirectDeviceAddresses@[i], all device+--     addresses between @pIndirectDeviceAddresses@[i] and+--     @pIndirectDeviceAddresses@[i] + (@pInfos@[i]→geometryCount ×+--     @pIndirectStrides@[i]) - 1 /must/ be in the buffer device address+--     range of the same buffer+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03647#+--     For any element of @pIndirectDeviceAddresses@, the buffer from which+--     it was queried /must/ have been created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+--     bit set+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03648#+--     Each element of @pIndirectDeviceAddresses@ /must/ be a multiple of+--     @4@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-03787#+--     Each element of @pIndirectStrides@ /must/ be a multiple of @4@+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-03649#+--     @commandBuffer@ /must/ not be a protected command buffer+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-accelerationStructureIndirectBuild-03650#+--     The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureIndirectBuild ::accelerationStructureIndirectBuild>+--     feature /must/ be enabled+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03651#+--     Each 'AccelerationStructureBuildRangeInfoKHR' structure referenced+--     by any element of @pIndirectDeviceAddresses@ /must/ be a valid+--     'AccelerationStructureBuildRangeInfoKHR' structure+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03652#+--     @pInfos@[i].@dstAccelerationStructure@ /must/ have been created with+--     a value of 'AccelerationStructureCreateInfoKHR'::@size@ greater than+--     or equal to the memory size required by the build operation, as+--     returned by 'getAccelerationStructureBuildSizesKHR' with+--     @pBuildInfo@ = @pInfos@[i] and @pMaxPrimitiveCounts@ =+--     @ppMaxPrimitiveCounts@[i]+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-03653#+--     Each @ppMaxPrimitiveCounts@[i][j] /must/ be greater than or equal to+--     the the @primitiveCount@ value specified by the+--     'AccelerationStructureBuildRangeInfoKHR' structure located at+--     @pIndirectDeviceAddresses@[i] + (@j@ × @pIndirectStrides@[i])+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-parameter#+--     @pInfos@ /must/ be a valid pointer to an array of @infoCount@ valid+--     'AccelerationStructureBuildGeometryInfoKHR' structures+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-parameter#+--     @pIndirectDeviceAddresses@ /must/ be a valid pointer to an array of+--     @infoCount@ 'Vulkan.Core10.FundamentalTypes.DeviceAddress' values+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-parameter#+--     @pIndirectStrides@ /must/ be a valid pointer to an array of+--     @infoCount@ @uint32_t@ values+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-parameter#+--     @ppMaxPrimitiveCounts@ /must/ be a valid pointer to an array of+--     @infoCount@ @uint32_t@ values+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-recording#+--     @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-cmdpool#+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-renderpass# This+--     command /must/ only be called outside of a render pass instance+--+-- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-infoCount-arraylength#+--     @infoCount@ /must/ be greater than @0@+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'AccelerationStructureBuildGeometryInfoKHR',+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress'+cmdBuildAccelerationStructuresIndirectKHR :: forall io+                                           . (MonadIO io)+                                          => -- | @commandBuffer@ is the command buffer into which the command will be+                                             -- recorded.+                                             CommandBuffer+                                          -> -- | @pInfos@ is an array of @infoCount@+                                             -- 'AccelerationStructureBuildGeometryInfoKHR' structures defining the+                                             -- geometry used to build each acceleration structure.+                                             ("infos" ::: Vector AccelerationStructureBuildGeometryInfoKHR)+                                          -> -- | @pIndirectDeviceAddresses@ is an array of @infoCount@ buffer device+                                             -- addresses which point to @pInfos@[i]→@geometryCount@+                                             -- 'AccelerationStructureBuildRangeInfoKHR' structures defining dynamic+                                             -- offsets to the addresses where geometry data is stored, as defined by+                                             -- @pInfos@[i].+                                             ("indirectDeviceAddresses" ::: Vector DeviceAddress)+                                          -> -- | @pIndirectStrides@ is an array of @infoCount@ byte strides between+                                             -- elements of @pIndirectDeviceAddresses@.+                                             ("indirectStrides" ::: Vector Word32)+                                          -> -- | @ppMaxPrimitiveCounts@ is an array of @infoCount@ arrays of+                                             -- @pInfo@[i]→@geometryCount@ values indicating the maximum number of+                                             -- primitives that will be built by this command for each geometry.+                                             ("maxPrimitiveCounts" ::: Vector (Vector Word32))+                                          -> io ()+cmdBuildAccelerationStructuresIndirectKHR commandBuffer infos indirectDeviceAddresses indirectStrides maxPrimitiveCounts = liftIO . evalContT $ do+  let vkCmdBuildAccelerationStructuresIndirectKHRPtr = pVkCmdBuildAccelerationStructuresIndirectKHR (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdBuildAccelerationStructuresIndirectKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBuildAccelerationStructuresIndirectKHR is null" Nothing Nothing+  let vkCmdBuildAccelerationStructuresIndirectKHR' = mkVkCmdBuildAccelerationStructuresIndirectKHR vkCmdBuildAccelerationStructuresIndirectKHRPtr+  let pInfosLength = Data.Vector.length $ (infos)+  lift $ unless ((Data.Vector.length $ (indirectDeviceAddresses)) == pInfosLength) $+    throwIO $ IOError Nothing InvalidArgument "" "pIndirectDeviceAddresses and pInfos must have the same length" Nothing Nothing+  lift $ unless ((Data.Vector.length $ (indirectStrides)) == pInfosLength) $+    throwIO $ IOError Nothing InvalidArgument "" "pIndirectStrides and pInfos must have the same length" Nothing Nothing+  lift $ unless ((Data.Vector.length $ (maxPrimitiveCounts)) == pInfosLength) $+    throwIO $ IOError Nothing InvalidArgument "" "ppMaxPrimitiveCounts and pInfos must have the same length" Nothing Nothing+  pPInfos <- ContT $ allocaBytesAligned @AccelerationStructureBuildGeometryInfoKHR ((Data.Vector.length (infos)) * 80) 8+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (80 * (i)) :: Ptr AccelerationStructureBuildGeometryInfoKHR) (e) . ($ ())) (infos)+  pPIndirectDeviceAddresses <- ContT $ allocaBytesAligned @DeviceAddress ((Data.Vector.length (indirectDeviceAddresses)) * 8) 8+  lift $ Data.Vector.imapM_ (\i e -> poke (pPIndirectDeviceAddresses `plusPtr` (8 * (i)) :: Ptr DeviceAddress) (e)) (indirectDeviceAddresses)+  pPIndirectStrides <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (indirectStrides)) * 4) 4+  lift $ Data.Vector.imapM_ (\i e -> poke (pPIndirectStrides `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (indirectStrides)+  pPpMaxPrimitiveCounts <- ContT $ allocaBytesAligned @(Ptr Word32) ((Data.Vector.length (maxPrimitiveCounts)) * 8) 8+  Data.Vector.imapM_ (\i e -> do+    pPpMaxPrimitiveCounts' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (e)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPpMaxPrimitiveCounts' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (e)+    lift $ poke (pPpMaxPrimitiveCounts `plusPtr` (8 * (i)) :: Ptr (Ptr Word32)) (pPpMaxPrimitiveCounts')) (maxPrimitiveCounts)+  lift $ vkCmdBuildAccelerationStructuresIndirectKHR' (commandBufferHandle (commandBuffer)) ((fromIntegral pInfosLength :: Word32)) (pPInfos) (pPIndirectDeviceAddresses) (pPIndirectStrides) (pPpMaxPrimitiveCounts)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkBuildAccelerationStructuresKHR+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr (Ptr AccelerationStructureBuildRangeInfoKHR) -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> Word32 -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr (Ptr AccelerationStructureBuildRangeInfoKHR) -> IO Result++-- | vkBuildAccelerationStructuresKHR - Build an acceleration structure on+-- the host+--+-- = Description+--+-- This command fulfills the same task as+-- 'cmdBuildAccelerationStructuresKHR' but is executed by the host.+--+-- The 'buildAccelerationStructuresKHR' command provides the ability to+-- initiate multiple acceleration structures builds, however there is no+-- ordering or synchronization implied between any of the individual+-- acceleration structure builds.+--+-- Note+--+-- This means that an application /cannot/ build a top-level acceleration+-- structure in the same 'buildAccelerationStructuresKHR' call as the+-- associated bottom-level or instance acceleration structures are being+-- built. There also /cannot/ be any memory aliasing between any+-- acceleration structure memories or scratch memories being used by any of+-- the builds.+--+-- == Valid Usage+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03403# The+--     @srcAccelerationStructure@ member of any element of @pInfos@ /must/+--     not be the same acceleration structure as the+--     @dstAccelerationStructure@ member of any other element of @pInfos@+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03698#+--     The @dstAccelerationStructure@ member of any element of @pInfos@+--     /must/ not be the same acceleration structure as the+--     @dstAccelerationStructure@ member of any other element of @pInfos@+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03800#+--     The @dstAccelerationStructure@ member of any element of @pInfos@+--     /must/ be a valid+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03699# For each+--     element of @pInfos@, if its @type@ member is+--     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', its+--     @dstAccelerationStructure@ member /must/ have been created with a+--     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to+--     either 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' or+--     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03700# For each+--     element of @pInfos@, if its @type@ member is+--     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR', its+--     @dstAccelerationStructure@ member /must/ have been created with a+--     value of 'AccelerationStructureCreateInfoKHR'::@type@ equal to+--     either 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' or+--     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03663# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR',+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives>+--     in its @srcAccelerationStructure@ member /must/ not be made active+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03664# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', active primitives in+--     its @srcAccelerationStructure@ member /must/ not be made+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive>+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-None-03407# The+--     @dstAccelerationStructure@ member of any element of @pInfos@ /must/+--     not be referenced by the @geometry.instances.data@ member of any+--     element of @pGeometries@ or @ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03701#+--     The range of memory backing the @dstAccelerationStructure@ member of+--     any element of @pInfos@ that is accessed by this command /must/ not+--     overlap the memory backing the @srcAccelerationStructure@ member of+--     any other element of @pInfos@ with a @mode@ equal to+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', which is accessed by+--     this command+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03702#+--     The range of memory backing the @dstAccelerationStructure@ member of+--     any element of @pInfos@ that is accessed by this command /must/ not+--     overlap the memory backing the @dstAccelerationStructure@ member of+--     any other element of @pInfos@, which is accessed by this command+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03703#+--     The range of memory backing the @dstAccelerationStructure@ member of+--     any element of @pInfos@ that is accessed by this command /must/ not+--     overlap the memory backing the @scratchData@ member of any element+--     of @pInfos@ (including the same element), which is accessed by this+--     command+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-scratchData-03704# The range+--     of memory backing the @scratchData@ member of any element of+--     @pInfos@ that is accessed by this command /must/ not overlap the+--     memory backing the @scratchData@ member of any other element of+--     @pInfos@, which is accessed by this command+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-scratchData-03705# The range+--     of memory backing the @scratchData@ member of any element of+--     @pInfos@ that is accessed by this command /must/ not overlap the+--     memory backing the @srcAccelerationStructure@ member of any element+--     of @pInfos@ with a @mode@ equal to+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' (including the same+--     element), which is accessed by this command+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03706#+--     The range of memory backing the @dstAccelerationStructure@ member of+--     any element of @pInfos@ that is accessed by this command /must/ not+--     overlap the memory backing any acceleration structure referenced by+--     the @geometry.instances.data@ member of any element of @pGeometries@+--     or @ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@,+--     which is accessed by this command+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03666# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its+--     @srcAccelerationStructure@ member /must/ not be+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03667# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its+--     @srcAccelerationStructure@ member /must/ have been built before with+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' set in+--     'AccelerationStructureBuildGeometryInfoKHR'::@flags@+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03668# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its+--     @srcAccelerationStructure@ and @dstAccelerationStructure@ members+--     /must/ either be the same+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR', or not have+--     any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03758# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @geometryCount@+--     member /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03759# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @flags@ member+--     /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03760# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @type@ member+--     /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03761# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, its @geometryType@ member+--     /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03762# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, its @flags@ member /must/+--     have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03763# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.vertexFormat@+--     member /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03764# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.maxVertex@+--     member /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03765# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.indexType@+--     member /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03766# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if its+--     @geometry.triangles.transformData@ member was NULL when+--     @srcAccelerationStructure@ was last built, then it must be NULL.+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03767# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', if its+--     @geometry.triangles.transformData@ member was not NULL when+--     @srcAccelerationStructure@ was last built, then it may not be NULL.+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03768# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', then for each+--     'AccelerationStructureGeometryKHR' structure referred to by its+--     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', and @geometry.triangles.indexType@ is+--     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then the+--     value of each index referenced index must be the same as the+--     corresponding index value when @srcAccelerationStructure@ was last+--     built.+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-primitiveCount-03769# For+--     each 'AccelerationStructureBuildRangeInfoKHR' referenced by this+--     command, its @primitiveCount@ member /must/ have the same value+--     which was specified when @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-firstVertex-03770# For each+--     'AccelerationStructureBuildRangeInfoKHR' referenced by this command,+--     if the corresponding geometry uses indices, its @firstVertex@ member+--     /must/ have the same value which was specified when+--     @srcAccelerationStructure@ was last built.+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03801# For each+--     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@+--     with a @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', the+--     corresponding @ppBuildRangeInfos@[i][j].@primitiveCount@ /must/ be+--     less than or equal to+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxInstanceCount@+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03675# For each+--     @pInfos@[i], @dstAccelerationStructure@ /must/ have been created+--     with a value of 'AccelerationStructureCreateInfoKHR'::@size@ greater+--     than or equal to the memory size required by the build operation, as+--     returned by 'getAccelerationStructureBuildSizesKHR' with+--     @pBuildInfo@ = @pInfos@[i] and with each element of the+--     @pMaxPrimitiveCounts@ array greater than or equal to the equivalent+--     @ppBuildRangeInfos@[i][j].@primitiveCount@ values for @j@ in+--     [0,@pInfos@[i].@geometryCount@)+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676# Each+--     element of @ppBuildRangeInfos@[i] /must/ be a valid pointer to an+--     array of @pInfos@[i].@geometryCount@+--     'AccelerationStructureBuildRangeInfoKHR' structures+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03677# If+--     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     it /must/ be a valid+--     'Vulkan.Extensions.Handles.DeferredOperationKHR' object+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03678# Any+--     previous deferred operation that was associated with+--     @deferredOperation@ /must/ be complete+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03722# For each+--     element of @pInfos@, the @buffer@ used to create its+--     @dstAccelerationStructure@ member /must/ be bound to host-visible+--     device memory+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03723# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' the @buffer@ used to+--     create its @srcAccelerationStructure@ member /must/ be bound to+--     host-visible device memory+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03724# For each+--     element of @pInfos@, the @buffer@ used to create each acceleration+--     structure referenced by the @geometry.instances.data@ member of any+--     element of @pGeometries@ or @ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR' /must/ be bound to host-visible device+--     memory+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-accelerationStructureHostCommands-03581#+--     The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>+--     feature /must/ be enabled+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03725# If+--     @pInfos@[i].@mode@ is 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR',+--     all addresses between @pInfos@[i].@scratchData.hostAddress@ and+--     @pInfos@[i].@scratchData.hostAddress@ + N - 1 /must/ be valid host+--     memory, where N is given by the @buildScratchSize@ member of the+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive+--     count+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03726# If+--     @pInfos@[i].@mode@ is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', all addresses+--     between @pInfos@[i].@scratchData.hostAddress@ and+--     @pInfos@[i].@scratchData.hostAddress@ + N - 1 /must/ be valid host+--     memory, where N is given by the @updateScratchSize@ member of the+--     'AccelerationStructureBuildSizesInfoKHR' structure returned from a+--     call to 'getAccelerationStructureBuildSizesKHR' with an identical+--     'AccelerationStructureBuildGeometryInfoKHR' structure and primitive+--     count+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03771# For any element+--     of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ with a+--     @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR',+--     @geometry.triangles.vertexData.hostAddress@ /must/ be a valid host+--     address+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03772# For any element+--     of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ with a+--     @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if+--     @geometry.triangles.indexType@ is not+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR',+--     @geometry.triangles.indexData.hostAddress@ /must/ be a valid host+--     address+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03773# For any element+--     of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ with a+--     @geometryType@ of 'GEOMETRY_TYPE_TRIANGLES_KHR', if+--     @geometry.triangles.transformData.hostAddress@ is not @0@, it /must/+--     be a valid host address+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03774# For any element+--     of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ with a+--     @geometryType@ of 'GEOMETRY_TYPE_AABBS_KHR',+--     @geometry.aabbs.data.hostAddress@ /must/ be a valid host address+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03775# For each+--     element of @pInfos@, the @buffer@ used to create its+--     @dstAccelerationStructure@ member /must/ be bound to memory that was+--     not allocated with multiple instances+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03776# For each+--     element of @pInfos@, if its @mode@ member is+--     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' the @buffer@ used to+--     create its @srcAccelerationStructure@ member /must/ be bound to+--     memory that was not allocated with multiple instances+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03777# For each+--     element of @pInfos@, the @buffer@ used to create each acceleration+--     structure referenced by the @geometry.instances.data@ member of any+--     element of @pGeometries@ or @ppGeometries@ with a @geometryType@ of+--     'GEOMETRY_TYPE_INSTANCES_KHR' /must/ be bound to memory that was not+--     allocated with multiple instances+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03778# For any element+--     of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ with a+--     @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR',+--     @geometry.instances.data.hostAddress@ /must/ be a valid host address+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03779# For any element+--     of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@ with a+--     @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', each+--     'AccelerationStructureInstanceKHR'::@accelerationStructureReference@+--     value in @geometry.instances.data.hostAddress@ must be a valid+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' object+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-device-parameter# @device@+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parameter#+--     If @deferredOperation@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @deferredOperation@ /must/+--     be a valid 'Vulkan.Extensions.Handles.DeferredOperationKHR' handle+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-parameter# @pInfos@+--     /must/ be a valid pointer to an array of @infoCount@ valid+--     'AccelerationStructureBuildGeometryInfoKHR' structures+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter#+--     @ppBuildRangeInfos@ /must/ be a valid pointer to an array of+--     @infoCount@ 'AccelerationStructureBuildRangeInfoKHR' structures+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-infoCount-arraylength#+--     @infoCount@ /must/ be greater than @0@+--+-- -   #VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parent# If+--     @deferredOperation@ is a valid handle, it /must/ have been created,+--     allocated, or retrieved from @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'AccelerationStructureBuildGeometryInfoKHR',+-- 'AccelerationStructureBuildRangeInfoKHR',+-- 'Vulkan.Extensions.Handles.DeferredOperationKHR',+-- 'Vulkan.Core10.Handles.Device'+buildAccelerationStructuresKHR :: forall io+                                . (MonadIO io)+                               => -- | @device@ is the 'Vulkan.Core10.Handles.Device' for which the+                                  -- acceleration structures are being built.+                                  Device+                               -> -- | @deferredOperation@ is an optional+                                  -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to+                                  -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>+                                  -- for this command.+                                  DeferredOperationKHR+                               -> -- | @pInfos@ is a pointer to an array of @infoCount@+                                  -- 'AccelerationStructureBuildGeometryInfoKHR' structures defining the+                                  -- geometry used to build each acceleration structure.+                                  ("infos" ::: Vector AccelerationStructureBuildGeometryInfoKHR)+                               -> -- | @ppBuildRangeInfos@ is an array of @infoCount@ pointers to arrays of+                                  -- 'AccelerationStructureBuildRangeInfoKHR' structures. Each+                                  -- @ppBuildRangeInfos@[i] is an array of @pInfos@[i].@geometryCount@+                                  -- 'AccelerationStructureBuildRangeInfoKHR' structures defining dynamic+                                  -- offsets to the addresses where geometry data is stored, as defined by+                                  -- @pInfos@[i].+                                  ("buildRangeInfos" ::: Vector (Vector AccelerationStructureBuildRangeInfoKHR))+                               -> io (Result)+buildAccelerationStructuresKHR device deferredOperation infos buildRangeInfos = liftIO . evalContT $ do+  let vkBuildAccelerationStructuresKHRPtr = pVkBuildAccelerationStructuresKHR (deviceCmds (device :: Device))+  lift $ unless (vkBuildAccelerationStructuresKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkBuildAccelerationStructuresKHR is null" Nothing Nothing+  let vkBuildAccelerationStructuresKHR' = mkVkBuildAccelerationStructuresKHR vkBuildAccelerationStructuresKHRPtr+  let pInfosLength = Data.Vector.length $ (infos)+  lift $ unless ((Data.Vector.length $ (buildRangeInfos)) == pInfosLength) $+    throwIO $ IOError Nothing InvalidArgument "" "ppBuildRangeInfos and pInfos must have the same length" Nothing Nothing+  pPInfos <- ContT $ allocaBytesAligned @AccelerationStructureBuildGeometryInfoKHR ((Data.Vector.length (infos)) * 80) 8+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (80 * (i)) :: Ptr AccelerationStructureBuildGeometryInfoKHR) (e) . ($ ())) (infos)+  pPpBuildRangeInfos <- ContT $ allocaBytesAligned @(Ptr AccelerationStructureBuildRangeInfoKHR) ((Data.Vector.length (buildRangeInfos)) * 8) 8+  Data.Vector.imapM_ (\i e -> do+    pPpBuildRangeInfos' <- ContT $ allocaBytesAligned @AccelerationStructureBuildRangeInfoKHR ((Data.Vector.length (e)) * 16) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPpBuildRangeInfos' `plusPtr` (16 * (i)) :: Ptr AccelerationStructureBuildRangeInfoKHR) (e)) (e)+    lift $ poke (pPpBuildRangeInfos `plusPtr` (8 * (i)) :: Ptr (Ptr AccelerationStructureBuildRangeInfoKHR)) (pPpBuildRangeInfos')) (buildRangeInfos)+  r <- lift $ vkBuildAccelerationStructuresKHR' (deviceHandle (device)) (deferredOperation) ((fromIntegral pInfosLength :: Word32)) (pPInfos) (pPpBuildRangeInfos)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetAccelerationStructureDeviceAddressKHR+  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureDeviceAddressInfoKHR -> IO DeviceAddress) -> Ptr Device_T -> Ptr AccelerationStructureDeviceAddressInfoKHR -> IO DeviceAddress++-- | vkGetAccelerationStructureDeviceAddressKHR - Query an address of a+-- acceleration structure+--+-- = Description+--+-- The 64-bit return value is an address of the acceleration structure,+-- which can be used for device and shader operations that involve+-- acceleration structures, such as ray traversal and acceleration+-- structure building.+--+-- If the acceleration structure was created with a non-zero value of+-- 'AccelerationStructureCreateInfoKHR'::@deviceAddress@ the return value+-- will be the same address.+--+-- If the acceleration structure was created with a @type@ of+-- 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' the returned address /must/ be+-- consistent with the relative offset to other acceleration structures of+-- @type@ of 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' allocated with the+-- same 'Vulkan.Core10.Handles.Buffer'. That is, the difference in returned+-- addresses between the two /must/ be the same as the difference in+-- offsets provided at acceleration structure creation.+--+-- Note+--+-- The acceleration structure device address /may/ be different from the+-- buffer device address corresponding to the acceleration structure’s+-- start offset in its storage buffer for acceleration structure types+-- other than 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'.+--+-- == Valid Usage+--+-- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-device-03504# If+--     @device@ was created with multiple physical devices, then the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter#+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-parameter#+--     @pInfo@ /must/ be a valid pointer to a valid+--     'AccelerationStructureDeviceAddressInfoKHR' structure+--+-- = See Also+--+-- 'AccelerationStructureDeviceAddressInfoKHR',+-- 'Vulkan.Core10.Handles.Device'+getAccelerationStructureDeviceAddressKHR :: forall io+                                          . (MonadIO io)+                                         => -- | @device@ is the logical device that the accelerationStructure was+                                            -- created on.+                                            Device+                                         -> -- | @pInfo@ is a pointer to a 'AccelerationStructureDeviceAddressInfoKHR'+                                            -- structure specifying the acceleration structure to retrieve an address+                                            -- for.+                                            AccelerationStructureDeviceAddressInfoKHR+                                         -> io (DeviceAddress)+getAccelerationStructureDeviceAddressKHR device info = liftIO . evalContT $ do+  let vkGetAccelerationStructureDeviceAddressKHRPtr = pVkGetAccelerationStructureDeviceAddressKHR (deviceCmds (device :: Device))+  lift $ unless (vkGetAccelerationStructureDeviceAddressKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureDeviceAddressKHR is null" Nothing Nothing+  let vkGetAccelerationStructureDeviceAddressKHR' = mkVkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHRPtr+  pInfo <- ContT $ withCStruct (info)+  r <- lift $ vkGetAccelerationStructureDeviceAddressKHR' (deviceHandle (device)) pInfo+  pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetAccelerationStructureBuildSizesKHR+  :: FunPtr (Ptr Device_T -> AccelerationStructureBuildTypeKHR -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr Word32 -> Ptr AccelerationStructureBuildSizesInfoKHR -> IO ()) -> Ptr Device_T -> AccelerationStructureBuildTypeKHR -> Ptr AccelerationStructureBuildGeometryInfoKHR -> Ptr Word32 -> Ptr AccelerationStructureBuildSizesInfoKHR -> IO ()++-- | vkGetAccelerationStructureBuildSizesKHR - Retrieve the required size for+-- an acceleration structure+--+-- = Description+--+-- The @srcAccelerationStructure@, @dstAccelerationStructure@, and @mode@+-- members of @pBuildInfo@ are ignored. Any 'DeviceOrHostAddressKHR'+-- members of @pBuildInfo@ are ignored by this command, except that the+-- @hostAddress@ member of+-- 'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@ will be+-- examined to check if it is @NULL@.+--+-- An acceleration structure created with the @accelerationStructureSize@+-- returned by this command supports any build or update with a+-- 'AccelerationStructureBuildGeometryInfoKHR' structure and array of+-- 'AccelerationStructureBuildRangeInfoKHR' structures subject to the+-- following properties:+--+-- -   The build command is a host build command, and @buildType@ is+--     'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR' or+--     'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR'+--+-- -   The build command is a device build command, and @buildType@ is+--     'ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR' or+--     'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR'+--+-- -   For 'AccelerationStructureBuildGeometryInfoKHR':+--+--     -   Its @type@, and @flags@ members are equal to those specified in+--         @pBuildInfo@.+--+--     -   @geometryCount@ is less than or equal to that specified in+--         @pBuildInfo@.+--+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a+--         given index, its @geometryType@ member is equal to that+--         specified in @pBuildInfo@.+--+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a+--         given index, with a @geometryType@ member equal to+--         'GEOMETRY_TYPE_TRIANGLES_KHR', the @vertexFormat@ and+--         @indexType@ members of @geometry.triangles@ are equal to those+--         specified in the same element in @pBuildInfo@.+--+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a+--         given index, with a @geometryType@ member equal to+--         'GEOMETRY_TYPE_TRIANGLES_KHR', the @maxVertex@ member of+--         @geometry.triangles@ is less than or equal to that specified in+--         the same element in @pBuildInfo@.+--+--     -   For each element of either @pGeometries@ or @ppGeometries@ at a+--         given index, with a @geometryType@ member equal to+--         'GEOMETRY_TYPE_TRIANGLES_KHR', if the applicable address in the+--         @transformData@ member of @geometry.triangles@ is not @NULL@,+--         the corresponding @transformData.pname@:hostAddress parameter in+--         @pBuildInfo@ is not @NULL@.+--+-- -   For each 'AccelerationStructureBuildRangeInfoKHR' corresponding to+--     the 'AccelerationStructureBuildGeometryInfoKHR':+--+--     -   Its @primitiveCount@ member is less than or equal to the+--         corresponding element of @pMaxPrimitiveCounts@.+--+-- Similarly, the @updateScratchSize@ value will support any build command+-- specifying the 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' @mode@+-- under the above conditions, and the @buildScratchSize@ value will+-- support any build command specifying the+-- 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR' @mode@ under the above+-- conditions.+--+-- == Valid Usage+--+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-rayTracingPipeline-03617#+--     The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>+--     feature /must/ be enabled+--+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-device-03618# If+--     @device@ was created with multiple physical devices, then the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>+--     feature /must/ be enabled+--+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03619# If+--     @pBuildInfo->geometryCount@ is not @0@, @pMaxPrimitiveCounts@ /must/+--     be a valid pointer to an array of @pBuildInfo->geometryCount@+--     @uint32_t@ values+--+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03785# If+--     @pBuildInfo->pGeometries@ or @pBuildInfo->ppGeometries@ has a+--     @geometryType@ of 'GEOMETRY_TYPE_INSTANCES_KHR', each+--     @pMaxPrimitiveCounts@[i] /must/ be less than or equal to+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxInstanceCount@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-device-parameter#+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-buildType-parameter#+--     @buildType@ /must/ be a valid 'AccelerationStructureBuildTypeKHR'+--     value+--+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-parameter#+--     @pBuildInfo@ /must/ be a valid pointer to a valid+--     'AccelerationStructureBuildGeometryInfoKHR' structure+--+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pMaxPrimitiveCounts-parameter#+--     @pMaxPrimitiveCounts@ /must/ be a valid pointer to an array of+--     @pBuildInfo->geometryCount@ @uint32_t@ values+--+-- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pSizeInfo-parameter#+--     @pSizeInfo@ /must/ be a valid pointer to a+--     'AccelerationStructureBuildSizesInfoKHR' structure+--+-- = See Also+--+-- 'AccelerationStructureBuildGeometryInfoKHR',+-- 'AccelerationStructureBuildSizesInfoKHR',+-- 'AccelerationStructureBuildTypeKHR', 'Vulkan.Core10.Handles.Device'+getAccelerationStructureBuildSizesKHR :: forall io+                                       . (MonadIO io)+                                      => -- | @device@ is the logical device that will be used for creating the+                                         -- acceleration structure.+                                         Device+                                      -> -- | @buildType@ defines whether host or device operations (or both) are+                                         -- being queried for.+                                         AccelerationStructureBuildTypeKHR+                                      -> -- | @pBuildInfo@ is a pointer to a+                                         -- 'AccelerationStructureBuildGeometryInfoKHR' structure describing+                                         -- parameters of a build operation.+                                         ("buildInfo" ::: AccelerationStructureBuildGeometryInfoKHR)+                                      -> -- | @pMaxPrimitiveCounts@ is a pointer to an array of+                                         -- @pBuildInfo->geometryCount@ @uint32_t@ values defining the number of+                                         -- primitives built into each geometry.+                                         ("maxPrimitiveCounts" ::: Vector Word32)+                                      -> io (("sizeInfo" ::: AccelerationStructureBuildSizesInfoKHR))+getAccelerationStructureBuildSizesKHR device buildType buildInfo maxPrimitiveCounts = liftIO . evalContT $ do+  let vkGetAccelerationStructureBuildSizesKHRPtr = pVkGetAccelerationStructureBuildSizesKHR (deviceCmds (device :: Device))+  lift $ unless (vkGetAccelerationStructureBuildSizesKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureBuildSizesKHR is null" Nothing Nothing+  let vkGetAccelerationStructureBuildSizesKHR' = mkVkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHRPtr+  pBuildInfo <- ContT $ withCStruct (buildInfo)+  pPMaxPrimitiveCounts <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (maxPrimitiveCounts)) * 4) 4+  lift $ Data.Vector.imapM_ (\i e -> poke (pPMaxPrimitiveCounts `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (maxPrimitiveCounts)+  pPSizeInfo <- ContT (withZeroCStruct @AccelerationStructureBuildSizesInfoKHR)+  lift $ vkGetAccelerationStructureBuildSizesKHR' (deviceHandle (device)) (buildType) pBuildInfo (pPMaxPrimitiveCounts) (pPSizeInfo)+  pSizeInfo <- lift $ peekCStruct @AccelerationStructureBuildSizesInfoKHR pPSizeInfo+  pure $ (pSizeInfo)+++-- | VkWriteDescriptorSetAccelerationStructureKHR - Structure specifying+-- acceleration structure descriptor info+--+-- == Valid Usage+--+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-02236#+--     @accelerationStructureCount@ /must/ be equal to @descriptorCount@ in+--     the extended structure+--+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03579#+--     Each acceleration structure in @pAccelerationStructures@ /must/ have+--     been created with 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' or+--     'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' and built with+--     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR'+--+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03580#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, each member of @pAccelerationStructures@+--     /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-sType-sType#+--     @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR'+--+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-parameter#+--     @pAccelerationStructures@ /must/ be a valid pointer to an array of+--     @accelerationStructureCount@ valid or+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handles+--+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-arraylength#+--     @accelerationStructureCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data WriteDescriptorSetAccelerationStructureKHR = WriteDescriptorSetAccelerationStructureKHR+  { -- | @pAccelerationStructures@ are the acceleration structures to update.+    accelerationStructures :: Vector AccelerationStructureKHR }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (WriteDescriptorSetAccelerationStructureKHR)+#endif+deriving instance Show WriteDescriptorSetAccelerationStructureKHR++instance ToCStruct WriteDescriptorSetAccelerationStructureKHR where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p WriteDescriptorSetAccelerationStructureKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))+    pPAccelerationStructures' <- ContT $ allocaBytesAligned @AccelerationStructureKHR ((Data.Vector.length (accelerationStructures)) * 8) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (accelerationStructures)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureKHR))) (pPAccelerationStructures')+    lift $ f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    pPAccelerationStructures' <- ContT $ allocaBytesAligned @AccelerationStructureKHR ((Data.Vector.length (mempty)) * 8) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (mempty)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureKHR))) (pPAccelerationStructures')+    lift $ f++instance FromCStruct WriteDescriptorSetAccelerationStructureKHR where+  peekCStruct p = do+    accelerationStructureCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    pAccelerationStructures <- peek @(Ptr AccelerationStructureKHR) ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureKHR)))+    pAccelerationStructures' <- generateM (fromIntegral accelerationStructureCount) (\i -> peek @AccelerationStructureKHR ((pAccelerationStructures `advancePtrBytes` (8 * (i)) :: Ptr AccelerationStructureKHR)))+    pure $ WriteDescriptorSetAccelerationStructureKHR+             pAccelerationStructures'++instance Zero WriteDescriptorSetAccelerationStructureKHR where+  zero = WriteDescriptorSetAccelerationStructureKHR+           mempty+++-- | VkPhysicalDeviceAccelerationStructureFeaturesKHR - Structure describing+-- the acceleration structure features that can be supported by an+-- implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceAccelerationStructureFeaturesKHR'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceAccelerationStructureFeaturesKHR' structure is+-- included in the @pNext@ chain of+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceAccelerationStructureFeaturesKHR' /can/ also be used in+-- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable+-- the features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceAccelerationStructureFeaturesKHR = PhysicalDeviceAccelerationStructureFeaturesKHR+  { -- | #features-accelerationStructure# @accelerationStructure@ indicates+    -- whether the implementation supports the acceleration structure+    -- functionality. See+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure Acceleration Structures>.+    accelerationStructure :: Bool+  , -- | #features-accelerationStructureCaptureReplay#+    -- @accelerationStructureCaptureReplay@ indicates whether the+    -- implementation supports saving and reusing acceleration structure device+    -- addresses, e.g. for trace capture and replay.+    accelerationStructureCaptureReplay :: Bool+  , -- | #features-accelerationStructureIndirectBuild#+    -- @accelerationStructureIndirectBuild@ indicates whether the+    -- implementation supports indirect acceleration structure build commands,+    -- e.g. 'cmdBuildAccelerationStructuresIndirectKHR'.+    accelerationStructureIndirectBuild :: Bool+  , -- | #features-accelerationStructureHostCommands#+    -- @accelerationStructureHostCommands@ indicates whether the implementation+    -- supports host side acceleration structure commands, e.g.+    -- 'buildAccelerationStructuresKHR', 'copyAccelerationStructureKHR',+    -- 'copyAccelerationStructureToMemoryKHR',+    -- 'copyMemoryToAccelerationStructureKHR',+    -- 'writeAccelerationStructuresPropertiesKHR'.+    accelerationStructureHostCommands :: Bool+  , -- | #features-descriptorBindingAccelerationStructureUpdateAfterBind#+    -- @descriptorBindingAccelerationStructureUpdateAfterBind@ indicates+    -- whether the implementation supports updating acceleration structure+    -- descriptors after a set is bound. If this feature is not enabled,+    -- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+    -- /must/ not be used with+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'.+    descriptorBindingAccelerationStructureUpdateAfterBind :: Bool+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceAccelerationStructureFeaturesKHR)+#endif+deriving instance Show PhysicalDeviceAccelerationStructureFeaturesKHR++instance ToCStruct PhysicalDeviceAccelerationStructureFeaturesKHR where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceAccelerationStructureFeaturesKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (accelerationStructure))+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (accelerationStructureCaptureReplay))+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (accelerationStructureIndirectBuild))+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (accelerationStructureHostCommands))+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (descriptorBindingAccelerationStructureUpdateAfterBind))+    f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PhysicalDeviceAccelerationStructureFeaturesKHR where+  peekCStruct p = do+    accelerationStructure <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    accelerationStructureCaptureReplay <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+    accelerationStructureIndirectBuild <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+    accelerationStructureHostCommands <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))+    descriptorBindingAccelerationStructureUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+    pure $ PhysicalDeviceAccelerationStructureFeaturesKHR+             (bool32ToBool accelerationStructure) (bool32ToBool accelerationStructureCaptureReplay) (bool32ToBool accelerationStructureIndirectBuild) (bool32ToBool accelerationStructureHostCommands) (bool32ToBool descriptorBindingAccelerationStructureUpdateAfterBind)++instance Storable PhysicalDeviceAccelerationStructureFeaturesKHR where+  sizeOf ~_ = 40+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceAccelerationStructureFeaturesKHR where+  zero = PhysicalDeviceAccelerationStructureFeaturesKHR+           zero+           zero+           zero+           zero+           zero+++-- | VkPhysicalDeviceAccelerationStructurePropertiesKHR - Properties of the+-- physical device for acceleration structure+--+-- = Description+--+-- If the 'PhysicalDeviceAccelerationStructurePropertiesKHR' structure is+-- included in the @pNext@ chain of+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- Limits specified by this structure /must/ match those specified with the+-- same name in+-- 'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceAccelerationStructurePropertiesKHR = PhysicalDeviceAccelerationStructurePropertiesKHR+  { -- | @maxGeometryCount@ is the maximum number of geometries in the bottom+    -- level acceleration structure.+    maxGeometryCount :: Word64+  , -- | @maxInstanceCount@ is the maximum number of instances in the top level+    -- acceleration structure.+    maxInstanceCount :: Word64+  , -- | @maxPrimitiveCount@ is the maximum number of triangles or AABBs in all+    -- geometries in the bottom level acceleration structure.+    maxPrimitiveCount :: Word64+  , -- | #limits-maxPerStageDescriptorAccelerationStructures#+    -- @maxPerStageDescriptorAccelerationStructures@ is the maximum number of+    -- acceleration structure bindings that /can/ be accessible to a single+    -- shader stage in a pipeline layout. Descriptor bindings with a descriptor+    -- type of+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'+    -- count against this limit. Only descriptor bindings in descriptor set+    -- layouts created without the+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+    -- bit set count against this limit.+    maxPerStageDescriptorAccelerationStructures :: Word32+  , -- | #limits-maxPerStageDescriptorUpdateAfterBindAccelerationStructures#+    -- @maxPerStageDescriptorUpdateAfterBindAccelerationStructures@ is similar+    -- to @maxPerStageDescriptorAccelerationStructures@ but counts descriptor+    -- bindings from descriptor sets created with or without the+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+    -- bit set.+    maxPerStageDescriptorUpdateAfterBindAccelerationStructures :: Word32+  , -- | #limits-maxDescriptorSetAccelerationStructures#+    -- @maxDescriptorSetAccelerationStructures@ is the maximum number of+    -- acceleration structure descriptors that /can/ be included in descriptor+    -- bindings in a pipeline layout across all pipeline shader stages and+    -- descriptor set numbers. Descriptor bindings with a descriptor type of+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'+    -- count against this limit. Only descriptor bindings in descriptor set+    -- layouts created without the+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+    -- bit set count against this limit.+    maxDescriptorSetAccelerationStructures :: Word32+  , -- | #limits-maxDescriptorSetUpdateAfterBindAccelerationStructures#+    -- @maxDescriptorSetUpdateAfterBindAccelerationStructures@ is similar to+    -- @maxDescriptorSetAccelerationStructures@ but counts descriptor bindings+    -- from descriptor sets created with or without the+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+    -- bit set.+    maxDescriptorSetUpdateAfterBindAccelerationStructures :: Word32+  , -- | #limits-minAccelerationStructureScratchOffsetAlignment#+    -- @minAccelerationStructureScratchOffsetAlignment@ is the minimum+    -- /required/ alignment, in bytes, for scratch data passed in to an+    -- acceleration structure build command.+    minAccelerationStructureScratchOffsetAlignment :: Word32+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceAccelerationStructurePropertiesKHR)+#endif+deriving instance Show PhysicalDeviceAccelerationStructurePropertiesKHR++instance ToCStruct PhysicalDeviceAccelerationStructurePropertiesKHR where+  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceAccelerationStructurePropertiesKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word64)) (maxGeometryCount)+    poke ((p `plusPtr` 24 :: Ptr Word64)) (maxInstanceCount)+    poke ((p `plusPtr` 32 :: Ptr Word64)) (maxPrimitiveCount)+    poke ((p `plusPtr` 40 :: Ptr Word32)) (maxPerStageDescriptorAccelerationStructures)+    poke ((p `plusPtr` 44 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindAccelerationStructures)+    poke ((p `plusPtr` 48 :: Ptr Word32)) (maxDescriptorSetAccelerationStructures)+    poke ((p `plusPtr` 52 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindAccelerationStructures)+    poke ((p `plusPtr` 56 :: Ptr Word32)) (minAccelerationStructureScratchOffsetAlignment)+    f+  cStructSize = 64+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)+    f++instance FromCStruct PhysicalDeviceAccelerationStructurePropertiesKHR where+  peekCStruct p = do+    maxGeometryCount <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))+    maxInstanceCount <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))+    maxPrimitiveCount <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))+    maxPerStageDescriptorAccelerationStructures <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+    maxPerStageDescriptorUpdateAfterBindAccelerationStructures <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))+    maxDescriptorSetAccelerationStructures <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+    maxDescriptorSetUpdateAfterBindAccelerationStructures <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))+    minAccelerationStructureScratchOffsetAlignment <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))+    pure $ PhysicalDeviceAccelerationStructurePropertiesKHR+             maxGeometryCount maxInstanceCount maxPrimitiveCount maxPerStageDescriptorAccelerationStructures maxPerStageDescriptorUpdateAfterBindAccelerationStructures maxDescriptorSetAccelerationStructures maxDescriptorSetUpdateAfterBindAccelerationStructures minAccelerationStructureScratchOffsetAlignment++instance Storable PhysicalDeviceAccelerationStructurePropertiesKHR where+  sizeOf ~_ = 64+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceAccelerationStructurePropertiesKHR where+  zero = PhysicalDeviceAccelerationStructurePropertiesKHR+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkAccelerationStructureGeometryTrianglesDataKHR - Structure specifying a+-- triangle geometry in a bottom-level acceleration structure+--+-- = Description+--+-- Note+--+-- Unlike the stride for vertex buffers in+-- 'Vulkan.Core10.Pipeline.VertexInputBindingDescription' for graphics+-- pipelines which must not exceed @maxVertexInputBindingStride@,+-- @vertexStride@ for acceleration structure geometry is instead restricted+-- to being a 32-bit value.+--+-- == Valid Usage+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-maxVertex-03655#+--     @maxVertex@ /must/ be greater than @0@+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03735#+--     @vertexStride@ /must/ be a multiple of the size in bytes of the+--     smallest component of @vertexFormat@+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03819#+--     @vertexStride@ /must/ be less than or equal to 232-1+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-03797#+--     @vertexFormat@ /must/ support the+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'+--     in+--     'Vulkan.Core10.DeviceInitialization.FormatProperties'::@bufferFeatures@+--     as returned by+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-03798#+--     @indexType@ /must/ be+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-sType#+--     @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR'+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-pNext-pNext#+--     @pNext@ /must/ be @NULL@+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter#+--     @vertexFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'+--     value+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexData-parameter#+--     @vertexData@ /must/ be a valid 'DeviceOrHostAddressConstKHR' union+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter#+--     @indexType@ /must/ be a valid+--     'Vulkan.Core10.Enums.IndexType.IndexType' value+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexData-parameter#+--     If @indexData@ is not @0@, @indexData@ /must/ be a valid+--     'DeviceOrHostAddressConstKHR' union+--+-- -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-transformData-parameter#+--     If @transformData@ is not @0@, @transformData@ /must/ be a valid+--     'DeviceOrHostAddressConstKHR' union+--+-- = See Also+--+-- 'AccelerationStructureGeometryDataKHR', 'DeviceOrHostAddressConstKHR',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',+-- 'Vulkan.Core10.Enums.Format.Format',+-- 'Vulkan.Core10.Enums.IndexType.IndexType',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data AccelerationStructureGeometryTrianglesDataKHR = AccelerationStructureGeometryTrianglesDataKHR+  { -- | @vertexFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of each vertex+    -- element.+    vertexFormat :: Format+  , -- | @vertexData@ is a device or host address to memory containing vertex+    -- data for this geometry.+    vertexData :: DeviceOrHostAddressConstKHR+  , -- | @vertexStride@ is the stride in bytes between each vertex.+    vertexStride :: DeviceSize+  , -- | @maxVertex@ is the highest index of a vertex that will be addressed by a+    -- build command using this structure.+    maxVertex :: Word32+  , -- | @indexType@ is the 'Vulkan.Core10.Enums.IndexType.IndexType' of each+    -- index element.+    indexType :: IndexType+  , -- | @indexData@ is a device or host address to memory containing index data+    -- for this geometry.+    indexData :: DeviceOrHostAddressConstKHR+  , -- | @transformData@ is a device or host address to memory containing an+    -- optional reference to a 'TransformMatrixKHR' structure defining a+    -- transformation that should be applied to vertices in this geometry.+    transformData :: DeviceOrHostAddressConstKHR+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureGeometryTrianglesDataKHR)+#endif+deriving instance Show AccelerationStructureGeometryTrianglesDataKHR++instance ToCStruct AccelerationStructureGeometryTrianglesDataKHR where+  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureGeometryTrianglesDataKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (vertexFormat)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (vertexData) . ($ ())+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (vertexStride)+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (maxVertex)+    lift $ poke ((p `plusPtr` 44 :: Ptr IndexType)) (indexType)+    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr DeviceOrHostAddressConstKHR)) (indexData) . ($ ())+    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr DeviceOrHostAddressConstKHR)) (transformData) . ($ ())+    lift $ f+  cStructSize = 64+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+    lift $ poke ((p `plusPtr` 44 :: Ptr IndexType)) (zero)+    lift $ f++instance Zero AccelerationStructureGeometryTrianglesDataKHR where+  zero = AccelerationStructureGeometryTrianglesDataKHR+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkAccelerationStructureGeometryAabbsDataKHR - Structure specifying+-- axis-aligned bounding box geometry in a bottom-level acceleration+-- structure+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureGeometryDataKHR', 'DeviceOrHostAddressConstKHR',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data AccelerationStructureGeometryAabbsDataKHR = AccelerationStructureGeometryAabbsDataKHR+  { -- | @data@ is a device or host address to memory containing+    -- 'AabbPositionsKHR' structures containing position data for each+    -- axis-aligned bounding box in the geometry.+    --+    -- #VUID-VkAccelerationStructureGeometryAabbsDataKHR-data-parameter# @data@+    -- /must/ be a valid 'DeviceOrHostAddressConstKHR' union+    data' :: DeviceOrHostAddressConstKHR+  , -- | @stride@ is the stride in bytes between each entry in @data@. The stride+    -- /must/ be a multiple of @8@.+    --+    -- #VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03545# @stride@+    -- /must/ be a multiple of @8@+    --+    -- #VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03820# @stride@+    -- /must/ be less than or equal to 232-1+    stride :: DeviceSize+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureGeometryAabbsDataKHR)+#endif+deriving instance Show AccelerationStructureGeometryAabbsDataKHR++instance ToCStruct AccelerationStructureGeometryAabbsDataKHR where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureGeometryAabbsDataKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (data') . ($ ())+    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (stride)+    lift $ f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+    lift $ f++instance Zero AccelerationStructureGeometryAabbsDataKHR where+  zero = AccelerationStructureGeometryAabbsDataKHR+           zero+           zero+++-- | VkAccelerationStructureGeometryInstancesDataKHR - Structure specifying a+-- geometry consisting of instances of other acceleration structures+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureGeometryDataKHR',+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'DeviceOrHostAddressConstKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data AccelerationStructureGeometryInstancesDataKHR = AccelerationStructureGeometryInstancesDataKHR+  { -- | @arrayOfPointers@ specifies whether @data@ is used as an array of+    -- addresses or just an array.+    arrayOfPointers :: Bool+  , -- | @data@ is either the address of an array of device or host addresses+    -- referencing individual 'AccelerationStructureInstanceKHR' structures if+    -- @arrayOfPointers@ is 'Vulkan.Core10.FundamentalTypes.TRUE', or the+    -- address of an array of 'AccelerationStructureInstanceKHR' structures.+    --+    -- #VUID-VkAccelerationStructureGeometryInstancesDataKHR-data-parameter#+    -- @data@ /must/ be a valid 'DeviceOrHostAddressConstKHR' union+    data' :: DeviceOrHostAddressConstKHR+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureGeometryInstancesDataKHR)+#endif+deriving instance Show AccelerationStructureGeometryInstancesDataKHR++instance ToCStruct AccelerationStructureGeometryInstancesDataKHR where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureGeometryInstancesDataKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (arrayOfPointers))+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (data') . ($ ())+    lift $ f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())+    lift $ f++instance Zero AccelerationStructureGeometryInstancesDataKHR where+  zero = AccelerationStructureGeometryInstancesDataKHR+           zero+           zero+++-- | VkAccelerationStructureGeometryKHR - Structure specifying geometries to+-- be built into an acceleration structure+--+-- == Valid Usage+--+-- -   #VUID-VkAccelerationStructureGeometryKHR-geometryType-03541# If+--     @geometryType@ is 'GEOMETRY_TYPE_AABBS_KHR', the @aabbs@ member of+--     @geometry@ /must/ be a valid+--     'AccelerationStructureGeometryAabbsDataKHR' structure+--+-- -   #VUID-VkAccelerationStructureGeometryKHR-geometryType-03542# If+--     @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR', the @triangles@+--     member of @geometry@ /must/ be a valid+--     'AccelerationStructureGeometryTrianglesDataKHR' structure+--+-- -   #VUID-VkAccelerationStructureGeometryKHR-geometryType-03543# If+--     @geometryType@ is 'GEOMETRY_TYPE_INSTANCES_KHR', the @instances@+--     member of @geometry@ /must/ be a valid+--     'AccelerationStructureGeometryInstancesDataKHR' structure+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkAccelerationStructureGeometryKHR-sType-sType# @sType@ /must/+--     be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR'+--+-- -   #VUID-VkAccelerationStructureGeometryKHR-pNext-pNext# @pNext@ /must/+--     be @NULL@+--+-- -   #VUID-VkAccelerationStructureGeometryKHR-geometryType-parameter#+--     @geometryType@ /must/ be a valid 'GeometryTypeKHR' value+--+-- -   #VUID-VkAccelerationStructureGeometryKHR-triangles-parameter# If+--     @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR', the @triangles@+--     member of @geometry@ /must/ be a valid+--     'AccelerationStructureGeometryTrianglesDataKHR' structure+--+-- -   #VUID-VkAccelerationStructureGeometryKHR-aabbs-parameter# If+--     @geometryType@ is 'GEOMETRY_TYPE_AABBS_KHR', the @aabbs@ member of+--     @geometry@ /must/ be a valid+--     'AccelerationStructureGeometryAabbsDataKHR' structure+--+-- -   #VUID-VkAccelerationStructureGeometryKHR-instances-parameter# If+--     @geometryType@ is 'GEOMETRY_TYPE_INSTANCES_KHR', the @instances@+--     member of @geometry@ /must/ be a valid+--     'AccelerationStructureGeometryInstancesDataKHR' structure+--+-- -   #VUID-VkAccelerationStructureGeometryKHR-flags-parameter# @flags@+--     /must/ be a valid combination of 'GeometryFlagBitsKHR' values+--+-- = See Also+--+-- 'AccelerationStructureBuildGeometryInfoKHR',+-- 'AccelerationStructureGeometryDataKHR', 'GeometryFlagsKHR',+-- 'GeometryTypeKHR', 'Vulkan.Core10.Enums.StructureType.StructureType'+data AccelerationStructureGeometryKHR = AccelerationStructureGeometryKHR+  { -- | @geometryType@ describes which type of geometry this+    -- 'AccelerationStructureGeometryKHR' refers to.+    geometryType :: GeometryTypeKHR+  , -- | @geometry@ is a 'AccelerationStructureGeometryDataKHR' union describing+    -- the geometry data for the relevant geometry type.+    geometry :: AccelerationStructureGeometryDataKHR+  , -- | @flags@ is a bitmask of 'GeometryFlagBitsKHR' values describing+    -- additional properties of how the geometry should be built.+    flags :: GeometryFlagsKHR+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureGeometryKHR)+#endif+deriving instance Show AccelerationStructureGeometryKHR++instance ToCStruct AccelerationStructureGeometryKHR where+  withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureGeometryKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (geometryType)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureGeometryDataKHR)) (geometry) . ($ ())+    lift $ poke ((p `plusPtr` 88 :: Ptr GeometryFlagsKHR)) (flags)+    lift $ f+  cStructSize = 96+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (zero)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureGeometryDataKHR)) (zero) . ($ ())+    lift $ f++instance Zero AccelerationStructureGeometryKHR where+  zero = AccelerationStructureGeometryKHR+           zero+           zero+           zero+++-- | VkAccelerationStructureBuildGeometryInfoKHR - Structure specifying the+-- geometry data used to build an acceleration structure+--+-- = Description+--+-- Only one of @pGeometries@ or @ppGeometries@ /can/ be a valid pointer,+-- the other /must/ be @NULL@. Each element of the non-@NULL@ array+-- describes the data used to build each acceleration structure geometry.+--+-- The index of each element of the @pGeometries@ or @ppGeometries@ members+-- of 'AccelerationStructureBuildGeometryInfoKHR' is used as the /geometry+-- index/ during ray traversal. The geometry index is available in ray+-- shaders via the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raygeometryindex RayGeometryIndexKHR built-in>,+-- and is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-binding-table-hit-shader-indexing used to determine hit and intersection shaders executed during traversal>.+-- The geometry index is available to ray queries via the+-- @OpRayQueryGetIntersectionGeometryIndexKHR@ instruction.+--+-- == Valid Usage+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03654# @type@+--     /must/ not be 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-03788#+--     Only one of @pGeometries@ or @ppGeometries@ /can/ be a valid+--     pointer, the other /must/ be @NULL@+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03789# If+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR', the+--     @geometryType@ member of elements of either @pGeometries@ or+--     @ppGeometries@ /must/ be 'GEOMETRY_TYPE_INSTANCES_KHR'+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03790# If+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR',+--     @geometryCount@ /must/ be @1@+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03791# If+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' the+--     @geometryType@ member of elements of either @pGeometries@ or+--     @ppGeometries@ /must/ not be 'GEOMETRY_TYPE_INSTANCES_KHR'+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03792# If+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' then the+--     @geometryType@ member of each geometry in either @pGeometries@ or+--     @ppGeometries@ /must/ be the same+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03793# If+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' then+--     @geometryCount@ /must/ be less than or equal to+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxGeometryCount@+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03794# If+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' and the+--     @geometryType@ member of either @pGeometries@ or @ppGeometries@ is+--     'GEOMETRY_TYPE_AABBS_KHR', the total number of AABBs in all+--     geometries /must/ be less than or equal to+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxPrimitiveCount@+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03795# If+--     @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' and the+--     @geometryType@ member of either @pGeometries@ or @ppGeometries@ is+--     'GEOMETRY_TYPE_TRIANGLES_KHR', the total number of triangles in all+--     geometries /must/ be less than or equal to+--     'PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxPrimitiveCount@+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-03796# If+--     @flags@ has the+--     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR' bit set,+--     then it /must/ not have the+--     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR' bit set+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-sType#+--     @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR'+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-pNext-pNext#+--     @pNext@ /must/ be @NULL@+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-parameter#+--     @type@ /must/ be a valid 'AccelerationStructureTypeKHR' value+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-parameter#+--     @flags@ /must/ be a valid combination of+--     'BuildAccelerationStructureFlagBitsKHR' values+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-mode-parameter#+--     @mode@ /must/ be a valid 'BuildAccelerationStructureModeKHR' value+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-srcAccelerationStructure-parameter#+--     If @srcAccelerationStructure@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @srcAccelerationStructure@+--     /must/ be a valid+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-dstAccelerationStructure-parameter#+--     If @dstAccelerationStructure@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @dstAccelerationStructure@+--     /must/ be a valid+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-parameter#+--     If @geometryCount@ is not @0@, and @pGeometries@ is not @NULL@,+--     @pGeometries@ /must/ be a valid pointer to an array of+--     @geometryCount@ valid 'AccelerationStructureGeometryKHR' structures+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-ppGeometries-parameter#+--     If @geometryCount@ is not @0@, and @ppGeometries@ is not @NULL@,+--     @ppGeometries@ /must/ be a valid pointer to an array of+--     @geometryCount@ valid pointers to valid+--     'AccelerationStructureGeometryKHR' structures+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-scratchData-parameter#+--     @scratchData@ /must/ be a valid 'DeviceOrHostAddressKHR' union+--+-- -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-commonparent# Both+--     of @dstAccelerationStructure@, and @srcAccelerationStructure@ that+--     are valid handles of non-ignored parameters /must/ have been+--     created, allocated, or retrieved from the same+--     'Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'AccelerationStructureGeometryKHR',+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'AccelerationStructureTypeKHR', 'BuildAccelerationStructureFlagsKHR',+-- 'BuildAccelerationStructureModeKHR', 'DeviceOrHostAddressKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'buildAccelerationStructuresKHR',+-- 'cmdBuildAccelerationStructuresIndirectKHR',+-- 'cmdBuildAccelerationStructuresKHR',+-- 'getAccelerationStructureBuildSizesKHR'+data AccelerationStructureBuildGeometryInfoKHR = AccelerationStructureBuildGeometryInfoKHR+  { -- | @type@ is a 'AccelerationStructureTypeKHR' value specifying the type of+    -- acceleration structure being built.+    type' :: AccelerationStructureTypeKHR+  , -- | @flags@ is a bitmask of 'BuildAccelerationStructureFlagBitsKHR'+    -- specifying additional parameters of the acceleration structure.+    flags :: BuildAccelerationStructureFlagsKHR+  , -- | @mode@ is a 'BuildAccelerationStructureModeKHR' value specifying the+    -- type of operation to perform.+    mode :: BuildAccelerationStructureModeKHR+  , -- | @srcAccelerationStructure@ points to an existing acceleration structure+    -- that is to be used to update the @dst@ acceleration structure when+    -- @mode@ is 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR'.+    srcAccelerationStructure :: AccelerationStructureKHR+  , -- | @dstAccelerationStructure@ points to the target acceleration structure+    -- for the build.+    dstAccelerationStructure :: AccelerationStructureKHR+  , -- | @geometryCount@ specifies the number of geometries that will be built+    -- into @dstAccelerationStructure@.+    geometryCount :: Word32+  , -- | @pGeometries@ is a pointer to an array of+    -- 'AccelerationStructureGeometryKHR' structures.+    geometries :: Vector AccelerationStructureGeometryKHR+  , -- | @scratchData@ is the device or host address to memory that will be used+    -- as scratch memory for the build.+    scratchData :: DeviceOrHostAddressKHR+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureBuildGeometryInfoKHR)+#endif+deriving instance Show AccelerationStructureBuildGeometryInfoKHR++instance ToCStruct AccelerationStructureBuildGeometryInfoKHR where+  withCStruct x f = allocaBytesAligned 80 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureBuildGeometryInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeKHR)) (type')+    lift $ poke ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsKHR)) (flags)+    lift $ poke ((p `plusPtr` 24 :: Ptr BuildAccelerationStructureModeKHR)) (mode)+    lift $ poke ((p `plusPtr` 32 :: Ptr AccelerationStructureKHR)) (srcAccelerationStructure)+    lift $ poke ((p `plusPtr` 40 :: Ptr AccelerationStructureKHR)) (dstAccelerationStructure)+    let pGeometriesLength = Data.Vector.length $ (geometries)+    geometryCount'' <- lift $ if (geometryCount) == 0+      then pure $ fromIntegral pGeometriesLength+      else do+        unless (fromIntegral pGeometriesLength == (geometryCount) || pGeometriesLength == 0) $+          throwIO $ IOError Nothing InvalidArgument "" "pGeometries must be empty or have 'geometryCount' elements" Nothing Nothing+        pure (geometryCount)+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (geometryCount'')+    pGeometries'' <- if Data.Vector.null (geometries)+      then pure nullPtr+      else do+        pPGeometries <- ContT $ allocaBytesAligned @AccelerationStructureGeometryKHR (((Data.Vector.length (geometries))) * 96) 8+        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGeometries `plusPtr` (96 * (i)) :: Ptr AccelerationStructureGeometryKHR) (e) . ($ ())) ((geometries))+        pure $ pPGeometries+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr AccelerationStructureGeometryKHR))) pGeometries''+    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (Ptr AccelerationStructureGeometryKHR)))) (nullPtr)+    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr DeviceOrHostAddressKHR)) (scratchData) . ($ ())+    lift $ f+  cStructSize = 80+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeKHR)) (zero)+    lift $ poke ((p `plusPtr` 24 :: Ptr BuildAccelerationStructureModeKHR)) (zero)+    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (Ptr AccelerationStructureGeometryKHR)))) (nullPtr)+    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr DeviceOrHostAddressKHR)) (zero) . ($ ())+    lift $ f++instance Zero AccelerationStructureBuildGeometryInfoKHR where+  zero = AccelerationStructureBuildGeometryInfoKHR+           zero+           zero+           zero+           zero+           zero+           zero+           mempty+           zero+++-- | VkAccelerationStructureBuildRangeInfoKHR - Structure specifying build+-- offsets and counts for acceleration structure builds+--+-- = Description+--+-- The primitive count and primitive offset are interpreted differently+-- depending on the 'GeometryTypeKHR' used:+--+-- -   For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR',+--     @primitiveCount@ is the number of triangles to be built, where each+--     triangle is treated as 3 vertices.+--+--     -   If the geometry uses indices, @primitiveCount@ × 3 indices are+--         consumed from+--         'AccelerationStructureGeometryTrianglesDataKHR'::@indexData@,+--         starting at an offset of @primitiveOffset@. The value of+--         @firstVertex@ is added to the index values before fetching+--         vertices.+--+--     -   If the geometry does not use indices, @primitiveCount@ × 3+--         vertices are consumed from+--         'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@,+--         starting at an offset of @primitiveOffset@ ++--         'AccelerationStructureGeometryTrianglesDataKHR'::@vertexStride@+--         × @firstVertex@.+--+--     -   A single 'TransformMatrixKHR' structure is consumed from+--         'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@,+--         at an offset of @transformOffset@. This transformation matrix is+--         used by all triangles.+--+-- -   For geometries of type 'GEOMETRY_TYPE_AABBS_KHR', @primitiveCount@+--     is the number of axis-aligned bounding boxes. @primitiveCount@+--     'AabbPositionsKHR' structures are consumed from+--     'AccelerationStructureGeometryAabbsDataKHR'::@data@, starting at an+--     offset of @primitiveOffset@.+--+-- -   For geometries of type 'GEOMETRY_TYPE_INSTANCES_KHR',+--     @primitiveCount@ is the number of acceleration structures.+--     @primitiveCount@ 'AccelerationStructureInstanceKHR' structures are+--     consumed from+--     'AccelerationStructureGeometryInstancesDataKHR'::@data@, starting at+--     an offset of @primitiveOffset@.+--+-- == Valid Usage+--+-- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03656#+--     For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', if the+--     geometry uses indices, the offset @primitiveOffset@ from+--     'AccelerationStructureGeometryTrianglesDataKHR'::@indexData@ /must/+--     be a multiple of the element size of+--     'AccelerationStructureGeometryTrianglesDataKHR'::@indexType@+--+-- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03657#+--     For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', if the+--     geometry doesn’t use indices, the offset @primitiveOffset@ from+--     'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@ /must/+--     be a multiple of the component size of+--     'AccelerationStructureGeometryTrianglesDataKHR'::@vertexFormat@+--+-- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-transformOffset-03658#+--     For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', the offset+--     @transformOffset@ from+--     'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@+--     /must/ be a multiple of 16+--+-- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03659#+--     For geometries of type 'GEOMETRY_TYPE_AABBS_KHR', the offset+--     @primitiveOffset@ from+--     'AccelerationStructureGeometryAabbsDataKHR'::@data@ /must/ be a+--     multiple of 8+--+-- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03660#+--     For geometries of type 'GEOMETRY_TYPE_INSTANCES_KHR', the offset+--     @primitiveOffset@ from+--     'AccelerationStructureGeometryInstancesDataKHR'::@data@ /must/ be a+--     multiple of 16+--+-- = See Also+--+-- 'buildAccelerationStructuresKHR', 'cmdBuildAccelerationStructuresKHR'+data AccelerationStructureBuildRangeInfoKHR = AccelerationStructureBuildRangeInfoKHR+  { -- | @primitiveCount@ defines the number of primitives for a corresponding+    -- acceleration structure geometry.+    primitiveCount :: Word32+  , -- | @primitiveOffset@ defines an offset in bytes into the memory where+    -- primitive data is defined.+    primitiveOffset :: Word32+  , -- | @firstVertex@ is the index of the first vertex to build from for+    -- triangle geometry.+    firstVertex :: Word32+  , -- | @transformOffset@ defines an offset in bytes into the memory where a+    -- transform matrix is defined.+    transformOffset :: Word32+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureBuildRangeInfoKHR)+#endif+deriving instance Show AccelerationStructureBuildRangeInfoKHR++instance ToCStruct AccelerationStructureBuildRangeInfoKHR where+  withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureBuildRangeInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (primitiveCount)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (primitiveOffset)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (firstVertex)+    poke ((p `plusPtr` 12 :: Ptr Word32)) (transformOffset)+    f+  cStructSize = 16+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+    f++instance FromCStruct AccelerationStructureBuildRangeInfoKHR where+  peekCStruct p = do+    primitiveCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+    primitiveOffset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+    firstVertex <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+    transformOffset <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))+    pure $ AccelerationStructureBuildRangeInfoKHR+             primitiveCount primitiveOffset firstVertex transformOffset++instance Storable AccelerationStructureBuildRangeInfoKHR where+  sizeOf ~_ = 16+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AccelerationStructureBuildRangeInfoKHR where+  zero = AccelerationStructureBuildRangeInfoKHR+           zero+           zero+           zero+           zero+++-- | VkAccelerationStructureCreateInfoKHR - Structure specifying the+-- parameters of a newly created acceleration structure object+--+-- = Description+--+-- If @deviceAddress@ is zero, no specific address is requested.+--+-- If @deviceAddress@ is not zero, @deviceAddress@ /must/ be an address+-- retrieved from an identically created acceleration structure on the same+-- implementation. The acceleration structure /must/ also be placed on an+-- identically created @buffer@ and at the same @offset@.+--+-- Applications /should/ avoid creating acceleration structures with+-- application-provided addresses and implementation-provided addresses in+-- the same process, to reduce the likelihood of+-- 'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'+-- errors.+--+-- Note+--+-- The expected usage for this is that a trace capture\/replay tool will+-- add the+-- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'+-- flag to all buffers that use+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT',+-- and+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'+-- to all buffers used as storage for an acceleration structure where+-- @deviceAddress@ is not zero. During capture the tool will save the+-- queried opaque device addresses in the trace. During replay, the buffers+-- will be created specifying the original address so any address values+-- stored in the trace data will remain valid.+--+-- Implementations are expected to separate such buffers in the GPU address+-- space so normal allocations will avoid using these addresses.+-- Apps\/tools should avoid mixing app-provided and implementation-provided+-- addresses for buffers created with+-- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT',+-- to avoid address space allocation conflicts.+--+-- Applications /should/ create an acceleration structure with a specific+-- 'AccelerationStructureTypeKHR' other than+-- 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR'.+--+-- If the acceleration structure will be the target of a build operation,+-- the required size for an acceleration structure /can/ be queried with+-- 'getAccelerationStructureBuildSizesKHR'. If the acceleration structure+-- is going to be the target of a compacting copy,+-- 'cmdWriteAccelerationStructuresPropertiesKHR' or+-- 'writeAccelerationStructuresPropertiesKHR' /can/ be used to obtain the+-- compacted size required.+--+-- == Valid Usage+--+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-03612# If+--     @deviceAddress@ is not zero, @createFlags@ /must/ include+--     'ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR'+--+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-createFlags-03613# If+--     @createFlags@ includes+--     'ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR',+--     'PhysicalDeviceAccelerationStructureFeaturesKHR'::@accelerationStructureCaptureReplay@+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'+--+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-buffer-03614# @buffer@+--     /must/ have been created with a @usage@ value containing+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'+--+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-buffer-03615# @buffer@+--     /must/ not have been created with+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'+--+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-offset-03616# The sum of+--     @offset@ and @size@ /must/ be less than the size of @buffer@+--+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-offset-03734# @offset@+--     /must/ be a multiple of @256@ bytes+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR'+--+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-pNext-pNext# @pNext@+--     /must/ be @NULL@+--+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-createFlags-parameter#+--     @createFlags@ /must/ be a valid combination of+--     'AccelerationStructureCreateFlagBitsKHR' values+--+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-buffer-parameter#+--     @buffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-type-parameter# @type@+--     /must/ be a valid 'AccelerationStructureTypeKHR' value+--+-- = See Also+--+-- 'AccelerationStructureCreateFlagsKHR', 'AccelerationStructureTypeKHR',+-- 'Vulkan.Core10.Handles.Buffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createAccelerationStructureKHR'+data AccelerationStructureCreateInfoKHR = AccelerationStructureCreateInfoKHR+  { -- | @createFlags@ is a bitmask of 'AccelerationStructureCreateFlagBitsKHR'+    -- specifying additional creation parameters of the acceleration structure.+    createFlags :: AccelerationStructureCreateFlagsKHR+  , -- | @buffer@ is the buffer on which the acceleration structure will be+    -- stored.+    buffer :: Buffer+  , -- | @offset@ is an offset in bytes from the base address of the buffer at+    -- which the acceleration structure will be stored, and /must/ be a+    -- multiple of @256@.+    offset :: DeviceSize+  , -- | @size@ is the size required for the acceleration structure.+    size :: DeviceSize+  , -- | @type@ is a 'AccelerationStructureTypeKHR' value specifying the type of+    -- acceleration structure that will be created.+    type' :: AccelerationStructureTypeKHR+  , -- | @deviceAddress@ is the device address requested for the acceleration+    -- structure if the+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureCaptureReplay accelerationStructureCaptureReplay>+    -- feature is being used.+    deviceAddress :: DeviceAddress+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureCreateInfoKHR)+#endif+deriving instance Show AccelerationStructureCreateInfoKHR++instance ToCStruct AccelerationStructureCreateInfoKHR where+  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureCreateInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureCreateFlagsKHR)) (createFlags)+    poke ((p `plusPtr` 24 :: Ptr Buffer)) (buffer)+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (size)+    poke ((p `plusPtr` 48 :: Ptr AccelerationStructureTypeKHR)) (type')+    poke ((p `plusPtr` 56 :: Ptr DeviceAddress)) (deviceAddress)+    f+  cStructSize = 64+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 24 :: Ptr Buffer)) (zero)+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 48 :: Ptr AccelerationStructureTypeKHR)) (zero)+    f++instance FromCStruct AccelerationStructureCreateInfoKHR where+  peekCStruct p = do+    createFlags <- peek @AccelerationStructureCreateFlagsKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureCreateFlagsKHR))+    buffer <- peek @Buffer ((p `plusPtr` 24 :: Ptr Buffer))+    offset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))+    size <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))+    type' <- peek @AccelerationStructureTypeKHR ((p `plusPtr` 48 :: Ptr AccelerationStructureTypeKHR))+    deviceAddress <- peek @DeviceAddress ((p `plusPtr` 56 :: Ptr DeviceAddress))+    pure $ AccelerationStructureCreateInfoKHR+             createFlags buffer offset size type' deviceAddress++instance Storable AccelerationStructureCreateInfoKHR where+  sizeOf ~_ = 64+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AccelerationStructureCreateInfoKHR where+  zero = AccelerationStructureCreateInfoKHR+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkAabbPositionsKHR - Structure specifying two opposing corners of an+-- axis-aligned bounding box+--+-- == Valid Usage+--+-- = See Also+--+-- No cross-references are available+data AabbPositionsKHR = AabbPositionsKHR+  { -- | @minX@ is the x position of one opposing corner of a bounding box.+    --+    -- #VUID-VkAabbPositionsKHR-minX-03546# @minX@ /must/ be less than or equal+    -- to @maxX@+    minX :: Float+  , -- | @minY@ is the y position of one opposing corner of a bounding box.+    --+    -- #VUID-VkAabbPositionsKHR-minY-03547# @minY@ /must/ be less than or equal+    -- to @maxY@+    minY :: Float+  , -- | @minZ@ is the z position of one opposing corner of a bounding box.+    --+    -- #VUID-VkAabbPositionsKHR-minZ-03548# @minZ@ /must/ be less than or equal+    -- to @maxZ@+    minZ :: Float+  , -- | @maxX@ is the x position of the other opposing corner of a bounding box.+    maxX :: Float+  , -- | @maxY@ is the y position of the other opposing corner of a bounding box.+    maxY :: Float+  , -- | @maxZ@ is the z position of the other opposing corner of a bounding box.+    maxZ :: Float+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AabbPositionsKHR)+#endif+deriving instance Show AabbPositionsKHR++instance ToCStruct AabbPositionsKHR where+  withCStruct x f = allocaBytesAligned 24 4 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AabbPositionsKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (minX))+    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (minY))+    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (minZ))+    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (maxX))+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (maxY))+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (maxZ))+    f+  cStructSize = 24+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))+    f++instance FromCStruct AabbPositionsKHR where+  peekCStruct p = do+    minX <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))+    minY <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))+    minZ <- peek @CFloat ((p `plusPtr` 8 :: Ptr CFloat))+    maxX <- peek @CFloat ((p `plusPtr` 12 :: Ptr CFloat))+    maxY <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))+    maxZ <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))+    pure $ AabbPositionsKHR+             ((\(CFloat a) -> a) minX) ((\(CFloat a) -> a) minY) ((\(CFloat a) -> a) minZ) ((\(CFloat a) -> a) maxX) ((\(CFloat a) -> a) maxY) ((\(CFloat a) -> a) maxZ)++instance Storable AabbPositionsKHR where+  sizeOf ~_ = 24+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AabbPositionsKHR where+  zero = AabbPositionsKHR+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkTransformMatrixKHR - Structure specifying a 3x4 affine transformation+-- matrix+--+-- == Valid Usage+--+-- -   #VUID-VkTransformMatrixKHR-matrix-03799# The first three columns of+--     @matrix@ /must/ define an invertible 3x3 matrix+--+-- = See Also+--+-- 'AccelerationStructureInstanceKHR'+data TransformMatrixKHR = TransformMatrixKHR+  { -- No documentation found for Nested "VkTransformMatrixKHR" "matrixRow0"+    matrixRow0 :: (Float, Float, Float, Float)+  , -- No documentation found for Nested "VkTransformMatrixKHR" "matrixRow1"+    matrixRow1 :: (Float, Float, Float, Float)+  , -- No documentation found for Nested "VkTransformMatrixKHR" "matrixRow2"+    matrixRow2 :: (Float, Float, Float, Float)+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (TransformMatrixKHR)+#endif+deriving instance Show TransformMatrixKHR++instance ToCStruct TransformMatrixKHR where+  withCStruct x f = allocaBytesAligned 48 4 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p TransformMatrixKHR{..} f = do+    let pMatrixRow0' = lowerArrayPtr ((p `plusPtr` 0 :: Ptr (FixedArray 4 CFloat)))+    case (matrixRow0) of+      (e0, e1, e2, e3) -> do+        poke (pMatrixRow0' :: Ptr CFloat) (CFloat (e0))+        poke (pMatrixRow0' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+        poke (pMatrixRow0' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))+        poke (pMatrixRow0' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+    let pMatrixRow1' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 4 CFloat)))+    case (matrixRow1) of+      (e0, e1, e2, e3) -> do+        poke (pMatrixRow1' :: Ptr CFloat) (CFloat (e0))+        poke (pMatrixRow1' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+        poke (pMatrixRow1' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))+        poke (pMatrixRow1' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+    let pMatrixRow2' = lowerArrayPtr ((p `plusPtr` 32 :: Ptr (FixedArray 4 CFloat)))+    case (matrixRow2) of+      (e0, e1, e2, e3) -> do+        poke (pMatrixRow2' :: Ptr CFloat) (CFloat (e0))+        poke (pMatrixRow2' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+        poke (pMatrixRow2' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))+        poke (pMatrixRow2' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+    f+  cStructSize = 48+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    let pMatrixRow0' = lowerArrayPtr ((p `plusPtr` 0 :: Ptr (FixedArray 4 CFloat)))+    case ((zero, zero, zero, zero)) of+      (e0, e1, e2, e3) -> do+        poke (pMatrixRow0' :: Ptr CFloat) (CFloat (e0))+        poke (pMatrixRow0' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+        poke (pMatrixRow0' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))+        poke (pMatrixRow0' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+    let pMatrixRow1' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 4 CFloat)))+    case ((zero, zero, zero, zero)) of+      (e0, e1, e2, e3) -> do+        poke (pMatrixRow1' :: Ptr CFloat) (CFloat (e0))+        poke (pMatrixRow1' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+        poke (pMatrixRow1' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))+        poke (pMatrixRow1' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+    let pMatrixRow2' = lowerArrayPtr ((p `plusPtr` 32 :: Ptr (FixedArray 4 CFloat)))+    case ((zero, zero, zero, zero)) of+      (e0, e1, e2, e3) -> do+        poke (pMatrixRow2' :: Ptr CFloat) (CFloat (e0))+        poke (pMatrixRow2' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+        poke (pMatrixRow2' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))+        poke (pMatrixRow2' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+    f++instance FromCStruct TransformMatrixKHR where+  peekCStruct p = do+    let pmatrixRow0 = lowerArrayPtr @CFloat ((p `plusPtr` 0 :: Ptr (FixedArray 4 CFloat)))+    matrixRow00 <- peek @CFloat ((pmatrixRow0 `advancePtrBytes` 0 :: Ptr CFloat))+    matrixRow01 <- peek @CFloat ((pmatrixRow0 `advancePtrBytes` 4 :: Ptr CFloat))+    matrixRow02 <- peek @CFloat ((pmatrixRow0 `advancePtrBytes` 8 :: Ptr CFloat))+    matrixRow03 <- peek @CFloat ((pmatrixRow0 `advancePtrBytes` 12 :: Ptr CFloat))+    let pmatrixRow1 = lowerArrayPtr @CFloat ((p `plusPtr` 16 :: Ptr (FixedArray 4 CFloat)))+    matrixRow10 <- peek @CFloat ((pmatrixRow1 `advancePtrBytes` 0 :: Ptr CFloat))+    matrixRow11 <- peek @CFloat ((pmatrixRow1 `advancePtrBytes` 4 :: Ptr CFloat))+    matrixRow12 <- peek @CFloat ((pmatrixRow1 `advancePtrBytes` 8 :: Ptr CFloat))+    matrixRow13 <- peek @CFloat ((pmatrixRow1 `advancePtrBytes` 12 :: Ptr CFloat))+    let pmatrixRow2 = lowerArrayPtr @CFloat ((p `plusPtr` 32 :: Ptr (FixedArray 4 CFloat)))+    matrixRow20 <- peek @CFloat ((pmatrixRow2 `advancePtrBytes` 0 :: Ptr CFloat))+    matrixRow21 <- peek @CFloat ((pmatrixRow2 `advancePtrBytes` 4 :: Ptr CFloat))+    matrixRow22 <- peek @CFloat ((pmatrixRow2 `advancePtrBytes` 8 :: Ptr CFloat))+    matrixRow23 <- peek @CFloat ((pmatrixRow2 `advancePtrBytes` 12 :: Ptr CFloat))+    pure $ TransformMatrixKHR+             ((((\(CFloat a) -> a) matrixRow00), ((\(CFloat a) -> a) matrixRow01), ((\(CFloat a) -> a) matrixRow02), ((\(CFloat a) -> a) matrixRow03))) ((((\(CFloat a) -> a) matrixRow10), ((\(CFloat a) -> a) matrixRow11), ((\(CFloat a) -> a) matrixRow12), ((\(CFloat a) -> a) matrixRow13))) ((((\(CFloat a) -> a) matrixRow20), ((\(CFloat a) -> a) matrixRow21), ((\(CFloat a) -> a) matrixRow22), ((\(CFloat a) -> a) matrixRow23)))++instance Storable TransformMatrixKHR where+  sizeOf ~_ = 48+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero TransformMatrixKHR where+  zero = TransformMatrixKHR+           (zero, zero, zero, zero)+           (zero, zero, zero, zero)+           (zero, zero, zero, zero)+++-- | VkAccelerationStructureInstanceKHR - Structure specifying a single+-- acceleration structure instance for building into an acceleration+-- structure geometry+--+-- = Description+--+-- The C language spec does not define the ordering of bit-fields, but in+-- practice, this struct produces the correct layout with existing+-- compilers. The intended bit pattern is for the following:+--+-- If a compiler produces code that diverges from that pattern,+-- applications /must/ employ another method to set values according to the+-- correct bit pattern.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'GeometryInstanceFlagsKHR', 'TransformMatrixKHR'+data AccelerationStructureInstanceKHR = AccelerationStructureInstanceKHR+  { -- | @transform@ is a 'TransformMatrixKHR' structure describing a+    -- transformation to be applied to the acceleration structure.+    transform :: TransformMatrixKHR+  , -- | @instanceCustomIndex@ is a 24-bit user-specified index value accessible+    -- to ray shaders in the @InstanceCustomIndexKHR@ built-in.+    --+    -- @instanceCustomIndex@ and @mask@ occupy the same memory as if a single+    -- @int32_t@ was specified in their place+    --+    -- -   @instanceCustomIndex@ occupies the 24 least significant bits of that+    --     memory+    --+    -- -   @mask@ occupies the 8 most significant bits of that memory+    instanceCustomIndex :: Word32+  , -- | @mask@ is an 8-bit visibility mask for the geometry. The instance /may/+    -- only be hit if @rayMask & instance.mask != 0@+    mask :: Word32+  , -- | @instanceShaderBindingTableRecordOffset@ is a 24-bit offset used in+    -- calculating the hit shader binding table index.+    --+    -- @instanceShaderBindingTableRecordOffset@ and @flags@ occupy the same+    -- memory as if a single @int32_t@ was specified in their place+    --+    -- -   @instanceShaderBindingTableRecordOffset@ occupies the 24 least+    --     significant bits of that memory+    --+    -- -   @flags@ occupies the 8 most significant bits of that memory+    instanceShaderBindingTableRecordOffset :: Word32+  , -- | @flags@ is an 8-bit mask of 'GeometryInstanceFlagBitsKHR' values to+    -- apply to this instance.+    --+    -- #VUID-VkAccelerationStructureInstanceKHR-flags-parameter# @flags@ /must/+    -- be a valid combination of 'GeometryInstanceFlagBitsKHR' values+    flags :: GeometryInstanceFlagsKHR+  , -- | @accelerationStructureReference@ is either:+    --+    -- -   a device address containing the value obtained from+    --     'getAccelerationStructureDeviceAddressKHR' or+    --     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'+    --     (used by device operations which reference acceleration structures)+    --     or,+    --+    -- -   a 'Vulkan.Extensions.Handles.AccelerationStructureKHR' object (used+    --     by host operations which reference acceleration structures).+    accelerationStructureReference :: Word64+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureInstanceKHR)+#endif+deriving instance Show AccelerationStructureInstanceKHR++instance ToCStruct AccelerationStructureInstanceKHR where+  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureInstanceKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr TransformMatrixKHR)) (transform)+    poke ((p `plusPtr` 48 :: Ptr Word32)) (((coerce @_ @Word32 (mask)) `shiftL` 24) .|. (instanceCustomIndex))+    poke ((p `plusPtr` 52 :: Ptr Word32)) (((coerce @_ @Word32 (flags)) `shiftL` 24) .|. (instanceShaderBindingTableRecordOffset))+    poke ((p `plusPtr` 56 :: Ptr Word64)) (accelerationStructureReference)+    f+  cStructSize = 64+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr TransformMatrixKHR)) (zero)+    poke ((p `plusPtr` 56 :: Ptr Word64)) (zero)+    f++instance FromCStruct AccelerationStructureInstanceKHR where+  peekCStruct p = do+    transform <- peekCStruct @TransformMatrixKHR ((p `plusPtr` 0 :: Ptr TransformMatrixKHR))+    instanceCustomIndex <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+    let instanceCustomIndex' = ((instanceCustomIndex .&. coerce @Word32 0xffffff))+    mask <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+    let mask' = ((((mask `shiftR` 24)) .&. coerce @Word32 0xff))+    instanceShaderBindingTableRecordOffset <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))+    let instanceShaderBindingTableRecordOffset' = ((instanceShaderBindingTableRecordOffset .&. coerce @Word32 0xffffff))+    flags <- peek @GeometryInstanceFlagsKHR ((p `plusPtr` 52 :: Ptr GeometryInstanceFlagsKHR))+    let flags' = ((((flags `shiftR` 24)) .&. coerce @Word32 0xff))+    accelerationStructureReference <- peek @Word64 ((p `plusPtr` 56 :: Ptr Word64))+    pure $ AccelerationStructureInstanceKHR+             transform instanceCustomIndex' mask' instanceShaderBindingTableRecordOffset' flags' accelerationStructureReference++instance Storable AccelerationStructureInstanceKHR where+  sizeOf ~_ = 64+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AccelerationStructureInstanceKHR where+  zero = AccelerationStructureInstanceKHR+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkAccelerationStructureDeviceAddressInfoKHR - Structure specifying the+-- acceleration structure to query an address for+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getAccelerationStructureDeviceAddressKHR'+data AccelerationStructureDeviceAddressInfoKHR = AccelerationStructureDeviceAddressInfoKHR+  { -- | @accelerationStructure@ specifies the acceleration structure whose+    -- address is being queried.+    --+    -- #VUID-VkAccelerationStructureDeviceAddressInfoKHR-accelerationStructure-parameter#+    -- @accelerationStructure@ /must/ be a valid+    -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+    accelerationStructure :: AccelerationStructureKHR }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureDeviceAddressInfoKHR)+#endif+deriving instance Show AccelerationStructureDeviceAddressInfoKHR++instance ToCStruct AccelerationStructureDeviceAddressInfoKHR where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureDeviceAddressInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (accelerationStructure)+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)+    f++instance FromCStruct AccelerationStructureDeviceAddressInfoKHR where+  peekCStruct p = do+    accelerationStructure <- peek @AccelerationStructureKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR))+    pure $ AccelerationStructureDeviceAddressInfoKHR+             accelerationStructure++instance Storable AccelerationStructureDeviceAddressInfoKHR where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AccelerationStructureDeviceAddressInfoKHR where+  zero = AccelerationStructureDeviceAddressInfoKHR+           zero+++-- | VkAccelerationStructureVersionInfoKHR - Acceleration structure version+-- information+--+-- = Description+--+-- Note+--+-- @pVersionData@ is a /pointer/ to an array of+-- 2*'Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values instead of two+-- 'Vulkan.Core10.APIConstants.UUID_SIZE' arrays as the expected use case+-- for this member is to be pointed at the header of an previously+-- serialized acceleration structure (via+-- 'cmdCopyAccelerationStructureToMemoryKHR' or+-- 'copyAccelerationStructureToMemoryKHR') that is loaded in memory. Using+-- arrays would necessitate extra memory copies of the UUIDs.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getDeviceAccelerationStructureCompatibilityKHR'+data AccelerationStructureVersionInfoKHR = AccelerationStructureVersionInfoKHR+  { -- | @pVersionData@ is a pointer to the version header of an acceleration+    -- structure as defined in 'cmdCopyAccelerationStructureToMemoryKHR'+    --+    -- #VUID-VkAccelerationStructureVersionInfoKHR-pVersionData-parameter#+    -- @pVersionData@ /must/ be a valid pointer to an array of+    -- @2@*'Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values+    versionData :: ByteString }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureVersionInfoKHR)+#endif+deriving instance Show AccelerationStructureVersionInfoKHR++instance ToCStruct AccelerationStructureVersionInfoKHR where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureVersionInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ unless (Data.ByteString.length (versionData) == 2 * UUID_SIZE) $+      throwIO $ IOError Nothing InvalidArgument "" "AccelerationStructureVersionKHR::versionData must be 2*VK_UUID_SIZE bytes" Nothing Nothing+    versionData <- fmap (castPtr @CChar @Word8) . ContT $ unsafeUseAsCString (versionData)+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr Word8))) versionData+    lift $ f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    f++instance FromCStruct AccelerationStructureVersionInfoKHR where+  peekCStruct p = do+    versionData <- peek @(Ptr Word8) ((p `plusPtr` 16 :: Ptr (Ptr Word8)))+    versionData' <- packCStringLen (castPtr @Word8 @CChar versionData, 2 * UUID_SIZE)+    pure $ AccelerationStructureVersionInfoKHR+             versionData'++instance Zero AccelerationStructureVersionInfoKHR where+  zero = AccelerationStructureVersionInfoKHR+           mempty+++-- | VkCopyAccelerationStructureInfoKHR - Parameters for copying an+-- acceleration structure+--+-- == Valid Usage+--+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-mode-03410# @mode@ /must/+--     be 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' or+--     'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR'+--+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-src-03411# If @mode@ is+--     'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR', @src@ /must/ have+--     been built with+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR'+--+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-buffer-03718# The @buffer@+--     used to create @src@ /must/ be bound to device memory+--+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-buffer-03719# The @buffer@+--     used to create @dst@ /must/ be bound to device memory+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-sType-sType# @sType@ /must/+--     be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR'+--+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-pNext-pNext# @pNext@ /must/+--     be @NULL@+--+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-src-parameter# @src@ /must/+--     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     handle+--+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-dst-parameter# @dst@ /must/+--     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     handle+--+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-mode-parameter# @mode@+--     /must/ be a valid 'CopyAccelerationStructureModeKHR' value+--+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-commonparent# Both of+--     @dst@, and @src@ /must/ have been created, allocated, or retrieved+--     from the same 'Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'CopyAccelerationStructureModeKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdCopyAccelerationStructureKHR', 'copyAccelerationStructureKHR'+data CopyAccelerationStructureInfoKHR = CopyAccelerationStructureInfoKHR+  { -- | @src@ is the source acceleration structure for the copy.+    src :: AccelerationStructureKHR+  , -- | @dst@ is the target acceleration structure for the copy.+    dst :: AccelerationStructureKHR+  , -- | @mode@ is a 'CopyAccelerationStructureModeKHR' value that specifies+    -- additional operations to perform during the copy.+    mode :: CopyAccelerationStructureModeKHR+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (CopyAccelerationStructureInfoKHR)+#endif+deriving instance Show CopyAccelerationStructureInfoKHR++instance ToCStruct CopyAccelerationStructureInfoKHR where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p CopyAccelerationStructureInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (src)+    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (dst)+    poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (mode)+    f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)+    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (zero)+    poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (zero)+    f++instance FromCStruct CopyAccelerationStructureInfoKHR where+  peekCStruct p = do+    src <- peek @AccelerationStructureKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR))+    dst <- peek @AccelerationStructureKHR ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR))+    mode <- peek @CopyAccelerationStructureModeKHR ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR))+    pure $ CopyAccelerationStructureInfoKHR+             src dst mode++instance Storable CopyAccelerationStructureInfoKHR where+  sizeOf ~_ = 40+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero CopyAccelerationStructureInfoKHR where+  zero = CopyAccelerationStructureInfoKHR+           zero+           zero+           zero+++-- | VkCopyAccelerationStructureToMemoryInfoKHR - Parameters for serializing+-- an acceleration structure+--+-- == Valid Usage+--+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-03561# The+--     memory pointed to by @dst@ /must/ be at least as large as the+--     serialization size of @src@, as reported by+--     'writeAccelerationStructuresPropertiesKHR' or+--     'cmdWriteAccelerationStructuresPropertiesKHR' with a query type of+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'+--+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-03412# @mode@+--     /must/ be 'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-sType#+--     @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR'+--+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-pNext-pNext#+--     @pNext@ /must/ be @NULL@+--+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-parameter#+--     @src@ /must/ be a valid+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-parameter#+--     @dst@ /must/ be a valid 'DeviceOrHostAddressKHR' union+--+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-parameter#+--     @mode@ /must/ be a valid 'CopyAccelerationStructureModeKHR' value+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'CopyAccelerationStructureModeKHR', 'DeviceOrHostAddressKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdCopyAccelerationStructureToMemoryKHR',+-- 'copyAccelerationStructureToMemoryKHR'+data CopyAccelerationStructureToMemoryInfoKHR = CopyAccelerationStructureToMemoryInfoKHR+  { -- | @src@ is the source acceleration structure for the copy+    src :: AccelerationStructureKHR+  , -- | @dst@ is the device or host address to memory which is the target for+    -- the copy+    dst :: DeviceOrHostAddressKHR+  , -- | @mode@ is a 'CopyAccelerationStructureModeKHR' value that specifies+    -- additional operations to perform during the copy.+    mode :: CopyAccelerationStructureModeKHR+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (CopyAccelerationStructureToMemoryInfoKHR)+#endif+deriving instance Show CopyAccelerationStructureToMemoryInfoKHR++instance ToCStruct CopyAccelerationStructureToMemoryInfoKHR where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p CopyAccelerationStructureToMemoryInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (src)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressKHR)) (dst) . ($ ())+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (mode)+    lift $ f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressKHR)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (zero)+    lift $ f++instance Zero CopyAccelerationStructureToMemoryInfoKHR where+  zero = CopyAccelerationStructureToMemoryInfoKHR+           zero+           zero+           zero+++-- | VkCopyMemoryToAccelerationStructureInfoKHR - Parameters for+-- deserializing an acceleration structure+--+-- == Valid Usage+--+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-03413# @mode@+--     /must/ be 'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR'+--+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pInfo-03414# The+--     data in @src@ /must/ have a format compatible with the destination+--     physical device as returned by+--     'getDeviceAccelerationStructureCompatibilityKHR'+--+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-03746# @dst@+--     /must/ have been created with a @size@ greater than or equal to that+--     used to serialize the data in @src@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-sType#+--     @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR'+--+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pNext-pNext#+--     @pNext@ /must/ be @NULL@+--+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-src-parameter#+--     @src@ /must/ be a valid 'DeviceOrHostAddressConstKHR' union+--+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-parameter#+--     @dst@ /must/ be a valid+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-parameter#+--     @mode@ /must/ be a valid 'CopyAccelerationStructureModeKHR' value+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'CopyAccelerationStructureModeKHR', 'DeviceOrHostAddressConstKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdCopyMemoryToAccelerationStructureKHR',+-- 'copyMemoryToAccelerationStructureKHR'+data CopyMemoryToAccelerationStructureInfoKHR = CopyMemoryToAccelerationStructureInfoKHR+  { -- | @src@ is the device or host address to memory containing the source data+    -- for the copy.+    src :: DeviceOrHostAddressConstKHR+  , -- | @dst@ is the target acceleration structure for the copy.+    dst :: AccelerationStructureKHR+  , -- | @mode@ is a 'CopyAccelerationStructureModeKHR' value that specifies+    -- additional operations to perform during the copy.+    mode :: CopyAccelerationStructureModeKHR+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (CopyMemoryToAccelerationStructureInfoKHR)+#endif+deriving instance Show CopyMemoryToAccelerationStructureInfoKHR++instance ToCStruct CopyMemoryToAccelerationStructureInfoKHR where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p CopyMemoryToAccelerationStructureInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (src) . ($ ())+    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (dst)+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (mode)+    lift $ f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (zero)+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (zero)+    lift $ f++instance Zero CopyMemoryToAccelerationStructureInfoKHR where+  zero = CopyMemoryToAccelerationStructureInfoKHR+           zero+           zero+           zero+++-- | VkAccelerationStructureBuildSizesInfoKHR - Structure specifying build+-- sizes for an acceleration structure+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getAccelerationStructureBuildSizesKHR'+data AccelerationStructureBuildSizesInfoKHR = AccelerationStructureBuildSizesInfoKHR+  { -- | @accelerationStructureSize@ is the size in bytes required in a+    -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' for a build or+    -- update operation.+    accelerationStructureSize :: DeviceSize+  , -- | @updateScratchSize@ is the size in bytes required in a scratch buffer+    -- for an update operation.+    updateScratchSize :: DeviceSize+  , -- | @buildScratchSize@ is the size in bytes required in a scratch buffer for+    -- a build operation.+    buildScratchSize :: DeviceSize+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureBuildSizesInfoKHR)+#endif+deriving instance Show AccelerationStructureBuildSizesInfoKHR++instance ToCStruct AccelerationStructureBuildSizesInfoKHR where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureBuildSizesInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (accelerationStructureSize)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (updateScratchSize)+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (buildScratchSize)+    f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+    f++instance FromCStruct AccelerationStructureBuildSizesInfoKHR where+  peekCStruct p = do+    accelerationStructureSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+    updateScratchSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+    buildScratchSize <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))+    pure $ AccelerationStructureBuildSizesInfoKHR+             accelerationStructureSize updateScratchSize buildScratchSize++instance Storable AccelerationStructureBuildSizesInfoKHR where+  sizeOf ~_ = 40+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AccelerationStructureBuildSizesInfoKHR where+  zero = AccelerationStructureBuildSizesInfoKHR+           zero+           zero+           zero+++data DeviceOrHostAddressKHR+  = DeviceAddress DeviceAddress+  | HostAddress (Ptr ())+  deriving (Show)++instance ToCStruct DeviceOrHostAddressKHR where+  withCStruct x f = allocaBytesAligned 8 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct :: Ptr DeviceOrHostAddressKHR -> DeviceOrHostAddressKHR -> IO a -> IO a+  pokeCStruct p = (. const) . runContT .  \case+    DeviceAddress v -> lift $ poke (castPtr @_ @DeviceAddress p) (v)+    HostAddress v -> lift $ poke (castPtr @_ @(Ptr ()) p) (v)+  pokeZeroCStruct :: Ptr DeviceOrHostAddressKHR -> IO b -> IO b+  pokeZeroCStruct _ f = f+  cStructSize = 8+  cStructAlignment = 8++instance Zero DeviceOrHostAddressKHR where+  zero = DeviceAddress zero+++data DeviceOrHostAddressConstKHR+  = DeviceAddressConst DeviceAddress+  | HostAddressConst (Ptr ())+  deriving (Show)++instance ToCStruct DeviceOrHostAddressConstKHR where+  withCStruct x f = allocaBytesAligned 8 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct :: Ptr DeviceOrHostAddressConstKHR -> DeviceOrHostAddressConstKHR -> IO a -> IO a+  pokeCStruct p = (. const) . runContT .  \case+    DeviceAddressConst v -> lift $ poke (castPtr @_ @DeviceAddress p) (v)+    HostAddressConst v -> lift $ poke (castPtr @_ @(Ptr ()) p) (v)+  pokeZeroCStruct :: Ptr DeviceOrHostAddressConstKHR -> IO b -> IO b+  pokeZeroCStruct _ f = f+  cStructSize = 8+  cStructAlignment = 8++instance Zero DeviceOrHostAddressConstKHR where+  zero = DeviceAddressConst zero+++data AccelerationStructureGeometryDataKHR+  = Triangles AccelerationStructureGeometryTrianglesDataKHR+  | Aabbs AccelerationStructureGeometryAabbsDataKHR+  | Instances AccelerationStructureGeometryInstancesDataKHR+  deriving (Show)++instance ToCStruct AccelerationStructureGeometryDataKHR where+  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct :: Ptr AccelerationStructureGeometryDataKHR -> AccelerationStructureGeometryDataKHR -> IO a -> IO a+  pokeCStruct p = (. const) . runContT .  \case+    Triangles v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryTrianglesDataKHR p) (v) . ($ ())+    Aabbs v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryAabbsDataKHR p) (v) . ($ ())+    Instances v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryInstancesDataKHR p) (v) . ($ ())+  pokeZeroCStruct :: Ptr AccelerationStructureGeometryDataKHR -> IO b -> IO b+  pokeZeroCStruct _ f = f+  cStructSize = 64+  cStructAlignment = 8++instance Zero AccelerationStructureGeometryDataKHR where+  zero = Triangles zero+++type GeometryInstanceFlagsKHR = GeometryInstanceFlagBitsKHR++-- | VkGeometryInstanceFlagBitsKHR - Instance flag bits+--+-- = Description+--+-- 'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR' and+-- 'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR' /must/ not be used in the same+-- flag.+--+-- = See Also+--+-- 'GeometryInstanceFlagsKHR'+newtype GeometryInstanceFlagBitsKHR = GeometryInstanceFlagBitsKHR Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)++-- | 'GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR' disables face+-- culling for this instance.+pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR    = GeometryInstanceFlagBitsKHR 0x00000001+-- | 'GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR' indicates+-- that the front face of the triangle for culling purposes is the face+-- that is counter clockwise in object space relative to the ray origin.+-- Because the facing is determined in object space, an instance transform+-- matrix does not change the winding, but a geometry transform does.+pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000002+-- | 'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR' causes this instance to act as+-- though 'GEOMETRY_OPAQUE_BIT_KHR' were specified on all geometries+-- referenced by this instance. This behavior /can/ be overridden by the+-- SPIR-V @NoOpaqueKHR@ ray flag.+pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR                    = GeometryInstanceFlagBitsKHR 0x00000004+-- | 'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR' causes this instance to act+-- as though 'GEOMETRY_OPAQUE_BIT_KHR' were not specified on all geometries+-- referenced by this instance. This behavior /can/ be overridden by the+-- SPIR-V @OpaqueKHR@ ray flag.+pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR                 = GeometryInstanceFlagBitsKHR 0x00000008++conNameGeometryInstanceFlagBitsKHR :: String+conNameGeometryInstanceFlagBitsKHR = "GeometryInstanceFlagBitsKHR"++enumPrefixGeometryInstanceFlagBitsKHR :: String+enumPrefixGeometryInstanceFlagBitsKHR = "GEOMETRY_INSTANCE_"++showTableGeometryInstanceFlagBitsKHR :: [(GeometryInstanceFlagBitsKHR, String)]+showTableGeometryInstanceFlagBitsKHR =+  [ (GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR   , "TRIANGLE_FACING_CULL_DISABLE_BIT_KHR")+  , (GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR, "TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR")+  , (GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR                   , "FORCE_OPAQUE_BIT_KHR")+  , (GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR                , "FORCE_NO_OPAQUE_BIT_KHR")+  ]++instance Show GeometryInstanceFlagBitsKHR where+  showsPrec = enumShowsPrec enumPrefixGeometryInstanceFlagBitsKHR+                            showTableGeometryInstanceFlagBitsKHR+                            conNameGeometryInstanceFlagBitsKHR+                            (\(GeometryInstanceFlagBitsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)++instance Read GeometryInstanceFlagBitsKHR where+  readPrec = enumReadPrec enumPrefixGeometryInstanceFlagBitsKHR+                          showTableGeometryInstanceFlagBitsKHR+                          conNameGeometryInstanceFlagBitsKHR+                          GeometryInstanceFlagBitsKHR+++type GeometryFlagsKHR = GeometryFlagBitsKHR++-- | VkGeometryFlagBitsKHR - Bitmask specifying additional parameters for a+-- geometry+--+-- = See Also+--+-- 'GeometryFlagsKHR'+newtype GeometryFlagBitsKHR = GeometryFlagBitsKHR Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)++-- | 'GEOMETRY_OPAQUE_BIT_KHR' indicates that this geometry does not invoke+-- the any-hit shaders even if present in a hit group.+pattern GEOMETRY_OPAQUE_BIT_KHR                          = GeometryFlagBitsKHR 0x00000001+-- | 'GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR' indicates that the+-- implementation /must/ only call the any-hit shader a single time for+-- each primitive in this geometry. If this bit is absent an implementation+-- /may/ invoke the any-hit shader more than once for this geometry.+pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = GeometryFlagBitsKHR 0x00000002++conNameGeometryFlagBitsKHR :: String+conNameGeometryFlagBitsKHR = "GeometryFlagBitsKHR"++enumPrefixGeometryFlagBitsKHR :: String+enumPrefixGeometryFlagBitsKHR = "GEOMETRY_"++showTableGeometryFlagBitsKHR :: [(GeometryFlagBitsKHR, String)]+showTableGeometryFlagBitsKHR =+  [ (GEOMETRY_OPAQUE_BIT_KHR                         , "OPAQUE_BIT_KHR")+  , (GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR, "NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR")+  ]++instance Show GeometryFlagBitsKHR where+  showsPrec = enumShowsPrec enumPrefixGeometryFlagBitsKHR+                            showTableGeometryFlagBitsKHR+                            conNameGeometryFlagBitsKHR+                            (\(GeometryFlagBitsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)++instance Read GeometryFlagBitsKHR where+  readPrec = enumReadPrec enumPrefixGeometryFlagBitsKHR+                          showTableGeometryFlagBitsKHR+                          conNameGeometryFlagBitsKHR+                          GeometryFlagBitsKHR+++type BuildAccelerationStructureFlagsKHR = BuildAccelerationStructureFlagBitsKHR++-- | VkBuildAccelerationStructureFlagBitsKHR - Bitmask specifying additional+-- parameters for acceleration structure builds+--+-- = Description+--+-- Note+--+-- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' and+-- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' /may/ take more+-- time and memory than a normal build, and so /should/ only be used when+-- those features are needed.+--+-- = See Also+--+-- 'BuildAccelerationStructureFlagsKHR'+newtype BuildAccelerationStructureFlagBitsKHR = BuildAccelerationStructureFlagBitsKHR Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)++-- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' indicates that the+-- specified acceleration structure /can/ be updated with @update@ of+-- 'Vulkan.Core10.FundamentalTypes.TRUE' in+-- 'cmdBuildAccelerationStructuresKHR' or+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV' .+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR      = BuildAccelerationStructureFlagBitsKHR 0x00000001+-- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' indicates that+-- the specified acceleration structure /can/ act as the source for a copy+-- acceleration structure command with @mode@ of+-- 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' to produce a compacted+-- acceleration structure.+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR  = BuildAccelerationStructureFlagBitsKHR 0x00000002+-- | 'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR' indicates that+-- the given acceleration structure build /should/ prioritize trace+-- performance over build time.+pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000004+-- | 'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR' indicates that+-- the given acceleration structure build /should/ prioritize build time+-- over trace performance.+pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000008+-- | 'BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR' indicates that this+-- acceleration structure /should/ minimize the size of the scratch memory+-- and the final result build, potentially at the expense of build time or+-- trace performance.+pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR        = BuildAccelerationStructureFlagBitsKHR 0x00000010++conNameBuildAccelerationStructureFlagBitsKHR :: String+conNameBuildAccelerationStructureFlagBitsKHR = "BuildAccelerationStructureFlagBitsKHR"++enumPrefixBuildAccelerationStructureFlagBitsKHR :: String+enumPrefixBuildAccelerationStructureFlagBitsKHR = "BUILD_ACCELERATION_STRUCTURE_"++showTableBuildAccelerationStructureFlagBitsKHR :: [(BuildAccelerationStructureFlagBitsKHR, String)]+showTableBuildAccelerationStructureFlagBitsKHR =+  [ (BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR     , "ALLOW_UPDATE_BIT_KHR")+  , (BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR , "ALLOW_COMPACTION_BIT_KHR")+  , (BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR, "PREFER_FAST_TRACE_BIT_KHR")+  , (BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR, "PREFER_FAST_BUILD_BIT_KHR")+  , (BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR       , "LOW_MEMORY_BIT_KHR")+  ]++instance Show BuildAccelerationStructureFlagBitsKHR where+  showsPrec = enumShowsPrec enumPrefixBuildAccelerationStructureFlagBitsKHR+                            showTableBuildAccelerationStructureFlagBitsKHR+                            conNameBuildAccelerationStructureFlagBitsKHR+                            (\(BuildAccelerationStructureFlagBitsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)++instance Read BuildAccelerationStructureFlagBitsKHR where+  readPrec = enumReadPrec enumPrefixBuildAccelerationStructureFlagBitsKHR+                          showTableBuildAccelerationStructureFlagBitsKHR+                          conNameBuildAccelerationStructureFlagBitsKHR+                          BuildAccelerationStructureFlagBitsKHR+++type AccelerationStructureCreateFlagsKHR = AccelerationStructureCreateFlagBitsKHR++-- | VkAccelerationStructureCreateFlagBitsKHR - Bitmask specifying additional+-- creation parameters for acceleration structure+--+-- = See Also+--+-- 'AccelerationStructureCreateFlagsKHR'+newtype AccelerationStructureCreateFlagBitsKHR = AccelerationStructureCreateFlagBitsKHR Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)++-- | 'ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR'+-- specifies that the acceleration structure’s address /can/ be saved and+-- reused on a subsequent run.+pattern ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR =+  AccelerationStructureCreateFlagBitsKHR 0x00000001++conNameAccelerationStructureCreateFlagBitsKHR :: String+conNameAccelerationStructureCreateFlagBitsKHR = "AccelerationStructureCreateFlagBitsKHR"++enumPrefixAccelerationStructureCreateFlagBitsKHR :: String+enumPrefixAccelerationStructureCreateFlagBitsKHR =+  "ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"++showTableAccelerationStructureCreateFlagBitsKHR :: [(AccelerationStructureCreateFlagBitsKHR, String)]+showTableAccelerationStructureCreateFlagBitsKHR =+  [(ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR, "")]++instance Show AccelerationStructureCreateFlagBitsKHR where+  showsPrec = enumShowsPrec enumPrefixAccelerationStructureCreateFlagBitsKHR+                            showTableAccelerationStructureCreateFlagBitsKHR+                            conNameAccelerationStructureCreateFlagBitsKHR+                            (\(AccelerationStructureCreateFlagBitsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)++instance Read AccelerationStructureCreateFlagBitsKHR where+  readPrec = enumReadPrec enumPrefixAccelerationStructureCreateFlagBitsKHR+                          showTableAccelerationStructureCreateFlagBitsKHR+                          conNameAccelerationStructureCreateFlagBitsKHR+                          AccelerationStructureCreateFlagBitsKHR+++-- | VkCopyAccelerationStructureModeKHR - Acceleration structure copy mode+--+-- = See Also+--+-- 'CopyAccelerationStructureInfoKHR',+-- 'CopyAccelerationStructureToMemoryInfoKHR',+-- 'CopyMemoryToAccelerationStructureInfoKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV'+newtype CopyAccelerationStructureModeKHR = CopyAccelerationStructureModeKHR Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR' creates a direct copy of+-- the acceleration structure specified in @src@ into the one specified by+-- @dst@. The @dst@ acceleration structure /must/ have been created with+-- the same parameters as @src@.+pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR       = CopyAccelerationStructureModeKHR 0+-- | 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' creates a more compact+-- version of an acceleration structure @src@ into @dst@. The acceleration+-- structure @dst@ /must/ have been created with a size at least as large+-- as that returned by 'cmdWriteAccelerationStructuresPropertiesKHR' or+-- 'writeAccelerationStructuresPropertiesKHR' after the build of the+-- acceleration structure specified by @src@.+pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR     = CopyAccelerationStructureModeKHR 1+-- | 'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR' serializes the+-- acceleration structure to a semi-opaque format which can be reloaded on+-- a compatible implementation.+pattern COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR   = CopyAccelerationStructureModeKHR 2+-- | 'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR' deserializes the+-- semi-opaque serialization format in the buffer to the acceleration+-- structure.+pattern COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = CopyAccelerationStructureModeKHR 3+{-# complete COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR,+             COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR,+             COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR,+             COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR :: CopyAccelerationStructureModeKHR #-}++conNameCopyAccelerationStructureModeKHR :: String+conNameCopyAccelerationStructureModeKHR = "CopyAccelerationStructureModeKHR"++enumPrefixCopyAccelerationStructureModeKHR :: String+enumPrefixCopyAccelerationStructureModeKHR = "COPY_ACCELERATION_STRUCTURE_MODE_"++showTableCopyAccelerationStructureModeKHR :: [(CopyAccelerationStructureModeKHR, String)]+showTableCopyAccelerationStructureModeKHR =+  [ (COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR      , "CLONE_KHR")+  , (COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR    , "COMPACT_KHR")+  , (COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR  , "SERIALIZE_KHR")+  , (COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR, "DESERIALIZE_KHR")+  ]++instance Show CopyAccelerationStructureModeKHR where+  showsPrec = enumShowsPrec enumPrefixCopyAccelerationStructureModeKHR+                            showTableCopyAccelerationStructureModeKHR+                            conNameCopyAccelerationStructureModeKHR+                            (\(CopyAccelerationStructureModeKHR x) -> x)+                            (showsPrec 11)++instance Read CopyAccelerationStructureModeKHR where+  readPrec = enumReadPrec enumPrefixCopyAccelerationStructureModeKHR+                          showTableCopyAccelerationStructureModeKHR+                          conNameCopyAccelerationStructureModeKHR+                          CopyAccelerationStructureModeKHR+++-- | VkBuildAccelerationStructureModeKHR - Enum specifying the type of build+-- operation to perform+--+-- = See Also+--+-- 'AccelerationStructureBuildGeometryInfoKHR'+newtype BuildAccelerationStructureModeKHR = BuildAccelerationStructureModeKHR Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR' specifies that the+-- destination acceleration structure will be built using the specified+-- geometries.+pattern BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR  = BuildAccelerationStructureModeKHR 0+-- | 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR' specifies that the+-- destination acceleration structure will be built using data in a source+-- acceleration structure, updated by the specified geometries.+pattern BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = BuildAccelerationStructureModeKHR 1+{-# complete BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR,+             BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR :: BuildAccelerationStructureModeKHR #-}++conNameBuildAccelerationStructureModeKHR :: String+conNameBuildAccelerationStructureModeKHR = "BuildAccelerationStructureModeKHR"++enumPrefixBuildAccelerationStructureModeKHR :: String+enumPrefixBuildAccelerationStructureModeKHR = "BUILD_ACCELERATION_STRUCTURE_MODE_"++showTableBuildAccelerationStructureModeKHR :: [(BuildAccelerationStructureModeKHR, String)]+showTableBuildAccelerationStructureModeKHR =+  [ (BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR , "BUILD_KHR")+  , (BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR, "UPDATE_KHR")+  ]++instance Show BuildAccelerationStructureModeKHR where+  showsPrec = enumShowsPrec enumPrefixBuildAccelerationStructureModeKHR+                            showTableBuildAccelerationStructureModeKHR+                            conNameBuildAccelerationStructureModeKHR+                            (\(BuildAccelerationStructureModeKHR x) -> x)+                            (showsPrec 11)++instance Read BuildAccelerationStructureModeKHR where+  readPrec = enumReadPrec enumPrefixBuildAccelerationStructureModeKHR+                          showTableBuildAccelerationStructureModeKHR+                          conNameBuildAccelerationStructureModeKHR+                          BuildAccelerationStructureModeKHR+++-- | VkAccelerationStructureTypeKHR - Type of acceleration structure+--+-- = See Also+--+-- 'AccelerationStructureBuildGeometryInfoKHR',+-- 'AccelerationStructureCreateInfoKHR'+newtype AccelerationStructureTypeKHR = AccelerationStructureTypeKHR Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' is a top-level acceleration+-- structure containing instance data referring to bottom-level+-- acceleration structures.+pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR    = AccelerationStructureTypeKHR 0+-- | 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' is a bottom-level+-- acceleration structure containing the AABBs or geometry to be+-- intersected.+pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = AccelerationStructureTypeKHR 1+-- | 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' is an acceleration structure+-- whose type is determined at build time used for special circumstances.+pattern ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR      = AccelerationStructureTypeKHR 2+{-# complete ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR,+             ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR,+             ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR :: AccelerationStructureTypeKHR #-}++conNameAccelerationStructureTypeKHR :: String+conNameAccelerationStructureTypeKHR = "AccelerationStructureTypeKHR"++enumPrefixAccelerationStructureTypeKHR :: String+enumPrefixAccelerationStructureTypeKHR = "ACCELERATION_STRUCTURE_TYPE_"++showTableAccelerationStructureTypeKHR :: [(AccelerationStructureTypeKHR, String)]+showTableAccelerationStructureTypeKHR =+  [ (ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR   , "TOP_LEVEL_KHR")+  , (ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR, "BOTTOM_LEVEL_KHR")+  , (ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR     , "GENERIC_KHR")+  ]++instance Show AccelerationStructureTypeKHR where+  showsPrec = enumShowsPrec enumPrefixAccelerationStructureTypeKHR+                            showTableAccelerationStructureTypeKHR+                            conNameAccelerationStructureTypeKHR+                            (\(AccelerationStructureTypeKHR x) -> x)+                            (showsPrec 11)++instance Read AccelerationStructureTypeKHR where+  readPrec = enumReadPrec enumPrefixAccelerationStructureTypeKHR+                          showTableAccelerationStructureTypeKHR+                          conNameAccelerationStructureTypeKHR+                          AccelerationStructureTypeKHR+++-- | VkGeometryTypeKHR - Enum specifying which type of geometry is provided+--+-- = See Also+--+-- 'AccelerationStructureGeometryKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV'+newtype GeometryTypeKHR = GeometryTypeKHR Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'GEOMETRY_TYPE_TRIANGLES_KHR' specifies a geometry type consisting of+-- triangles.+pattern GEOMETRY_TYPE_TRIANGLES_KHR = GeometryTypeKHR 0+-- | 'GEOMETRY_TYPE_AABBS_KHR' specifies a geometry type consisting of+-- axis-aligned bounding boxes.+pattern GEOMETRY_TYPE_AABBS_KHR     = GeometryTypeKHR 1+-- | 'GEOMETRY_TYPE_INSTANCES_KHR' specifies a geometry type consisting of+-- acceleration structure instances.+pattern GEOMETRY_TYPE_INSTANCES_KHR = GeometryTypeKHR 2+{-# complete GEOMETRY_TYPE_TRIANGLES_KHR,+             GEOMETRY_TYPE_AABBS_KHR,+             GEOMETRY_TYPE_INSTANCES_KHR :: GeometryTypeKHR #-}++conNameGeometryTypeKHR :: String+conNameGeometryTypeKHR = "GeometryTypeKHR"++enumPrefixGeometryTypeKHR :: String+enumPrefixGeometryTypeKHR = "GEOMETRY_TYPE_"++showTableGeometryTypeKHR :: [(GeometryTypeKHR, String)]+showTableGeometryTypeKHR =+  [ (GEOMETRY_TYPE_TRIANGLES_KHR, "TRIANGLES_KHR")+  , (GEOMETRY_TYPE_AABBS_KHR    , "AABBS_KHR")+  , (GEOMETRY_TYPE_INSTANCES_KHR, "INSTANCES_KHR")+  ]++instance Show GeometryTypeKHR where+  showsPrec = enumShowsPrec enumPrefixGeometryTypeKHR+                            showTableGeometryTypeKHR+                            conNameGeometryTypeKHR+                            (\(GeometryTypeKHR x) -> x)+                            (showsPrec 11)++instance Read GeometryTypeKHR where+  readPrec = enumReadPrec enumPrefixGeometryTypeKHR showTableGeometryTypeKHR conNameGeometryTypeKHR GeometryTypeKHR+++-- | VkAccelerationStructureBuildTypeKHR - Acceleration structure build type+--+-- = See Also+--+-- 'getAccelerationStructureBuildSizesKHR'+newtype AccelerationStructureBuildTypeKHR = AccelerationStructureBuildTypeKHR Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR' requests the memory+-- requirement for operations performed by the host.+pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR           = AccelerationStructureBuildTypeKHR 0+-- | 'ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR' requests the memory+-- requirement for operations performed by the device.+pattern ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR         = AccelerationStructureBuildTypeKHR 1+-- | 'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR' requests the+-- memory requirement for operations performed by either the host, or the+-- device.+pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = AccelerationStructureBuildTypeKHR 2+{-# complete ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR,+             ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR,+             ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR :: AccelerationStructureBuildTypeKHR #-}++conNameAccelerationStructureBuildTypeKHR :: String+conNameAccelerationStructureBuildTypeKHR = "AccelerationStructureBuildTypeKHR"++enumPrefixAccelerationStructureBuildTypeKHR :: String+enumPrefixAccelerationStructureBuildTypeKHR = "ACCELERATION_STRUCTURE_BUILD_TYPE_"++showTableAccelerationStructureBuildTypeKHR :: [(AccelerationStructureBuildTypeKHR, String)]+showTableAccelerationStructureBuildTypeKHR =+  [ (ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR          , "HOST_KHR")+  , (ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR        , "DEVICE_KHR")+  , (ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR, "HOST_OR_DEVICE_KHR")+  ]++instance Show AccelerationStructureBuildTypeKHR where+  showsPrec = enumShowsPrec enumPrefixAccelerationStructureBuildTypeKHR+                            showTableAccelerationStructureBuildTypeKHR+                            conNameAccelerationStructureBuildTypeKHR+                            (\(AccelerationStructureBuildTypeKHR x) -> x)+                            (showsPrec 11)++instance Read AccelerationStructureBuildTypeKHR where+  readPrec = enumReadPrec enumPrefixAccelerationStructureBuildTypeKHR+                          showTableAccelerationStructureBuildTypeKHR+                          conNameAccelerationStructureBuildTypeKHR+                          AccelerationStructureBuildTypeKHR+++-- | VkAccelerationStructureCompatibilityKHR - Acceleration structure+-- compatibility+--+-- = See Also+--+-- 'getDeviceAccelerationStructureCompatibilityKHR'+newtype AccelerationStructureCompatibilityKHR = AccelerationStructureCompatibilityKHR Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR' when the+-- @pVersion@ version acceleration structure is compatibile with @device@.+pattern ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR   = AccelerationStructureCompatibilityKHR 0+-- | 'ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR' when the+-- @pVersion@ version acceleration structure is not compatibile with+-- @device@.+pattern ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = AccelerationStructureCompatibilityKHR 1+{-# complete ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR,+             ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR :: AccelerationStructureCompatibilityKHR #-}++conNameAccelerationStructureCompatibilityKHR :: String+conNameAccelerationStructureCompatibilityKHR = "AccelerationStructureCompatibilityKHR"++enumPrefixAccelerationStructureCompatibilityKHR :: String+enumPrefixAccelerationStructureCompatibilityKHR = "ACCELERATION_STRUCTURE_COMPATIBILITY_"++showTableAccelerationStructureCompatibilityKHR :: [(AccelerationStructureCompatibilityKHR, String)]+showTableAccelerationStructureCompatibilityKHR =+  [ (ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR  , "COMPATIBLE_KHR")+  , (ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR, "INCOMPATIBLE_KHR")+  ]++instance Show AccelerationStructureCompatibilityKHR where+  showsPrec = enumShowsPrec enumPrefixAccelerationStructureCompatibilityKHR+                            showTableAccelerationStructureCompatibilityKHR+                            conNameAccelerationStructureCompatibilityKHR+                            (\(AccelerationStructureCompatibilityKHR x) -> x)+                            (showsPrec 11)++instance Read AccelerationStructureCompatibilityKHR where+  readPrec = enumReadPrec enumPrefixAccelerationStructureCompatibilityKHR+                          showTableAccelerationStructureCompatibilityKHR+                          conNameAccelerationStructureCompatibilityKHR+                          AccelerationStructureCompatibilityKHR+++type KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 11++-- No documentation found for TopLevel "VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION"+pattern KHR_ACCELERATION_STRUCTURE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 11+++type KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_KHR_acceleration_structure"++-- No documentation found for TopLevel "VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME"+pattern KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_KHR_acceleration_structure"+
+ src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs-boot view
@@ -0,0 +1,1336 @@+{-# language CPP #-}+-- | = Name+--+-- VK_KHR_acceleration_structure - device extension+--+-- == VK_KHR_acceleration_structure+--+-- [__Name String__]+--     @VK_KHR_acceleration_structure@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     151+--+-- [__Revision__]+--     11+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+--     -   Requires @VK_EXT_descriptor_indexing@+--+--     -   Requires @VK_KHR_buffer_device_address@+--+--     -   Requires @VK_KHR_deferred_host_operations@+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_acceleration_structure:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-11-12+--+-- [__Contributors__]+--+--     -   Matthäus Chajdas, AMD+--+--     -   Greg Grebe, AMD+--+--     -   Nicolai Hähnle, AMD+--+--     -   Tobias Hector, AMD+--+--     -   Dave Oldcorn, AMD+--+--     -   Skyler Saleh, AMD+--+--     -   Mathieu Robart, Arm+--+--     -   Marius Bjorge, Arm+--+--     -   Tom Olson, Arm+--+--     -   Sebastian Tafuri, EA+--+--     -   Henrik Rydgard, Embark+--+--     -   Juan Cañada, Epic Games+--+--     -   Patrick Kelly, Epic Games+--+--     -   Yuriy O’Donnell, Epic Games+--+--     -   Michael Doggett, Facebook\/Oculus+--+--     -   Ricardo Garcia, Igalia+--+--     -   Andrew Garrard, Imagination+--+--     -   Don Scorgie, Imagination+--+--     -   Dae Kim, Imagination+--+--     -   Joshua Barczak, Intel+--+--     -   Slawek Grajewski, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Pascal Gautron, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Christoph Kubisch, NVIDIA+--+--     -   Ashwin Lele, NVIDIA+--+--     -   Robert Stepinski, NVIDIA+--+--     -   Martin Stich, NVIDIA+--+--     -   Nuno Subtil, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+--     -   Jon Leech, Khronos+--+--     -   Jeroen van Schijndel, OTOY+--+--     -   Juul Joosten, OTOY+--+--     -   Alex Bourd, Qualcomm+--+--     -   Roman Larionov, Qualcomm+--+--     -   David McAllister, Qualcomm+--+--     -   Lewis Gordon, Samsung+--+--     -   Ralph Potter, Samsung+--+--     -   Jasper Bekkers, Traverse Research+--+--     -   Jesse Barker, Unity+--+--     -   Baldur Karlsson, Valve+--+-- == Description+--+-- In order to be efficient, rendering techniques such as ray tracing need+-- a quick way to identify which primitives may be intersected by a ray+-- traversing the geometries. Acceleration structures are the most common+-- way to represent the geometry spatially sorted, in order to quickly+-- identify such potential intersections.+--+-- This extension adds new functionalities:+--+-- -   Acceleration structure objects and build commands+--+-- -   Structures to describe geometry inputs to acceleration structure+--     builds+--+-- -   Acceleration structure copy commands+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.AccelerationStructureKHR'+--+-- == New Commands+--+-- -   'buildAccelerationStructuresKHR'+--+-- -   'cmdBuildAccelerationStructuresIndirectKHR'+--+-- -   'cmdBuildAccelerationStructuresKHR'+--+-- -   'cmdCopyAccelerationStructureKHR'+--+-- -   'cmdCopyAccelerationStructureToMemoryKHR'+--+-- -   'cmdCopyMemoryToAccelerationStructureKHR'+--+-- -   'cmdWriteAccelerationStructuresPropertiesKHR'+--+-- -   'copyAccelerationStructureKHR'+--+-- -   'copyAccelerationStructureToMemoryKHR'+--+-- -   'copyMemoryToAccelerationStructureKHR'+--+-- -   'createAccelerationStructureKHR'+--+-- -   'destroyAccelerationStructureKHR'+--+-- -   'getAccelerationStructureBuildSizesKHR'+--+-- -   'getAccelerationStructureDeviceAddressKHR'+--+-- -   'getDeviceAccelerationStructureCompatibilityKHR'+--+-- -   'writeAccelerationStructuresPropertiesKHR'+--+-- == New Structures+--+-- -   'AabbPositionsKHR'+--+-- -   'AccelerationStructureBuildGeometryInfoKHR'+--+-- -   'AccelerationStructureBuildRangeInfoKHR'+--+-- -   'AccelerationStructureBuildSizesInfoKHR'+--+-- -   'AccelerationStructureCreateInfoKHR'+--+-- -   'AccelerationStructureDeviceAddressInfoKHR'+--+-- -   'AccelerationStructureGeometryAabbsDataKHR'+--+-- -   'AccelerationStructureGeometryInstancesDataKHR'+--+-- -   'AccelerationStructureGeometryKHR'+--+-- -   'AccelerationStructureGeometryTrianglesDataKHR'+--+-- -   'AccelerationStructureInstanceKHR'+--+-- -   'AccelerationStructureVersionInfoKHR'+--+-- -   'CopyAccelerationStructureInfoKHR'+--+-- -   'CopyAccelerationStructureToMemoryInfoKHR'+--+-- -   'CopyMemoryToAccelerationStructureInfoKHR'+--+-- -   'TransformMatrixKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceAccelerationStructureFeaturesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceAccelerationStructurePropertiesKHR'+--+-- -   Extending 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet':+--+--     -   'WriteDescriptorSetAccelerationStructureKHR'+--+-- == New Unions+--+-- -   'AccelerationStructureGeometryDataKHR'+--+-- -   'DeviceOrHostAddressConstKHR'+--+-- -   'DeviceOrHostAddressKHR'+--+-- == New Enums+--+-- -   'AccelerationStructureBuildTypeKHR'+--+-- -   'AccelerationStructureCompatibilityKHR'+--+-- -   'AccelerationStructureCreateFlagBitsKHR'+--+-- -   'AccelerationStructureTypeKHR'+--+-- -   'BuildAccelerationStructureFlagBitsKHR'+--+-- -   'BuildAccelerationStructureModeKHR'+--+-- -   'CopyAccelerationStructureModeKHR'+--+-- -   'GeometryFlagBitsKHR'+--+-- -   'GeometryInstanceFlagBitsKHR'+--+-- -   'GeometryTypeKHR'+--+-- == New Bitmasks+--+-- -   'AccelerationStructureCreateFlagsKHR'+--+-- -   'BuildAccelerationStructureFlagsKHR'+--+-- -   'GeometryFlagsKHR'+--+-- -   'GeometryInstanceFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME'+--+-- -   'KHR_ACCELERATION_STRUCTURE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT':+--+--     -   'Vulkan.Extensions.VK_EXT_debug_report.DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.DescriptorType.DescriptorType':+--+--     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':+--+--     -   'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.IndexType.IndexType':+--+--     -   'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':+--+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'+--+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR'+--+-- == Issues+--+-- (1) How does this extension differ from VK_NV_ray_tracing?+--+-- __DISCUSSION__:+--+-- The following is a summary of the main functional differences between+-- VK_KHR_acceleration_structure and VK_NV_ray_tracing:+--+-- -   added acceleration structure serialization \/ deserialization+--     ('COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR',+--     'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR',+--     'cmdCopyAccelerationStructureToMemoryKHR',+--     'cmdCopyMemoryToAccelerationStructureKHR')+--+-- -   document+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives and instances>+--+-- -   added 'PhysicalDeviceAccelerationStructureFeaturesKHR' structure+--+-- -   added indirect and batched acceleration structure builds+--     ('cmdBuildAccelerationStructuresIndirectKHR')+--+-- -   added+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>+--     commands+--+-- -   reworked geometry structures so they could be better shared between+--     device, host, and indirect builds+--+-- -   explicitly made 'Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     use device addresses+--+-- -   added acceleration structure compatibility check function+--     ('getDeviceAccelerationStructureCompatibilityKHR')+--+-- -   add parameter for requesting memory requirements for host and\/or+--     device build+--+-- -   added format feature for acceleration structure build vertex formats+--     ('Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR')+--+-- (2) Can you give a more detailed comparision of differences and+-- similarities between VK_NV_ray_tracing and+-- VK_KHR_acceleration_structure?+--+-- __DISCUSSION__:+--+-- The following is a more detailed comparision of which commands,+-- structures, and enums are aliased, changed, or removed.+--+-- -   Aliased functionality — enums, structures, and commands that are+--     considered equivalent:+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTypeNV' ↔+--         'GeometryTypeKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureTypeNV'+--         ↔ 'AccelerationStructureTypeKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.CopyAccelerationStructureModeNV'+--         ↔ 'CopyAccelerationStructureModeKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryFlagsNV' ↔+--         'GeometryFlagsKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryFlagBitsNV' ↔+--         'GeometryFlagBitsKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryInstanceFlagsNV' ↔+--         'GeometryInstanceFlagsKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryInstanceFlagBitsNV'+--         ↔ 'GeometryInstanceFlagBitsKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.BuildAccelerationStructureFlagsNV'+--         ↔ 'BuildAccelerationStructureFlagsKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.BuildAccelerationStructureFlagBitsNV'+--         ↔ 'BuildAccelerationStructureFlagBitsKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.TransformMatrixNV' ↔+--         'TransformMatrixKHR' (added to VK_NV_ray_tracing for descriptive+--         purposes)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AabbPositionsNV' ↔+--         'AabbPositionsKHR' (added to VK_NV_ray_tracing for descriptive+--         purposes)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureInstanceNV'+--         ↔ 'AccelerationStructureInstanceKHR' (added to VK_NV_ray_tracing+--         for descriptive purposes)+--+-- -   Changed enums, structures, and commands:+--+--     -   renamed+--         'Vulkan.Extensions.VK_NV_ray_tracing.GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV'+--         → 'GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR' in+--         'GeometryInstanceFlagBitsKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV' →+--         'AccelerationStructureGeometryTrianglesDataKHR' (device or host+--         address instead of buffer+offset)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV' →+--         'AccelerationStructureGeometryAabbsDataKHR' (device or host+--         address instead of buffer+offset)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryDataNV' →+--         'AccelerationStructureGeometryDataKHR' (union of+--         triangle\/aabbs\/instances)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV' →+--         'AccelerationStructureGeometryKHR' (changed type of geometry)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV'+--         → 'AccelerationStructureCreateInfoKHR' (reshuffle geometry+--         layout\/info)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'+--         → 'PhysicalDeviceAccelerationStructurePropertiesKHR' (for+--         acceleration structure properties, renamed @maxTriangleCount@ to+--         @maxPrimitiveCount@, added per stage and update after bind+--         limits) and+--         'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR'+--         (for ray tracing pipeline properties)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsInfoNV'+--         (deleted - replaced by allocating on top of+--         'Vulkan.Core10.Handles.Buffer')+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'+--         → 'WriteDescriptorSetAccelerationStructureKHR' (different+--         acceleration structure type)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV'+--         → 'createAccelerationStructureKHR' (device address, different+--         geometry layout\/info)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureMemoryRequirementsNV'+--         (deleted - replaced by allocating on top of+--         'Vulkan.Core10.Handles.Buffer')+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV'+--         → 'cmdBuildAccelerationStructuresKHR' (params moved to structs,+--         layout differences)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV'+--         → 'cmdCopyAccelerationStructureKHR' (params to struct,+--         extendable)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'+--         → 'getAccelerationStructureDeviceAddressKHR' (device address+--         instead of handle)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsTypeNV'+--         → size queries for scratch space moved to+--         'getAccelerationStructureBuildSizesKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.destroyAccelerationStructureNV'+--         → 'destroyAccelerationStructureKHR' (different acceleration+--         structure types)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'+--         → 'cmdWriteAccelerationStructuresPropertiesKHR' (different+--         acceleration structure types)+--+-- -   Added enums, structures and commands:+--+--     -   'GEOMETRY_TYPE_INSTANCES_KHR' to 'GeometryTypeKHR' enum+--+--     -   'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR',+--         'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR' to+--         'CopyAccelerationStructureModeKHR' enum+--+--     -   'PhysicalDeviceAccelerationStructureFeaturesKHR' structure+--+--     -   'AccelerationStructureBuildTypeKHR' enum+--+--     -   'BuildAccelerationStructureModeKHR' enum+--+--     -   'DeviceOrHostAddressKHR' and 'DeviceOrHostAddressConstKHR'+--         unions+--+--     -   'AccelerationStructureBuildRangeInfoKHR' struct+--+--     -   'AccelerationStructureGeometryInstancesDataKHR' struct+--+--     -   'AccelerationStructureDeviceAddressInfoKHR' struct+--+--     -   'AccelerationStructureVersionInfoKHR' struct+--+--     -   'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR'+--         struct+--+--     -   'CopyAccelerationStructureToMemoryInfoKHR' struct+--+--     -   'CopyMemoryToAccelerationStructureInfoKHR' struct+--+--     -   'CopyAccelerationStructureInfoKHR' struct+--+--     -   'buildAccelerationStructuresKHR' command (host build)+--+--     -   'copyAccelerationStructureKHR' command (host copy)+--+--     -   'copyAccelerationStructureToMemoryKHR' (host serialize)+--+--     -   'copyMemoryToAccelerationStructureKHR' (host deserialize)+--+--     -   'writeAccelerationStructuresPropertiesKHR' (host properties)+--+--     -   'cmdCopyAccelerationStructureToMemoryKHR' (device serialize)+--+--     -   'cmdCopyMemoryToAccelerationStructureKHR' (device deserialize)+--+--     -   'getDeviceAccelerationStructureCompatibilityKHR' (serialization)+--+-- (3) What are the changes between the public provisional+-- (VK_KHR_ray_tracing v8) release and the internal provisional+-- (VK_KHR_ray_tracing v9) release?+--+-- -   added @geometryFlags@ to+--     @VkAccelerationStructureCreateGeometryTypeInfoKHR@ (later reworked+--     to obsolete this)+--+-- -   added @minAccelerationStructureScratchOffsetAlignment@ property to+--     VkPhysicalDeviceRayTracingPropertiesKHR+--+-- -   fix naming and return enum from+--     'getDeviceAccelerationStructureCompatibilityKHR'+--+--     -   renamed @VkAccelerationStructureVersionKHR@ to+--         'AccelerationStructureVersionInfoKHR'+--+--     -   renamed @VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR@+--         to+--         'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR'+--+--     -   removed @VK_ERROR_INCOMPATIBLE_VERSION_KHR@+--+--     -   added 'AccelerationStructureCompatibilityKHR' enum+--+--     -   remove return value from+--         'getDeviceAccelerationStructureCompatibilityKHR' and added+--         return enum parameter+--+-- -   Require Vulkan 1.1+--+-- -   added creation time capture and replay flags+--+--     -   added 'AccelerationStructureCreateFlagBitsKHR' and+--         'AccelerationStructureCreateFlagsKHR'+--+--     -   renamed the @flags@ member of+--         'AccelerationStructureCreateInfoKHR' to @buildFlags@ (later+--         removed) and added the @createFlags@ member+--+-- -   change 'cmdBuildAccelerationStructuresIndirectKHR' to use buffer+--     device address for indirect parameter+--+-- -   make+--     <VK_KHR_deferred_host_operations.html VK_KHR_deferred_host_operations>+--     an interaction instead of a required extension (later went back on+--     this)+--+-- -   renamed @VkAccelerationStructureBuildOffsetInfoKHR@ to+--     'AccelerationStructureBuildRangeInfoKHR'+--+--     -   renamed the @ppOffsetInfos@ parameter of+--         'cmdBuildAccelerationStructuresKHR' to @ppBuildRangeInfos@+--+-- -   Re-unify geometry description between build and create+--+--     -   remove @VkAccelerationStructureCreateGeometryTypeInfoKHR@ and+--         @VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR@+--+--     -   added @VkAccelerationStructureCreateSizeInfoKHR@ structure+--         (later removed)+--+--     -   change type of the @pGeometryInfos@ member of+--         'AccelerationStructureCreateInfoKHR' from+--         @VkAccelerationStructureCreateGeometryTypeInfoKHR@ to+--         'AccelerationStructureGeometryKHR' (later removed)+--+--     -   added @pCreateSizeInfos@ member to+--         'AccelerationStructureCreateInfoKHR' (later removed)+--+-- -   Fix ppGeometries ambiguity, add pGeometries+--+--     -   remove @geometryArrayOfPointers@ member of+--         VkAccelerationStructureBuildGeometryInfoKHR+--+--     -   disambiguate two meanings of @ppGeometries@ by explicitly adding+--         @pGeometries@ to the 'AccelerationStructureBuildGeometryInfoKHR'+--         structure and require one of them be @NULL@+--+-- -   added+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     support for acceleration structures+--+-- -   changed the @update@ member of+--     'AccelerationStructureBuildGeometryInfoKHR' from a bool to the+--     @mode@ 'BuildAccelerationStructureModeKHR' enum which allows future+--     extensibility in update types+--+-- -   Clarify deferred host ops for pipeline creation+--+--     -   'Vulkan.Extensions.Handles.DeferredOperationKHR' is now a+--         top-level parameter for 'buildAccelerationStructuresKHR',+--         'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR',+--         'copyAccelerationStructureToMemoryKHR',+--         'copyAccelerationStructureKHR', and+--         'copyMemoryToAccelerationStructureKHR'+--+--     -   removed @VkDeferredOperationInfoKHR@ structure+--+--     -   change deferred host creation\/return parameter behavior such+--         that the implementation can modify such parameters until the+--         deferred host operation completes+--+--     -   <VK_KHR_deferred_host_operations.html VK_KHR_deferred_host_operations>+--         is required again+--+-- -   Change acceleration structure build to always be sized+--+--     -   de-alias+--         'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsTypeNV'+--         and @VkAccelerationStructureMemoryRequirementsTypeKHR@ and+--         remove @VkAccelerationStructureMemoryRequirementsTypeKHR@+--+--     -   add 'getAccelerationStructureBuildSizesKHR' command and+--         'AccelerationStructureBuildSizesInfoKHR' structure and+--         'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR'+--         enum to query sizes for acceleration structures and scratch+--         storage+--+--     -   move size queries for scratch space to+--         'getAccelerationStructureBuildSizesKHR'+--+--     -   remove @compactedSize@, @buildFlags@, @maxGeometryCount@,+--         @pGeometryInfos@, @pCreateSizeInfos@ members of+--         'AccelerationStructureCreateInfoKHR' and add the @size@ member+--+--     -   add @maxVertex@ member to+--         'AccelerationStructureGeometryTrianglesDataKHR' structure+--+--     -   remove @VkAccelerationStructureCreateSizeInfoKHR@ structure+--+-- (4) What are the changes between the internal provisional+-- (VK_KHR_ray_tracing v9) release and the final+-- (VK_KHR_acceleration_structure v11) release?+--+-- -   refactor VK_KHR_ray_tracing into 3 extensions, enabling+--     implementation flexibility and decoupling ray query support from ray+--     pipelines:+--+--     -   <VK_KHR_acceleration_structure.html VK_KHR_acceleration_structure>+--         (for acceleration structure operations)+--+--     -   <VK_KHR_ray_tracing_pipeline.html VK_KHR_ray_tracing_pipeline>+--         (for ray tracing pipeline and shader stages)+--+--     -   <VK_KHR_ray_query.html VK_KHR_ray_query> (for ray queries in+--         existing shader stages)+--+-- -   clarify buffer usage flags for ray tracing+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.BUFFER_USAGE_RAY_TRACING_BIT_NV'+--         is left alone in <VK_NV_ray_tracing.html VK_NV_ray_tracing>+--         (required on @scratch@ and @instanceData@)+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'+--         is added as an alias of+--         'Vulkan.Extensions.VK_NV_ray_tracing.BUFFER_USAGE_RAY_TRACING_BIT_NV'+--         in+--         <VK_KHR_ray_tracing_pipeline.html VK_KHR_ray_tracing_pipeline>+--         and is required on shader binding table buffers+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'+--         is added in+--         <VK_KHR_acceleration_structure.html VK_KHR_acceleration_structure>+--         for all vertex, index, transform, aabb, and instance buffer data+--         referenced by device build commands+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'+--         is used for @scratchData@+--+-- -   add max primitive counts (@ppMaxPrimitiveCounts@) to+--     'cmdBuildAccelerationStructuresIndirectKHR'+--+-- -   Allocate acceleration structures from @VkBuffers@ and add a mode to+--     constrain the device address+--+--     -   de-alias+--         'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',+--         'Vulkan.Extensions.VK_NV_ray_tracing.bindAccelerationStructureMemoryNV',+--         and remove @VkBindAccelerationStructureMemoryInfoKHR@,+--         @VkAccelerationStructureMemoryRequirementsInfoKHR@, and+--         @vkGetAccelerationStructureMemoryRequirementsKHR@+--+--     -   acceleration structures now take a+--         'Vulkan.Core10.Handles.Buffer' and offset at creation time for+--         memory placement+--+--     -   add a new+--         'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'+--         buffer usage such buffers+--+--     -   add a new 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' acceleration+--         structure type for layering+--+-- -   move 'GEOMETRY_TYPE_INSTANCES_KHR' to main enum instead of being+--     added via extension+--+-- -   make build commands more consistent - all now build multiple+--     acceleration structures and are named plurally+--     ('cmdBuildAccelerationStructuresIndirectKHR',+--     'cmdBuildAccelerationStructuresKHR',+--     'buildAccelerationStructuresKHR')+--+-- -   add interactions with+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+--     for acceleration structures, including a new feature+--     (@descriptorBindingAccelerationStructureUpdateAfterBind@) and 3 new+--     properties (@maxPerStageDescriptorAccelerationStructures@,+--     @maxPerStageDescriptorUpdateAfterBindAccelerationStructures@,+--     @maxDescriptorSetUpdateAfterBindAccelerationStructures@)+--+-- -   extension is no longer provisional+--+-- -   define synchronization requirements for builds, traces, and copies+--+-- -   define synchronization requirements for AS build inputs and indirect+--     build buffer+--+-- (5) What is 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' for?+--+-- RESOLVED: It is primarily intended for API layering. In DXR, the+-- acceleration structure is basically just a buffer in a special layout,+-- and you don’t know at creation time whether it will be used as a top or+-- bottom level acceleration structure. We thus added a generic+-- acceleration structure type whose type is unknown at creation time, but+-- is specified at build type instead. Applications which are written+-- directly for Vulkan should not use it.+--+-- == Version History+--+-- -   Revision 1, 2019-12-05 (Members of the Vulkan Ray Tracing TSG)+--+--     -   Internal revisions (forked from VK_NV_ray_tracing)+--+-- -   Revision 2, 2019-12-20 (Daniel Koch, Eric Werness)+--+--     -   Add const version of DeviceOrHostAddress (!3515)+--+--     -   Add VU to clarify that only handles in the current pipeline are+--         valid (!3518)+--+--     -   Restore some missing VUs and add in-place update language+--         (#1902, !3522)+--+--     -   rename VkAccelerationStructureInstanceKHR member from+--         accelerationStructure to accelerationStructureReference to+--         better match its type (!3523)+--+--     -   Allow VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS for pipeline+--         creation if shader group handles cannot be re-used. (!3523)+--+--     -   update documentation for the+--         VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS error code and add+--         missing documentation for new return codes from+--         VK_KHR_deferred_host_operations (!3523)+--+--     -   list new query types for VK_KHR_ray_tracing (!3523)+--+--     -   Fix VU statements for VkAccelerationStructureGeometryKHR+--         referring to correct union members and update to use more+--         current wording (!3523)+--+-- -   Revision 3, 2020-01-10 (Daniel Koch, Jon Leech, Christoph Kubisch)+--+--     -   Fix \'instance of\' and \'that\/which contains\/defines\' markup+--         issues (!3528)+--+--     -   factor out VK_KHR_pipeline_library as stand-alone extension+--         (!3540)+--+--     -   Resolve Vulkan-hpp issues (!3543)+--+--     -   add missing require for VkGeometryInstanceFlagsKHR+--+--     -   de-alias VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV+--         since the KHR structure is no longer equivalent+--+--     -   add len to pDataSize attribute for+--         vkWriteAccelerationStructuresPropertiesKHR+--+-- -   Revision 4, 2020-01-23 (Daniel Koch, Eric Werness)+--+--     -   Improve vkWriteAccelerationStructuresPropertiesKHR, add return+--         value and VUs (#1947)+--+--     -   Clarify language to allow multiple raygen shaders (#1959)+--+--     -   Various editorial feedback (!3556)+--+--     -   Add language to help deal with looped self-intersecting fans+--         (#1901)+--+--     -   Change vkCmdTraceRays{Indirect}KHR args to pointers (!3559)+--+--     -   Add scratch address validation language (#1941, !3551)+--+--     -   Fix definition and add hierarchy information for shader call+--         scope (#1977, !3571)+--+-- -   Revision 5, 2020-02-04 (Eric Werness, Jeff Bolz, Daniel Koch)+--+--     -   remove vestigial accelerationStructureUUID (!3582)+--+--     -   update definition of repack instructions and improve memory+--         model interactions (#1910, #1913, !3584)+--+--     -   Fix wrong sType for VkPhysicalDeviceRayTracingFeaturesKHR+--         (#1988)+--+--     -   Use provisional SPIR-V capabilities (#1987)+--+--     -   require rayTraversalPrimitiveCulling if rayQuery is supported+--         (#1927)+--+--     -   Miss shaders do not have object parameters (!3592)+--+--     -   Fix missing required types in XML (!3592)+--+--     -   clarify matching conditions for update (!3592)+--+--     -   add goal that host and device builds be similar (!3592)+--+--     -   clarify that @maxPrimitiveCount@ limit should apply to triangles+--         and AABBs (!3592)+--+--     -   Require alignment for instance arrayOfPointers (!3592)+--+--     -   Zero is a valid value for instance flags (!3592)+--+--     -   Add some alignment VUs that got lost in refactoring (!3592)+--+--     -   Recommend TMin epsilon rather than culling (!3592)+--+--     -   Get angle from dot product not cross product (!3592)+--+--     -   Clarify that AH can access the payload and attributes (!3592)+--+--     -   Match DXR behavior for inactive primitive definition (!3592)+--+--     -   Use a more generic term than degenerate for inactive to avoid+--         confusion (!3592)+--+-- -   Revision 6, 2020-02-20 (Daniel Koch)+--+--     -   fix some dangling NV references (#1996)+--+--     -   rename VkCmdTraceRaysIndirectCommandKHR to+--         VkTraceRaysIndirectCommandKHR (!3607)+--+--     -   update contributor list (!3611)+--+--     -   use uint64_t instead of VkAccelerationStructureReferenceKHR in+--         VkAccelerationStructureInstanceKHR (#2004)+--+-- -   Revision 7, 2020-02-28 (Tobias Hector)+--+--     -   remove HitTKHR SPIR-V builtin (spirv\/spirv-extensions#7)+--+-- -   Revision 8, 2020-03-06 (Tobias Hector, Dae Kim, Daniel Koch, Jeff+--     Bolz, Eric Werness)+--+--     -   explicitly state that Tmax is updated when new closest+--         intersection is accepted (#2020,!3536)+--+--     -   Made references to min and max t values consistent (!3644)+--+--     -   finish enumerating differences relative to VK_NV_ray_tracing in+--         issues (1) and (2) (#1974,!3642)+--+--     -   fix formatting in some math equations (!3642)+--+--     -   Restrict the Hit Kind operand of @OpReportIntersectionKHR@ to+--         7-bits (spirv\/spirv-extensions#8,!3646)+--+--     -   Say ray tracing \'/should/\' be watertight (#2008,!3631)+--+--     -   Clarify memory requirements for ray tracing buffers+--         (#2005,!3649)+--+--     -   Add callable size limits (#1997,!3652)+--+-- -   Revision 9, 2020-04-15 (Eric Werness, Daniel Koch, Tobias Hector,+--     Joshua Barczak)+--+--     -   Add geometry flags to acceleration structure creation (!3672)+--+--     -   add build scratch memory alignment+--         (minAccelerationStructureScratchOffsetAlignment) (#2065,!3725)+--+--     -   fix naming and return enum from+--         vkGetDeviceAccelerationStructureCompatibilityKHR (#2051,!3726)+--+--     -   require SPIR-V 1.4 (#2096,!3777)+--+--     -   added creation time capture\/replay flags (#2104,!3774)+--+--     -   require Vulkan 1.1 (#2133,!3806)+--+--     -   use device addresses instead of VkBuffers for ray tracing+--         commands (#2074,!3815)+--+--     -   add interactions with Vulkan 1.2 and VK_KHR_vulkan_memory_model+--         (#2133,!3830)+--+--     -   make VK_KHR_pipeline_library an interaction instead of required+--         (#2045,#2108,!3830)+--+--     -   make VK_KHR_deferred_host_operations an interaction instead of+--         required (#2045,!3830)+--+--     -   removed maxCallableSize and added explicit stack size management+--         for ray pipelines (#1997,!3817,!3772,!3844)+--+--     -   improved documentation for VkAccelerationStructureVersionInfoKHR+--         (#2135,3835)+--+--     -   rename VkAccelerationStructureBuildOffsetInfoKHR to+--         VkAccelerationStructureBuildRangeInfoKHR (#2058,!3754)+--+--     -   Re-unify geometry description between build and create (!3754)+--+--     -   Fix ppGeometries ambiguity, add pGeometries (#2032,!3811)+--+--     -   add interactions with VK_EXT_robustness2 and allow+--         nullDescriptor support for acceleration structures (#1920,!3848)+--+--     -   added future extensibility for AS updates (#2114,!3849)+--+--     -   Fix VU for dispatchrays and add a limit on the size of the full+--         grid (#2160,!3851)+--+--     -   Add shaderGroupHandleAlignment property (#2180,!3875)+--+--     -   Clarify deferred host ops for pipeline creation (#2067,!3813)+--+--     -   Change acceleration structure build to always be sized+--         (#2131,#2197,#2198,!3854,!3883,!3880)+--+-- -   Revision 10, 2020-07-03 (Mathieu Robart, Daniel Koch, Eric Werness,+--     Tobias Hector)+--+--     -   Decomposition of the specification, from VK_KHR_ray_tracing to+--         VK_KHR_acceleration_structure (#1918,!3912)+--+--     -   clarify buffer usage flags for ray tracing (#2181,!3939)+--+--     -   add max primitive counts to build indirect command (#2233,!3944)+--+--     -   Allocate acceleration structures from VkBuffers and add a mode+--         to constrain the device address (#2131,!3936)+--+--     -   Move VK_GEOMETRY_TYPE_INSTANCES_KHR to main enum (#2243,!3952)+--+--     -   make build commands more consistent (#2247,!3958)+--+--     -   add interactions with UPDATE_AFTER_BIND (#2128,!3986)+--+--     -   correct and expand build command VUs (!4020)+--+--     -   fix copy command VUs (!4018)+--+--     -   added various alignment requirements (#2229,!3943)+--+--     -   fix valid usage for arrays of geometryCount items (#2198,!4010)+--+--     -   define what is allowed to change on RTAS updates and relevant+--         VUs (#2177,!3961)+--+-- -   Revision 11, 2020-11-12 (Eric Werness, Josh Barczak, Daniel Koch,+--     Tobias Hector)+--+--     -   de-alias NV and KHR acceleration structure types and associated+--         commands (#2271,!4035)+--+--     -   specify alignment for host copy commands (#2273,!4037)+--+--     -   document+--         'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'+--+--     -   specify that acceleration structures are non-linear+--         (#2289,!4068)+--+--     -   add several missing VUs for strides, vertexFormat, and indexType+--         (#2315,!4069)+--+--     -   restore VUs for VkAccelerationStructureBuildGeometryInfoKHR+--         (#2337,!4098)+--+--     -   ban multi-instance memory for host operations (#2324,!4102)+--+--     -   allow dstAccelerationStructure to be null for+--         vkGetAccelerationStructureBuildSizesKHR (#2330,!4111)+--+--     -   more build VU cleanup (#2138,#4130)+--+--     -   specify host endianness for AS serialization (#2261,!4136)+--+--     -   add invertible transform matrix VU (#1710,!4140)+--+--     -   require geometryCount to be 1 for TLAS builds (!4145)+--+--     -   improved validity conditions for build addresses (#4142)+--+--     -   add single statement SPIR-V VUs, build limit VUs (!4158)+--+--     -   document limits for vertex and aabb strides (#2390,!4184)+--+--     -   specify that+--         'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+--         applies to AS copies (#2382,#4173)+--+--     -   define sync for AS build inputs and indirect buffer+--         (#2407,!4208)+--+-- = See Also+--+-- 'AabbPositionsKHR', 'AccelerationStructureBuildGeometryInfoKHR',+-- 'AccelerationStructureBuildRangeInfoKHR',+-- 'AccelerationStructureBuildSizesInfoKHR',+-- 'AccelerationStructureBuildTypeKHR',+-- 'AccelerationStructureCompatibilityKHR',+-- 'AccelerationStructureCreateFlagBitsKHR',+-- 'AccelerationStructureCreateFlagsKHR',+-- 'AccelerationStructureCreateInfoKHR',+-- 'AccelerationStructureDeviceAddressInfoKHR',+-- 'AccelerationStructureGeometryAabbsDataKHR',+-- 'AccelerationStructureGeometryDataKHR',+-- 'AccelerationStructureGeometryInstancesDataKHR',+-- 'AccelerationStructureGeometryKHR',+-- 'AccelerationStructureGeometryTrianglesDataKHR',+-- 'AccelerationStructureInstanceKHR',+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'AccelerationStructureTypeKHR', 'AccelerationStructureVersionInfoKHR',+-- 'BuildAccelerationStructureFlagBitsKHR',+-- 'BuildAccelerationStructureFlagsKHR',+-- 'BuildAccelerationStructureModeKHR', 'CopyAccelerationStructureInfoKHR',+-- 'CopyAccelerationStructureModeKHR',+-- 'CopyAccelerationStructureToMemoryInfoKHR',+-- 'CopyMemoryToAccelerationStructureInfoKHR',+-- 'DeviceOrHostAddressConstKHR', 'DeviceOrHostAddressKHR',+-- 'GeometryFlagBitsKHR', 'GeometryFlagsKHR',+-- 'GeometryInstanceFlagBitsKHR', 'GeometryInstanceFlagsKHR',+-- 'GeometryTypeKHR', 'PhysicalDeviceAccelerationStructureFeaturesKHR',+-- 'PhysicalDeviceAccelerationStructurePropertiesKHR',+-- 'TransformMatrixKHR', 'WriteDescriptorSetAccelerationStructureKHR',+-- 'buildAccelerationStructuresKHR',+-- 'cmdBuildAccelerationStructuresIndirectKHR',+-- 'cmdBuildAccelerationStructuresKHR', 'cmdCopyAccelerationStructureKHR',+-- 'cmdCopyAccelerationStructureToMemoryKHR',+-- 'cmdCopyMemoryToAccelerationStructureKHR',+-- 'cmdWriteAccelerationStructuresPropertiesKHR',+-- 'copyAccelerationStructureKHR', 'copyAccelerationStructureToMemoryKHR',+-- 'copyMemoryToAccelerationStructureKHR',+-- 'createAccelerationStructureKHR', 'destroyAccelerationStructureKHR',+-- 'getAccelerationStructureBuildSizesKHR',+-- 'getAccelerationStructureDeviceAddressKHR',+-- 'getDeviceAccelerationStructureCompatibilityKHR',+-- 'writeAccelerationStructuresPropertiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_KHR_acceleration_structure  ( AabbPositionsKHR+                                                        , AccelerationStructureBuildGeometryInfoKHR+                                                        , AccelerationStructureBuildRangeInfoKHR+                                                        , AccelerationStructureBuildSizesInfoKHR+                                                        , AccelerationStructureCreateInfoKHR+                                                        , AccelerationStructureDeviceAddressInfoKHR+                                                        , AccelerationStructureGeometryAabbsDataKHR+                                                        , AccelerationStructureGeometryInstancesDataKHR+                                                        , AccelerationStructureGeometryKHR+                                                        , AccelerationStructureGeometryTrianglesDataKHR+                                                        , AccelerationStructureInstanceKHR+                                                        , AccelerationStructureVersionInfoKHR+                                                        , CopyAccelerationStructureInfoKHR+                                                        , CopyAccelerationStructureToMemoryInfoKHR+                                                        , CopyMemoryToAccelerationStructureInfoKHR+                                                        , PhysicalDeviceAccelerationStructureFeaturesKHR+                                                        , PhysicalDeviceAccelerationStructurePropertiesKHR+                                                        , TransformMatrixKHR+                                                        , WriteDescriptorSetAccelerationStructureKHR+                                                        , AccelerationStructureBuildTypeKHR+                                                        , AccelerationStructureCompatibilityKHR+                                                        , CopyAccelerationStructureModeKHR+                                                        , GeometryFlagsKHR+                                                        , GeometryFlagBitsKHR+                                                        , GeometryInstanceFlagsKHR+                                                        , GeometryInstanceFlagBitsKHR+                                                        , BuildAccelerationStructureFlagsKHR+                                                        , BuildAccelerationStructureFlagBitsKHR+                                                        , AccelerationStructureTypeKHR+                                                        , GeometryTypeKHR+                                                        ) where++import Data.Kind (Type)+import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (ToCStruct)+data AabbPositionsKHR++instance ToCStruct AabbPositionsKHR+instance Show AabbPositionsKHR++instance FromCStruct AabbPositionsKHR+++data AccelerationStructureBuildGeometryInfoKHR++instance ToCStruct AccelerationStructureBuildGeometryInfoKHR+instance Show AccelerationStructureBuildGeometryInfoKHR+++data AccelerationStructureBuildRangeInfoKHR++instance ToCStruct AccelerationStructureBuildRangeInfoKHR+instance Show AccelerationStructureBuildRangeInfoKHR++instance FromCStruct AccelerationStructureBuildRangeInfoKHR+++data AccelerationStructureBuildSizesInfoKHR++instance ToCStruct AccelerationStructureBuildSizesInfoKHR+instance Show AccelerationStructureBuildSizesInfoKHR++instance FromCStruct AccelerationStructureBuildSizesInfoKHR+++data AccelerationStructureCreateInfoKHR++instance ToCStruct AccelerationStructureCreateInfoKHR+instance Show AccelerationStructureCreateInfoKHR++instance FromCStruct AccelerationStructureCreateInfoKHR+++data AccelerationStructureDeviceAddressInfoKHR++instance ToCStruct AccelerationStructureDeviceAddressInfoKHR+instance Show AccelerationStructureDeviceAddressInfoKHR++instance FromCStruct AccelerationStructureDeviceAddressInfoKHR+++data AccelerationStructureGeometryAabbsDataKHR++instance ToCStruct AccelerationStructureGeometryAabbsDataKHR+instance Show AccelerationStructureGeometryAabbsDataKHR+++data AccelerationStructureGeometryInstancesDataKHR++instance ToCStruct AccelerationStructureGeometryInstancesDataKHR+instance Show AccelerationStructureGeometryInstancesDataKHR+++data AccelerationStructureGeometryKHR++instance ToCStruct AccelerationStructureGeometryKHR+instance Show AccelerationStructureGeometryKHR+++data AccelerationStructureGeometryTrianglesDataKHR++instance ToCStruct AccelerationStructureGeometryTrianglesDataKHR+instance Show AccelerationStructureGeometryTrianglesDataKHR+++data AccelerationStructureInstanceKHR++instance ToCStruct AccelerationStructureInstanceKHR+instance Show AccelerationStructureInstanceKHR++instance FromCStruct AccelerationStructureInstanceKHR+++data AccelerationStructureVersionInfoKHR++instance ToCStruct AccelerationStructureVersionInfoKHR+instance Show AccelerationStructureVersionInfoKHR++instance FromCStruct AccelerationStructureVersionInfoKHR+++data CopyAccelerationStructureInfoKHR++instance ToCStruct CopyAccelerationStructureInfoKHR+instance Show CopyAccelerationStructureInfoKHR++instance FromCStruct CopyAccelerationStructureInfoKHR+++data CopyAccelerationStructureToMemoryInfoKHR++instance ToCStruct CopyAccelerationStructureToMemoryInfoKHR+instance Show CopyAccelerationStructureToMemoryInfoKHR+++data CopyMemoryToAccelerationStructureInfoKHR++instance ToCStruct CopyMemoryToAccelerationStructureInfoKHR+instance Show CopyMemoryToAccelerationStructureInfoKHR+++data PhysicalDeviceAccelerationStructureFeaturesKHR++instance ToCStruct PhysicalDeviceAccelerationStructureFeaturesKHR+instance Show PhysicalDeviceAccelerationStructureFeaturesKHR++instance FromCStruct PhysicalDeviceAccelerationStructureFeaturesKHR+++data PhysicalDeviceAccelerationStructurePropertiesKHR++instance ToCStruct PhysicalDeviceAccelerationStructurePropertiesKHR+instance Show PhysicalDeviceAccelerationStructurePropertiesKHR++instance FromCStruct PhysicalDeviceAccelerationStructurePropertiesKHR+++data TransformMatrixKHR++instance ToCStruct TransformMatrixKHR+instance Show TransformMatrixKHR++instance FromCStruct TransformMatrixKHR+++data WriteDescriptorSetAccelerationStructureKHR++instance ToCStruct WriteDescriptorSetAccelerationStructureKHR+instance Show WriteDescriptorSetAccelerationStructureKHR++instance FromCStruct WriteDescriptorSetAccelerationStructureKHR+++data AccelerationStructureBuildTypeKHR+++data AccelerationStructureCompatibilityKHR+++data CopyAccelerationStructureModeKHR+++type GeometryFlagsKHR = GeometryFlagBitsKHR++data GeometryFlagBitsKHR+++type GeometryInstanceFlagsKHR = GeometryInstanceFlagBitsKHR++data GeometryInstanceFlagBitsKHR+++type BuildAccelerationStructureFlagsKHR = BuildAccelerationStructureFlagBitsKHR++data BuildAccelerationStructureFlagBitsKHR+++data AccelerationStructureTypeKHR+++data GeometryTypeKHR+
src/Vulkan/Extensions/VK_KHR_android_surface.hs view
@@ -1,4 +1,164 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_android_surface - instance extension+--+-- == VK_KHR_android_surface+--+-- [__Name String__]+--     @VK_KHR_android_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     9+--+-- [__Revision__]+--     6+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_android_surface:%20&body=@critsec%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-01-14+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Patrick Doane, Blizzard+--+--     -   Jason Ekstrand, Intel+--+--     -   Ian Elliott, LunarG+--+--     -   Courtney Goeltzenleuchter, LunarG+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Antoine Labour, Google+--+--     -   Jon Leech, Khronos+--+--     -   David Mao, AMD+--+--     -   Norbert Nopper, Freescale+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Ray Smith, ARM+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Chia-I Wu, LunarG+--+-- == Description+--+-- The @VK_KHR_android_surface@ extension is an instance extension. It+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'+-- object (defined by the @VK_KHR_surface@ extension) that refers to an+-- 'ANativeWindow', Android’s native surface type. The 'ANativeWindow'+-- represents the producer endpoint of any buffer queue, regardless of+-- consumer endpoint. Common consumer endpoints for @ANativeWindows@ are+-- the system window compositor, video encoders, and application-specific+-- compositors importing the images through a @SurfaceTexture@.+--+-- == New Base Types+--+-- -   'ANativeWindow'+--+-- == New Commands+--+-- -   'createAndroidSurfaceKHR'+--+-- == New Structures+--+-- -   'AndroidSurfaceCreateInfoKHR'+--+-- == New Bitmasks+--+-- -   'AndroidSurfaceCreateFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_ANDROID_SURFACE_EXTENSION_NAME'+--+-- -   'KHR_ANDROID_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) Does Android need a way to query for compatibility between a+-- particular physical device (and queue family?) and a specific Android+-- display?+--+-- __RESOLVED__: No. Currently on Android, any physical device is expected+-- to be able to present to the system compositor, and all queue families+-- must support the necessary image layout transitions and synchronization+-- operations.+--+-- == Version History+--+-- -   Revision 1, 2015-09-23 (Jesse Hall)+--+--     -   Initial draft.+--+-- -   Revision 2, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_android_surface to+--         VK_KHR_android_surface.+--+-- -   Revision 3, 2015-11-03 (Daniel Rakos)+--+--     -   Added allocation callbacks to surface creation function.+--+-- -   Revision 4, 2015-11-10 (Jesse Hall)+--+--     -   Removed VK_ERROR_INVALID_ANDROID_WINDOW_KHR.+--+-- -   Revision 5, 2015-11-28 (Daniel Rakos)+--+--     -   Updated the surface create function to take a pCreateInfo+--         structure.+--+-- -   Revision 6, 2016-01-14 (James Jones)+--+--     -   Moved VK_ERROR_NATIVE_WINDOW_IN_USE_KHR from the+--         VK_KHR_android_surface to the VK_KHR_surface extension.+--+-- = See Also+--+-- 'ANativeWindow', 'AndroidSurfaceCreateFlagsKHR',+-- 'AndroidSurfaceCreateInfoKHR', 'createAndroidSurfaceKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_android_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_android_surface  ( createAndroidSurfaceKHR                                                  , AndroidSurfaceCreateInfoKHR(..)                                                  , AndroidSurfaceCreateFlagsKHR(..)@@ -10,6 +170,8 @@                                                  , SurfaceKHR(..)                                                  ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -21,15 +183,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -47,7 +202,7 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.NamedType ((:::))@@ -252,17 +407,27 @@   +conNameAndroidSurfaceCreateFlagsKHR :: String+conNameAndroidSurfaceCreateFlagsKHR = "AndroidSurfaceCreateFlagsKHR"++enumPrefixAndroidSurfaceCreateFlagsKHR :: String+enumPrefixAndroidSurfaceCreateFlagsKHR = ""++showTableAndroidSurfaceCreateFlagsKHR :: [(AndroidSurfaceCreateFlagsKHR, String)]+showTableAndroidSurfaceCreateFlagsKHR = []+ instance Show AndroidSurfaceCreateFlagsKHR where-  showsPrec p = \case-    AndroidSurfaceCreateFlagsKHR x -> showParen (p >= 11) (showString "AndroidSurfaceCreateFlagsKHR 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixAndroidSurfaceCreateFlagsKHR+                            showTableAndroidSurfaceCreateFlagsKHR+                            conNameAndroidSurfaceCreateFlagsKHR+                            (\(AndroidSurfaceCreateFlagsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read AndroidSurfaceCreateFlagsKHR where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "AndroidSurfaceCreateFlagsKHR")-                       v <- step readPrec-                       pure (AndroidSurfaceCreateFlagsKHR v)))+  readPrec = enumReadPrec enumPrefixAndroidSurfaceCreateFlagsKHR+                          showTableAndroidSurfaceCreateFlagsKHR+                          conNameAndroidSurfaceCreateFlagsKHR+                          AndroidSurfaceCreateFlagsKHR   type KHR_ANDROID_SURFACE_SPEC_VERSION = 6
src/Vulkan/Extensions/VK_KHR_android_surface.hs-boot view
@@ -1,4 +1,164 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_android_surface - instance extension+--+-- == VK_KHR_android_surface+--+-- [__Name String__]+--     @VK_KHR_android_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     9+--+-- [__Revision__]+--     6+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_android_surface:%20&body=@critsec%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-01-14+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Patrick Doane, Blizzard+--+--     -   Jason Ekstrand, Intel+--+--     -   Ian Elliott, LunarG+--+--     -   Courtney Goeltzenleuchter, LunarG+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Antoine Labour, Google+--+--     -   Jon Leech, Khronos+--+--     -   David Mao, AMD+--+--     -   Norbert Nopper, Freescale+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Ray Smith, ARM+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Chia-I Wu, LunarG+--+-- == Description+--+-- The @VK_KHR_android_surface@ extension is an instance extension. It+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'+-- object (defined by the @VK_KHR_surface@ extension) that refers to an+-- 'ANativeWindow', Android’s native surface type. The 'ANativeWindow'+-- represents the producer endpoint of any buffer queue, regardless of+-- consumer endpoint. Common consumer endpoints for @ANativeWindows@ are+-- the system window compositor, video encoders, and application-specific+-- compositors importing the images through a @SurfaceTexture@.+--+-- == New Base Types+--+-- -   'ANativeWindow'+--+-- == New Commands+--+-- -   'createAndroidSurfaceKHR'+--+-- == New Structures+--+-- -   'AndroidSurfaceCreateInfoKHR'+--+-- == New Bitmasks+--+-- -   'AndroidSurfaceCreateFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_ANDROID_SURFACE_EXTENSION_NAME'+--+-- -   'KHR_ANDROID_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) Does Android need a way to query for compatibility between a+-- particular physical device (and queue family?) and a specific Android+-- display?+--+-- __RESOLVED__: No. Currently on Android, any physical device is expected+-- to be able to present to the system compositor, and all queue families+-- must support the necessary image layout transitions and synchronization+-- operations.+--+-- == Version History+--+-- -   Revision 1, 2015-09-23 (Jesse Hall)+--+--     -   Initial draft.+--+-- -   Revision 2, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_android_surface to+--         VK_KHR_android_surface.+--+-- -   Revision 3, 2015-11-03 (Daniel Rakos)+--+--     -   Added allocation callbacks to surface creation function.+--+-- -   Revision 4, 2015-11-10 (Jesse Hall)+--+--     -   Removed VK_ERROR_INVALID_ANDROID_WINDOW_KHR.+--+-- -   Revision 5, 2015-11-28 (Daniel Rakos)+--+--     -   Updated the surface create function to take a pCreateInfo+--         structure.+--+-- -   Revision 6, 2016-01-14 (James Jones)+--+--     -   Moved VK_ERROR_NATIVE_WINDOW_IN_USE_KHR from the+--         VK_KHR_android_surface to the VK_KHR_surface extension.+--+-- = See Also+--+-- 'ANativeWindow', 'AndroidSurfaceCreateFlagsKHR',+-- 'AndroidSurfaceCreateInfoKHR', 'createAndroidSurfaceKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_android_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_android_surface  (AndroidSurfaceCreateInfoKHR) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_KHR_bind_memory2.hs view
@@ -1,4 +1,118 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_bind_memory2 - device extension+--+-- == VK_KHR_bind_memory2+--+-- [__Name String__]+--     @VK_KHR_bind_memory2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     158+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_bind_memory2:%20&body=@tobski%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-05+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Tobias Hector, Imagination Technologies+--+-- == Description+--+-- This extension provides versions of+-- 'Vulkan.Core10.MemoryManagement.bindBufferMemory' and+-- 'Vulkan.Core10.MemoryManagement.bindImageMemory' that allow multiple+-- bindings to be performed at once, and are extensible.+--+-- This extension also introduces 'IMAGE_CREATE_ALIAS_BIT_KHR', which+-- allows “identical” images that alias the same memory to interpret the+-- contents consistently, even across image layout changes.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Commands+--+-- -   'bindBufferMemory2KHR'+--+-- -   'bindImageMemory2KHR'+--+-- == New Structures+--+-- -   'BindBufferMemoryInfoKHR'+--+-- -   'BindImageMemoryInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_BIND_MEMORY_2_EXTENSION_NAME'+--+-- -   'KHR_BIND_MEMORY_2_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':+--+--     -   'IMAGE_CREATE_ALIAS_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR'+--+-- == Version History+--+-- -   Revision 1, 2017-05-19 (Tobias Hector)+--+--     -   Pulled bind memory functions into their own extension+--+-- = See Also+--+-- 'BindBufferMemoryInfoKHR', 'BindImageMemoryInfoKHR',+-- 'bindBufferMemory2KHR', 'bindImageMemory2KHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_bind_memory2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_bind_memory2  ( pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR                                               , pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR                                               , pattern IMAGE_CREATE_ALIAS_BIT_KHR
src/Vulkan/Extensions/VK_KHR_buffer_device_address.hs view
@@ -1,4 +1,224 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_buffer_device_address - device extension+--+-- == VK_KHR_buffer_device_address+--+-- [__Name String__]+--     @VK_KHR_buffer_device_address@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     258+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_buffer_device_address:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-06-24+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_physical_storage_buffer.html SPV_KHR_physical_storage_buffer>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_buffer_reference.txt GL_EXT_buffer_reference>+--         and+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_buffer_reference2.txt GL_EXT_buffer_reference2>+--         and+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_buffer_reference_uvec2.txt GL_EXT_buffer_reference_uvec2>+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Neil Henning, AMD+--+--     -   Tobias Hector, AMD+--+--     -   Jason Ekstrand, Intel+--+--     -   Baldur Karlsson, Valve+--+--     -   Jan-Harald Fredriksen, Arm+--+-- == Description+--+-- This extension allows the application to query a 64-bit buffer device+-- address value for a buffer, which can be used to access the buffer+-- memory via the @PhysicalStorageBuffer@ storage class in the+-- <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_buffer_reference.txt GL_EXT_buffer_reference>+-- GLSL extension and+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_physical_storage_buffer.html SPV_KHR_physical_storage_buffer>+-- SPIR-V extension.+--+-- Another way to describe this extension is that it adds \"pointers to+-- buffer memory in shaders\". By calling+-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'+-- with a 'Vulkan.Core10.Handles.Buffer', it will return a+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' value which represents+-- the address of the start of the buffer.+--+-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferOpaqueCaptureAddress'+-- and+-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getDeviceMemoryOpaqueCaptureAddress'+-- allow opaque addresses for buffers and memory objects to be queried for+-- the current process. A trace capture and replay tool can then supply+-- these addresses to be used at replay time to match the addresses used+-- when the trace was captured. To enable tools to insert these queries,+-- new memory allocation flags must be specified for memory objects that+-- will be bound to buffers accessed via the @PhysicalStorageBuffer@+-- storage class. Note that this mechanism is intended only to support+-- capture\/replay tools, and is not recommended for use in other+-- applications.+--+-- There are various use cases this extension is designed for. It is+-- required for ray tracing, useful for DX12 portability, and by allowing+-- buffer addresses to be stored in memory it enables more complex data+-- structures to be created.+--+-- This extension can also be used to hardcode a dedicated debug channel+-- into all shaders by querying a pointer at startup and pushing that into+-- shaders as a run-time constant (e.g. specialization constant) that+-- avoids impacting other descriptor limits.+--+-- There are examples of usage in the+-- <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_buffer_reference.txt GL_EXT_buffer_reference>+-- spec for how to use this in a high-level shading language such as GLSL.+-- The+-- <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_buffer_reference2.txt GL_EXT_buffer_reference2>+-- and+-- <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_buffer_reference_uvec2.txt GL_EXT_buffer_reference_uvec2>+-- extensions were also added to help cover a few additional edge cases.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. However, if Vulkan 1.2 is supported and this+-- extension is not, the @bufferDeviceAddress@ capability is optional. The+-- original type, enum and command names are still available as aliases of+-- the core functionality.+--+-- == New Commands+--+-- -   'getBufferDeviceAddressKHR'+--+-- -   'getBufferOpaqueCaptureAddressKHR'+--+-- -   'getDeviceMemoryOpaqueCaptureAddressKHR'+--+-- == New Structures+--+-- -   'BufferDeviceAddressInfoKHR'+--+-- -   'DeviceMemoryOpaqueCaptureAddressInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Buffer.BufferCreateInfo':+--+--     -   'BufferOpaqueCaptureAddressCreateInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'MemoryOpaqueCaptureAddressAllocateInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceBufferDeviceAddressFeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME'+--+-- -   'KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BufferCreateFlagBits':+--+--     -   'BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':+--+--     -   'BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MemoryAllocateFlagBits':+--+--     -   'MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR'+--+--     -   'MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-physicalstoragebufferaddresses PhysicalStorageBufferAddresses>+--+-- == Version History+--+-- -   Revision 1, 2019-06-24 (Jan-Harald Fredriksen)+--+--     -   Internal revisions based on VK_EXT_buffer_device_address+--+-- = See Also+--+-- 'BufferDeviceAddressInfoKHR', 'BufferOpaqueCaptureAddressCreateInfoKHR',+-- 'DeviceMemoryOpaqueCaptureAddressInfoKHR',+-- 'MemoryOpaqueCaptureAddressAllocateInfoKHR',+-- 'PhysicalDeviceBufferDeviceAddressFeaturesKHR',+-- 'getBufferDeviceAddressKHR', 'getBufferOpaqueCaptureAddressKHR',+-- 'getDeviceMemoryOpaqueCaptureAddressKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_buffer_device_address  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR                                                        , pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR                                                        , pattern STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR
src/Vulkan/Extensions/VK_KHR_copy_commands2.hs view
@@ -1,4 +1,156 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_copy_commands2 - device extension+--+-- == VK_KHR_copy_commands2+--+-- [__Name String__]+--     @VK_KHR_copy_commands2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     338+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Jeff Leger+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_copy_commands2:%20&body=@jackohound%20 >+--+-- == Other Extension Metadata+--+-- [Last Modified Date]+--     2020-07-06+--+-- [__Interactions and External Dependencies__]+--+--     -   None+--+-- [Contributors]+--+--     -   Jeff Leger, Qualcomm+--+--     -   Tobias Hector, AMD+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Tom Olson, ARM+--+-- == Description+--+-- This extension provides extensible versions of the Vulkan buffer and+-- image copy commands. The new commands are functionally identical to the+-- core commands, except that their copy parameters are specified using+-- extensible structures that can be used to pass extension-specific+-- information.+--+-- The following extensible copy commands are introduced with this+-- extension: 'cmdCopyBuffer2KHR', 'cmdCopyImage2KHR',+-- 'cmdCopyBufferToImage2KHR', 'cmdCopyImageToBuffer2KHR',+-- 'cmdBlitImage2KHR', and 'cmdResolveImage2KHR'. Each command+-- contain@*Info2KHR@ structure parameter that includes @sType@\/@pNext@+-- members. Lower level structures that describe each region to be copied+-- are also extended with @sType@\/@pNext@ members.+--+-- == New Commands+--+-- -   'cmdBlitImage2KHR'+--+-- -   'cmdCopyBuffer2KHR'+--+-- -   'cmdCopyBufferToImage2KHR'+--+-- -   'cmdCopyImage2KHR'+--+-- -   'cmdCopyImageToBuffer2KHR'+--+-- -   'cmdResolveImage2KHR'+--+-- == New Structures+--+-- -   'BlitImageInfo2KHR'+--+-- -   'BufferCopy2KHR'+--+-- -   'BufferImageCopy2KHR'+--+-- -   'CopyBufferInfo2KHR'+--+-- -   'CopyBufferToImageInfo2KHR'+--+-- -   'CopyImageInfo2KHR'+--+-- -   'CopyImageToBufferInfo2KHR'+--+-- -   'ImageBlit2KHR'+--+-- -   'ImageCopy2KHR'+--+-- -   'ImageResolve2KHR'+--+-- -   'ResolveImageInfo2KHR'+--+-- == New Enum Constants+--+-- -   'KHR_COPY_COMMANDS_2_EXTENSION_NAME'+--+-- -   'KHR_COPY_COMMANDS_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_COPY_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_BLIT_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_COPY_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR'+--+-- == Version History+--+-- -   Revision 1, 2020-07-06 (Jeff Leger)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'BlitImageInfo2KHR', 'BufferCopy2KHR', 'BufferImageCopy2KHR',+-- 'CopyBufferInfo2KHR', 'CopyBufferToImageInfo2KHR', 'CopyImageInfo2KHR',+-- 'CopyImageToBufferInfo2KHR', 'ImageBlit2KHR', 'ImageCopy2KHR',+-- 'ImageResolve2KHR', 'ResolveImageInfo2KHR', 'cmdBlitImage2KHR',+-- 'cmdCopyBuffer2KHR', 'cmdCopyBufferToImage2KHR', 'cmdCopyImage2KHR',+-- 'cmdCopyImageToBuffer2KHR', 'cmdResolveImage2KHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_copy_commands2  ( cmdCopyBuffer2KHR                                                 , cmdCopyImage2KHR                                                 , cmdBlitImage2KHR@@ -783,26 +935,26 @@  instance ToCStruct ImageCopy2KHR where   withCStruct x f = allocaBytesAligned 88 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ImageCopy2KHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_COPY_2_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (srcSubresource) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Offset3D)) (srcOffset) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (dstSubresource) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 60 :: Ptr Offset3D)) (dstOffset) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr Extent3D)) (extent) . ($ ())-    lift $ f+  pokeCStruct p ImageCopy2KHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_COPY_2_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (srcSubresource)+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (srcOffset)+    poke ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (dstSubresource)+    poke ((p `plusPtr` 60 :: Ptr Offset3D)) (dstOffset)+    poke ((p `plusPtr` 72 :: Ptr Extent3D)) (extent)+    f   cStructSize = 88   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_COPY_2_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Offset3D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 60 :: Ptr Offset3D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr Extent3D)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_COPY_2_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (zero)+    poke ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (zero)+    poke ((p `plusPtr` 60 :: Ptr Offset3D)) (zero)+    poke ((p `plusPtr` 72 :: Ptr Extent3D)) (zero)+    f  instance FromCStruct ImageCopy2KHR where   peekCStruct p = do@@ -814,6 +966,12 @@     pure $ ImageCopy2KHR              srcSubresource srcOffset dstSubresource dstOffset extent +instance Storable ImageCopy2KHR where+  sizeOf ~_ = 88+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero ImageCopy2KHR where   zero = ImageCopy2KHR            zero@@ -903,18 +1061,18 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_BLIT_2_KHR)     pNext'' <- fmap castPtr . ContT $ withChain (next)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (srcSubresource) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (srcSubresource)     let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 32 :: Ptr (FixedArray 2 Offset3D)))-    case (srcOffsets) of+    lift $ case (srcOffsets) of       (e0, e1) -> do-        ContT $ pokeCStruct (pSrcOffsets' :: Ptr Offset3D) (e0) . ($ ())-        ContT $ pokeCStruct (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr ImageSubresourceLayers)) (dstSubresource) . ($ ())+        poke (pSrcOffsets' :: Ptr Offset3D) (e0)+        poke (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)+    lift $ poke ((p `plusPtr` 56 :: Ptr ImageSubresourceLayers)) (dstSubresource)     let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 72 :: Ptr (FixedArray 2 Offset3D)))-    case (dstOffsets) of+    lift $ case (dstOffsets) of       (e0, e1) -> do-        ContT $ pokeCStruct (pDstOffsets' :: Ptr Offset3D) (e0) . ($ ())-        ContT $ pokeCStruct (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1) . ($ ())+        poke (pDstOffsets' :: Ptr Offset3D) (e0)+        poke (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)     lift $ f   cStructSize = 96   cStructAlignment = 8@@ -922,18 +1080,18 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_BLIT_2_KHR)     pNext' <- fmap castPtr . ContT $ withZeroChain @es     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero)     let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 32 :: Ptr (FixedArray 2 Offset3D)))-    case ((zero, zero)) of+    lift $ case ((zero, zero)) of       (e0, e1) -> do-        ContT $ pokeCStruct (pSrcOffsets' :: Ptr Offset3D) (e0) . ($ ())-        ContT $ pokeCStruct (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())+        poke (pSrcOffsets' :: Ptr Offset3D) (e0)+        poke (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)+    lift $ poke ((p `plusPtr` 56 :: Ptr ImageSubresourceLayers)) (zero)     let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 72 :: Ptr (FixedArray 2 Offset3D)))-    case ((zero, zero)) of+    lift $ case ((zero, zero)) of       (e0, e1) -> do-        ContT $ pokeCStruct (pDstOffsets' :: Ptr Offset3D) (e0) . ($ ())-        ContT $ pokeCStruct (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1) . ($ ())+        poke (pDstOffsets' :: Ptr Offset3D) (e0)+        poke (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)     lift $ f  instance (Extendss ImageBlit2KHR es, PeekChain es) => FromCStruct (ImageBlit2KHR es) where@@ -1057,9 +1215,9 @@     lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (bufferOffset)     lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (bufferRowLength)     lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (bufferImageHeight)-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (imageSubresource) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr Offset3D)) (imageOffset) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 60 :: Ptr Extent3D)) (imageExtent) . ($ ())+    lift $ poke ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (imageSubresource)+    lift $ poke ((p `plusPtr` 48 :: Ptr Offset3D)) (imageOffset)+    lift $ poke ((p `plusPtr` 60 :: Ptr Extent3D)) (imageExtent)     lift $ f   cStructSize = 72   cStructAlignment = 8@@ -1070,9 +1228,9 @@     lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)     lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)     lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr Offset3D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 60 :: Ptr Extent3D)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (zero)+    lift $ poke ((p `plusPtr` 48 :: Ptr Offset3D)) (zero)+    lift $ poke ((p `plusPtr` 60 :: Ptr Extent3D)) (zero)     lift $ f  instance (Extendss BufferImageCopy2KHR es, PeekChain es) => FromCStruct (BufferImageCopy2KHR es) where@@ -1159,26 +1317,26 @@  instance ToCStruct ImageResolve2KHR where   withCStruct x f = allocaBytesAligned 88 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ImageResolve2KHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (srcSubresource) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Offset3D)) (srcOffset) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (dstSubresource) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 60 :: Ptr Offset3D)) (dstOffset) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr Extent3D)) (extent) . ($ ())-    lift $ f+  pokeCStruct p ImageResolve2KHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (srcSubresource)+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (srcOffset)+    poke ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (dstSubresource)+    poke ((p `plusPtr` 60 :: Ptr Offset3D)) (dstOffset)+    poke ((p `plusPtr` 72 :: Ptr Extent3D)) (extent)+    f   cStructSize = 88   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Offset3D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 60 :: Ptr Offset3D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 72 :: Ptr Extent3D)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (zero)+    poke ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (zero)+    poke ((p `plusPtr` 60 :: Ptr Offset3D)) (zero)+    poke ((p `plusPtr` 72 :: Ptr Extent3D)) (zero)+    f  instance FromCStruct ImageResolve2KHR where   peekCStruct p = do@@ -1190,6 +1348,12 @@     pure $ ImageResolve2KHR              srcSubresource srcOffset dstSubresource dstOffset extent +instance Storable ImageResolve2KHR where+  sizeOf ~_ = 88+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero ImageResolve2KHR where   zero = ImageResolve2KHR            zero@@ -1302,7 +1466,7 @@     lift $ poke ((p `plusPtr` 24 :: Ptr Buffer)) (dstBuffer)     lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))     pPRegions' <- ContT $ allocaBytesAligned @BufferCopy2KHR ((Data.Vector.length (regions)) * 40) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions' `plusPtr` (40 * (i)) :: Ptr BufferCopy2KHR) (e) . ($ ())) (regions)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (40 * (i)) :: Ptr BufferCopy2KHR) (e)) (regions)     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr BufferCopy2KHR))) (pPRegions')     lift $ f   cStructSize = 48@@ -1313,7 +1477,7 @@     lift $ poke ((p `plusPtr` 16 :: Ptr Buffer)) (zero)     lift $ poke ((p `plusPtr` 24 :: Ptr Buffer)) (zero)     pPRegions' <- ContT $ allocaBytesAligned @BufferCopy2KHR ((Data.Vector.length (mempty)) * 40) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions' `plusPtr` (40 * (i)) :: Ptr BufferCopy2KHR) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (40 * (i)) :: Ptr BufferCopy2KHR) (e)) (mempty)     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr BufferCopy2KHR))) (pPRegions')     lift $ f @@ -1723,7 +1887,7 @@     lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (dstImageLayout)     lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))     pPRegions' <- ContT $ allocaBytesAligned @ImageCopy2KHR ((Data.Vector.length (regions)) * 88) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions' `plusPtr` (88 * (i)) :: Ptr ImageCopy2KHR) (e) . ($ ())) (regions)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (88 * (i)) :: Ptr ImageCopy2KHR) (e)) (regions)     lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr ImageCopy2KHR))) (pPRegions')     lift $ f   cStructSize = 56@@ -1736,7 +1900,7 @@     lift $ poke ((p `plusPtr` 32 :: Ptr Image)) (zero)     lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (zero)     pPRegions' <- ContT $ allocaBytesAligned @ImageCopy2KHR ((Data.Vector.length (mempty)) * 88) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions' `plusPtr` (88 * (i)) :: Ptr ImageCopy2KHR) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (88 * (i)) :: Ptr ImageCopy2KHR) (e)) (mempty)     lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr ImageCopy2KHR))) (pPRegions')     lift $ f @@ -3002,7 +3166,7 @@     lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (dstImageLayout)     lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))     pPRegions' <- ContT $ allocaBytesAligned @ImageResolve2KHR ((Data.Vector.length (regions)) * 88) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions' `plusPtr` (88 * (i)) :: Ptr ImageResolve2KHR) (e) . ($ ())) (regions)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (88 * (i)) :: Ptr ImageResolve2KHR) (e)) (regions)     lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr ImageResolve2KHR))) (pPRegions')     lift $ f   cStructSize = 56@@ -3015,7 +3179,7 @@     lift $ poke ((p `plusPtr` 32 :: Ptr Image)) (zero)     lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (zero)     pPRegions' <- ContT $ allocaBytesAligned @ImageResolve2KHR ((Data.Vector.length (mempty)) * 88) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions' `plusPtr` (88 * (i)) :: Ptr ImageResolve2KHR) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (88 * (i)) :: Ptr ImageResolve2KHR) (e)) (mempty)     lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr ImageResolve2KHR))) (pPRegions')     lift $ f 
src/Vulkan/Extensions/VK_KHR_copy_commands2.hs-boot view
@@ -1,4 +1,156 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_copy_commands2 - device extension+--+-- == VK_KHR_copy_commands2+--+-- [__Name String__]+--     @VK_KHR_copy_commands2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     338+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Jeff Leger+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_copy_commands2:%20&body=@jackohound%20 >+--+-- == Other Extension Metadata+--+-- [Last Modified Date]+--     2020-07-06+--+-- [__Interactions and External Dependencies__]+--+--     -   None+--+-- [Contributors]+--+--     -   Jeff Leger, Qualcomm+--+--     -   Tobias Hector, AMD+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Tom Olson, ARM+--+-- == Description+--+-- This extension provides extensible versions of the Vulkan buffer and+-- image copy commands. The new commands are functionally identical to the+-- core commands, except that their copy parameters are specified using+-- extensible structures that can be used to pass extension-specific+-- information.+--+-- The following extensible copy commands are introduced with this+-- extension: 'cmdCopyBuffer2KHR', 'cmdCopyImage2KHR',+-- 'cmdCopyBufferToImage2KHR', 'cmdCopyImageToBuffer2KHR',+-- 'cmdBlitImage2KHR', and 'cmdResolveImage2KHR'. Each command+-- contain@*Info2KHR@ structure parameter that includes @sType@\/@pNext@+-- members. Lower level structures that describe each region to be copied+-- are also extended with @sType@\/@pNext@ members.+--+-- == New Commands+--+-- -   'cmdBlitImage2KHR'+--+-- -   'cmdCopyBuffer2KHR'+--+-- -   'cmdCopyBufferToImage2KHR'+--+-- -   'cmdCopyImage2KHR'+--+-- -   'cmdCopyImageToBuffer2KHR'+--+-- -   'cmdResolveImage2KHR'+--+-- == New Structures+--+-- -   'BlitImageInfo2KHR'+--+-- -   'BufferCopy2KHR'+--+-- -   'BufferImageCopy2KHR'+--+-- -   'CopyBufferInfo2KHR'+--+-- -   'CopyBufferToImageInfo2KHR'+--+-- -   'CopyImageInfo2KHR'+--+-- -   'CopyImageToBufferInfo2KHR'+--+-- -   'ImageBlit2KHR'+--+-- -   'ImageCopy2KHR'+--+-- -   'ImageResolve2KHR'+--+-- -   'ResolveImageInfo2KHR'+--+-- == New Enum Constants+--+-- -   'KHR_COPY_COMMANDS_2_EXTENSION_NAME'+--+-- -   'KHR_COPY_COMMANDS_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_COPY_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_BLIT_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_COPY_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR'+--+-- == Version History+--+-- -   Revision 1, 2020-07-06 (Jeff Leger)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'BlitImageInfo2KHR', 'BufferCopy2KHR', 'BufferImageCopy2KHR',+-- 'CopyBufferInfo2KHR', 'CopyBufferToImageInfo2KHR', 'CopyImageInfo2KHR',+-- 'CopyImageToBufferInfo2KHR', 'ImageBlit2KHR', 'ImageCopy2KHR',+-- 'ImageResolve2KHR', 'ResolveImageInfo2KHR', 'cmdBlitImage2KHR',+-- 'cmdCopyBuffer2KHR', 'cmdCopyBufferToImage2KHR', 'cmdCopyImage2KHR',+-- 'cmdCopyImageToBuffer2KHR', 'cmdResolveImage2KHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_copy_commands2  ( BlitImageInfo2KHR                                                 , BufferCopy2KHR                                                 , BufferImageCopy2KHR
src/Vulkan/Extensions/VK_KHR_create_renderpass2.hs view
@@ -1,4 +1,168 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_create_renderpass2 - device extension+--+-- == VK_KHR_create_renderpass2+--+-- [__Name String__]+--     @VK_KHR_create_renderpass2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     110+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_multiview@+--+--     -   Requires @VK_KHR_maintenance2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_create_renderpass2:%20&body=@tobias%20 >+--+-- == Other Extension Metadata+--+-- [Last Modified Date]+--     2018-02-07+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [Contributors]+--+--     -   Tobias Hector+--+--     -   Jeff Bolz+--+-- == Description+--+-- This extension provides a new entry point to create render passes in a+-- way that can be easily extended by other extensions through the+-- substructures of render pass creation. The Vulkan 1.0 render pass+-- creation sub-structures do not include @sType@\/@pNext@ members.+-- Additionally, the renderpass begin\/next\/end commands have been+-- augmented with new extensible structures for passing additional subpass+-- information.+--+-- The+-- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'+-- and+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.InputAttachmentAspectReference'+-- structures that extended the original+-- 'Vulkan.Core10.Pass.RenderPassCreateInfo' are not accepted into the new+-- creation functions, and instead their parameters are folded into this+-- extension as follows:+--+-- -   Elements of+--     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'::@pViewMasks@+--     are now specified in 'SubpassDescription2KHR'::@viewMask@.+--+-- -   Elements of+--     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'::@pViewOffsets@+--     are now specified in 'SubpassDependency2KHR'::@viewOffset@.+--+-- -   'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'::@correlationMaskCount@+--     and+--     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'::@pCorrelationMasks@+--     are directly specified in 'RenderPassCreateInfo2KHR'.+--+-- -   'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.InputAttachmentAspectReference'::@aspectMask@+--     is now specified in the relevant input attachment description in+--     'AttachmentDescription2KHR'::@aspectMask@+--+-- The details of these mappings are explained fully in the new structures.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Commands+--+-- -   'cmdBeginRenderPass2KHR'+--+-- -   'cmdEndRenderPass2KHR'+--+-- -   'cmdNextSubpass2KHR'+--+-- -   'createRenderPass2KHR'+--+-- == New Structures+--+-- -   'AttachmentDescription2KHR'+--+-- -   'AttachmentReference2KHR'+--+-- -   'RenderPassCreateInfo2KHR'+--+-- -   'SubpassBeginInfoKHR'+--+-- -   'SubpassDependency2KHR'+--+-- -   'SubpassDescription2KHR'+--+-- -   'SubpassEndInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_CREATE_RENDERPASS_2_EXTENSION_NAME'+--+-- -   'KHR_CREATE_RENDERPASS_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR'+--+--     -   'STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR'+--+--     -   'STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR'+--+--     -   'STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR'+--+--     -   'STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR'+--+--     -   'STRUCTURE_TYPE_SUBPASS_END_INFO_KHR'+--+-- == Version History+--+-- -   Revision 1, 2018-02-07 (Tobias Hector)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'AttachmentDescription2KHR', 'AttachmentReference2KHR',+-- 'RenderPassCreateInfo2KHR', 'SubpassBeginInfoKHR',+-- 'SubpassDependency2KHR', 'SubpassDescription2KHR', 'SubpassEndInfoKHR',+-- 'cmdBeginRenderPass2KHR', 'cmdEndRenderPass2KHR', 'cmdNextSubpass2KHR',+-- 'createRenderPass2KHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_create_renderpass2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_create_renderpass2  ( pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR                                                     , pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR                                                     , pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR
src/Vulkan/Extensions/VK_KHR_dedicated_allocation.hs view
@@ -1,4 +1,220 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_dedicated_allocation - device extension+--+-- == VK_KHR_dedicated_allocation+--+-- [__Name String__]+--     @VK_KHR_dedicated_allocation@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     128+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_memory_requirements2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_dedicated_allocation:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-05+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jason Ekstrand, Intel+--+-- == Description+--+-- This extension enables resources to be bound to a dedicated allocation,+-- rather than suballocated. For any particular resource, applications+-- /can/ query whether a dedicated allocation is recommended, in which case+-- using a dedicated allocation /may/ improve the performance of access to+-- that resource. Normal device memory allocations must support multiple+-- resources per allocation, memory aliasing and sparse binding, which+-- could interfere with some optimizations. Applications should query the+-- implementation for when a dedicated allocation /may/ be beneficial by+-- adding a 'MemoryDedicatedRequirementsKHR' structure to the @pNext@ chain+-- of the+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'+-- structure passed as the @pMemoryRequirements@ parameter of a call to+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2'+-- or+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'.+-- Certain external handle types and external images or buffers /may/ also+-- depend on dedicated allocations on implementations that associate image+-- or buffer metadata with OS-level memory objects.+--+-- This extension adds a two small structures to memory requirements+-- querying and memory allocation: a new structure that flags whether an+-- image\/buffer should have a dedicated allocation, and a structure+-- indicating the image or buffer that an allocation will be bound to.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'MemoryDedicatedAllocateInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2':+--+--     -   'MemoryDedicatedRequirementsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_DEDICATED_ALLOCATION_EXTENSION_NAME'+--+-- -   'KHR_DEDICATED_ALLOCATION_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR'+--+-- == Examples+--+-- >     // Create an image with a dedicated allocation based on the+-- >     // implementation's preference+-- >+-- >     VkImageCreateInfo imageCreateInfo =+-- >     {+-- >         // Image creation parameters+-- >     };+-- >+-- >     VkImage image;+-- >     VkResult result = vkCreateImage(+-- >         device,+-- >         &imageCreateInfo,+-- >         NULL,                               // pAllocator+-- >         &image);+-- >+-- >     VkMemoryDedicatedRequirementsKHR dedicatedRequirements =+-- >     {+-- >         VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR,+-- >         NULL,                               // pNext+-- >     };+-- >+-- >     VkMemoryRequirements2 memoryRequirements =+-- >     {+-- >         VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,+-- >         &dedicatedRequirements,             // pNext+-- >     };+-- >+-- >     const VkImageMemoryRequirementsInfo2 imageRequirementsInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,+-- >         NULL,                               // pNext+-- >         image+-- >     };+-- >+-- >     vkGetImageMemoryRequirements2(+-- >         device,+-- >         &imageRequirementsInfo,+-- >         &memoryRequirements);+-- >+-- >     if (dedicatedRequirements.prefersDedicatedAllocation) {+-- >         // Allocate memory with VkMemoryDedicatedAllocateInfoKHR::image+-- >         // pointing to the image we are allocating the memory for+-- >+-- >         VkMemoryDedicatedAllocateInfoKHR dedicatedInfo =+-- >         {+-- >             VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR,   // sType+-- >             NULL,                                                   // pNext+-- >             image,                                                  // image+-- >             VK_NULL_HANDLE,                                         // buffer+-- >         };+-- >+-- >         VkMemoryAllocateInfo memoryAllocateInfo =+-- >         {+-- >             VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,                 // sType+-- >             &dedicatedInfo,                                         // pNext+-- >             memoryRequirements.size,                                // allocationSize+-- >             FindMemoryTypeIndex(memoryRequirements.memoryTypeBits), // memoryTypeIndex+-- >         };+-- >+-- >         VkDeviceMemory memory;+-- >         vkAllocateMemory(+-- >             device,+-- >             &memoryAllocateInfo,+-- >             NULL,                       // pAllocator+-- >             &memory);+-- >+-- >         // Bind the image to the memory+-- >+-- >         vkBindImageMemory(+-- >             device,+-- >             image,+-- >             memory,+-- >             0);+-- >     } else {+-- >         // Take the normal memory sub-allocation path+-- >     }+--+-- == Version History+--+-- -   Revision 1, 2017-02-27 (James Jones)+--+--     -   Copy content from VK_NV_dedicated_allocation+--+--     -   Add some references to external object interactions to the+--         overview.+--+-- -   Revision 2, 2017-03-27 (Jason Ekstrand)+--+--     -   Rework the extension to be query-based+--+-- -   Revision 3, 2017-07-31 (Jason Ekstrand)+--+--     -   Clarify that memory objects created with+--         VkMemoryDedicatedAllocateInfoKHR can only have the specified+--         resource bound and no others.+--+-- = See Also+--+-- 'MemoryDedicatedAllocateInfoKHR', 'MemoryDedicatedRequirementsKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dedicated_allocation Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_dedicated_allocation  ( pattern STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR                                                       , pattern STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR                                                       , MemoryDedicatedRequirementsKHR
src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs view
@@ -1,11 +1,244 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_deferred_host_operations - device extension+--+-- == VK_KHR_deferred_host_operations+--+-- [__Name String__]+--     @VK_KHR_deferred_host_operations@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     269+--+-- [__Revision__]+--     4+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Josh Barczak+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_deferred_host_operations:%20&body=@jbarczak%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-11-12+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Joshua Barczak, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Slawek Grajewski, Intel+--+--     -   Tobias Hector, AMD+--+--     -   Yuriy O’Donnell, Epic+--+--     -   Eric Werness, NVIDIA+--+--     -   Baldur Karlsson, Valve+--+--     -   Jesse Barker, Unity+--+--     -   Contributors to VK_KHR_acceleration_structure,+--         VK_KHR_ray_tracing_pipeline+--+-- == Description+--+-- The+-- <VK_KHR_deferred_host_operations.html VK_KHR_deferred_host_operations>+-- extension defines the infrastructure and usage patterns for deferrable+-- commands, but does not specify any commands as deferrable. This is left+-- to additional dependent extensions. Commands /must/ not be deferred+-- unless the deferral is specifically allowed by another extension which+-- depends on+-- <VK_KHR_deferred_host_operations.html VK_KHR_deferred_host_operations>.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.DeferredOperationKHR'+--+-- == New Commands+--+-- -   'createDeferredOperationKHR'+--+-- -   'deferredOperationJoinKHR'+--+-- -   'destroyDeferredOperationKHR'+--+-- -   'getDeferredOperationMaxConcurrencyKHR'+--+-- -   'getDeferredOperationResultKHR'+--+-- == New Enum Constants+--+-- -   'KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME'+--+-- -   'KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_DEFERRED_OPERATION_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.THREAD_DONE_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.THREAD_IDLE_KHR'+--+-- == Code Examples+--+-- The following examples will illustrate the concept of deferrable+-- operations using a hypothetical example. The command+-- @vkDoSomethingExpensiveEXT@ denotes a deferrable command. The structure+-- @VkExpensiveOperationArgsEXT@ represents the arguments which it would+-- normally accept.+--+-- The following example illustrates how a vulkan application might request+-- deferral of an expensive operation:+--+-- > // create a deferred operation+-- > VkDeferredOperationKHR hOp;+-- > VkResult result = vkCreateDeferredOperationKHR(device, pCallbacks, &hOp);+-- > assert(result == VK_SUCCESS);+-- >+-- > result = vkDoSomethingExpensive(device, hOp, ...);+-- > assert( result == VK_OPERATION_DEFERRED_KHR );+-- >+-- > // operation was deferred.  Execute it asynchronously+-- > std::async::launch(+-- >     [ hOp ] ( )+-- >     {+-- >         vkDeferredOperationJoinKHR(device, hOp);+-- >+-- >         result = vkGetDeferredOperationResultKHR(device, hOp);+-- >+-- >         // deferred operation is now complete.  'result' indicates success or failure+-- >+-- >         vkDestroyDeferredOperationKHR(device, hOp, pCallbacks);+-- >     }+-- > );+--+-- The following example shows a subroutine which guarantees completion of+-- a deferred operation, in the presence of multiple worker threads, and+-- returns the result of the operation.+--+-- > VkResult FinishDeferredOperation(VkDeferredOperationKHR hOp)+-- > {+-- >     // Attempt to join the operation until the implementation indicates that we should stop+-- >+-- >     VkResult result = vkDeferredOperationJoinKHR(device, hOp);+-- >     while( result == VK_THREAD_IDLE_KHR )+-- >     {+-- >         std::this_thread::yield();+-- >         result = vkDeferredOperationJoinKHR(device, hOp);+-- >     }+-- >+-- >     switch( result )+-- >     {+-- >     case VK_SUCCESS:+-- >         {+-- >             // deferred operation has finished.  Query its result+-- >             result = vkGetDeferredOperationResultKHR(device, hOp);+-- >         }+-- >         break;+-- >+-- >     case VK_THREAD_DONE_KHR:+-- >         {+-- >             // deferred operation is being wrapped up by another thread+-- >             //  wait for that thread to finish+-- >             do+-- >             {+-- >                 std::this_thread::yield();+-- >                 result = vkGetDeferredOperationResultKHR(device, hOp);+-- >             } while( result == VK_NOT_READY );+-- >         }+-- >         break;+-- >+-- >     default:+-- >         assert(false); // other conditions are illegal.+-- >         break;+-- >     }+-- >+-- >     return result;+-- > }+--+-- == Issues+--+-- 1.  Should this entension have a VkPhysicalDevice*FeaturesKHR structure?+--+-- RESOLVED: No. This extension does not add any functionality on its own+-- and requires a dependent extension to actually enable functionality and+-- thus there is no value in adding a feature structure. If necessary, any+-- dependent extension could add a feature boolean if it wanted to indicate+-- that it is adding optional deferral support.+--+-- == Version History+--+-- -   Revision 1, 2019-12-05 (Josh Barczak, Daniel Koch)+--+--     -   Initial draft.+--+-- -   Revision 2, 2020-03-06 (Daniel Koch, Tobias Hector)+--+--     -   Add missing VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR enum+--+--     -   fix sample code+--+--     -   Clarified deferred operation parameter lifetimes (#2018,!3647)+--+-- -   Revision 3, 2020-05-15 (Josh Barczak)+--+--     -   Clarify behavior of vkGetDeferredOperationMaxConcurrencyKHR,+--         allowing it to return 0 if the operation is complete+--         (#2036,!3850)+--+-- -   Revision 4, 2020-11-12 (Tobias Hector, Daniel Koch)+--+--     -   Remove VkDeferredOperationInfoKHR and change return value+--         semantics when deferred host operations are in use (#2067,3813)+--+--     -   clarify return value of vkGetDeferredOperationResultKHR+--         (#2339,!4110)+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.DeferredOperationKHR',+-- 'createDeferredOperationKHR', 'deferredOperationJoinKHR',+-- 'destroyDeferredOperationKHR', 'getDeferredOperationMaxConcurrencyKHR',+-- 'getDeferredOperationResultKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_deferred_host_operations Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_deferred_host_operations  ( createDeferredOperationKHR                                                           , withDeferredOperationKHR                                                           , destroyDeferredOperationKHR                                                           , getDeferredOperationMaxConcurrencyKHR                                                           , getDeferredOperationResultKHR                                                           , deferredOperationJoinKHR-                                                          , DeferredOperationInfoKHR(..)                                                           , KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION                                                           , pattern KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION                                                           , KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME@@ -16,30 +249,22 @@ import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)-import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Marshal.Alloc (callocBytes) import Foreign.Marshal.Alloc (free) import GHC.Base (when) import GHC.IO (throwIO) import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr)-import Foreign.Ptr (plusPtr) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO) import Data.String (IsString)-import Data.Typeable (Typeable)-import Foreign.Storable (Storable) import Foreign.Storable (Storable(peek))-import Foreign.Storable (Storable(poke))-import qualified Foreign.Storable (Storable(..))-import GHC.Generics (Generic) import GHC.IO.Exception (IOErrorType(..)) import GHC.IO.Exception (IOException(..)) import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import Data.Word (Word32)-import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.NamedType ((:::)) import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)@@ -53,16 +278,10 @@ import Vulkan.Dynamic (DeviceCmds(pVkGetDeferredOperationMaxConcurrencyKHR)) import Vulkan.Dynamic (DeviceCmds(pVkGetDeferredOperationResultKHR)) import Vulkan.Core10.Handles (Device_T)-import Vulkan.CStruct (FromCStruct)-import Vulkan.CStruct (FromCStruct(..)) import Vulkan.Core10.Enums.Result (Result) import Vulkan.Core10.Enums.Result (Result(..))-import Vulkan.Core10.Enums.StructureType (StructureType)-import Vulkan.CStruct (ToCStruct) import Vulkan.CStruct (ToCStruct(..)) import Vulkan.Exception (VulkanException(..))-import Vulkan.Zero (Zero(..))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR)) import Vulkan.Core10.Enums.Result (Result(SUCCESS)) import Vulkan.Extensions.Handles (DeferredOperationKHR(..)) foreign import ccall@@ -131,10 +350,10 @@ -- -- To ensure that 'destroyDeferredOperationKHR' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withDeferredOperationKHR :: forall io r . MonadIO io => Device -> Maybe AllocationCallbacks -> (io (DeferredOperationKHR) -> ((DeferredOperationKHR) -> io ()) -> r) -> r+withDeferredOperationKHR :: forall io r . MonadIO io => Device -> Maybe AllocationCallbacks -> (io DeferredOperationKHR -> (DeferredOperationKHR -> io ()) -> r) -> r withDeferredOperationKHR device pAllocator b =   b (createDeferredOperationKHR device pAllocator)     (\(o0) -> destroyDeferredOperationKHR device o0 pAllocator)@@ -307,18 +526,18 @@ -- -- = Description ----- If the deferred operation is pending, 'getDeferredOperationResultKHR'--- returns 'Vulkan.Core10.Enums.Result.NOT_READY'.--- -- If no command has been deferred on @operation@, -- 'getDeferredOperationResultKHR' returns -- 'Vulkan.Core10.Enums.Result.SUCCESS'. ----- Otherwise, it returns the result of the previous deferred operation.--- This value /must/ be one of the 'Vulkan.Core10.Enums.Result.Result'--- values which could have been returned by the original command if the--- operation had not been deferred.+-- If the deferred operation is pending, 'getDeferredOperationResultKHR'+-- returns 'Vulkan.Core10.Enums.Result.NOT_READY'. --+-- If the deferred operation is complete, it returns the appropriate return+-- value from the original command. This value /must/ be one of the+-- 'Vulkan.Core10.Enums.Result.Result' values which could have been+-- returned by the original command if the operation had not been deferred.+-- -- == Return Codes -- -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]@@ -459,132 +678,11 @@   pure $ (r)  --- | VkDeferredOperationInfoKHR - Deferred operation request------ = Description------ The application /can/ request deferral of an operation by adding this--- structure to the argument list of a command or by providing this in the--- @pNext@ chain of a relevant structure for an operation when the--- corresponding command is invoked. If this structure is not present, no--- deferral is requested. If @operationHandle@ is--- 'Vulkan.Core10.APIConstants.NULL_HANDLE', no deferral is requested and--- the command proceeds as if no 'DeferredOperationInfoKHR' structure was--- provided.------ When an application requests an operation deferral, the implementation--- /may/ defer the operation. When deferral is requested and the--- implementation defers any operation, the implementation /must/ return--- 'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR' as the success code--- if no errors occurred. When deferral is requested, the implementation--- /should/ defer the operation when the workload is significant, however--- if the implementation chooses not to defer any of the requested--- operations and instead executes all of them immediately, the--- implementation /must/ return--- 'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR' as the success--- code if no errors occurred.------ A deferred operation is created /complete/ with an initial result value--- of 'Vulkan.Core10.Enums.Result.SUCCESS'. The deferred operation becomes--- /pending/ when an operation has been successfully deferred with that--- @operationHandle@.------ A deferred operation is considered pending until the deferred operation--- completes. A pending deferred operation becomes /complete/ when it has--- been fully executed by one or more threads. Pending deferred operations--- will never complete until they are /joined/ by an application thread,--- using 'deferredOperationJoinKHR'. Applications /can/ join multiple--- threads to the same deferred operation, enabling concurrent execution of--- subtasks within that operation.------ The application /can/ query the status of a--- 'Vulkan.Extensions.Handles.DeferredOperationKHR' using the--- 'getDeferredOperationMaxConcurrencyKHR' or--- 'getDeferredOperationResultKHR' commands.------ From the perspective of other commands - parameters to the original--- command that are externally synchronized /must/ not be accessed before--- the deferred operation completes, and the result of the deferred--- operation (e.g. object creation) are not considered complete until the--- deferred operation completes.------ If the deferred operation is one which creates an object (for example, a--- pipeline object), the implementation /must/ allocate that object as it--- normally would, and return a valid handle to the application. This--- object is a /pending/ object, and /must/ not be used by the application--- until the deferred operation is completed (unless otherwise specified by--- the deferral extension). When the deferred operation is complete, the--- application /should/ call 'getDeferredOperationResultKHR' to obtain the--- result of the operation. If 'getDeferredOperationResultKHR' indicates--- failure, the application /must/ destroy the pending object using an--- appropriate command, so that the implementation has an opportunity to--- recover the handle. The application /must/ not perform this destruction--- until the deferred operation is complete. Construction of the pending--- object uses the same allocator which would have been used if the--- operation had not been deferred.------ == Valid Usage------ -   #VUID-VkDeferredOperationInfoKHR-operationHandle-03433# Any previous---     deferred operation that was associated with @operationHandle@ /must/---     be complete------ == Valid Usage (Implicit)------ -   #VUID-VkDeferredOperationInfoKHR-sType-sType# @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR'------ = See Also------ 'Vulkan.Extensions.Handles.DeferredOperationKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data DeferredOperationInfoKHR = DeferredOperationInfoKHR-  { -- | @operationHandle@ is a handle to a tracking object to associate with the-    -- deferred operation.-    operationHandle :: DeferredOperationKHR }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (DeferredOperationInfoKHR)-#endif-deriving instance Show DeferredOperationInfoKHR--instance ToCStruct DeferredOperationInfoKHR where-  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p DeferredOperationInfoKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr DeferredOperationKHR)) (operationHandle)-    f-  cStructSize = 24-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr DeferredOperationKHR)) (zero)-    f--instance FromCStruct DeferredOperationInfoKHR where-  peekCStruct p = do-    operationHandle <- peek @DeferredOperationKHR ((p `plusPtr` 16 :: Ptr DeferredOperationKHR))-    pure $ DeferredOperationInfoKHR-             operationHandle--instance Storable DeferredOperationInfoKHR where-  sizeOf ~_ = 24-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero DeferredOperationInfoKHR where-  zero = DeferredOperationInfoKHR-           zero---type KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 3+type KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4  -- No documentation found for TopLevel "VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION" pattern KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION :: forall a . Integral a => a-pattern KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 3+pattern KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4   type KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations"
− src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs-boot
@@ -1,13 +0,0 @@-{-# language CPP #-}-module Vulkan.Extensions.VK_KHR_deferred_host_operations  (DeferredOperationInfoKHR) where--import Data.Kind (Type)-import Vulkan.CStruct (FromCStruct)-import Vulkan.CStruct (ToCStruct)-data DeferredOperationInfoKHR--instance ToCStruct DeferredOperationInfoKHR-instance Show DeferredOperationInfoKHR--instance FromCStruct DeferredOperationInfoKHR-
src/Vulkan/Extensions/VK_KHR_depth_stencil_resolve.hs view
@@ -1,4 +1,159 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_depth_stencil_resolve - device extension+--+-- == VK_KHR_depth_stencil_resolve+--+-- [__Name String__]+--     @VK_KHR_depth_stencil_resolve@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     200+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_create_renderpass2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Jan-Harald Fredriksen+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_depth_stencil_resolve:%20&body=@janharald%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-04-09+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [__Contributors__]+--+--     -   Jan-Harald Fredriksen, Arm+--+--     -   Andrew Garrard, Samsung Electronics+--+--     -   Soowan Park, Samsung Electronics+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Daniel Rakos, AMD+--+-- == Description+--+-- This extension adds support for automatically resolving multisampled+-- depth\/stencil attachments in a subpass in a similar manner as for color+-- attachments.+--+-- Multisampled color attachments can be resolved at the end of a subpass+-- by specifying @pResolveAttachments@ entries corresponding to the+-- @pColorAttachments@ array entries. This does not allow for a way to map+-- the resolve attachments to the depth\/stencil attachment. The+-- 'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage' command does not+-- allow for depth\/stencil images. While there are other ways to resolve+-- the depth\/stencil attachment, they can give sub-optimal performance.+-- Extending the+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2'+-- in this extension allows an application to add a+-- @pDepthStencilResolveAttachment@, that is similar to the color+-- @pResolveAttachments@, that the @pDepthStencilAttachment@ can be+-- resolved into.+--+-- Depth and stencil samples are resolved to a single value based on the+-- resolve mode. The set of possible resolve modes is defined in the+-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' enum. The+-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_SAMPLE_ZERO_BIT'+-- mode is the only mode that is required of all implementations (that+-- support the extension or support Vulkan 1.2 or higher). Some+-- implementations may also support averaging (the same as color sample+-- resolve) or taking the minimum or maximum sample, which may be more+-- suitable for depth\/stencil resolve.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceDepthStencilResolvePropertiesKHR'+--+-- -   Extending+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2':+--+--     -   'SubpassDescriptionDepthStencilResolveKHR'+--+-- == New Enums+--+-- -   'ResolveModeFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'ResolveModeFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME'+--+-- -   'KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits':+--+--     -   'RESOLVE_MODE_AVERAGE_BIT_KHR'+--+--     -   'RESOLVE_MODE_MAX_BIT_KHR'+--+--     -   'RESOLVE_MODE_MIN_BIT_KHR'+--+--     -   'RESOLVE_MODE_NONE_KHR'+--+--     -   'RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR'+--+--     -   'STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR'+--+-- == Version History+--+-- -   Revision 1, 2018-04-09 (Jan-Harald Fredriksen)+--+--     -   Initial revision+--+-- = See Also+--+-- 'PhysicalDeviceDepthStencilResolvePropertiesKHR',+-- 'ResolveModeFlagBitsKHR', 'ResolveModeFlagsKHR',+-- 'SubpassDescriptionDepthStencilResolveKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_depth_stencil_resolve Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_depth_stencil_resolve  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR                                                        , pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR                                                        , pattern RESOLVE_MODE_NONE_KHR
src/Vulkan/Extensions/VK_KHR_descriptor_update_template.hs view
@@ -1,4 +1,169 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_descriptor_update_template - device extension+--+-- == VK_KHR_descriptor_update_template+--+-- [__Name String__]+--     @VK_KHR_descriptor_update_template@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     86+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Markus Tavenrath+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_descriptor_update_template:%20&body=@mtavenrath%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-05+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Interacts with @VK_KHR_push_descriptor@+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Michael Worcester, Imagination Technologies+--+-- == Description+--+-- Applications may wish to update a fixed set of descriptors in a large+-- number of descriptors sets very frequently, i.e. during initializaton+-- phase or if it is required to rebuild descriptor sets for each frame.+-- For those cases it is also not unlikely that all information required to+-- update a single descriptor set is stored in a single struct. This+-- extension provides a way to update a fixed set of descriptors in a+-- single 'Vulkan.Core10.Handles.DescriptorSet' with a pointer to a user+-- defined data structure describing the new descriptors.+--+-- == Promotion to Vulkan 1.1+--+-- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplateKHR'+-- is included as an interaction with @VK_KHR_push_descriptor@. If Vulkan+-- 1.1 and @VK_KHR_push_descriptor@ are supported, this is included by+-- @VK_KHR_push_descriptor@.+--+-- The base functionality in this extension is included in core Vulkan 1.1,+-- with the KHR suffix omitted. The original type, enum and command names+-- are still available as aliases of the core functionality.+--+-- == New Object Types+--+-- -   'DescriptorUpdateTemplateKHR'+--+-- == New Commands+--+-- -   'createDescriptorUpdateTemplateKHR'+--+-- -   'destroyDescriptorUpdateTemplateKHR'+--+-- -   'updateDescriptorSetWithTemplateKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>+-- is supported:+--+-- -   'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplateKHR'+--+-- == New Structures+--+-- -   'DescriptorUpdateTemplateCreateInfoKHR'+--+-- -   'DescriptorUpdateTemplateEntryKHR'+--+-- == New Enums+--+-- -   'DescriptorUpdateTemplateTypeKHR'+--+-- == New Bitmasks+--+-- -   'DescriptorUpdateTemplateCreateFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME'+--+-- -   'KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DescriptorUpdateTemplateType':+--+--     -   'DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_report VK_EXT_debug_report>+-- is supported:+--+-- -   Extending+--     'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT':+--+--     -   'DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor VK_KHR_push_descriptor>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DescriptorUpdateTemplateType':+--+--     -   'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'+--+-- == Version History+--+-- -   Revision 1, 2016-01-11 (Markus Tavenrath)+--+--     -   Initial draft+--+-- = See Also+--+-- 'DescriptorUpdateTemplateCreateFlagsKHR',+-- 'DescriptorUpdateTemplateCreateInfoKHR',+-- 'DescriptorUpdateTemplateEntryKHR', 'DescriptorUpdateTemplateKHR',+-- 'DescriptorUpdateTemplateTypeKHR', 'createDescriptorUpdateTemplateKHR',+-- 'destroyDescriptorUpdateTemplateKHR',+-- 'updateDescriptorSetWithTemplateKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_descriptor_update_template  ( pattern STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR                                                             , pattern OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR                                                             , pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR
src/Vulkan/Extensions/VK_KHR_device_group.hs view
@@ -1,4 +1,366 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_device_group - device extension+--+-- == VK_KHR_device_group+--+-- [__Name String__]+--     @VK_KHR_device_group@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     61+--+-- [__Revision__]+--     4+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_device_group_creation@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_device_group:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-10-10+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Tobias Hector, Imagination Technologies+--+-- == Description+--+-- This extension provides functionality to use a logical device that+-- consists of multiple physical devices, as created with the+-- @VK_KHR_device_group_creation@ extension. A device group can allocate+-- memory across the subdevices, bind memory from one subdevice to a+-- resource on another subdevice, record command buffers where some work+-- executes on an arbitrary subset of the subdevices, and potentially+-- present a swapchain image from one or more subdevices.+--+-- == Promotion to Vulkan 1.1+--+-- The following enums, types and commands are included as interactions+-- with @VK_KHR_swapchain@:+--+-- -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR'+--+-- -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR'+--+-- -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR'+--+-- -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR'+--+-- -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR'+--+-- -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR'+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR'+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentModeFlagBitsKHR'+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentCapabilitiesKHR'+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR'+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR'+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.AcquireNextImageInfoKHR'+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentInfoKHR'+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupSwapchainCreateInfoKHR'+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.getDeviceGroupPresentCapabilitiesKHR'+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.getDeviceGroupSurfacePresentModesKHR'+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.getPhysicalDevicePresentRectanglesKHR'+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.acquireNextImage2KHR'+--+-- If Vulkan 1.1 and @VK_KHR_swapchain@ are supported, these are included+-- by @VK_KHR_swapchain@.+--+-- The base functionality in this extension is included in core Vulkan 1.1,+-- with the KHR suffix omitted. The original type, enum and command names+-- are still available as aliases of the core functionality.+--+-- == New Commands+--+-- -   'cmdDispatchBaseKHR'+--+-- -   'cmdSetDeviceMaskKHR'+--+-- -   'getDeviceGroupPeerMemoryFeaturesKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>+-- is supported:+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.getDeviceGroupPresentCapabilitiesKHR'+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.getDeviceGroupSurfacePresentModesKHR'+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.getPhysicalDevicePresentRectanglesKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>+-- is supported:+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.acquireNextImage2KHR'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo':+--+--     -   'DeviceGroupBindSparseInfoKHR'+--+-- -   Extending 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo':+--+--     -   'DeviceGroupCommandBufferBeginInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'MemoryAllocateFlagsInfoKHR'+--+-- -   Extending 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo':+--+--     -   'DeviceGroupRenderPassBeginInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Queue.SubmitInfo':+--+--     -   'DeviceGroupSubmitInfoKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_bind_memory2 VK_KHR_bind_memory2>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo':+--+--     -   'BindBufferMemoryDeviceGroupInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo':+--+--     -   'BindImageMemoryDeviceGroupInfoKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>+-- is supported:+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentCapabilitiesKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>+-- is supported:+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.AcquireNextImageInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo':+--+--     -   'Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo':+--+--     -   'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR'+--+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':+--+--     -   'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentInfoKHR'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR':+--+--     -   'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupSwapchainCreateInfoKHR'+--+-- == New Enums+--+-- -   'MemoryAllocateFlagBitsKHR'+--+-- -   'PeerMemoryFeatureFlagBitsKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>+-- is supported:+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentModeFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'MemoryAllocateFlagsKHR'+--+-- -   'PeerMemoryFeatureFlagsKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>+-- is supported:+--+-- -   'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentModeFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_DEVICE_GROUP_EXTENSION_NAME'+--+-- -   'KHR_DEVICE_GROUP_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits':+--+--     -   'DEPENDENCY_DEVICE_GROUP_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MemoryAllocateFlagBits':+--+--     -   'MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits.PeerMemoryFeatureFlagBits':+--+--     -   'PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR'+--+--     -   'PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR'+--+--     -   'PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR'+--+--     -   'PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'PIPELINE_CREATE_DISPATCH_BASE_KHR'+--+--     -   'PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_bind_memory2 VK_KHR_bind_memory2>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':+--+--     -   'IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>+-- is supported:+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>+-- is supported:+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagBitsKHR':+--+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR'+--+-- == New Built-in Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-deviceindex DeviceIndex>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities DeviceGroup>+--+-- == Version History+--+-- -   Revision 1, 2016-10-19 (Jeff Bolz)+--+--     -   Internal revisions+--+-- -   Revision 2, 2017-05-19 (Tobias Hector)+--+--     -   Removed extended memory bind functions to VK_KHR_bind_memory2,+--         added dependency on that extension, and device-group-specific+--         structs for those functions.+--+-- -   Revision 3, 2017-10-06 (Ian Elliott)+--+--     -   Corrected Vulkan 1.1 interactions with the WSI extensions. All+--         Vulkan 1.1 WSI interactions are with the VK_KHR_swapchain+--         extension.+--+-- -   Revision 4, 2017-10-10 (Jeff Bolz)+--+--     -   Rename \"SFR\" bits and structure members to use the phrase+--         \"split instance bind regions\".+--+-- = See Also+--+-- 'DeviceGroupBindSparseInfoKHR', 'DeviceGroupCommandBufferBeginInfoKHR',+-- 'DeviceGroupRenderPassBeginInfoKHR', 'DeviceGroupSubmitInfoKHR',+-- 'MemoryAllocateFlagBitsKHR', 'MemoryAllocateFlagsInfoKHR',+-- 'MemoryAllocateFlagsKHR', 'PeerMemoryFeatureFlagBitsKHR',+-- 'PeerMemoryFeatureFlagsKHR', 'cmdDispatchBaseKHR',+-- 'cmdSetDeviceMaskKHR', 'getDeviceGroupPeerMemoryFeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_device_group  ( pattern STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR                                               , pattern STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR                                               , pattern STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR
src/Vulkan/Extensions/VK_KHR_device_group_creation.hs view
@@ -1,4 +1,145 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_device_group_creation - instance extension+--+-- == VK_KHR_device_group_creation+--+-- [__Name String__]+--     @VK_KHR_device_group_creation@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     71+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_device_group_creation:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension provides instance-level commands to enumerate groups of+-- physical devices, and to create a logical device from a subset of one of+-- those groups. Such a logical device can then be used with new features+-- in the @VK_KHR_device_group@ extension.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Commands+--+-- -   'enumeratePhysicalDeviceGroupsKHR'+--+-- == New Structures+--+-- -   'PhysicalDeviceGroupPropertiesKHR'+--+-- -   Extending 'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'DeviceGroupDeviceCreateInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME'+--+-- -   'KHR_DEVICE_GROUP_CREATION_SPEC_VERSION'+--+-- -   'Vulkan.Core10.APIConstants.MAX_DEVICE_GROUP_SIZE_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MemoryHeapFlagBits':+--+--     -   'MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR'+--+-- == Examples+--+-- >     VkDeviceCreateInfo devCreateInfo = { VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO };+-- >     // (not shown) fill out devCreateInfo as usual.+-- >     uint32_t deviceGroupCount = 0;+-- >     VkPhysicalDeviceGroupPropertiesKHR *props = NULL;+-- >+-- >     // Query the number of device groups+-- >     vkEnumeratePhysicalDeviceGroupsKHR(g_vkInstance, &deviceGroupCount, NULL);+-- >+-- >     // Allocate and initialize structures to query the device groups+-- >     props = (VkPhysicalDeviceGroupPropertiesKHR *)malloc(deviceGroupCount*sizeof(VkPhysicalDeviceGroupPropertiesKHR));+-- >     for (i = 0; i < deviceGroupCount; ++i) {+-- >         props[i].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR;+-- >         props[i].pNext = NULL;+-- >     }+-- >     vkEnumeratePhysicalDeviceGroupsKHR(g_vkInstance, &deviceGroupCount, props);+-- >+-- >     // If the first device group has more than one physical device. create+-- >     // a logical device using all of the physical devices.+-- >     VkDeviceGroupDeviceCreateInfoKHR deviceGroupInfo = { VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR };+-- >     if (props[0].physicalDeviceCount > 1) {+-- >         deviceGroupInfo.physicalDeviceCount = props[0].physicalDeviceCount;+-- >         deviceGroupInfo.pPhysicalDevices = props[0].physicalDevices;+-- >         devCreateInfo.pNext = &deviceGroupInfo;+-- >     }+-- >+-- >     vkCreateDevice(props[0].physicalDevices[0], &devCreateInfo, NULL, &g_vkDevice);+-- >     free(props);+--+-- == Version History+--+-- -   Revision 1, 2016-10-19 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'Vulkan.Core10.APIConstants.MAX_DEVICE_GROUP_SIZE_KHR',+-- 'DeviceGroupDeviceCreateInfoKHR', 'PhysicalDeviceGroupPropertiesKHR',+-- 'enumeratePhysicalDeviceGroupsKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group_creation Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_device_group_creation  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR                                                        , pattern STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR                                                        , pattern MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR
src/Vulkan/Extensions/VK_KHR_display.hs view
@@ -1,4 +1,517 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_display - instance extension+--+-- == VK_KHR_display+--+-- [__Name String__]+--     @VK_KHR_display@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     3+--+-- [__Revision__]+--     23+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_display:%20&body=@cubanismo%20 >+--+--     -   Norbert Nopper+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_display:%20&body=@FslNopper%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-03-13+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Norbert Nopper, Freescale+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Daniel Rakos, AMD+--+-- == Description+--+-- This extension provides the API to enumerate displays and available+-- modes on a given device.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.DisplayKHR'+--+-- -   'Vulkan.Extensions.Handles.DisplayModeKHR'+--+-- == New Commands+--+-- -   'createDisplayModeKHR'+--+-- -   'createDisplayPlaneSurfaceKHR'+--+-- -   'getDisplayModePropertiesKHR'+--+-- -   'getDisplayPlaneCapabilitiesKHR'+--+-- -   'getDisplayPlaneSupportedDisplaysKHR'+--+-- -   'getPhysicalDeviceDisplayPlanePropertiesKHR'+--+-- -   'getPhysicalDeviceDisplayPropertiesKHR'+--+-- == New Structures+--+-- -   'DisplayModeCreateInfoKHR'+--+-- -   'DisplayModeParametersKHR'+--+-- -   'DisplayModePropertiesKHR'+--+-- -   'DisplayPlaneCapabilitiesKHR'+--+-- -   'DisplayPlanePropertiesKHR'+--+-- -   'DisplayPropertiesKHR'+--+-- -   'DisplaySurfaceCreateInfoKHR'+--+-- == New Enums+--+-- -   'DisplayPlaneAlphaFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'DisplayModeCreateFlagsKHR'+--+-- -   'DisplayPlaneAlphaFlagsKHR'+--+-- -   'DisplaySurfaceCreateFlagsKHR'+--+-- -   'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_DISPLAY_EXTENSION_NAME'+--+-- -   'KHR_DISPLAY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_DISPLAY_KHR'+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_DISPLAY_MODE_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) Which properties of a mode should be fixed in the mode info vs.+-- settable in some other function when setting the mode? E.g., do we need+-- to double the size of the mode pool to include both stereo and+-- non-stereo modes? YUV and RGB scanout even if they both take RGB input+-- images? BGR vs. RGB input? etc.+--+-- __PROPOSED RESOLUTION__: Many modern displays support at most a handful+-- of resolutions and timings natively. Other “modes” are expected to be+-- supported using scaling hardware on the display engine or GPU. Other+-- properties, such as rotation and mirroring should not require+-- duplicating hardware modes just to express all combinations. Further,+-- these properties may be implemented on a per-display or per-overlay+-- granularity.+--+-- To avoid the exponential growth of modes as mutable properties are+-- added, as was the case with @EGLConfig@\/WGL pixel+-- formats\/@GLXFBConfig@, this specification should separate out hardware+-- properties and configurable state into separate objects. Modes and+-- overlay planes will express capabilities of the hardware, while a+-- separate structure will allow applications to configure scaling,+-- rotation, mirroring, color keys, LUT values, alpha masks, etc. for a+-- given swapchain independent of the mode in use. Constraints on these+-- settings will be established by properties of the immutable objects.+--+-- Note the resolution of this issue may affect issue 5 as well.+--+-- 2) What properties of a display itself are useful?+--+-- __PROPOSED RESOLUTION__: This issue is too broad. It was meant to prompt+-- general discussion, but resolving this issue amounts to completing this+-- specification. All interesting properties should be included. The issue+-- will remain as a placeholder since removing it would make it hard to+-- parse existing discussion notes that refer to issues by number.+--+-- 3) How are multiple overlay planes within a display or mode enumerated?+--+-- __PROPOSED RESOLUTION__: They are referred to by an index. Each display+-- will report the number of overlay planes it contains.+--+-- 4) Should swapchains be created relative to a mode or a display?+--+-- __PROPOSED RESOLUTION__: When using this extension, swapchains are+-- created relative to a mode and a plane. The mode implies the display+-- object the swapchain will present to. If the specified mode is not the+-- display’s current mode, the new mode will be applied when the first+-- image is presented to the swapchain, and the default operating system+-- mode, if any, will be restored when the swapchain is destroyed.+--+-- 5) Should users query generic ranges from displays and construct their+-- own modes explicitly using those constraints rather than querying a+-- fixed set of modes (Most monitors only have one real “mode” these days,+-- even though many support relatively arbitrary scaling, either on the+-- monitor side or in the GPU display engine, making “modes” something of a+-- relic\/compatibility construct).+--+-- __PROPOSED RESOLUTION__: Expose both. Display info structures will+-- expose a set of predefined modes, as well as any attributes necessary to+-- construct a customized mode.+--+-- 6) Is it fine if we return the display and display mode handles in the+-- structure used to query their properties?+--+-- __PROPOSED RESOLUTION__: Yes.+--+-- 7) Is there a possibility that not all displays of a device work with+-- all of the present queues of a device? If yes, how do we determine which+-- displays work with which present queues?+--+-- __PROPOSED RESOLUTION__: No known hardware has such limitations, but+-- determining such limitations is supported automatically using the+-- existing @VK_KHR_surface@ and @VK_KHR_swapchain@ query mechanisms.+--+-- 8) Should all presentation need to be done relative to an overlay plane,+-- or can a display mode + display be used alone to target an output?+--+-- __PROPOSED RESOLUTION__: Require specifying a plane explicitly.+--+-- 9) Should displays have an associated window system display, such as an+-- @HDC@ or 'Vulkan.Extensions.VK_KHR_xlib_surface.Display'*?+--+-- __PROPOSED RESOLUTION__: No. Displays are independent of any windowing+-- system in use on the system. Further, neither @HDC@ nor+-- 'Vulkan.Extensions.VK_KHR_xlib_surface.Display'* refer to a physical+-- display object.+--+-- 10) Are displays queried from a physical GPU or from a device instance?+--+-- __PROPOSED RESOLUTION__: Developers prefer to query modes directly from+-- the physical GPU so they can use display information as an input to+-- their device selection algorithms prior to device creation. This avoids+-- the need to create placeholder device instances to enumerate displays.+--+-- This preference must be weighed against the extra initialization that+-- must be done by driver vendors prior to device instance creation to+-- support this usage.+--+-- 11) Should displays and\/or modes be dispatchable objects? If functions+-- are to take displays, overlays, or modes as their first parameter, they+-- must be dispatchable objects as defined in Khronos bug 13529. If they+-- are not added to the list of dispatchable objects, functions operating+-- on them must take some higher-level object as their first parameter.+-- There is no performance case against making them dispatchable objects,+-- but they would be the first extension objects to be dispatchable.+--+-- __PROPOSED RESOLUTION__: Do not make displays or modes dispatchable.+-- They will dispatch based on their associated physical device.+--+-- 12) Should hardware cursor capabilities be exposed?+--+-- __PROPOSED RESOLUTION__: Defer. This could be a separate extension on+-- top of the base WSI specs.+--+-- if they are one physical display device to an end user, but may+-- internally be implemented as two side-by-side displays using the same+-- display engine (and sometimes cabling) resources as two physically+-- separate display devices.+--+-- __RESOLVED__: Tiled displays will appear as a single display object in+-- this API.+--+-- 14) Should the raw EDID data be included in the display information?+--+-- __RESOLVED__: No. A future extension could be added which reports the+-- EDID if necessary. This may be complicated by the outcome of issue 13.+--+-- 15) Should min and max scaling factor capabilities of overlays be+-- exposed?+--+-- __RESOLVED__: Yes. This is exposed indirectly by allowing applications+-- to query the min\/max position and extent of the source and destination+-- regions from which image contents are fetched by the display engine when+-- using a particular mode and overlay pair.+--+-- 16) Should devices be able to expose planes that can be moved between+-- displays? If so, how?+--+-- __RESOLVED__: Yes. Applications can determine which displays a given+-- plane supports using 'getDisplayPlaneSupportedDisplaysKHR'.+--+-- 17) Should there be a way to destroy display modes? If so, does it+-- support destroying “built in” modes?+--+-- __RESOLVED__: Not in this extension. A future extension could add this+-- functionality.+--+-- 18) What should the lifetime of display and built-in display mode+-- objects be?+--+-- __RESOLVED__: The lifetime of the instance. These objects cannot be+-- destroyed. A future extension may be added to expose a way to destroy+-- these objects and\/or support display hotplug.+--+-- 19) Should persistent mode for smart panels be enabled\/disabled at+-- swapchain creation time, or on a per-present basis.+--+-- __RESOLVED__: On a per-present basis.+--+-- == Examples+--+-- Note+--+-- The example code for the @VK_KHR_display@ and @VK_KHR_display_swapchain@+-- extensions was removed from the appendix after revision 1.0.43. The+-- display enumeration example code was ported to the cube demo that is+-- shipped with the official Khronos SDK, and is being kept up-to-date in+-- that location (see:+-- <https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c>).+--+-- == Version History+--+-- -   Revision 1, 2015-02-24 (James Jones)+--+--     -   Initial draft+--+-- -   Revision 2, 2015-03-12 (Norbert Nopper)+--+--     -   Added overlay enumeration for a display.+--+-- -   Revision 3, 2015-03-17 (Norbert Nopper)+--+--     -   Fixed typos and namings as discussed in Bugzilla.+--+--     -   Reordered and grouped functions.+--+--     -   Added functions to query count of display, mode and overlay.+--+--     -   Added native display handle, which is maybe needed on some+--         platforms to create a native Window.+--+-- -   Revision 4, 2015-03-18 (Norbert Nopper)+--+--     -   Removed primary and virtualPostion members (see comment of James+--         Jones in Bugzilla).+--+--     -   Added native overlay handle to info structure.+--+--     -   Replaced , with ; in struct.+--+-- -   Revision 6, 2015-03-18 (Daniel Rakos)+--+--     -   Added WSI extension suffix to all items.+--+--     -   Made the whole API more \"Vulkanish\".+--+--     -   Replaced all functions with a single vkGetDisplayInfoKHR+--         function to better match the rest of the API.+--+--     -   Made the display, display mode, and overlay objects be first+--         class objects, not subclasses of VkBaseObject as they do not+--         support the common functions anyways.+--+--     -   Renamed *Info structures to *Properties.+--+--     -   Removed overlayIndex field from VkOverlayProperties as there is+--         an implicit index already as a result of moving to a+--         \"Vulkanish\" API.+--+--     -   Displays are not get through device, but through physical GPU to+--         match the rest of the Vulkan API. Also this is something ISVs+--         explicitly requested.+--+--     -   Added issue (6) and (7).+--+-- -   Revision 7, 2015-03-25 (James Jones)+--+--     -   Added an issues section+--+--     -   Added rotation and mirroring flags+--+-- -   Revision 8, 2015-03-25 (James Jones)+--+--     -   Combined the duplicate issues sections introduced in last+--         change.+--+--     -   Added proposed resolutions to several issues.+--+-- -   Revision 9, 2015-04-01 (Daniel Rakos)+--+--     -   Rebased extension against Vulkan 0.82.0+--+-- -   Revision 10, 2015-04-01 (James Jones)+--+--     -   Added issues (10) and (11).+--+--     -   Added more straw-man issue resolutions, and cleaned up the+--         proposed resolution for issue (4).+--+--     -   Updated the rotation and mirroring enums to have proper bitmask+--         semantics.+--+-- -   Revision 11, 2015-04-15 (James Jones)+--+--     -   Added proposed resolution for issues (1) and (2).+--+--     -   Added issues (12), (13), (14), and (15)+--+--     -   Removed pNativeHandle field from overlay structure.+--+--     -   Fixed small compilation errors in example code.+--+-- -   Revision 12, 2015-07-29 (James Jones)+--+--     -   Rewrote the guts of the extension against the latest WSI+--         swapchain specifications and the latest Vulkan API.+--+--     -   Address overlay planes by their index rather than an object+--         handle and refer to them as \"planes\" rather than \"overlays\"+--         to make it slightly clearer that even a display with no+--         \"overlays\" still has at least one base \"plane\" that images+--         can be displayed on.+--+--     -   Updated most of the issues.+--+--     -   Added an \"extension type\" section to the specification header.+--+--     -   Re-used the VK_EXT_KHR_surface surface transform enumerations+--         rather than redefining them here.+--+--     -   Updated the example code to use the new semantics.+--+-- -   Revision 13, 2015-08-21 (Ian Elliott)+--+--     -   Renamed this extension and all of its enumerations, types,+--         functions, etc. This makes it compliant with the proposed+--         standard for Vulkan extensions.+--+--     -   Switched from \"revision\" to \"version\", including use of the+--         VK_MAKE_VERSION macro in the header file.+--+-- -   Revision 14, 2015-09-01 (James Jones)+--+--     -   Restore single-field revision number.+--+-- -   Revision 15, 2015-09-08 (James Jones)+--+--     -   Added alpha flags enum.+--+--     -   Added premultiplied alpha support.+--+-- -   Revision 16, 2015-09-08 (James Jones)+--+--     -   Added description section to the spec.+--+--     -   Added issues 16 - 18.+--+-- -   Revision 17, 2015-10-02 (James Jones)+--+--     -   Planes are now a property of the entire device rather than+--         individual displays. This allows planes to be moved between+--         multiple displays on devices that support it.+--+--     -   Added a function to create a VkSurfaceKHR object describing a+--         display plane and mode to align with the new per-platform+--         surface creation conventions.+--+--     -   Removed detailed mode timing data. It was agreed that the mode+--         extents and refresh rate are sufficient for current use cases.+--         Other information could be added back2 in as an extension if it+--         is needed in the future.+--+--     -   Added support for smart\/persistent\/buffered display devices.+--+-- -   Revision 18, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_display to VK_KHR_display.+--+-- -   Revision 19, 2015-11-02 (James Jones)+--+--     -   Updated example code to match revision 17 changes.+--+-- -   Revision 20, 2015-11-03 (Daniel Rakos)+--+--     -   Added allocation callbacks to creation functions.+--+-- -   Revision 21, 2015-11-10 (Jesse Hall)+--+--     -   Added VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR, and use+--         VkDisplayPlaneAlphaFlagBitsKHR for+--         VkDisplayPlanePropertiesKHR::alphaMode instead of+--         VkDisplayPlaneAlphaFlagsKHR, since it only represents one mode.+--+--     -   Added reserved flags bitmask to VkDisplayPlanePropertiesKHR.+--+--     -   Use VkSurfaceTransformFlagBitsKHR instead of obsolete+--         VkSurfaceTransformKHR.+--+--     -   Renamed vkGetDisplayPlaneSupportedDisplaysKHR parameters for+--         clarity.+--+-- -   Revision 22, 2015-12-18 (James Jones)+--+--     -   Added missing \"planeIndex\" parameter to+--         vkGetDisplayPlaneSupportedDisplaysKHR()+--+-- -   Revision 23, 2017-03-13 (James Jones)+--+--     -   Closed all remaining issues. The specification and+--         implementations have been shipping with the proposed resolutions+--         for some time now.+--+--     -   Removed the sample code and noted it has been integrated into+--         the official Vulkan SDK cube demo.+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.DisplayKHR', 'DisplayModeCreateFlagsKHR',+-- 'DisplayModeCreateInfoKHR', 'Vulkan.Extensions.Handles.DisplayModeKHR',+-- 'DisplayModeParametersKHR', 'DisplayModePropertiesKHR',+-- 'DisplayPlaneAlphaFlagBitsKHR', 'DisplayPlaneAlphaFlagsKHR',+-- 'DisplayPlaneCapabilitiesKHR', 'DisplayPlanePropertiesKHR',+-- 'DisplayPropertiesKHR', 'DisplaySurfaceCreateFlagsKHR',+-- 'DisplaySurfaceCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagsKHR',+-- 'createDisplayModeKHR', 'createDisplayPlaneSurfaceKHR',+-- 'getDisplayModePropertiesKHR', 'getDisplayPlaneCapabilitiesKHR',+-- 'getDisplayPlaneSupportedDisplaysKHR',+-- 'getPhysicalDeviceDisplayPlanePropertiesKHR',+-- 'getPhysicalDeviceDisplayPropertiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_display  ( getPhysicalDeviceDisplayPropertiesKHR                                          , getPhysicalDeviceDisplayPlanePropertiesKHR                                          , getDisplayPlaneSupportedDisplaysKHR@@ -15,13 +528,13 @@                                          , DisplaySurfaceCreateInfoKHR(..)                                          , DisplayModeCreateFlagsKHR(..)                                          , DisplaySurfaceCreateFlagsKHR(..)+                                         , DisplayPlaneAlphaFlagsKHR                                          , DisplayPlaneAlphaFlagBitsKHR( DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR                                                                        , DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR                                                                        , DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR                                                                        , DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR                                                                        , ..                                                                        )-                                         , DisplayPlaneAlphaFlagsKHR                                          , KHR_DISPLAY_SPEC_VERSION                                          , pattern KHR_DISPLAY_SPEC_VERSION                                          , KHR_DISPLAY_EXTENSION_NAME@@ -33,6 +546,8 @@                                          , SurfaceTransformFlagsKHR                                          ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -44,15 +559,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.ByteString (packCString) import Data.ByteString (useAsCString) import Control.Monad.Trans.Class (lift)@@ -76,8 +584,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.ByteString (ByteString) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))@@ -764,8 +1272,8 @@     lift $ poke ((p `plusPtr` 0 :: Ptr DisplayKHR)) (display)     displayName'' <- ContT $ useAsCString (displayName)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr CChar))) displayName''-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (physicalDimensions) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (physicalResolution) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr Extent2D)) (physicalDimensions)+    lift $ poke ((p `plusPtr` 24 :: Ptr Extent2D)) (physicalResolution)     lift $ poke ((p `plusPtr` 32 :: Ptr SurfaceTransformFlagsKHR)) (supportedTransforms)     lift $ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (planeReorderPossible))     lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (persistentContent))@@ -776,8 +1284,8 @@     lift $ poke ((p `plusPtr` 0 :: Ptr DisplayKHR)) (zero)     displayName'' <- ContT $ useAsCString (mempty)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr CChar))) displayName''-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr Extent2D)) (zero)+    lift $ poke ((p `plusPtr` 24 :: Ptr Extent2D)) (zero)     lift $ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))     lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))     lift $ f@@ -900,16 +1408,16 @@  instance ToCStruct DisplayModeParametersKHR where   withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p DisplayModeParametersKHR{..} f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Extent2D)) (visibleRegion) . ($ ())-    lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (refreshRate)-    lift $ f+  pokeCStruct p DisplayModeParametersKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Extent2D)) (visibleRegion)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (refreshRate)+    f   cStructSize = 12   cStructAlignment = 4-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Extent2D)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+    f  instance FromCStruct DisplayModeParametersKHR where   peekCStruct p = do@@ -918,6 +1426,12 @@     pure $ DisplayModeParametersKHR              visibleRegion refreshRate +instance Storable DisplayModeParametersKHR where+  sizeOf ~_ = 12+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero DisplayModeParametersKHR where   zero = DisplayModeParametersKHR            zero@@ -949,16 +1463,16 @@  instance ToCStruct DisplayModePropertiesKHR where   withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p DisplayModePropertiesKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr DisplayModeKHR)) (displayMode)-    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr DisplayModeParametersKHR)) (parameters) . ($ ())-    lift $ f+  pokeCStruct p DisplayModePropertiesKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr DisplayModeKHR)) (displayMode)+    poke ((p `plusPtr` 8 :: Ptr DisplayModeParametersKHR)) (parameters)+    f   cStructSize = 24   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr DisplayModeKHR)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr DisplayModeParametersKHR)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr DisplayModeKHR)) (zero)+    poke ((p `plusPtr` 8 :: Ptr DisplayModeParametersKHR)) (zero)+    f  instance FromCStruct DisplayModePropertiesKHR where   peekCStruct p = do@@ -967,6 +1481,12 @@     pure $ DisplayModePropertiesKHR              displayMode parameters +instance Storable DisplayModePropertiesKHR where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero DisplayModePropertiesKHR where   zero = DisplayModePropertiesKHR            zero@@ -1006,19 +1526,19 @@  instance ToCStruct DisplayModeCreateInfoKHR where   withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p DisplayModeCreateInfoKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr DisplayModeCreateFlagsKHR)) (flags)-    ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr DisplayModeParametersKHR)) (parameters) . ($ ())-    lift $ f+  pokeCStruct p DisplayModeCreateInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DisplayModeCreateFlagsKHR)) (flags)+    poke ((p `plusPtr` 20 :: Ptr DisplayModeParametersKHR)) (parameters)+    f   cStructSize = 32   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr DisplayModeParametersKHR)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 20 :: Ptr DisplayModeParametersKHR)) (zero)+    f  instance FromCStruct DisplayModeCreateInfoKHR where   peekCStruct p = do@@ -1027,6 +1547,12 @@     pure $ DisplayModeCreateInfoKHR              flags parameters +instance Storable DisplayModeCreateInfoKHR where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero DisplayModeCreateInfoKHR where   zero = DisplayModeCreateInfoKHR            zero@@ -1114,29 +1640,29 @@  instance ToCStruct DisplayPlaneCapabilitiesKHR where   withCStruct x f = allocaBytesAligned 68 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p DisplayPlaneCapabilitiesKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr DisplayPlaneAlphaFlagsKHR)) (supportedAlpha)-    ContT $ pokeCStruct ((p `plusPtr` 4 :: Ptr Offset2D)) (minSrcPosition) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 12 :: Ptr Offset2D)) (maxSrcPosition) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (minSrcExtent) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr Extent2D)) (maxSrcExtent) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 36 :: Ptr Offset2D)) (minDstPosition) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Offset2D)) (maxDstPosition) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr Extent2D)) (minDstExtent) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 60 :: Ptr Extent2D)) (maxDstExtent) . ($ ())-    lift $ f+  pokeCStruct p DisplayPlaneCapabilitiesKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr DisplayPlaneAlphaFlagsKHR)) (supportedAlpha)+    poke ((p `plusPtr` 4 :: Ptr Offset2D)) (minSrcPosition)+    poke ((p `plusPtr` 12 :: Ptr Offset2D)) (maxSrcPosition)+    poke ((p `plusPtr` 20 :: Ptr Extent2D)) (minSrcExtent)+    poke ((p `plusPtr` 28 :: Ptr Extent2D)) (maxSrcExtent)+    poke ((p `plusPtr` 36 :: Ptr Offset2D)) (minDstPosition)+    poke ((p `plusPtr` 44 :: Ptr Offset2D)) (maxDstPosition)+    poke ((p `plusPtr` 52 :: Ptr Extent2D)) (minDstExtent)+    poke ((p `plusPtr` 60 :: Ptr Extent2D)) (maxDstExtent)+    f   cStructSize = 68   cStructAlignment = 4-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 4 :: Ptr Offset2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 12 :: Ptr Offset2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr Extent2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 36 :: Ptr Offset2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Offset2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr Extent2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 60 :: Ptr Extent2D)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 4 :: Ptr Offset2D)) (zero)+    poke ((p `plusPtr` 12 :: Ptr Offset2D)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 28 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 36 :: Ptr Offset2D)) (zero)+    poke ((p `plusPtr` 44 :: Ptr Offset2D)) (zero)+    poke ((p `plusPtr` 52 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 60 :: Ptr Extent2D)) (zero)+    f  instance FromCStruct DisplayPlaneCapabilitiesKHR where   peekCStruct p = do@@ -1152,6 +1678,12 @@     pure $ DisplayPlaneCapabilitiesKHR              supportedAlpha minSrcPosition maxSrcPosition minSrcExtent maxSrcExtent minDstPosition maxDstPosition minDstExtent maxDstExtent +instance Storable DisplayPlaneCapabilitiesKHR where+  sizeOf ~_ = 68+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero DisplayPlaneCapabilitiesKHR where   zero = DisplayPlaneCapabilitiesKHR            zero@@ -1274,31 +1806,31 @@  instance ToCStruct DisplaySurfaceCreateInfoKHR where   withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p DisplaySurfaceCreateInfoKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr DisplaySurfaceCreateFlagsKHR)) (flags)-    lift $ poke ((p `plusPtr` 24 :: Ptr DisplayModeKHR)) (displayMode)-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (planeIndex)-    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (planeStackIndex)-    lift $ poke ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR)) (transform)-    lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (globalAlpha))-    lift $ poke ((p `plusPtr` 48 :: Ptr DisplayPlaneAlphaFlagBitsKHR)) (alphaMode)-    ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr Extent2D)) (imageExtent) . ($ ())-    lift $ f+  pokeCStruct p DisplaySurfaceCreateInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DisplaySurfaceCreateFlagsKHR)) (flags)+    poke ((p `plusPtr` 24 :: Ptr DisplayModeKHR)) (displayMode)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (planeIndex)+    poke ((p `plusPtr` 36 :: Ptr Word32)) (planeStackIndex)+    poke ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR)) (transform)+    poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (globalAlpha))+    poke ((p `plusPtr` 48 :: Ptr DisplayPlaneAlphaFlagBitsKHR)) (alphaMode)+    poke ((p `plusPtr` 52 :: Ptr Extent2D)) (imageExtent)+    f   cStructSize = 64   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 24 :: Ptr DisplayModeKHR)) (zero)-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)-    lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (zero))-    lift $ poke ((p `plusPtr` 48 :: Ptr DisplayPlaneAlphaFlagBitsKHR)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr Extent2D)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 24 :: Ptr DisplayModeKHR)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)+    poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 48 :: Ptr DisplayPlaneAlphaFlagBitsKHR)) (zero)+    poke ((p `plusPtr` 52 :: Ptr Extent2D)) (zero)+    f  instance FromCStruct DisplaySurfaceCreateInfoKHR where   peekCStruct p = do@@ -1313,6 +1845,12 @@     pure $ DisplaySurfaceCreateInfoKHR              flags displayMode planeIndex planeStackIndex transform ((\(CFloat a) -> a) globalAlpha) alphaMode imageExtent +instance Storable DisplaySurfaceCreateInfoKHR where+  sizeOf ~_ = 64+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero DisplaySurfaceCreateInfoKHR where   zero = DisplaySurfaceCreateInfoKHR            zero@@ -1340,17 +1878,27 @@   +conNameDisplayModeCreateFlagsKHR :: String+conNameDisplayModeCreateFlagsKHR = "DisplayModeCreateFlagsKHR"++enumPrefixDisplayModeCreateFlagsKHR :: String+enumPrefixDisplayModeCreateFlagsKHR = ""++showTableDisplayModeCreateFlagsKHR :: [(DisplayModeCreateFlagsKHR, String)]+showTableDisplayModeCreateFlagsKHR = []+ instance Show DisplayModeCreateFlagsKHR where-  showsPrec p = \case-    DisplayModeCreateFlagsKHR x -> showParen (p >= 11) (showString "DisplayModeCreateFlagsKHR 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDisplayModeCreateFlagsKHR+                            showTableDisplayModeCreateFlagsKHR+                            conNameDisplayModeCreateFlagsKHR+                            (\(DisplayModeCreateFlagsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DisplayModeCreateFlagsKHR where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "DisplayModeCreateFlagsKHR")-                       v <- step readPrec-                       pure (DisplayModeCreateFlagsKHR v)))+  readPrec = enumReadPrec enumPrefixDisplayModeCreateFlagsKHR+                          showTableDisplayModeCreateFlagsKHR+                          conNameDisplayModeCreateFlagsKHR+                          DisplayModeCreateFlagsKHR   -- | VkDisplaySurfaceCreateFlagsKHR - Reserved for future use@@ -1368,19 +1916,31 @@   +conNameDisplaySurfaceCreateFlagsKHR :: String+conNameDisplaySurfaceCreateFlagsKHR = "DisplaySurfaceCreateFlagsKHR"++enumPrefixDisplaySurfaceCreateFlagsKHR :: String+enumPrefixDisplaySurfaceCreateFlagsKHR = ""++showTableDisplaySurfaceCreateFlagsKHR :: [(DisplaySurfaceCreateFlagsKHR, String)]+showTableDisplaySurfaceCreateFlagsKHR = []+ instance Show DisplaySurfaceCreateFlagsKHR where-  showsPrec p = \case-    DisplaySurfaceCreateFlagsKHR x -> showParen (p >= 11) (showString "DisplaySurfaceCreateFlagsKHR 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDisplaySurfaceCreateFlagsKHR+                            showTableDisplaySurfaceCreateFlagsKHR+                            conNameDisplaySurfaceCreateFlagsKHR+                            (\(DisplaySurfaceCreateFlagsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DisplaySurfaceCreateFlagsKHR where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "DisplaySurfaceCreateFlagsKHR")-                       v <- step readPrec-                       pure (DisplaySurfaceCreateFlagsKHR v)))+  readPrec = enumReadPrec enumPrefixDisplaySurfaceCreateFlagsKHR+                          showTableDisplaySurfaceCreateFlagsKHR+                          conNameDisplaySurfaceCreateFlagsKHR+                          DisplaySurfaceCreateFlagsKHR  +type DisplayPlaneAlphaFlagsKHR = DisplayPlaneAlphaFlagBitsKHR+ -- | VkDisplayPlaneAlphaFlagBitsKHR - Alpha blending type -- -- = See Also@@ -1391,43 +1951,49 @@  -- | 'DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR' specifies that the source image -- will be treated as opaque.-pattern DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = DisplayPlaneAlphaFlagBitsKHR 0x00000001+pattern DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR                  = DisplayPlaneAlphaFlagBitsKHR 0x00000001 -- | 'DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR' specifies that a global alpha value -- /must/ be specified that will be applied to all pixels in the source -- image.-pattern DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = DisplayPlaneAlphaFlagBitsKHR 0x00000002+pattern DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR                  = DisplayPlaneAlphaFlagBitsKHR 0x00000002 -- | 'DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR' specifies that the alpha value -- will be determined by the alpha channel of the source image’s pixels. If -- the source format contains no alpha values, no blending will be applied. -- The source alpha values are not premultiplied into the source image’s -- other color channels.-pattern DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = DisplayPlaneAlphaFlagBitsKHR 0x00000004+pattern DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR               = DisplayPlaneAlphaFlagBitsKHR 0x00000004 -- | 'DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR' is equivalent to -- 'DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR', except the source alpha values -- are assumed to be premultiplied into the source image’s other color -- channels. pattern DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = DisplayPlaneAlphaFlagBitsKHR 0x00000008 -type DisplayPlaneAlphaFlagsKHR = DisplayPlaneAlphaFlagBitsKHR+conNameDisplayPlaneAlphaFlagBitsKHR :: String+conNameDisplayPlaneAlphaFlagBitsKHR = "DisplayPlaneAlphaFlagBitsKHR" +enumPrefixDisplayPlaneAlphaFlagBitsKHR :: String+enumPrefixDisplayPlaneAlphaFlagBitsKHR = "DISPLAY_PLANE_ALPHA_"++showTableDisplayPlaneAlphaFlagBitsKHR :: [(DisplayPlaneAlphaFlagBitsKHR, String)]+showTableDisplayPlaneAlphaFlagBitsKHR =+  [ (DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR                 , "OPAQUE_BIT_KHR")+  , (DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR                 , "GLOBAL_BIT_KHR")+  , (DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR              , "PER_PIXEL_BIT_KHR")+  , (DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR, "PER_PIXEL_PREMULTIPLIED_BIT_KHR")+  ]+ instance Show DisplayPlaneAlphaFlagBitsKHR where-  showsPrec p = \case-    DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR -> showString "DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"-    DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR -> showString "DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"-    DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR -> showString "DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"-    DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR -> showString "DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"-    DisplayPlaneAlphaFlagBitsKHR x -> showParen (p >= 11) (showString "DisplayPlaneAlphaFlagBitsKHR 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDisplayPlaneAlphaFlagBitsKHR+                            showTableDisplayPlaneAlphaFlagBitsKHR+                            conNameDisplayPlaneAlphaFlagBitsKHR+                            (\(DisplayPlaneAlphaFlagBitsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DisplayPlaneAlphaFlagBitsKHR where-  readPrec = parens (choose [("DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR", pure DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR)-                            , ("DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR", pure DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR)-                            , ("DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR", pure DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR)-                            , ("DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR", pure DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "DisplayPlaneAlphaFlagBitsKHR")-                       v <- step readPrec-                       pure (DisplayPlaneAlphaFlagBitsKHR v)))+  readPrec = enumReadPrec enumPrefixDisplayPlaneAlphaFlagBitsKHR+                          showTableDisplayPlaneAlphaFlagBitsKHR+                          conNameDisplayPlaneAlphaFlagBitsKHR+                          DisplayPlaneAlphaFlagBitsKHR   type KHR_DISPLAY_SPEC_VERSION = 23
src/Vulkan/Extensions/VK_KHR_display.hs-boot view
@@ -1,4 +1,517 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_display - instance extension+--+-- == VK_KHR_display+--+-- [__Name String__]+--     @VK_KHR_display@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     3+--+-- [__Revision__]+--     23+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_display:%20&body=@cubanismo%20 >+--+--     -   Norbert Nopper+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_display:%20&body=@FslNopper%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-03-13+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Norbert Nopper, Freescale+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Daniel Rakos, AMD+--+-- == Description+--+-- This extension provides the API to enumerate displays and available+-- modes on a given device.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.DisplayKHR'+--+-- -   'Vulkan.Extensions.Handles.DisplayModeKHR'+--+-- == New Commands+--+-- -   'createDisplayModeKHR'+--+-- -   'createDisplayPlaneSurfaceKHR'+--+-- -   'getDisplayModePropertiesKHR'+--+-- -   'getDisplayPlaneCapabilitiesKHR'+--+-- -   'getDisplayPlaneSupportedDisplaysKHR'+--+-- -   'getPhysicalDeviceDisplayPlanePropertiesKHR'+--+-- -   'getPhysicalDeviceDisplayPropertiesKHR'+--+-- == New Structures+--+-- -   'DisplayModeCreateInfoKHR'+--+-- -   'DisplayModeParametersKHR'+--+-- -   'DisplayModePropertiesKHR'+--+-- -   'DisplayPlaneCapabilitiesKHR'+--+-- -   'DisplayPlanePropertiesKHR'+--+-- -   'DisplayPropertiesKHR'+--+-- -   'DisplaySurfaceCreateInfoKHR'+--+-- == New Enums+--+-- -   'DisplayPlaneAlphaFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'DisplayModeCreateFlagsKHR'+--+-- -   'DisplayPlaneAlphaFlagsKHR'+--+-- -   'DisplaySurfaceCreateFlagsKHR'+--+-- -   'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_DISPLAY_EXTENSION_NAME'+--+-- -   'KHR_DISPLAY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_DISPLAY_KHR'+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_DISPLAY_MODE_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) Which properties of a mode should be fixed in the mode info vs.+-- settable in some other function when setting the mode? E.g., do we need+-- to double the size of the mode pool to include both stereo and+-- non-stereo modes? YUV and RGB scanout even if they both take RGB input+-- images? BGR vs. RGB input? etc.+--+-- __PROPOSED RESOLUTION__: Many modern displays support at most a handful+-- of resolutions and timings natively. Other “modes” are expected to be+-- supported using scaling hardware on the display engine or GPU. Other+-- properties, such as rotation and mirroring should not require+-- duplicating hardware modes just to express all combinations. Further,+-- these properties may be implemented on a per-display or per-overlay+-- granularity.+--+-- To avoid the exponential growth of modes as mutable properties are+-- added, as was the case with @EGLConfig@\/WGL pixel+-- formats\/@GLXFBConfig@, this specification should separate out hardware+-- properties and configurable state into separate objects. Modes and+-- overlay planes will express capabilities of the hardware, while a+-- separate structure will allow applications to configure scaling,+-- rotation, mirroring, color keys, LUT values, alpha masks, etc. for a+-- given swapchain independent of the mode in use. Constraints on these+-- settings will be established by properties of the immutable objects.+--+-- Note the resolution of this issue may affect issue 5 as well.+--+-- 2) What properties of a display itself are useful?+--+-- __PROPOSED RESOLUTION__: This issue is too broad. It was meant to prompt+-- general discussion, but resolving this issue amounts to completing this+-- specification. All interesting properties should be included. The issue+-- will remain as a placeholder since removing it would make it hard to+-- parse existing discussion notes that refer to issues by number.+--+-- 3) How are multiple overlay planes within a display or mode enumerated?+--+-- __PROPOSED RESOLUTION__: They are referred to by an index. Each display+-- will report the number of overlay planes it contains.+--+-- 4) Should swapchains be created relative to a mode or a display?+--+-- __PROPOSED RESOLUTION__: When using this extension, swapchains are+-- created relative to a mode and a plane. The mode implies the display+-- object the swapchain will present to. If the specified mode is not the+-- display’s current mode, the new mode will be applied when the first+-- image is presented to the swapchain, and the default operating system+-- mode, if any, will be restored when the swapchain is destroyed.+--+-- 5) Should users query generic ranges from displays and construct their+-- own modes explicitly using those constraints rather than querying a+-- fixed set of modes (Most monitors only have one real “mode” these days,+-- even though many support relatively arbitrary scaling, either on the+-- monitor side or in the GPU display engine, making “modes” something of a+-- relic\/compatibility construct).+--+-- __PROPOSED RESOLUTION__: Expose both. Display info structures will+-- expose a set of predefined modes, as well as any attributes necessary to+-- construct a customized mode.+--+-- 6) Is it fine if we return the display and display mode handles in the+-- structure used to query their properties?+--+-- __PROPOSED RESOLUTION__: Yes.+--+-- 7) Is there a possibility that not all displays of a device work with+-- all of the present queues of a device? If yes, how do we determine which+-- displays work with which present queues?+--+-- __PROPOSED RESOLUTION__: No known hardware has such limitations, but+-- determining such limitations is supported automatically using the+-- existing @VK_KHR_surface@ and @VK_KHR_swapchain@ query mechanisms.+--+-- 8) Should all presentation need to be done relative to an overlay plane,+-- or can a display mode + display be used alone to target an output?+--+-- __PROPOSED RESOLUTION__: Require specifying a plane explicitly.+--+-- 9) Should displays have an associated window system display, such as an+-- @HDC@ or 'Vulkan.Extensions.VK_KHR_xlib_surface.Display'*?+--+-- __PROPOSED RESOLUTION__: No. Displays are independent of any windowing+-- system in use on the system. Further, neither @HDC@ nor+-- 'Vulkan.Extensions.VK_KHR_xlib_surface.Display'* refer to a physical+-- display object.+--+-- 10) Are displays queried from a physical GPU or from a device instance?+--+-- __PROPOSED RESOLUTION__: Developers prefer to query modes directly from+-- the physical GPU so they can use display information as an input to+-- their device selection algorithms prior to device creation. This avoids+-- the need to create placeholder device instances to enumerate displays.+--+-- This preference must be weighed against the extra initialization that+-- must be done by driver vendors prior to device instance creation to+-- support this usage.+--+-- 11) Should displays and\/or modes be dispatchable objects? If functions+-- are to take displays, overlays, or modes as their first parameter, they+-- must be dispatchable objects as defined in Khronos bug 13529. If they+-- are not added to the list of dispatchable objects, functions operating+-- on them must take some higher-level object as their first parameter.+-- There is no performance case against making them dispatchable objects,+-- but they would be the first extension objects to be dispatchable.+--+-- __PROPOSED RESOLUTION__: Do not make displays or modes dispatchable.+-- They will dispatch based on their associated physical device.+--+-- 12) Should hardware cursor capabilities be exposed?+--+-- __PROPOSED RESOLUTION__: Defer. This could be a separate extension on+-- top of the base WSI specs.+--+-- if they are one physical display device to an end user, but may+-- internally be implemented as two side-by-side displays using the same+-- display engine (and sometimes cabling) resources as two physically+-- separate display devices.+--+-- __RESOLVED__: Tiled displays will appear as a single display object in+-- this API.+--+-- 14) Should the raw EDID data be included in the display information?+--+-- __RESOLVED__: No. A future extension could be added which reports the+-- EDID if necessary. This may be complicated by the outcome of issue 13.+--+-- 15) Should min and max scaling factor capabilities of overlays be+-- exposed?+--+-- __RESOLVED__: Yes. This is exposed indirectly by allowing applications+-- to query the min\/max position and extent of the source and destination+-- regions from which image contents are fetched by the display engine when+-- using a particular mode and overlay pair.+--+-- 16) Should devices be able to expose planes that can be moved between+-- displays? If so, how?+--+-- __RESOLVED__: Yes. Applications can determine which displays a given+-- plane supports using 'getDisplayPlaneSupportedDisplaysKHR'.+--+-- 17) Should there be a way to destroy display modes? If so, does it+-- support destroying “built in” modes?+--+-- __RESOLVED__: Not in this extension. A future extension could add this+-- functionality.+--+-- 18) What should the lifetime of display and built-in display mode+-- objects be?+--+-- __RESOLVED__: The lifetime of the instance. These objects cannot be+-- destroyed. A future extension may be added to expose a way to destroy+-- these objects and\/or support display hotplug.+--+-- 19) Should persistent mode for smart panels be enabled\/disabled at+-- swapchain creation time, or on a per-present basis.+--+-- __RESOLVED__: On a per-present basis.+--+-- == Examples+--+-- Note+--+-- The example code for the @VK_KHR_display@ and @VK_KHR_display_swapchain@+-- extensions was removed from the appendix after revision 1.0.43. The+-- display enumeration example code was ported to the cube demo that is+-- shipped with the official Khronos SDK, and is being kept up-to-date in+-- that location (see:+-- <https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c>).+--+-- == Version History+--+-- -   Revision 1, 2015-02-24 (James Jones)+--+--     -   Initial draft+--+-- -   Revision 2, 2015-03-12 (Norbert Nopper)+--+--     -   Added overlay enumeration for a display.+--+-- -   Revision 3, 2015-03-17 (Norbert Nopper)+--+--     -   Fixed typos and namings as discussed in Bugzilla.+--+--     -   Reordered and grouped functions.+--+--     -   Added functions to query count of display, mode and overlay.+--+--     -   Added native display handle, which is maybe needed on some+--         platforms to create a native Window.+--+-- -   Revision 4, 2015-03-18 (Norbert Nopper)+--+--     -   Removed primary and virtualPostion members (see comment of James+--         Jones in Bugzilla).+--+--     -   Added native overlay handle to info structure.+--+--     -   Replaced , with ; in struct.+--+-- -   Revision 6, 2015-03-18 (Daniel Rakos)+--+--     -   Added WSI extension suffix to all items.+--+--     -   Made the whole API more \"Vulkanish\".+--+--     -   Replaced all functions with a single vkGetDisplayInfoKHR+--         function to better match the rest of the API.+--+--     -   Made the display, display mode, and overlay objects be first+--         class objects, not subclasses of VkBaseObject as they do not+--         support the common functions anyways.+--+--     -   Renamed *Info structures to *Properties.+--+--     -   Removed overlayIndex field from VkOverlayProperties as there is+--         an implicit index already as a result of moving to a+--         \"Vulkanish\" API.+--+--     -   Displays are not get through device, but through physical GPU to+--         match the rest of the Vulkan API. Also this is something ISVs+--         explicitly requested.+--+--     -   Added issue (6) and (7).+--+-- -   Revision 7, 2015-03-25 (James Jones)+--+--     -   Added an issues section+--+--     -   Added rotation and mirroring flags+--+-- -   Revision 8, 2015-03-25 (James Jones)+--+--     -   Combined the duplicate issues sections introduced in last+--         change.+--+--     -   Added proposed resolutions to several issues.+--+-- -   Revision 9, 2015-04-01 (Daniel Rakos)+--+--     -   Rebased extension against Vulkan 0.82.0+--+-- -   Revision 10, 2015-04-01 (James Jones)+--+--     -   Added issues (10) and (11).+--+--     -   Added more straw-man issue resolutions, and cleaned up the+--         proposed resolution for issue (4).+--+--     -   Updated the rotation and mirroring enums to have proper bitmask+--         semantics.+--+-- -   Revision 11, 2015-04-15 (James Jones)+--+--     -   Added proposed resolution for issues (1) and (2).+--+--     -   Added issues (12), (13), (14), and (15)+--+--     -   Removed pNativeHandle field from overlay structure.+--+--     -   Fixed small compilation errors in example code.+--+-- -   Revision 12, 2015-07-29 (James Jones)+--+--     -   Rewrote the guts of the extension against the latest WSI+--         swapchain specifications and the latest Vulkan API.+--+--     -   Address overlay planes by their index rather than an object+--         handle and refer to them as \"planes\" rather than \"overlays\"+--         to make it slightly clearer that even a display with no+--         \"overlays\" still has at least one base \"plane\" that images+--         can be displayed on.+--+--     -   Updated most of the issues.+--+--     -   Added an \"extension type\" section to the specification header.+--+--     -   Re-used the VK_EXT_KHR_surface surface transform enumerations+--         rather than redefining them here.+--+--     -   Updated the example code to use the new semantics.+--+-- -   Revision 13, 2015-08-21 (Ian Elliott)+--+--     -   Renamed this extension and all of its enumerations, types,+--         functions, etc. This makes it compliant with the proposed+--         standard for Vulkan extensions.+--+--     -   Switched from \"revision\" to \"version\", including use of the+--         VK_MAKE_VERSION macro in the header file.+--+-- -   Revision 14, 2015-09-01 (James Jones)+--+--     -   Restore single-field revision number.+--+-- -   Revision 15, 2015-09-08 (James Jones)+--+--     -   Added alpha flags enum.+--+--     -   Added premultiplied alpha support.+--+-- -   Revision 16, 2015-09-08 (James Jones)+--+--     -   Added description section to the spec.+--+--     -   Added issues 16 - 18.+--+-- -   Revision 17, 2015-10-02 (James Jones)+--+--     -   Planes are now a property of the entire device rather than+--         individual displays. This allows planes to be moved between+--         multiple displays on devices that support it.+--+--     -   Added a function to create a VkSurfaceKHR object describing a+--         display plane and mode to align with the new per-platform+--         surface creation conventions.+--+--     -   Removed detailed mode timing data. It was agreed that the mode+--         extents and refresh rate are sufficient for current use cases.+--         Other information could be added back2 in as an extension if it+--         is needed in the future.+--+--     -   Added support for smart\/persistent\/buffered display devices.+--+-- -   Revision 18, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_display to VK_KHR_display.+--+-- -   Revision 19, 2015-11-02 (James Jones)+--+--     -   Updated example code to match revision 17 changes.+--+-- -   Revision 20, 2015-11-03 (Daniel Rakos)+--+--     -   Added allocation callbacks to creation functions.+--+-- -   Revision 21, 2015-11-10 (Jesse Hall)+--+--     -   Added VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR, and use+--         VkDisplayPlaneAlphaFlagBitsKHR for+--         VkDisplayPlanePropertiesKHR::alphaMode instead of+--         VkDisplayPlaneAlphaFlagsKHR, since it only represents one mode.+--+--     -   Added reserved flags bitmask to VkDisplayPlanePropertiesKHR.+--+--     -   Use VkSurfaceTransformFlagBitsKHR instead of obsolete+--         VkSurfaceTransformKHR.+--+--     -   Renamed vkGetDisplayPlaneSupportedDisplaysKHR parameters for+--         clarity.+--+-- -   Revision 22, 2015-12-18 (James Jones)+--+--     -   Added missing \"planeIndex\" parameter to+--         vkGetDisplayPlaneSupportedDisplaysKHR()+--+-- -   Revision 23, 2017-03-13 (James Jones)+--+--     -   Closed all remaining issues. The specification and+--         implementations have been shipping with the proposed resolutions+--         for some time now.+--+--     -   Removed the sample code and noted it has been integrated into+--         the official Vulkan SDK cube demo.+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.DisplayKHR', 'DisplayModeCreateFlagsKHR',+-- 'DisplayModeCreateInfoKHR', 'Vulkan.Extensions.Handles.DisplayModeKHR',+-- 'DisplayModeParametersKHR', 'DisplayModePropertiesKHR',+-- 'DisplayPlaneAlphaFlagBitsKHR', 'DisplayPlaneAlphaFlagsKHR',+-- 'DisplayPlaneCapabilitiesKHR', 'DisplayPlanePropertiesKHR',+-- 'DisplayPropertiesKHR', 'DisplaySurfaceCreateFlagsKHR',+-- 'DisplaySurfaceCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagsKHR',+-- 'createDisplayModeKHR', 'createDisplayPlaneSurfaceKHR',+-- 'getDisplayModePropertiesKHR', 'getDisplayPlaneCapabilitiesKHR',+-- 'getDisplayPlaneSupportedDisplaysKHR',+-- 'getPhysicalDeviceDisplayPlanePropertiesKHR',+-- 'getPhysicalDeviceDisplayPropertiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_display  ( DisplayModeCreateInfoKHR                                          , DisplayModeParametersKHR                                          , DisplayModePropertiesKHR
src/Vulkan/Extensions/VK_KHR_display_swapchain.hs view
@@ -1,4 +1,208 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_display_swapchain - device extension+--+-- == VK_KHR_display_swapchain+--+-- [__Name String__]+--     @VK_KHR_display_swapchain@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     4+--+-- [__Revision__]+--     10+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+--     -   Requires @VK_KHR_display@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_display_swapchain:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-03-13+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Jesse Hall, Google+--+-- == Description+--+-- This extension provides an API to create a swapchain directly on a+-- device’s display without any underlying window system.+--+-- == New Commands+--+-- -   'createSharedSwapchainsKHR'+--+-- == New Structures+--+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':+--+--     -   'DisplayPresentInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME'+--+-- -   'KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DISPLAY_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR'+--+-- == Issues+--+-- 1) Should swapchains sharing images each hold a reference to the images,+-- or should it be up to the application to destroy the swapchains and+-- images in an order that avoids the need for reference counting?+--+-- __RESOLVED__: Take a reference. The lifetime of presentable images is+-- already complex enough.+--+-- 2) Should the @srcRect@ and @dstRect@ parameters be specified as part of+-- the present command, or at swapchain creation time?+--+-- __RESOLVED__: As part of the presentation command. This allows moving+-- and scaling the image on the screen without the need to respecify the+-- mode or create a new swapchain and presentable images.+--+-- 3) Should @srcRect@ and @dstRect@ be specified as rects, or separate+-- offset\/extent values?+--+-- __RESOLVED__: As rects. Specifying them separately might make it easier+-- for hardware to expose support for one but not the other, but in such+-- cases applications must just take care to obey the reported capabilities+-- and not use non-zero offsets or extents that require scaling, as+-- appropriate.+--+-- 4) How can applications create multiple swapchains that use the same+-- images?+--+-- __RESOLVED__: By calling 'createSharedSwapchainsKHR'.+--+-- An earlier resolution used+-- 'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR', chaining+-- multiple 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'+-- structures through @pNext@. In order to allow each swapchain to also+-- allow other extension structs, a level of indirection was used:+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@pNext@+-- pointed to a different structure, which had both @sType@ and @pNext@+-- members for additional extensions, and also had a pointer to the next+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR' structure.+-- The number of swapchains to be created could only be found by walking+-- this linked list of alternating structures, and the @pSwapchains@ out+-- parameter was reinterpreted to be an array of+-- 'Vulkan.Extensions.Handles.SwapchainKHR' handles.+--+-- Another option considered was a method to specify a “shared” swapchain+-- when creating a new swapchain, such that groups of swapchains using the+-- same images could be built up one at a time. This was deemed unusable+-- because drivers need to know all of the displays an image will be used+-- on when determining which internal formats and layouts to use for that+-- image.+--+-- == Examples+--+-- Note+--+-- The example code for the @VK_KHR_display@ and @VK_KHR_display_swapchain@+-- extensions was removed from the appendix after revision 1.0.43. The+-- display swapchain creation example code was ported to the cube demo that+-- is shipped with the official Khronos SDK, and is being kept up-to-date+-- in that location (see:+-- <https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c>).+--+-- == Version History+--+-- -   Revision 1, 2015-07-29 (James Jones)+--+--     -   Initial draft+--+-- -   Revision 2, 2015-08-21 (Ian Elliott)+--+--     -   Renamed this extension and all of its enumerations, types,+--         functions, etc. This makes it compliant with the proposed+--         standard for Vulkan extensions.+--+--     -   Switched from \"revision\" to \"version\", including use of the+--         VK_MAKE_VERSION macro in the header file.+--+-- -   Revision 3, 2015-09-01 (James Jones)+--+--     -   Restore single-field revision number.+--+-- -   Revision 4, 2015-09-08 (James Jones)+--+--     -   Allow creating multiple swap chains that share the same images+--         using a single call to vkCreateSwapChainKHR().+--+-- -   Revision 5, 2015-09-10 (Alon Or-bach)+--+--     -   Removed underscores from SWAP_CHAIN in two enums.+--+-- -   Revision 6, 2015-10-02 (James Jones)+--+--     -   Added support for smart panels\/buffered displays.+--+-- -   Revision 7, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_display_swapchain to+--         VK_KHR_display_swapchain.+--+-- -   Revision 8, 2015-11-03 (Daniel Rakos)+--+--     -   Updated sample code based on the changes to VK_KHR_swapchain.+--+-- -   Revision 9, 2015-11-10 (Jesse Hall)+--+--     -   Replaced VkDisplaySwapchainCreateInfoKHR with+--         vkCreateSharedSwapchainsKHR, changing resolution of issue #4.+--+-- -   Revision 10, 2017-03-13 (James Jones)+--+--     -   Closed all remaining issues. The specification and+--         implementations have been shipping with the proposed resolutions+--         for some time now.+--+--     -   Removed the sample code and noted it has been integrated into+--         the official Vulkan SDK cube demo.+--+-- = See Also+--+-- 'DisplayPresentInfoKHR', 'createSharedSwapchainsKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display_swapchain Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_display_swapchain  ( createSharedSwapchainsKHR                                                    , DisplayPresentInfoKHR(..)                                                    , KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION@@ -37,8 +241,10 @@ import Control.Monad.IO.Class (MonadIO) import Data.String (IsString) import Data.Typeable (Typeable)+import Foreign.Storable (Storable) import Foreign.Storable (Storable(peek)) import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..)) import GHC.Generics (Generic) import GHC.IO.Exception (IOErrorType(..)) import GHC.IO.Exception (IOException(..))@@ -274,22 +480,22 @@  instance ToCStruct DisplayPresentInfoKHR where   withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p DisplayPresentInfoKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Rect2D)) (srcRect) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Rect2D)) (dstRect) . ($ ())-    lift $ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (persistent))-    lift $ f+  pokeCStruct p DisplayPresentInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Rect2D)) (srcRect)+    poke ((p `plusPtr` 32 :: Ptr Rect2D)) (dstRect)+    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (persistent))+    f   cStructSize = 56   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Rect2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Rect2D)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Rect2D)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Rect2D)) (zero)+    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))+    f  instance FromCStruct DisplayPresentInfoKHR where   peekCStruct p = do@@ -298,6 +504,12 @@     persistent <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))     pure $ DisplayPresentInfoKHR              srcRect dstRect (bool32ToBool persistent)++instance Storable DisplayPresentInfoKHR where+  sizeOf ~_ = 56+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())  instance Zero DisplayPresentInfoKHR where   zero = DisplayPresentInfoKHR
src/Vulkan/Extensions/VK_KHR_display_swapchain.hs-boot view
@@ -1,4 +1,208 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_display_swapchain - device extension+--+-- == VK_KHR_display_swapchain+--+-- [__Name String__]+--     @VK_KHR_display_swapchain@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     4+--+-- [__Revision__]+--     10+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+--     -   Requires @VK_KHR_display@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_display_swapchain:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-03-13+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Jesse Hall, Google+--+-- == Description+--+-- This extension provides an API to create a swapchain directly on a+-- device’s display without any underlying window system.+--+-- == New Commands+--+-- -   'createSharedSwapchainsKHR'+--+-- == New Structures+--+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':+--+--     -   'DisplayPresentInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME'+--+-- -   'KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DISPLAY_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR'+--+-- == Issues+--+-- 1) Should swapchains sharing images each hold a reference to the images,+-- or should it be up to the application to destroy the swapchains and+-- images in an order that avoids the need for reference counting?+--+-- __RESOLVED__: Take a reference. The lifetime of presentable images is+-- already complex enough.+--+-- 2) Should the @srcRect@ and @dstRect@ parameters be specified as part of+-- the present command, or at swapchain creation time?+--+-- __RESOLVED__: As part of the presentation command. This allows moving+-- and scaling the image on the screen without the need to respecify the+-- mode or create a new swapchain and presentable images.+--+-- 3) Should @srcRect@ and @dstRect@ be specified as rects, or separate+-- offset\/extent values?+--+-- __RESOLVED__: As rects. Specifying them separately might make it easier+-- for hardware to expose support for one but not the other, but in such+-- cases applications must just take care to obey the reported capabilities+-- and not use non-zero offsets or extents that require scaling, as+-- appropriate.+--+-- 4) How can applications create multiple swapchains that use the same+-- images?+--+-- __RESOLVED__: By calling 'createSharedSwapchainsKHR'.+--+-- An earlier resolution used+-- 'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR', chaining+-- multiple 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'+-- structures through @pNext@. In order to allow each swapchain to also+-- allow other extension structs, a level of indirection was used:+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@pNext@+-- pointed to a different structure, which had both @sType@ and @pNext@+-- members for additional extensions, and also had a pointer to the next+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR' structure.+-- The number of swapchains to be created could only be found by walking+-- this linked list of alternating structures, and the @pSwapchains@ out+-- parameter was reinterpreted to be an array of+-- 'Vulkan.Extensions.Handles.SwapchainKHR' handles.+--+-- Another option considered was a method to specify a “shared” swapchain+-- when creating a new swapchain, such that groups of swapchains using the+-- same images could be built up one at a time. This was deemed unusable+-- because drivers need to know all of the displays an image will be used+-- on when determining which internal formats and layouts to use for that+-- image.+--+-- == Examples+--+-- Note+--+-- The example code for the @VK_KHR_display@ and @VK_KHR_display_swapchain@+-- extensions was removed from the appendix after revision 1.0.43. The+-- display swapchain creation example code was ported to the cube demo that+-- is shipped with the official Khronos SDK, and is being kept up-to-date+-- in that location (see:+-- <https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c>).+--+-- == Version History+--+-- -   Revision 1, 2015-07-29 (James Jones)+--+--     -   Initial draft+--+-- -   Revision 2, 2015-08-21 (Ian Elliott)+--+--     -   Renamed this extension and all of its enumerations, types,+--         functions, etc. This makes it compliant with the proposed+--         standard for Vulkan extensions.+--+--     -   Switched from \"revision\" to \"version\", including use of the+--         VK_MAKE_VERSION macro in the header file.+--+-- -   Revision 3, 2015-09-01 (James Jones)+--+--     -   Restore single-field revision number.+--+-- -   Revision 4, 2015-09-08 (James Jones)+--+--     -   Allow creating multiple swap chains that share the same images+--         using a single call to vkCreateSwapChainKHR().+--+-- -   Revision 5, 2015-09-10 (Alon Or-bach)+--+--     -   Removed underscores from SWAP_CHAIN in two enums.+--+-- -   Revision 6, 2015-10-02 (James Jones)+--+--     -   Added support for smart panels\/buffered displays.+--+-- -   Revision 7, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_display_swapchain to+--         VK_KHR_display_swapchain.+--+-- -   Revision 8, 2015-11-03 (Daniel Rakos)+--+--     -   Updated sample code based on the changes to VK_KHR_swapchain.+--+-- -   Revision 9, 2015-11-10 (Jesse Hall)+--+--     -   Replaced VkDisplaySwapchainCreateInfoKHR with+--         vkCreateSharedSwapchainsKHR, changing resolution of issue #4.+--+-- -   Revision 10, 2017-03-13 (James Jones)+--+--     -   Closed all remaining issues. The specification and+--         implementations have been shipping with the proposed resolutions+--         for some time now.+--+--     -   Removed the sample code and noted it has been integrated into+--         the official Vulkan SDK cube demo.+--+-- = See Also+--+-- 'DisplayPresentInfoKHR', 'createSharedSwapchainsKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display_swapchain Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_display_swapchain  (DisplayPresentInfoKHR) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_KHR_draw_indirect_count.hs view
@@ -1,4 +1,112 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_draw_indirect_count - device extension+--+-- == VK_KHR_draw_indirect_count+--+-- [__Name String__]+--     @VK_KHR_draw_indirect_count@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     170+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_draw_indirect_count:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-08-25+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Derrick Owens, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Dominik Witczak, AMD+--+--     -   Piers Daniell, NVIDIA+--+-- == Description+--+-- This extension is based off the @VK_AMD_draw_indirect_count@ extension.+-- This extension allows an application to source the number of draw calls+-- for indirect draw calls from a buffer.+--+-- Applications might want to do culling on the GPU via a compute shader+-- prior to the draw. This enables the application to generate arbitrary+-- amounts of draw commands and execute them without host intervention.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. However, if Vulkan 1.2 is supported and this+-- extension is not, the entry points+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount'+-- and+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount'+-- are optional. The original type, enum and command names are still+-- available as aliases of the core functionality.+--+-- == New Commands+--+-- -   'cmdDrawIndexedIndirectCountKHR'+--+-- -   'cmdDrawIndirectCountKHR'+--+-- == New Enum Constants+--+-- -   'KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME'+--+-- -   'KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 1, 2017-08-25 (Piers Daniell)+--+--     -   Initial draft based off VK_AMD_draw_indirect_count+--+-- = See Also+--+-- 'cmdDrawIndexedIndirectCountKHR', 'cmdDrawIndirectCountKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_draw_indirect_count Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_draw_indirect_count  ( cmdDrawIndirectCountKHR                                                      , cmdDrawIndexedIndirectCountKHR                                                      , KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION
src/Vulkan/Extensions/VK_KHR_driver_properties.hs view
@@ -1,4 +1,151 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_driver_properties - device extension+--+-- == VK_KHR_driver_properties+--+-- [__Name String__]+--     @VK_KHR_driver_properties@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     197+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Daniel Rakos+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_driver_properties:%20&body=@drakos-amd%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-04-11+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Baldur Karlsson+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Piers Daniell, NVIDIA+--+--     -   Alexander Galazin, Arm+--+--     -   Jesse Hall, Google+--+--     -   Daniel Rakos, AMD+--+-- == Description+--+-- This extension provides a new physical device query which allows+-- retrieving information about the driver implementation, allowing+-- applications to determine which physical device corresponds to which+-- particular vendor’s driver, and which conformance test suite version the+-- driver implementation is compliant with.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   'ConformanceVersionKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceDriverPropertiesKHR'+--+-- == New Enums+--+-- -   'DriverIdKHR'+--+-- == New Enum Constants+--+-- -   'KHR_DRIVER_PROPERTIES_EXTENSION_NAME'+--+-- -   'KHR_DRIVER_PROPERTIES_SPEC_VERSION'+--+-- -   'Vulkan.Core10.APIConstants.MAX_DRIVER_INFO_SIZE_KHR'+--+-- -   'Vulkan.Core10.APIConstants.MAX_DRIVER_NAME_SIZE_KHR'+--+-- -   Extending 'Vulkan.Core12.Enums.DriverId.DriverId':+--+--     -   'DRIVER_ID_AMD_OPEN_SOURCE_KHR'+--+--     -   'DRIVER_ID_AMD_PROPRIETARY_KHR'+--+--     -   'DRIVER_ID_ARM_PROPRIETARY_KHR'+--+--     -   'DRIVER_ID_BROADCOM_PROPRIETARY_KHR'+--+--     -   'DRIVER_ID_GGP_PROPRIETARY_KHR'+--+--     -   'DRIVER_ID_GOOGLE_SWIFTSHADER_KHR'+--+--     -   'DRIVER_ID_IMAGINATION_PROPRIETARY_KHR'+--+--     -   'DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR'+--+--     -   'DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR'+--+--     -   'DRIVER_ID_MESA_RADV_KHR'+--+--     -   'DRIVER_ID_NVIDIA_PROPRIETARY_KHR'+--+--     -   'DRIVER_ID_QUALCOMM_PROPRIETARY_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR'+--+-- == Version History+--+-- -   Revision 1, 2018-04-11 (Daniel Rakos)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'Vulkan.Core10.APIConstants.MAX_DRIVER_INFO_SIZE_KHR',+-- 'Vulkan.Core10.APIConstants.MAX_DRIVER_NAME_SIZE_KHR',+-- 'ConformanceVersionKHR', 'DriverIdKHR',+-- 'PhysicalDeviceDriverPropertiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_driver_properties Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_driver_properties  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR                                                    , pattern DRIVER_ID_AMD_PROPRIETARY_KHR                                                    , pattern DRIVER_ID_AMD_OPEN_SOURCE_KHR
src/Vulkan/Extensions/VK_KHR_external_fence.hs view
@@ -1,4 +1,128 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_fence - device extension+--+-- == VK_KHR_external_fence+--+-- [__Name String__]+--     @VK_KHR_external_fence@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     114+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_fence_capabilities@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_fence:%20&body=@critsec%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-05-08+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Cass Everitt, Oculus+--+--     -   Contributors to @VK_KHR_external_semaphore@+--+-- == Description+--+-- An application using external memory may wish to synchronize access to+-- that memory using fences. This extension enables an application to+-- create fences from which non-Vulkan handles that reference the+-- underlying synchronization primitive can be exported.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Fence.FenceCreateInfo':+--+--     -   'ExportFenceCreateInfoKHR'+--+-- == New Enums+--+-- -   'FenceImportFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'FenceImportFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_FENCE_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_FENCE_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core11.Enums.FenceImportFlagBits.FenceImportFlagBits':+--+--     -   'FENCE_IMPORT_TEMPORARY_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR'+--+-- == Issues+--+-- This extension borrows concepts, semantics, and language from+-- @VK_KHR_external_semaphore@. That extension’s issues apply equally to+-- this extension.+--+-- == Version History+--+-- -   Revision 1, 2017-05-08 (Jesse Hall)+--+--     -   Initial revision+--+-- = See Also+--+-- 'ExportFenceCreateInfoKHR', 'FenceImportFlagBitsKHR',+-- 'FenceImportFlagsKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_fence  ( pattern STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR                                                 , pattern FENCE_IMPORT_TEMPORARY_BIT_KHR                                                 , FenceImportFlagsKHR
src/Vulkan/Extensions/VK_KHR_external_fence_capabilities.hs view
@@ -1,4 +1,160 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_fence_capabilities - instance extension+--+-- == VK_KHR_external_fence_capabilities+--+-- [__Name String__]+--     @VK_KHR_external_fence_capabilities@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     113+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_fence_capabilities:%20&body=@critsec%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-05-08+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Cass Everitt, Oculus+--+--     -   Contributors to @VK_KHR_external_semaphore_capabilities@+--+-- == Description+--+-- An application may wish to reference device fences in multiple Vulkan+-- logical devices or instances, in multiple processes, and\/or in multiple+-- APIs. This extension provides a set of capability queries and handle+-- definitions that allow an application to determine what types of+-- “external” fence handles an implementation supports for a given set of+-- use cases.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Commands+--+-- -   'getPhysicalDeviceExternalFencePropertiesKHR'+--+-- == New Structures+--+-- -   'ExternalFencePropertiesKHR'+--+-- -   'PhysicalDeviceExternalFenceInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'Vulkan.Extensions.VK_KHR_external_memory_capabilities.PhysicalDeviceIDPropertiesKHR'+--+-- == New Enums+--+-- -   'ExternalFenceFeatureFlagBitsKHR'+--+-- -   'ExternalFenceHandleTypeFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'ExternalFenceFeatureFlagsKHR'+--+-- -   'ExternalFenceHandleTypeFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION'+--+-- -   'Vulkan.Core10.APIConstants.LUID_SIZE_KHR'+--+-- -   Extending+--     'Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits.ExternalFenceFeatureFlagBits':+--+--     -   'EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR'+--+--     -   'EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits':+--+--     -   'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR'+--+--     -   'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR'+--+--     -   'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR'+--+--     -   'EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR'+--+--     -   'Vulkan.Extensions.VK_KHR_external_memory_capabilities.STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR'+--+-- == Version History+--+-- -   Revision 1, 2017-05-08 (Jesse Hall)+--+--     -   Initial version+--+-- = See Also+--+-- 'Vulkan.Core10.APIConstants.LUID_SIZE_KHR',+-- 'ExternalFenceFeatureFlagBitsKHR', 'ExternalFenceFeatureFlagsKHR',+-- 'ExternalFenceHandleTypeFlagBitsKHR', 'ExternalFenceHandleTypeFlagsKHR',+-- 'ExternalFencePropertiesKHR', 'PhysicalDeviceExternalFenceInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_external_memory_capabilities.PhysicalDeviceIDPropertiesKHR',+-- 'getPhysicalDeviceExternalFencePropertiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_capabilities Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_fence_capabilities  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR                                                              , pattern STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR                                                              , pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR
src/Vulkan/Extensions/VK_KHR_external_fence_fd.hs view
@@ -1,4 +1,108 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_fence_fd - device extension+--+-- == VK_KHR_external_fence_fd+--+-- [__Name String__]+--     @VK_KHR_external_fence_fd@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     116+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_fence@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_fence_fd:%20&body=@critsec%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-05-08+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Cass Everitt, Oculus+--+--     -   Contributors to @VK_KHR_external_semaphore_fd@+--+-- == Description+--+-- An application using external memory may wish to synchronize access to+-- that memory using fences. This extension enables an application to+-- export fence payload to and import fence payload from POSIX file+-- descriptors.+--+-- == New Commands+--+-- -   'getFenceFdKHR'+--+-- -   'importFenceFdKHR'+--+-- == New Structures+--+-- -   'FenceGetFdInfoKHR'+--+-- -   'ImportFenceFdInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_FENCE_FD_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR'+--+-- == Issues+--+-- This extension borrows concepts, semantics, and language from+-- @VK_KHR_external_semaphore_fd@. That extension’s issues apply equally to+-- this extension.+--+-- == Version History+--+-- -   Revision 1, 2017-05-08 (Jesse Hall)+--+--     -   Initial revision+--+-- = See Also+--+-- 'FenceGetFdInfoKHR', 'ImportFenceFdInfoKHR', 'getFenceFdKHR',+-- 'importFenceFdKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_fd Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_fence_fd  ( getFenceFdKHR                                                    , importFenceFdKHR                                                    , ImportFenceFdInfoKHR(..)
src/Vulkan/Extensions/VK_KHR_external_fence_fd.hs-boot view
@@ -1,4 +1,108 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_fence_fd - device extension+--+-- == VK_KHR_external_fence_fd+--+-- [__Name String__]+--     @VK_KHR_external_fence_fd@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     116+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_fence@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_fence_fd:%20&body=@critsec%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-05-08+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Cass Everitt, Oculus+--+--     -   Contributors to @VK_KHR_external_semaphore_fd@+--+-- == Description+--+-- An application using external memory may wish to synchronize access to+-- that memory using fences. This extension enables an application to+-- export fence payload to and import fence payload from POSIX file+-- descriptors.+--+-- == New Commands+--+-- -   'getFenceFdKHR'+--+-- -   'importFenceFdKHR'+--+-- == New Structures+--+-- -   'FenceGetFdInfoKHR'+--+-- -   'ImportFenceFdInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_FENCE_FD_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR'+--+-- == Issues+--+-- This extension borrows concepts, semantics, and language from+-- @VK_KHR_external_semaphore_fd@. That extension’s issues apply equally to+-- this extension.+--+-- == Version History+--+-- -   Revision 1, 2017-05-08 (Jesse Hall)+--+--     -   Initial revision+--+-- = See Also+--+-- 'FenceGetFdInfoKHR', 'ImportFenceFdInfoKHR', 'getFenceFdKHR',+-- 'importFenceFdKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_fd Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_fence_fd  ( FenceGetFdInfoKHR                                                    , ImportFenceFdInfoKHR                                                    ) where
src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs view
@@ -1,4 +1,127 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_fence_win32 - device extension+--+-- == VK_KHR_external_fence_win32+--+-- [__Name String__]+--     @VK_KHR_external_fence_win32@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     115+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_fence@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_fence_win32:%20&body=@critsec%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-05-08+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Cass Everitt, Oculus+--+--     -   Contributors to @VK_KHR_external_semaphore_win32@+--+-- == Description+--+-- An application using external memory may wish to synchronize access to+-- that memory using fences. This extension enables an application to+-- export fence payload to and import fence payload from Windows handles.+--+-- == New Commands+--+-- -   'getFenceWin32HandleKHR'+--+-- -   'importFenceWin32HandleKHR'+--+-- == New Structures+--+-- -   'FenceGetWin32HandleInfoKHR'+--+-- -   'ImportFenceWin32HandleInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Fence.FenceCreateInfo':+--+--     -   'ExportFenceWin32HandleInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR'+--+-- == Issues+--+-- This extension borrows concepts, semantics, and language from+-- @VK_KHR_external_semaphore_win32@. That extension’s issues apply equally+-- to this extension.+--+-- 1) Should D3D12 fence handle types be supported, like they are for+-- semaphores?+--+-- __RESOLVED__: No. Doing so would require extending the fence signal and+-- wait operations to provide values to signal \/ wait for, like+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.D3D12FenceSubmitInfoKHR'+-- does. A D3D12 fence can be signaled by importing it into a+-- 'Vulkan.Core10.Handles.Semaphore' instead of a+-- 'Vulkan.Core10.Handles.Fence', and applications can check status or wait+-- on the D3D12 fence using non-Vulkan APIs. The convenience of being able+-- to do these operations on 'Vulkan.Core10.Handles.Fence' objects doesn’t+-- justify the extra API complexity.+--+-- == Version History+--+-- -   Revision 1, 2017-05-08 (Jesse Hall)+--+--     -   Initial revision+--+-- = See Also+--+-- 'ExportFenceWin32HandleInfoKHR', 'FenceGetWin32HandleInfoKHR',+-- 'ImportFenceWin32HandleInfoKHR', 'getFenceWin32HandleKHR',+-- 'importFenceWin32HandleKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_win32 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_fence_win32  ( getFenceWin32HandleKHR                                                       , importFenceWin32HandleKHR                                                       , ImportFenceWin32HandleInfoKHR(..)
src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs-boot view
@@ -1,4 +1,127 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_fence_win32 - device extension+--+-- == VK_KHR_external_fence_win32+--+-- [__Name String__]+--     @VK_KHR_external_fence_win32@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     115+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_fence@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_fence_win32:%20&body=@critsec%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-05-08+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Cass Everitt, Oculus+--+--     -   Contributors to @VK_KHR_external_semaphore_win32@+--+-- == Description+--+-- An application using external memory may wish to synchronize access to+-- that memory using fences. This extension enables an application to+-- export fence payload to and import fence payload from Windows handles.+--+-- == New Commands+--+-- -   'getFenceWin32HandleKHR'+--+-- -   'importFenceWin32HandleKHR'+--+-- == New Structures+--+-- -   'FenceGetWin32HandleInfoKHR'+--+-- -   'ImportFenceWin32HandleInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Fence.FenceCreateInfo':+--+--     -   'ExportFenceWin32HandleInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR'+--+-- == Issues+--+-- This extension borrows concepts, semantics, and language from+-- @VK_KHR_external_semaphore_win32@. That extension’s issues apply equally+-- to this extension.+--+-- 1) Should D3D12 fence handle types be supported, like they are for+-- semaphores?+--+-- __RESOLVED__: No. Doing so would require extending the fence signal and+-- wait operations to provide values to signal \/ wait for, like+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.D3D12FenceSubmitInfoKHR'+-- does. A D3D12 fence can be signaled by importing it into a+-- 'Vulkan.Core10.Handles.Semaphore' instead of a+-- 'Vulkan.Core10.Handles.Fence', and applications can check status or wait+-- on the D3D12 fence using non-Vulkan APIs. The convenience of being able+-- to do these operations on 'Vulkan.Core10.Handles.Fence' objects doesn’t+-- justify the extra API complexity.+--+-- == Version History+--+-- -   Revision 1, 2017-05-08 (Jesse Hall)+--+--     -   Initial revision+--+-- = See Also+--+-- 'ExportFenceWin32HandleInfoKHR', 'FenceGetWin32HandleInfoKHR',+-- 'ImportFenceWin32HandleInfoKHR', 'getFenceWin32HandleKHR',+-- 'importFenceWin32HandleKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_win32 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_fence_win32  ( ExportFenceWin32HandleInfoKHR                                                       , FenceGetWin32HandleInfoKHR                                                       , ImportFenceWin32HandleInfoKHR
src/Vulkan/Extensions/VK_KHR_external_memory.hs view
@@ -1,4 +1,341 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_memory - device extension+--+-- == VK_KHR_external_memory+--+-- [__Name String__]+--     @VK_KHR_external_memory@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     73+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_memory_capabilities@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_memory:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-20+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Interacts with @VK_KHR_dedicated_allocation@.+--+--     -   Interacts with @VK_NV_dedicated_allocation@.+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Jason Ekstrand, Intel+--+--     -   Ian Elliot, Google+--+--     -   Jesse Hall, Google+--+--     -   Tobias Hector, Imagination Technologies+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Matthew Netsch, Qualcomm Technologies, Inc.+--+--     -   Daniel Rakos, AMD+--+--     -   Carsten Rohde, NVIDIA+--+--     -   Ray Smith, ARM+--+--     -   Chad Versace, Google+--+-- == Description+--+-- An application may wish to reference device memory in multiple Vulkan+-- logical devices or instances, in multiple processes, and\/or in multiple+-- APIs. This extension enables an application to export non-Vulkan handles+-- from Vulkan memory objects such that the underlying resources can be+-- referenced outside the scope of the Vulkan logical device that created+-- them.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Buffer.BufferCreateInfo':+--+--     -   'ExternalMemoryBufferCreateInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo':+--+--     -   'ExternalMemoryImageCreateInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'ExportMemoryAllocateInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_MEMORY_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_MEMORY_SPEC_VERSION'+--+-- -   'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'ERROR_INVALID_EXTERNAL_HANDLE_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) How do applications correlate two physical devices across process or+-- Vulkan instance boundaries?+--+-- __RESOLVED__: New device ID fields have been introduced by+-- @VK_KHR_external_memory_capabilities@. These fields, combined with the+-- existing+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@driverVersion@+-- field can be used to identify compatible devices across processes,+-- drivers, and APIs.+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@pipelineCacheUUID@+-- is not sufficient for this purpose because despite its description in+-- the specification, it need only identify a unique pipeline cache format+-- in practice. Multiple devices may be able to use the same pipeline cache+-- data, and hence it would be desirable for all of them to have the same+-- pipeline cache UUID. However, only the same concrete physical device can+-- be used when sharing memory, so an actual unique device ID was+-- introduced. Further, the pipeline cache UUID was specific to Vulkan, but+-- correlation with other, non-extensible APIs is required to enable+-- interoperation with those APIs.+--+-- 2) If memory objects are shared between processes and APIs, is this+-- considered aliasing according to the rules outlined in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>+-- section?+--+-- __RESOLVED__: Yes. Applications must take care to obey all restrictions+-- imposed on aliased resources when using memory across multiple Vulkan+-- instances or other APIs.+--+-- 3) Are new image layouts or metadata required to specify image layouts+-- and layout transitions compatible with non-Vulkan APIs, or with other+-- instances of the same Vulkan driver?+--+-- __RESOLVED__: Separate instances of the same Vulkan driver running on+-- the same GPU should have identical internal layout semantics, so+-- applications have the tools they need to ensure views of images are+-- consistent between the two instances. Other APIs will fall into two+-- categories: Those that are Vulkan- compatible, and those that are+-- Vulkan-incompatible. Vulkan-incompatible APIs will require the image to+-- be in the GENERAL layout whenever they are accessing them.+--+-- Note this does not attempt to address cross-device transitions, nor+-- transitions to engines on the same device which are not visible within+-- the Vulkan API. Both of these are beyond the scope of this extension.+--+-- 4) Is a new barrier flag or operation of some type needed to prepare+-- external memory for handoff to another Vulkan instance or API and\/or+-- receive it from another instance or API?+--+-- __RESOLVED__: Yes. Some implementations need to perform additional cache+-- management when transitioning memory between address spaces, and other+-- APIs, instances, or processes may operate in a separate address space.+-- Options for defining this transition include:+--+-- -   A new structure that can be added to the @pNext@ list in+--     'Vulkan.Core10.OtherTypes.MemoryBarrier',+--     'Vulkan.Core10.OtherTypes.BufferMemoryBarrier', and+--     'Vulkan.Core10.OtherTypes.ImageMemoryBarrier'.+--+-- -   A new bit in 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlags' that+--     can be set to indicate an “external” access.+--+-- -   A new bit in+--     'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+--+-- -   A new special queue family that represents an “external” queue.+--+-- A new structure has the advantage that the type of external transition+-- can be described in as much detail as necessary. However, there is not+-- currently a known need for anything beyond differentiating between+-- external and internal accesses, so this is likely an over-engineered+-- solution. The access flag bit has the advantage that it can be applied+-- at buffer, image, or global granularity, and semantically it maps pretty+-- well to the operation being described. Additionally, the API already+-- includes 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_MEMORY_READ_BIT' and+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_MEMORY_WRITE_BIT' which+-- appear to be intended for this purpose. However, there is no obvious+-- pipeline stage that would correspond to an external access, and+-- therefore no clear way to use+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_MEMORY_READ_BIT' or+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_MEMORY_WRITE_BIT'.+-- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags' and+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags' operate+-- at command granularity rather than image or buffer granularity, which+-- would make an entire pipeline barrier an internal→external or+-- external→internal barrier. This may not be a problem in practice, but+-- seems like the wrong scope. Another downside of+-- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags' is that it+-- lacks inherent directionality: There are not @src@ and @dst@ variants of+-- it in the barrier or dependency description semantics, so two bits might+-- need to be added to describe both internal→external and+-- external→internal transitions. Transitioning a resource to a special+-- queue family corresponds well with the operation of transitioning to a+-- separate Vulkan instance, in that both operations ideally include+-- scheduling a barrier on both sides of the transition: Both the releasing+-- and the acquiring queue or process. Using a special queue family+-- requires adding an additional reserved queue family index. Re-using+-- 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED' would have left it+-- unclear how to transition a concurrent usage resource from one process+-- to another, since the semantics would have likely been equivalent to the+-- currently-ignored transition of+-- 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED' → 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'.+-- Fortunately, creating a new reserved queue family index is not invasive.+--+-- Based on the above analysis, the approach of transitioning to a special+-- “external” queue family was chosen.+--+-- 5) Do internal driver memory arrangements and\/or other internal driver+-- image properties need to be exported and imported when sharing images+-- across processes or APIs.+--+-- __RESOLVED__: Some vendors claim this is necessary on their+-- implementations, but it was determined that the security risks of+-- allowing opaque meta data to be passed from applications to the driver+-- were too high. Therefore, implementations which require metadata will+-- need to associate it with the objects represented by the external+-- handles, and rely on the dedicated allocation mechanism to associate the+-- exported and imported memory objects with a single image or buffer.+--+-- 6) Most prior interoperation and cross-process sharing APIs have been+-- based on image-level sharing. Should Vulkan sharing be based on+-- memory-object sharing or image sharing?+--+-- __RESOLVED__: These extensions have assumed memory-level sharing is the+-- correct granularity. Vulkan is a lower-level API than most prior APIs,+-- and as such attempts to closely align with to the underlying primitives+-- of the hardware and system-level drivers it abstracts. In general, the+-- resource that holds the backing store for both images and buffers of+-- various types is memory. Images and buffers are merely metadata+-- containing brief descriptions of the layout of bits within that memory.+--+-- Because memory object-based sharing is aligned with the overall Vulkan+-- API design, it exposes the full power of Vulkan on external objects.+-- External memory can be used as backing for sparse images, for example,+-- whereas such usage would be awkward at best with a sharing mechanism+-- based on higher-level primitives such as images. Further, aligning the+-- mechanism with the API in this way provides some hope of trivial+-- compatibility with future API enhancements. If new objects backed by+-- memory objects are added to the API, they too can be used across+-- processes with minimal additions to the base external memory APIs.+--+-- Earlier APIs implemented interop at a higher level, and this+-- necessitated entirely separate sharing APIs for images and buffers. To+-- co-exist and interoperate with those APIs, the Vulkan external sharing+-- mechanism must accommodate their model. However, if it can be agreed+-- that memory-based sharing is the more desirable and forward-looking+-- design, legacy interoperation considerations can be considered another+-- reason to favor memory-based sharing: While native and legacy driver+-- primitives that may be used to implement sharing may not be as low-level+-- as the API here suggests, raw memory is still the least common+-- denominator among the types. Image-based sharing can be cleanly derived+-- from a set of base memory- object sharing APIs with minimal effort,+-- whereas image-based sharing does not generalize well to buffer or+-- raw-memory sharing. Therefore, following the general Vulkan design+-- principle of minimalism, it is better to expose even interopability with+-- image-based native and external primitives via the memory sharing API,+-- and place sufficient limits on their usage to ensure they can be used+-- only as backing for equivalent Vulkan images. This provides a consistent+-- API for applications regardless of which platform or external API they+-- are targeting, which makes development of multi-API and multi-platform+-- applications simpler.+--+-- 7) Should Vulkan define a common external handle type and provide Vulkan+-- functions to facilitate cross-process sharing of such handles rather+-- than relying on native handles to define the external objects?+--+-- __RESOLVED__: No. Cross-process sharing of resources is best left to+-- native platforms. There are myriad security and extensibility issues+-- with such a mechanism, and attempting to re-solve all those issues+-- within Vulkan does not align with Vulkan’s purpose as a graphics API. If+-- desired, such a mechanism could be built as a layer or helper library on+-- top of the opaque native handle defined in this family of extensions.+--+-- 8) Must implementations provide additional guarantees about state+-- implicitly included in memory objects for those memory objects that may+-- be exported?+--+-- __RESOLVED__: Implementations must ensure that sharing memory objects+-- does not transfer any information between the exporting and importing+-- instances and APIs other than that required to share the data contained+-- in the memory objects explicitly shared. As specific examples, data from+-- previously freed memory objects that used the same underlying physical+-- memory, and data from memory obects using adjacent physical memory must+-- not be visible to applications importing an exported memory object.+--+-- 9) Must implementations validate external handles the application+-- provides as input to memory import operations?+--+-- __RESOLVED__: Implementations must return an error to the application if+-- the provided memory handle cannot be used to complete the requested+-- import operation. However, implementations need not validate handles are+-- of the exact type specified by the application.+--+-- == Version History+--+-- -   Revision 1, 2016-10-20 (James Jones)+--+--     -   Initial version+--+-- = See Also+--+-- 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_EXTERNAL_KHR',+-- 'ExportMemoryAllocateInfoKHR', 'ExternalMemoryBufferCreateInfoKHR',+-- 'ExternalMemoryImageCreateInfoKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_memory  ( pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR                                                  , pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR                                                  , pattern STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR
src/Vulkan/Extensions/VK_KHR_external_memory_capabilities.hs view
@@ -1,4 +1,246 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_memory_capabilities - instance extension+--+-- == VK_KHR_external_memory_capabilities+--+-- [__Name String__]+--     @VK_KHR_external_memory_capabilities@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     72+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_memory_capabilities:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-17+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Interacts with @VK_KHR_dedicated_allocation@.+--+--     -   Interacts with @VK_NV_dedicated_allocation@.+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Ian Elliot, Google+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+-- == Description+--+-- An application may wish to reference device memory in multiple Vulkan+-- logical devices or instances, in multiple processes, and\/or in multiple+-- APIs. This extension provides a set of capability queries and handle+-- definitions that allow an application to determine what types of+-- “external” memory handles an implementation supports for a given set of+-- use cases.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Commands+--+-- -   'getPhysicalDeviceExternalBufferPropertiesKHR'+--+-- == New Structures+--+-- -   'ExternalBufferPropertiesKHR'+--+-- -   'ExternalMemoryPropertiesKHR'+--+-- -   'PhysicalDeviceExternalBufferInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2':+--+--     -   'ExternalImageFormatPropertiesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2':+--+--     -   'PhysicalDeviceExternalImageFormatInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceIDPropertiesKHR'+--+-- == New Enums+--+-- -   'ExternalMemoryFeatureFlagBitsKHR'+--+-- -   'ExternalMemoryHandleTypeFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'ExternalMemoryFeatureFlagsKHR'+--+-- -   'ExternalMemoryHandleTypeFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION'+--+-- -   'Vulkan.Core10.APIConstants.LUID_SIZE_KHR'+--+-- -   Extending+--     'Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits.ExternalMemoryFeatureFlagBits':+--+--     -   'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR'+--+--     -   'EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR'+--+--     -   'EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits':+--+--     -   'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR'+--+--     -   'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR'+--+--     -   'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR'+--+--     -   'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR'+--+--     -   'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR'+--+--     -   'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR'+--+--     -   'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR'+--+--     -   'STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR'+--+-- == Issues+--+-- 1) Why do so many external memory capabilities need to be queried on a+-- per-memory-handle-type basis?+--+-- __PROPOSED RESOLUTION__: This is because some handle types are based on+-- OS-native objects that have far more limited capabilities than the very+-- generic Vulkan memory objects. Not all memory handle types can name+-- memory objects that support 3D images, for example. Some handle types+-- cannot even support the deferred image and memory binding behavior of+-- Vulkan and require specifying the image when allocating or importing the+-- memory object.+--+-- 2) Do the 'ExternalImageFormatPropertiesKHR' and+-- 'ExternalBufferPropertiesKHR' structs need to include a list of memory+-- type bits that support the given handle type?+--+-- __PROPOSED RESOLUTION__: No. The memory types that don’t support the+-- handle types will simply be filtered out of the results returned by+-- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements' and+-- 'Vulkan.Core10.MemoryManagement.getBufferMemoryRequirements' when a set+-- of handle types was specified at image or buffer creation time.+--+-- 3) Should the non-opaque handle types be moved to their own extension?+--+-- __PROPOSED RESOLUTION__: Perhaps. However, defining the handle type bits+-- does very little and does not require any platform-specific types on its+-- own, and it’s easier to maintain the bitfield values in a single+-- extension for now. Presumably more handle types could be added by+-- separate extensions though, and it would be midly weird to have some+-- platform-specific ones defined in the core spec and some in extensions+--+-- 4) Do we need a @D3D11_TILEPOOL@ type?+--+-- __PROPOSED RESOLUTION__: No. This is technically possible, but the+-- synchronization is awkward. D3D11 surfaces must be synchronized using+-- shared mutexes, and these synchronization primitives are shared by the+-- entire memory object, so D3D11 shared allocations divided among multiple+-- buffer and image bindings may be difficult to synchronize.+--+-- 5) Should the Windows 7-compatible handle types be named “KMT” handles+-- or “GLOBAL_SHARE” handles?+--+-- __PROPOSED RESOLUTION__: KMT, simply because it is more concise.+--+-- 6) How do applications identify compatible devices and drivers across+-- instance, process, and API boundaries when sharing memory?+--+-- __PROPOSED RESOLUTION__: New device properties are exposed that allow+-- applications to correctly correlate devices and drivers. A device and+-- driver UUID that must both match to ensure sharing compatibility between+-- two Vulkan instances, or a Vulkan instance and an extensible external+-- API are added. To allow correlating with Direct3D devices, a device LUID+-- is added that corresponds to a DXGI adapter LUID. A driver ID is not+-- needed for Direct3D because mismatched driver component versions are not+-- a currently supported configuration on the Windows OS. Should support+-- for such configurations be introduced at the OS level, further Vulkan+-- extensions would be needed to correlate userspace component builds.+--+-- == Version History+--+-- -   Revision 1, 2016-10-17 (James Jones)+--+--     -   Initial version+--+-- = See Also+--+-- 'Vulkan.Core10.APIConstants.LUID_SIZE_KHR',+-- 'ExternalBufferPropertiesKHR', 'ExternalImageFormatPropertiesKHR',+-- 'ExternalMemoryFeatureFlagBitsKHR', 'ExternalMemoryFeatureFlagsKHR',+-- 'ExternalMemoryHandleTypeFlagBitsKHR',+-- 'ExternalMemoryHandleTypeFlagsKHR', 'ExternalMemoryPropertiesKHR',+-- 'PhysicalDeviceExternalBufferInfoKHR',+-- 'PhysicalDeviceExternalImageFormatInfoKHR',+-- 'PhysicalDeviceIDPropertiesKHR',+-- 'getPhysicalDeviceExternalBufferPropertiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_capabilities Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_memory_capabilities  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR                                                               , pattern STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR                                                               , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR
src/Vulkan/Extensions/VK_KHR_external_memory_fd.hs view
@@ -1,4 +1,129 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_memory_fd - device extension+--+-- == VK_KHR_external_memory_fd+--+-- [__Name String__]+--     @VK_KHR_external_memory_fd@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     75+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_memory@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_memory_fd:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+-- == Description+--+-- An application may wish to reference device memory in multiple Vulkan+-- logical devices or instances, in multiple processes, and\/or in multiple+-- APIs. This extension enables an application to export POSIX file+-- descriptor handles from Vulkan memory objects and to import Vulkan+-- memory objects from POSIX file descriptor handles exported from other+-- Vulkan memory objects or from similar resources in other APIs.+--+-- == New Commands+--+-- -   'getMemoryFdKHR'+--+-- -   'getMemoryFdPropertiesKHR'+--+-- == New Structures+--+-- -   'MemoryFdPropertiesKHR'+--+-- -   'MemoryGetFdInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'ImportMemoryFdInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR'+--+-- == Issues+--+-- 1) Does the application need to close the file descriptor returned by+-- 'getMemoryFdKHR'?+--+-- __RESOLVED__: Yes, unless it is passed back in to a driver instance to+-- import the memory. A successful get call transfers ownership of the file+-- descriptor to the application, and a successful import transfers it back+-- to the driver. Destroying the original memory object will not close the+-- file descriptor or remove its reference to the underlying memory+-- resource associated with it.+--+-- 2) Do drivers ever need to expose multiple file descriptors per memory+-- object?+--+-- __RESOLVED__: No. This would indicate there are actually multiple memory+-- objects, rather than a single memory object.+--+-- 3) How should the valid size and memory type for POSIX file descriptor+-- memory handles created outside of Vulkan be specified?+--+-- __RESOLVED__: The valid memory types are queried directly from the+-- external handle. The size will be specified by future extensions that+-- introduce such external memory handle types.+--+-- == Version History+--+-- -   Revision 1, 2016-10-21 (James Jones)+--+--     -   Initial revision+--+-- = See Also+--+-- 'ImportMemoryFdInfoKHR', 'MemoryFdPropertiesKHR', 'MemoryGetFdInfoKHR',+-- 'getMemoryFdKHR', 'getMemoryFdPropertiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_fd Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_memory_fd  ( getMemoryFdKHR                                                     , getMemoryFdPropertiesKHR                                                     , ImportMemoryFdInfoKHR(..)
src/Vulkan/Extensions/VK_KHR_external_memory_fd.hs-boot view
@@ -1,4 +1,129 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_memory_fd - device extension+--+-- == VK_KHR_external_memory_fd+--+-- [__Name String__]+--     @VK_KHR_external_memory_fd@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     75+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_memory@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_memory_fd:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+-- == Description+--+-- An application may wish to reference device memory in multiple Vulkan+-- logical devices or instances, in multiple processes, and\/or in multiple+-- APIs. This extension enables an application to export POSIX file+-- descriptor handles from Vulkan memory objects and to import Vulkan+-- memory objects from POSIX file descriptor handles exported from other+-- Vulkan memory objects or from similar resources in other APIs.+--+-- == New Commands+--+-- -   'getMemoryFdKHR'+--+-- -   'getMemoryFdPropertiesKHR'+--+-- == New Structures+--+-- -   'MemoryFdPropertiesKHR'+--+-- -   'MemoryGetFdInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'ImportMemoryFdInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR'+--+-- == Issues+--+-- 1) Does the application need to close the file descriptor returned by+-- 'getMemoryFdKHR'?+--+-- __RESOLVED__: Yes, unless it is passed back in to a driver instance to+-- import the memory. A successful get call transfers ownership of the file+-- descriptor to the application, and a successful import transfers it back+-- to the driver. Destroying the original memory object will not close the+-- file descriptor or remove its reference to the underlying memory+-- resource associated with it.+--+-- 2) Do drivers ever need to expose multiple file descriptors per memory+-- object?+--+-- __RESOLVED__: No. This would indicate there are actually multiple memory+-- objects, rather than a single memory object.+--+-- 3) How should the valid size and memory type for POSIX file descriptor+-- memory handles created outside of Vulkan be specified?+--+-- __RESOLVED__: The valid memory types are queried directly from the+-- external handle. The size will be specified by future extensions that+-- introduce such external memory handle types.+--+-- == Version History+--+-- -   Revision 1, 2016-10-21 (James Jones)+--+--     -   Initial revision+--+-- = See Also+--+-- 'ImportMemoryFdInfoKHR', 'MemoryFdPropertiesKHR', 'MemoryGetFdInfoKHR',+-- 'getMemoryFdKHR', 'getMemoryFdPropertiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_fd Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_memory_fd  ( ImportMemoryFdInfoKHR                                                     , MemoryFdPropertiesKHR                                                     , MemoryGetFdInfoKHR
src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs view
@@ -1,4 +1,140 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_memory_win32 - device extension+--+-- == VK_KHR_external_memory_win32+--+-- [__Name String__]+--     @VK_KHR_external_memory_win32@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     74+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_memory@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_memory_win32:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- An application may wish to reference device memory in multiple Vulkan+-- logical devices or instances, in multiple processes, and\/or in multiple+-- APIs. This extension enables an application to export Windows handles+-- from Vulkan memory objects and to import Vulkan memory objects from+-- Windows handles exported from other Vulkan memory objects or from+-- similar resources in other APIs.+--+-- == New Commands+--+-- -   'getMemoryWin32HandleKHR'+--+-- -   'getMemoryWin32HandlePropertiesKHR'+--+-- == New Structures+--+-- -   'MemoryGetWin32HandleInfoKHR'+--+-- -   'MemoryWin32HandlePropertiesKHR'+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'ExportMemoryWin32HandleInfoKHR'+--+--     -   'ImportMemoryWin32HandleInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR'+--+-- == Issues+--+-- 1) Do applications need to call @CloseHandle@() on the values returned+-- from 'getMemoryWin32HandleKHR' when @handleType@ is+-- 'Vulkan.Extensions.VK_KHR_external_memory_capabilities.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR'?+--+-- __RESOLVED__: Yes, unless it is passed back in to another driver+-- instance to import the object. A successful get call transfers ownership+-- of the handle to the application. Destroying the memory object will not+-- destroy the handle or the handle’s reference to the underlying memory+-- resource.+--+-- 2) Should the language regarding KMT\/Windows 7 handles be moved to a+-- separate extension so that it can be deprecated over time?+--+-- __RESOLVED__: No. Support for them can be deprecated by drivers if they+-- choose, by no longer returning them in the supported handle types of the+-- instance level queries.+--+-- 3) How should the valid size and memory type for windows memory handles+-- created outside of Vulkan be specified?+--+-- __RESOLVED__: The valid memory types are queried directly from the+-- external handle. The size is determined by the associated image or+-- buffer memory requirements for external handle types that require+-- dedicated allocations, and by the size specified when creating the+-- object from which the handle was exported for other external handle+-- types.+--+-- == Version History+--+-- -   Revision 1, 2016-10-21 (James Jones)+--+--     -   Initial revision+--+-- = See Also+--+-- 'ExportMemoryWin32HandleInfoKHR', 'ImportMemoryWin32HandleInfoKHR',+-- 'MemoryGetWin32HandleInfoKHR', 'MemoryWin32HandlePropertiesKHR',+-- 'getMemoryWin32HandleKHR', 'getMemoryWin32HandlePropertiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_win32 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_memory_win32  ( getMemoryWin32HandleKHR                                                        , getMemoryWin32HandlePropertiesKHR                                                        , ImportMemoryWin32HandleInfoKHR(..)
src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs-boot view
@@ -1,4 +1,140 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_memory_win32 - device extension+--+-- == VK_KHR_external_memory_win32+--+-- [__Name String__]+--     @VK_KHR_external_memory_win32@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     74+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_memory@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_memory_win32:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- An application may wish to reference device memory in multiple Vulkan+-- logical devices or instances, in multiple processes, and\/or in multiple+-- APIs. This extension enables an application to export Windows handles+-- from Vulkan memory objects and to import Vulkan memory objects from+-- Windows handles exported from other Vulkan memory objects or from+-- similar resources in other APIs.+--+-- == New Commands+--+-- -   'getMemoryWin32HandleKHR'+--+-- -   'getMemoryWin32HandlePropertiesKHR'+--+-- == New Structures+--+-- -   'MemoryGetWin32HandleInfoKHR'+--+-- -   'MemoryWin32HandlePropertiesKHR'+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'ExportMemoryWin32HandleInfoKHR'+--+--     -   'ImportMemoryWin32HandleInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR'+--+-- == Issues+--+-- 1) Do applications need to call @CloseHandle@() on the values returned+-- from 'getMemoryWin32HandleKHR' when @handleType@ is+-- 'Vulkan.Extensions.VK_KHR_external_memory_capabilities.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR'?+--+-- __RESOLVED__: Yes, unless it is passed back in to another driver+-- instance to import the object. A successful get call transfers ownership+-- of the handle to the application. Destroying the memory object will not+-- destroy the handle or the handle’s reference to the underlying memory+-- resource.+--+-- 2) Should the language regarding KMT\/Windows 7 handles be moved to a+-- separate extension so that it can be deprecated over time?+--+-- __RESOLVED__: No. Support for them can be deprecated by drivers if they+-- choose, by no longer returning them in the supported handle types of the+-- instance level queries.+--+-- 3) How should the valid size and memory type for windows memory handles+-- created outside of Vulkan be specified?+--+-- __RESOLVED__: The valid memory types are queried directly from the+-- external handle. The size is determined by the associated image or+-- buffer memory requirements for external handle types that require+-- dedicated allocations, and by the size specified when creating the+-- object from which the handle was exported for other external handle+-- types.+--+-- == Version History+--+-- -   Revision 1, 2016-10-21 (James Jones)+--+--     -   Initial revision+--+-- = See Also+--+-- 'ExportMemoryWin32HandleInfoKHR', 'ImportMemoryWin32HandleInfoKHR',+-- 'MemoryGetWin32HandleInfoKHR', 'MemoryWin32HandlePropertiesKHR',+-- 'getMemoryWin32HandleKHR', 'getMemoryWin32HandlePropertiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_win32 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_memory_win32  ( ExportMemoryWin32HandleInfoKHR                                                        , ImportMemoryWin32HandleInfoKHR                                                        , MemoryGetWin32HandleInfoKHR
src/Vulkan/Extensions/VK_KHR_external_semaphore.hs view
@@ -1,4 +1,149 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_semaphore - device extension+--+-- == VK_KHR_external_semaphore+--+-- [__Name String__]+--     @VK_KHR_external_semaphore@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     78+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_semaphore_capabilities@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_semaphore:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Jason Ekstrand, Intel+--+--     -   Jesse Hall, Google+--+--     -   Tobias Hector, Imagination Technologies+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Matthew Netsch, Qualcomm Technologies, Inc.+--+--     -   Ray Smith, ARM+--+--     -   Chad Versace, Google+--+-- == Description+--+-- An application using external memory may wish to synchronize access to+-- that memory using semaphores. This extension enables an application to+-- create semaphores from which non-Vulkan handles that reference the+-- underlying synchronization primitive can be exported.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo':+--+--     -   'ExportSemaphoreCreateInfoKHR'+--+-- == New Enums+--+-- -   'SemaphoreImportFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'SemaphoreImportFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core11.Enums.SemaphoreImportFlagBits.SemaphoreImportFlagBits':+--+--     -   'SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) Should there be restrictions on what side effects can occur when+-- waiting on imported semaphores that are in an invalid state?+--+-- __RESOLVED__: Yes. Normally, validating such state would be the+-- responsibility of the application, and the implementation would be free+-- to enter an undefined state if valid usage rules were violated. However,+-- this could cause security concerns when using imported semaphores, as it+-- would require the importing application to trust the exporting+-- application to ensure the state is valid. Requiring this level of trust+-- is undesirable for many potential use cases.+--+-- 2) Must implementations validate external handles the application+-- provides as input to semaphore state import operations?+--+-- __RESOLVED__: Implementations must return an error to the application if+-- the provided semaphore state handle cannot be used to complete the+-- requested import operation. However, implementations need not validate+-- handles are of the exact type specified by the application.+--+-- == Version History+--+-- -   Revision 1, 2016-10-21 (James Jones)+--+--     -   Initial revision+--+-- = See Also+--+-- 'ExportSemaphoreCreateInfoKHR', 'SemaphoreImportFlagBitsKHR',+-- 'SemaphoreImportFlagsKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_semaphore  ( pattern STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR                                                     , pattern SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR                                                     , SemaphoreImportFlagsKHR
src/Vulkan/Extensions/VK_KHR_external_semaphore_capabilities.hs view
@@ -1,4 +1,160 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_semaphore_capabilities - instance extension+--+-- == VK_KHR_external_semaphore_capabilities+--+-- [__Name String__]+--     @VK_KHR_external_semaphore_capabilities@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     77+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_semaphore_capabilities:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-20+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+-- == Description+--+-- An application may wish to reference device semaphores in multiple+-- Vulkan logical devices or instances, in multiple processes, and\/or in+-- multiple APIs. This extension provides a set of capability queries and+-- handle definitions that allow an application to determine what types of+-- “external” semaphore handles an implementation supports for a given set+-- of use cases.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Commands+--+-- -   'getPhysicalDeviceExternalSemaphorePropertiesKHR'+--+-- == New Structures+--+-- -   'ExternalSemaphorePropertiesKHR'+--+-- -   'PhysicalDeviceExternalSemaphoreInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'Vulkan.Extensions.VK_KHR_external_memory_capabilities.PhysicalDeviceIDPropertiesKHR'+--+-- == New Enums+--+-- -   'ExternalSemaphoreFeatureFlagBitsKHR'+--+-- -   'ExternalSemaphoreHandleTypeFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'ExternalSemaphoreFeatureFlagsKHR'+--+-- -   'ExternalSemaphoreHandleTypeFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION'+--+-- -   'Vulkan.Core10.APIConstants.LUID_SIZE_KHR'+--+-- -   Extending+--     'Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits.ExternalSemaphoreFeatureFlagBits':+--+--     -   'EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR'+--+--     -   'EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits':+--+--     -   'EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR'+--+--     -   'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR'+--+--     -   'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR'+--+--     -   'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR'+--+--     -   'EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR'+--+--     -   'Vulkan.Extensions.VK_KHR_external_memory_capabilities.STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR'+--+-- == Version History+--+-- -   Revision 1, 2016-10-20 (James Jones)+--+--     -   Initial revision+--+-- = See Also+--+-- 'Vulkan.Core10.APIConstants.LUID_SIZE_KHR',+-- 'ExternalSemaphoreFeatureFlagBitsKHR',+-- 'ExternalSemaphoreFeatureFlagsKHR',+-- 'ExternalSemaphoreHandleTypeFlagBitsKHR',+-- 'ExternalSemaphoreHandleTypeFlagsKHR', 'ExternalSemaphorePropertiesKHR',+-- 'PhysicalDeviceExternalSemaphoreInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_external_memory_capabilities.PhysicalDeviceIDPropertiesKHR',+-- 'getPhysicalDeviceExternalSemaphorePropertiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_capabilities Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_semaphore_capabilities  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR                                                                  , pattern STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR                                                                  , pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR
src/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs view
@@ -1,4 +1,112 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_semaphore_fd - device extension+--+-- == VK_KHR_external_semaphore_fd+--+-- [__Name String__]+--     @VK_KHR_external_semaphore_fd@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     80+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_semaphore@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_semaphore_fd:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- An application using external memory may wish to synchronize access to+-- that memory using semaphores. This extension enables an application to+-- export semaphore payload to and import semaphore payload from POSIX file+-- descriptors.+--+-- == New Commands+--+-- -   'getSemaphoreFdKHR'+--+-- -   'importSemaphoreFdKHR'+--+-- == New Structures+--+-- -   'ImportSemaphoreFdInfoKHR'+--+-- -   'SemaphoreGetFdInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR'+--+-- == Issues+--+-- 1) Does the application need to close the file descriptor returned by+-- 'getSemaphoreFdKHR'?+--+-- __RESOLVED__: Yes, unless it is passed back in to a driver instance to+-- import the semaphore. A successful get call transfers ownership of the+-- file descriptor to the application, and a successful import transfers it+-- back to the driver. Destroying the original semaphore object will not+-- close the file descriptor or remove its reference to the underlying+-- semaphore resource associated with it.+--+-- == Version History+--+-- -   Revision 1, 2016-10-21 (Jesse Hall)+--+--     -   Initial revision+--+-- = See Also+--+-- 'ImportSemaphoreFdInfoKHR', 'SemaphoreGetFdInfoKHR',+-- 'getSemaphoreFdKHR', 'importSemaphoreFdKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_fd Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_semaphore_fd  ( getSemaphoreFdKHR                                                        , importSemaphoreFdKHR                                                        , ImportSemaphoreFdInfoKHR(..)
src/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs-boot view
@@ -1,4 +1,112 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_semaphore_fd - device extension+--+-- == VK_KHR_external_semaphore_fd+--+-- [__Name String__]+--     @VK_KHR_external_semaphore_fd@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     80+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_semaphore@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_semaphore_fd:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- An application using external memory may wish to synchronize access to+-- that memory using semaphores. This extension enables an application to+-- export semaphore payload to and import semaphore payload from POSIX file+-- descriptors.+--+-- == New Commands+--+-- -   'getSemaphoreFdKHR'+--+-- -   'importSemaphoreFdKHR'+--+-- == New Structures+--+-- -   'ImportSemaphoreFdInfoKHR'+--+-- -   'SemaphoreGetFdInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR'+--+-- == Issues+--+-- 1) Does the application need to close the file descriptor returned by+-- 'getSemaphoreFdKHR'?+--+-- __RESOLVED__: Yes, unless it is passed back in to a driver instance to+-- import the semaphore. A successful get call transfers ownership of the+-- file descriptor to the application, and a successful import transfers it+-- back to the driver. Destroying the original semaphore object will not+-- close the file descriptor or remove its reference to the underlying+-- semaphore resource associated with it.+--+-- == Version History+--+-- -   Revision 1, 2016-10-21 (Jesse Hall)+--+--     -   Initial revision+--+-- = See Also+--+-- 'ImportSemaphoreFdInfoKHR', 'SemaphoreGetFdInfoKHR',+-- 'getSemaphoreFdKHR', 'importSemaphoreFdKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_fd Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_semaphore_fd  ( ImportSemaphoreFdInfoKHR                                                        , SemaphoreGetFdInfoKHR                                                        ) where
src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs view
@@ -1,4 +1,151 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_semaphore_win32 - device extension+--+-- == VK_KHR_external_semaphore_win32+--+-- [__Name String__]+--     @VK_KHR_external_semaphore_win32@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     79+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_semaphore@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_semaphore_win32:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- An application using external memory may wish to synchronize access to+-- that memory using semaphores. This extension enables an application to+-- export semaphore payload to and import semaphore payload from Windows+-- handles.+--+-- == New Commands+--+-- -   'getSemaphoreWin32HandleKHR'+--+-- -   'importSemaphoreWin32HandleKHR'+--+-- == New Structures+--+-- -   'ImportSemaphoreWin32HandleInfoKHR'+--+-- -   'SemaphoreGetWin32HandleInfoKHR'+--+-- -   Extending 'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo':+--+--     -   'ExportSemaphoreWin32HandleInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Queue.SubmitInfo':+--+--     -   'D3D12FenceSubmitInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR'+--+-- == Issues+--+-- 1) Do applications need to call @CloseHandle@() on the values returned+-- from 'getSemaphoreWin32HandleKHR' when @handleType@ is+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR'?+--+-- __RESOLVED__: Yes, unless it is passed back in to another driver+-- instance to import the object. A successful get call transfers ownership+-- of the handle to the application. Destroying the semaphore object will+-- not destroy the handle or the handle’s reference to the underlying+-- semaphore resource.+--+-- 2) Should the language regarding KMT\/Windows 7 handles be moved to a+-- separate extension so that it can be deprecated over time?+--+-- __RESOLVED__: No. Support for them can be deprecated by drivers if they+-- choose, by no longer returning them in the supported handle types of the+-- instance level queries.+--+-- 3) Should applications be allowed to specify additional object+-- attributes for shared handles?+--+-- __RESOLVED__: Yes. Applications will be allowed to provide similar+-- attributes to those they would to any other handle creation API.+--+-- 4) How do applications communicate the desired fence values to use with+-- @D3D12_FENCE@-based Vulkan semaphores?+--+-- __RESOLVED__: There are a couple of options. The values for the signaled+-- and reset states could be communicated up front when creating the object+-- and remain static for the life of the Vulkan semaphore, or they could be+-- specified using auxiliary structures when submitting semaphore signal+-- and wait operations, similar to what is done with the keyed mutex+-- extensions. The latter is more flexible and consistent with the keyed+-- mutex usage, but the former is a much simpler API.+--+-- Since Vulkan tends to favor flexibility and consistency over simplicity,+-- a new structure specifying D3D12 fence acquire and release values is+-- added to the 'Vulkan.Core10.Queue.queueSubmit' function.+--+-- == Version History+--+-- -   Revision 1, 2016-10-21 (James Jones)+--+--     -   Initial revision+--+-- = See Also+--+-- 'D3D12FenceSubmitInfoKHR', 'ExportSemaphoreWin32HandleInfoKHR',+-- 'ImportSemaphoreWin32HandleInfoKHR', 'SemaphoreGetWin32HandleInfoKHR',+-- 'getSemaphoreWin32HandleKHR', 'importSemaphoreWin32HandleKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_win32 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_semaphore_win32  ( getSemaphoreWin32HandleKHR                                                           , importSemaphoreWin32HandleKHR                                                           , ImportSemaphoreWin32HandleInfoKHR(..)
src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs-boot view
@@ -1,4 +1,151 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_external_semaphore_win32 - device extension+--+-- == VK_KHR_external_semaphore_win32+--+-- [__Name String__]+--     @VK_KHR_external_semaphore_win32@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     79+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_semaphore@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_external_semaphore_win32:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- An application using external memory may wish to synchronize access to+-- that memory using semaphores. This extension enables an application to+-- export semaphore payload to and import semaphore payload from Windows+-- handles.+--+-- == New Commands+--+-- -   'getSemaphoreWin32HandleKHR'+--+-- -   'importSemaphoreWin32HandleKHR'+--+-- == New Structures+--+-- -   'ImportSemaphoreWin32HandleInfoKHR'+--+-- -   'SemaphoreGetWin32HandleInfoKHR'+--+-- -   Extending 'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo':+--+--     -   'ExportSemaphoreWin32HandleInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Queue.SubmitInfo':+--+--     -   'D3D12FenceSubmitInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME'+--+-- -   'KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR'+--+-- == Issues+--+-- 1) Do applications need to call @CloseHandle@() on the values returned+-- from 'getSemaphoreWin32HandleKHR' when @handleType@ is+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR'?+--+-- __RESOLVED__: Yes, unless it is passed back in to another driver+-- instance to import the object. A successful get call transfers ownership+-- of the handle to the application. Destroying the semaphore object will+-- not destroy the handle or the handle’s reference to the underlying+-- semaphore resource.+--+-- 2) Should the language regarding KMT\/Windows 7 handles be moved to a+-- separate extension so that it can be deprecated over time?+--+-- __RESOLVED__: No. Support for them can be deprecated by drivers if they+-- choose, by no longer returning them in the supported handle types of the+-- instance level queries.+--+-- 3) Should applications be allowed to specify additional object+-- attributes for shared handles?+--+-- __RESOLVED__: Yes. Applications will be allowed to provide similar+-- attributes to those they would to any other handle creation API.+--+-- 4) How do applications communicate the desired fence values to use with+-- @D3D12_FENCE@-based Vulkan semaphores?+--+-- __RESOLVED__: There are a couple of options. The values for the signaled+-- and reset states could be communicated up front when creating the object+-- and remain static for the life of the Vulkan semaphore, or they could be+-- specified using auxiliary structures when submitting semaphore signal+-- and wait operations, similar to what is done with the keyed mutex+-- extensions. The latter is more flexible and consistent with the keyed+-- mutex usage, but the former is a much simpler API.+--+-- Since Vulkan tends to favor flexibility and consistency over simplicity,+-- a new structure specifying D3D12 fence acquire and release values is+-- added to the 'Vulkan.Core10.Queue.queueSubmit' function.+--+-- == Version History+--+-- -   Revision 1, 2016-10-21 (James Jones)+--+--     -   Initial revision+--+-- = See Also+--+-- 'D3D12FenceSubmitInfoKHR', 'ExportSemaphoreWin32HandleInfoKHR',+-- 'ImportSemaphoreWin32HandleInfoKHR', 'SemaphoreGetWin32HandleInfoKHR',+-- 'getSemaphoreWin32HandleKHR', 'importSemaphoreWin32HandleKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_win32 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_external_semaphore_win32  ( D3D12FenceSubmitInfoKHR                                                           , ExportSemaphoreWin32HandleInfoKHR                                                           , ImportSemaphoreWin32HandleInfoKHR
src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs view
@@ -1,4 +1,204 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_fragment_shading_rate - device extension+--+-- == VK_KHR_fragment_shading_rate+--+-- [__Name String__]+--     @VK_KHR_fragment_shading_rate@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     227+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_create_renderpass2@+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_fragment_shading_rate:%20&body=@tobski%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-05-06+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_fragment_shading_rate.html SPV_KHR_fragment_shading_rate>.+--+-- [__Contributors__]+--+--     -   Tobias Hector, AMD+--+--     -   Guennadi Riguer, AMD+--+--     -   Matthaeus Chajdas, AMD+--+--     -   Pat Brown, Nvidia+--+--     -   Matthew Netsch, Qualcomm+--+--     -   Slawomir Grajewski, Intel+--+--     -   Jan-Harald Fredriksen, Arm+--+--     -   Jeff Bolz, Nvidia+--+--     -   Contributors to the VK_NV_shading_rate_image specification+--+--     -   Contributors to the VK_EXT_fragment_density_map specification+--+-- == Description+--+-- This extension adds the ability to change the rate at which fragments+-- are shaded. Rather than the usual single fragment invocation for each+-- pixel covered by a primitive, multiple pixels can be shaded by a single+-- fragment shader invocation.+--+-- Up to three methods are available to the application to change the+-- fragment shading rate:+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline>,+--     which allows the specification of a rate per-draw.+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive>,+--     which allows the specification of a rate per primitive, specified+--     during shading.+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment>,+--     which allows the specification of a rate per-region of the+--     framebuffer, specified in a specialized image attachment.+--+-- Additionally, these rates can all be specified and combined in order to+-- adjust the overall detail in the image at each point.+--+-- This functionality can be used to focus shading efforts where higher+-- levels of detail are needed in some parts of a scene compared to others.+-- This can be particularly useful in high resolution rendering, or for XR+-- contexts.+--+-- This extension also adds support for the @SPV_KHR_fragment_shading_rate@+-- extension which enables setting the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>,+-- and allows querying the final shading rate from a fragment shader.+--+-- == New Commands+--+-- -   'cmdSetFragmentShadingRateKHR'+--+-- -   'getPhysicalDeviceFragmentShadingRatesKHR'+--+-- == New Structures+--+-- -   'PhysicalDeviceFragmentShadingRateKHR'+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'PipelineFragmentShadingRateStateCreateInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceFragmentShadingRateFeaturesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceFragmentShadingRatePropertiesKHR'+--+-- -   Extending+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2':+--+--     -   'FragmentShadingRateAttachmentInfoKHR'+--+-- == New Enums+--+-- -   'FragmentShadingRateCombinerOpKHR'+--+-- == New Enum Constants+--+-- -   'KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME'+--+-- -   'KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':+--+--     -   'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':+--+--     -   'IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':+--+--     -   'IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR'+--+-- == Version History+--+-- -   Revision 1, 2020-05-06 (Tobias Hector)+--+--     -   Initial revision+--+-- = See Also+--+-- 'FragmentShadingRateAttachmentInfoKHR',+-- 'FragmentShadingRateCombinerOpKHR',+-- 'PhysicalDeviceFragmentShadingRateFeaturesKHR',+-- 'PhysicalDeviceFragmentShadingRateKHR',+-- 'PhysicalDeviceFragmentShadingRatePropertiesKHR',+-- 'PipelineFragmentShadingRateStateCreateInfoKHR',+-- 'cmdSetFragmentShadingRateKHR',+-- 'getPhysicalDeviceFragmentShadingRatesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_fragment_shading_rate  ( cmdSetFragmentShadingRateKHR                                                        , getPhysicalDeviceFragmentShadingRatesKHR                                                        , pattern IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR@@ -24,6 +224,8 @@                                                        ) where  import Vulkan.CStruct.Utils (FixedArray)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -36,15 +238,7 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Data.Vector (generateM)@@ -62,8 +256,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)@@ -543,7 +737,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     pFragmentShadingRateAttachment'' <- ContT @_ @_ @(Ptr (AttachmentReference2 '[])) $ \cont -> withSomeCStruct @AttachmentReference2 (fragmentShadingRateAttachment) (cont . castPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (AttachmentReference2 _)))) pFragmentShadingRateAttachment''-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (shadingRateAttachmentTexelSize) . ($ ())+    lift $ poke ((p `plusPtr` 24 :: Ptr Extent2D)) (shadingRateAttachmentTexelSize)     lift $ f   cStructSize = 32   cStructAlignment = 8@@ -552,7 +746,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     pFragmentShadingRateAttachment'' <- ContT @_ @_ @(Ptr (AttachmentReference2 '[])) $ \cont -> withSomeCStruct @AttachmentReference2 ((SomeStruct zero)) (cont . castPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (AttachmentReference2 _)))) pFragmentShadingRateAttachment''-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 24 :: Ptr Extent2D)) (zero)     lift $ f  instance FromCStruct FragmentShadingRateAttachmentInfoKHR where@@ -622,28 +816,28 @@  instance ToCStruct PipelineFragmentShadingRateStateCreateInfoKHR where   withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PipelineFragmentShadingRateStateCreateInfoKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (fragmentSize) . ($ ())+  pokeCStruct p PipelineFragmentShadingRateStateCreateInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (fragmentSize)     let pCombinerOps' = lowerArrayPtr ((p `plusPtr` 24 :: Ptr (FixedArray 2 FragmentShadingRateCombinerOpKHR)))-    lift $ case (combinerOps) of+    case (combinerOps) of       (e0, e1) -> do         poke (pCombinerOps' :: Ptr FragmentShadingRateCombinerOpKHR) (e0)         poke (pCombinerOps' `plusPtr` 4 :: Ptr FragmentShadingRateCombinerOpKHR) (e1)-    lift $ f+    f   cStructSize = 32   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (zero) . ($ ())+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (zero)     let pCombinerOps' = lowerArrayPtr ((p `plusPtr` 24 :: Ptr (FixedArray 2 FragmentShadingRateCombinerOpKHR)))-    lift $ case ((zero, zero)) of+    case ((zero, zero)) of       (e0, e1) -> do         poke (pCombinerOps' :: Ptr FragmentShadingRateCombinerOpKHR) (e0)         poke (pCombinerOps' `plusPtr` 4 :: Ptr FragmentShadingRateCombinerOpKHR) (e1)-    lift $ f+    f  instance FromCStruct PipelineFragmentShadingRateStateCreateInfoKHR where   peekCStruct p = do@@ -654,6 +848,12 @@     pure $ PipelineFragmentShadingRateStateCreateInfoKHR              fragmentSize ((combinerOps0, combinerOps1)) +instance Storable PipelineFragmentShadingRateStateCreateInfoKHR where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero PipelineFragmentShadingRateStateCreateInfoKHR where   zero = PipelineFragmentShadingRateStateCreateInfoKHR            zero@@ -970,50 +1170,50 @@  instance ToCStruct PhysicalDeviceFragmentShadingRatePropertiesKHR where   withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PhysicalDeviceFragmentShadingRatePropertiesKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (minFragmentShadingRateAttachmentTexelSize) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (maxFragmentShadingRateAttachmentTexelSize) . ($ ())-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (maxFragmentShadingRateAttachmentTexelSizeAspectRatio)-    lift $ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (primitiveFragmentShadingRateWithMultipleViewports))-    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (layeredShadingRateAttachments))-    lift $ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateNonTrivialCombinerOps))-    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr Extent2D)) (maxFragmentSize) . ($ ())-    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (maxFragmentSizeAspectRatio)-    lift $ poke ((p `plusPtr` 60 :: Ptr Word32)) (maxFragmentShadingRateCoverageSamples)-    lift $ poke ((p `plusPtr` 64 :: Ptr SampleCountFlagBits)) (maxFragmentShadingRateRasterizationSamples)-    lift $ poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateWithShaderDepthStencilWrites))-    lift $ poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateWithSampleMask))-    lift $ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateWithShaderSampleMask))-    lift $ poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateWithConservativeRasterization))-    lift $ poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateWithFragmentShaderInterlock))-    lift $ poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateWithCustomSampleLocations))-    lift $ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateStrictMultiplyCombiner))-    lift $ f+  pokeCStruct p PhysicalDeviceFragmentShadingRatePropertiesKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (minFragmentShadingRateAttachmentTexelSize)+    poke ((p `plusPtr` 24 :: Ptr Extent2D)) (maxFragmentShadingRateAttachmentTexelSize)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (maxFragmentShadingRateAttachmentTexelSizeAspectRatio)+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (primitiveFragmentShadingRateWithMultipleViewports))+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (layeredShadingRateAttachments))+    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateNonTrivialCombinerOps))+    poke ((p `plusPtr` 48 :: Ptr Extent2D)) (maxFragmentSize)+    poke ((p `plusPtr` 56 :: Ptr Word32)) (maxFragmentSizeAspectRatio)+    poke ((p `plusPtr` 60 :: Ptr Word32)) (maxFragmentShadingRateCoverageSamples)+    poke ((p `plusPtr` 64 :: Ptr SampleCountFlagBits)) (maxFragmentShadingRateRasterizationSamples)+    poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateWithShaderDepthStencilWrites))+    poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateWithSampleMask))+    poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateWithShaderSampleMask))+    poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateWithConservativeRasterization))+    poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateWithFragmentShaderInterlock))+    poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateWithCustomSampleLocations))+    poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (fragmentShadingRateStrictMultiplyCombiner))+    f   cStructSize = 96   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))-    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr Extent2D)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 60 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 64 :: Ptr SampleCountFlagBits)) (zero)-    lift $ poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 48 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 60 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 64 :: Ptr SampleCountFlagBits)) (zero)+    poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (zero))+    f  instance FromCStruct PhysicalDeviceFragmentShadingRatePropertiesKHR where   peekCStruct p = do@@ -1037,6 +1237,12 @@     pure $ PhysicalDeviceFragmentShadingRatePropertiesKHR              minFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSizeAspectRatio (bool32ToBool primitiveFragmentShadingRateWithMultipleViewports) (bool32ToBool layeredShadingRateAttachments) (bool32ToBool fragmentShadingRateNonTrivialCombinerOps) maxFragmentSize maxFragmentSizeAspectRatio maxFragmentShadingRateCoverageSamples maxFragmentShadingRateRasterizationSamples (bool32ToBool fragmentShadingRateWithShaderDepthStencilWrites) (bool32ToBool fragmentShadingRateWithSampleMask) (bool32ToBool fragmentShadingRateWithShaderSampleMask) (bool32ToBool fragmentShadingRateWithConservativeRasterization) (bool32ToBool fragmentShadingRateWithFragmentShaderInterlock) (bool32ToBool fragmentShadingRateWithCustomSampleLocations) (bool32ToBool fragmentShadingRateStrictMultiplyCombiner) +instance Storable PhysicalDeviceFragmentShadingRatePropertiesKHR where+  sizeOf ~_ = 96+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero PhysicalDeviceFragmentShadingRatePropertiesKHR where   zero = PhysicalDeviceFragmentShadingRatePropertiesKHR            zero@@ -1085,20 +1291,20 @@  instance ToCStruct PhysicalDeviceFragmentShadingRateKHR where   withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PhysicalDeviceFragmentShadingRateKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr SampleCountFlags)) (sampleCounts)-    ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (fragmentSize) . ($ ())-    lift $ f+  pokeCStruct p PhysicalDeviceFragmentShadingRateKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SampleCountFlags)) (sampleCounts)+    poke ((p `plusPtr` 20 :: Ptr Extent2D)) (fragmentSize)+    f   cStructSize = 32   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr SampleCountFlags)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SampleCountFlags)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Extent2D)) (zero)+    f  instance FromCStruct PhysicalDeviceFragmentShadingRateKHR where   peekCStruct p = do@@ -1107,6 +1313,12 @@     pure $ PhysicalDeviceFragmentShadingRateKHR              sampleCounts fragmentSize +instance Storable PhysicalDeviceFragmentShadingRateKHR where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero PhysicalDeviceFragmentShadingRateKHR where   zero = PhysicalDeviceFragmentShadingRateKHR            zero@@ -1143,45 +1355,52 @@  -- | 'FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR' specifies a combiner -- operation of combine(Axy,Bxy) = Axy.-pattern FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR = FragmentShadingRateCombinerOpKHR 0+pattern FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR    = FragmentShadingRateCombinerOpKHR 0 -- | 'FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR' specifies a combiner -- operation of combine(Axy,Bxy) = Bxy. pattern FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR = FragmentShadingRateCombinerOpKHR 1 -- | 'FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR' specifies a combiner -- operation of combine(Axy,Bxy) = min(Axy,Bxy).-pattern FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR = FragmentShadingRateCombinerOpKHR 2+pattern FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR     = FragmentShadingRateCombinerOpKHR 2 -- | 'FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR' specifies a combiner -- operation of combine(Axy,Bxy) = max(Axy,Bxy).-pattern FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR = FragmentShadingRateCombinerOpKHR 3+pattern FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR     = FragmentShadingRateCombinerOpKHR 3 -- | 'FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR' combiner operation of -- combine(Axy,Bxy) = Axy*Bxy.-pattern FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR = FragmentShadingRateCombinerOpKHR 4+pattern FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR     = FragmentShadingRateCombinerOpKHR 4 {-# complete FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR,              FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR,              FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR,              FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR,              FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR :: FragmentShadingRateCombinerOpKHR #-} +conNameFragmentShadingRateCombinerOpKHR :: String+conNameFragmentShadingRateCombinerOpKHR = "FragmentShadingRateCombinerOpKHR"++enumPrefixFragmentShadingRateCombinerOpKHR :: String+enumPrefixFragmentShadingRateCombinerOpKHR = "FRAGMENT_SHADING_RATE_COMBINER_OP_"++showTableFragmentShadingRateCombinerOpKHR :: [(FragmentShadingRateCombinerOpKHR, String)]+showTableFragmentShadingRateCombinerOpKHR =+  [ (FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR   , "KEEP_KHR")+  , (FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR, "REPLACE_KHR")+  , (FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR    , "MIN_KHR")+  , (FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR    , "MAX_KHR")+  , (FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR    , "MUL_KHR")+  ]+ instance Show FragmentShadingRateCombinerOpKHR where-  showsPrec p = \case-    FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR -> showString "FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR"-    FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR -> showString "FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR"-    FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR -> showString "FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR"-    FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR -> showString "FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR"-    FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR -> showString "FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR"-    FragmentShadingRateCombinerOpKHR x -> showParen (p >= 11) (showString "FragmentShadingRateCombinerOpKHR " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixFragmentShadingRateCombinerOpKHR+                            showTableFragmentShadingRateCombinerOpKHR+                            conNameFragmentShadingRateCombinerOpKHR+                            (\(FragmentShadingRateCombinerOpKHR x) -> x)+                            (showsPrec 11)  instance Read FragmentShadingRateCombinerOpKHR where-  readPrec = parens (choose [("FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR", pure FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR)-                            , ("FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR", pure FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR)-                            , ("FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR", pure FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR)-                            , ("FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR", pure FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR)-                            , ("FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR", pure FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "FragmentShadingRateCombinerOpKHR")-                       v <- step readPrec-                       pure (FragmentShadingRateCombinerOpKHR v)))+  readPrec = enumReadPrec enumPrefixFragmentShadingRateCombinerOpKHR+                          showTableFragmentShadingRateCombinerOpKHR+                          conNameFragmentShadingRateCombinerOpKHR+                          FragmentShadingRateCombinerOpKHR   type KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs-boot view
@@ -1,4 +1,204 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_fragment_shading_rate - device extension+--+-- == VK_KHR_fragment_shading_rate+--+-- [__Name String__]+--     @VK_KHR_fragment_shading_rate@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     227+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_create_renderpass2@+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_fragment_shading_rate:%20&body=@tobski%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-05-06+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_fragment_shading_rate.html SPV_KHR_fragment_shading_rate>.+--+-- [__Contributors__]+--+--     -   Tobias Hector, AMD+--+--     -   Guennadi Riguer, AMD+--+--     -   Matthaeus Chajdas, AMD+--+--     -   Pat Brown, Nvidia+--+--     -   Matthew Netsch, Qualcomm+--+--     -   Slawomir Grajewski, Intel+--+--     -   Jan-Harald Fredriksen, Arm+--+--     -   Jeff Bolz, Nvidia+--+--     -   Contributors to the VK_NV_shading_rate_image specification+--+--     -   Contributors to the VK_EXT_fragment_density_map specification+--+-- == Description+--+-- This extension adds the ability to change the rate at which fragments+-- are shaded. Rather than the usual single fragment invocation for each+-- pixel covered by a primitive, multiple pixels can be shaded by a single+-- fragment shader invocation.+--+-- Up to three methods are available to the application to change the+-- fragment shading rate:+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline>,+--     which allows the specification of a rate per-draw.+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive>,+--     which allows the specification of a rate per primitive, specified+--     during shading.+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment>,+--     which allows the specification of a rate per-region of the+--     framebuffer, specified in a specialized image attachment.+--+-- Additionally, these rates can all be specified and combined in order to+-- adjust the overall detail in the image at each point.+--+-- This functionality can be used to focus shading efforts where higher+-- levels of detail are needed in some parts of a scene compared to others.+-- This can be particularly useful in high resolution rendering, or for XR+-- contexts.+--+-- This extension also adds support for the @SPV_KHR_fragment_shading_rate@+-- extension which enables setting the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>,+-- and allows querying the final shading rate from a fragment shader.+--+-- == New Commands+--+-- -   'cmdSetFragmentShadingRateKHR'+--+-- -   'getPhysicalDeviceFragmentShadingRatesKHR'+--+-- == New Structures+--+-- -   'PhysicalDeviceFragmentShadingRateKHR'+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'PipelineFragmentShadingRateStateCreateInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceFragmentShadingRateFeaturesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceFragmentShadingRatePropertiesKHR'+--+-- -   Extending+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2':+--+--     -   'FragmentShadingRateAttachmentInfoKHR'+--+-- == New Enums+--+-- -   'FragmentShadingRateCombinerOpKHR'+--+-- == New Enum Constants+--+-- -   'KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME'+--+-- -   'KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':+--+--     -   'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':+--+--     -   'IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':+--+--     -   'IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR'+--+-- == Version History+--+-- -   Revision 1, 2020-05-06 (Tobias Hector)+--+--     -   Initial revision+--+-- = See Also+--+-- 'FragmentShadingRateAttachmentInfoKHR',+-- 'FragmentShadingRateCombinerOpKHR',+-- 'PhysicalDeviceFragmentShadingRateFeaturesKHR',+-- 'PhysicalDeviceFragmentShadingRateKHR',+-- 'PhysicalDeviceFragmentShadingRatePropertiesKHR',+-- 'PipelineFragmentShadingRateStateCreateInfoKHR',+-- 'cmdSetFragmentShadingRateKHR',+-- 'getPhysicalDeviceFragmentShadingRatesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_fragment_shading_rate  ( FragmentShadingRateAttachmentInfoKHR                                                        , PhysicalDeviceFragmentShadingRateFeaturesKHR                                                        , PhysicalDeviceFragmentShadingRateKHR
src/Vulkan/Extensions/VK_KHR_get_display_properties2.hs view
@@ -1,4 +1,152 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_get_display_properties2 - instance extension+--+-- == VK_KHR_get_display_properties2+--+-- [__Name String__]+--     @VK_KHR_get_display_properties2@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     122+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_display@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_get_display_properties2:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-02-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Ian Elliott, Google+--+--     -   James Jones, NVIDIA+--+-- == Description+--+-- This extension provides new entry points to query device display+-- properties and capabilities in a way that can be easily extended by+-- other extensions, without introducing any further entry points. This+-- extension can be considered the @VK_KHR_display@ equivalent of the+-- @VK_KHR_get_physical_device_properties2@ extension.+--+-- == New Commands+--+-- -   'getDisplayModeProperties2KHR'+--+-- -   'getDisplayPlaneCapabilities2KHR'+--+-- -   'getPhysicalDeviceDisplayPlaneProperties2KHR'+--+-- -   'getPhysicalDeviceDisplayProperties2KHR'+--+-- == New Structures+--+-- -   'DisplayModeProperties2KHR'+--+-- -   'DisplayPlaneCapabilities2KHR'+--+-- -   'DisplayPlaneInfo2KHR'+--+-- -   'DisplayPlaneProperties2KHR'+--+-- -   'DisplayProperties2KHR'+--+-- == New Enum Constants+--+-- -   'KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME'+--+-- -   'KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR'+--+-- == Issues+--+-- 1) What should this extension be named?+--+-- __RESOLVED__: @VK_KHR_get_display_properties2@. Other alternatives:+--+-- -   @VK_KHR_display2@+--+-- -   One extension, combined with @VK_KHR_surface_capabilites2@.+--+-- 2) Should extensible input structs be added for these new functions:+--+-- __RESOLVED__:+--+-- -   'getPhysicalDeviceDisplayProperties2KHR': No. The only current input+--     is a 'Vulkan.Core10.Handles.PhysicalDevice'. Other inputs wouldn’t+--     make sense.+--+-- -   'getPhysicalDeviceDisplayPlaneProperties2KHR': No. The only current+--     input is a 'Vulkan.Core10.Handles.PhysicalDevice'. Other inputs+--     wouldn’t make sense.+--+-- -   'getDisplayModeProperties2KHR': No. The only current inputs are a+--     'Vulkan.Core10.Handles.PhysicalDevice' and a+--     'Vulkan.Extensions.Handles.DisplayModeKHR'. Other inputs wouldn’t+--     make sense.+--+-- 3) Should additional display query functions be extended?+--+-- __RESOLVED__:+--+-- -   'Vulkan.Extensions.VK_KHR_display.getDisplayPlaneSupportedDisplaysKHR':+--     No. Extensions should instead extend+--     'Vulkan.Extensions.VK_KHR_display.getDisplayPlaneCapabilitiesKHR'().+--+-- == Version History+--+-- -   Revision 1, 2017-02-21 (James Jones)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'DisplayModeProperties2KHR', 'DisplayPlaneCapabilities2KHR',+-- 'DisplayPlaneInfo2KHR', 'DisplayPlaneProperties2KHR',+-- 'DisplayProperties2KHR', 'getDisplayModeProperties2KHR',+-- 'getDisplayPlaneCapabilities2KHR',+-- 'getPhysicalDeviceDisplayPlaneProperties2KHR',+-- 'getPhysicalDeviceDisplayProperties2KHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_display_properties2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_get_display_properties2  ( getPhysicalDeviceDisplayProperties2KHR                                                          , getPhysicalDeviceDisplayPlaneProperties2KHR                                                          , getDisplayModeProperties2KHR@@ -454,18 +602,18 @@  instance ToCStruct DisplayPlaneProperties2KHR where   withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p DisplayPlaneProperties2KHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DisplayPlanePropertiesKHR)) (displayPlaneProperties) . ($ ())-    lift $ f+  pokeCStruct p DisplayPlaneProperties2KHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DisplayPlanePropertiesKHR)) (displayPlaneProperties)+    f   cStructSize = 32   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DisplayPlanePropertiesKHR)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DisplayPlanePropertiesKHR)) (zero)+    f  instance FromCStruct DisplayPlaneProperties2KHR where   peekCStruct p = do@@ -473,6 +621,12 @@     pure $ DisplayPlaneProperties2KHR              displayPlaneProperties +instance Storable DisplayPlaneProperties2KHR where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero DisplayPlaneProperties2KHR where   zero = DisplayPlaneProperties2KHR            zero@@ -500,18 +654,18 @@  instance ToCStruct DisplayModeProperties2KHR where   withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p DisplayModeProperties2KHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DisplayModePropertiesKHR)) (displayModeProperties) . ($ ())-    lift $ f+  pokeCStruct p DisplayModeProperties2KHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DisplayModePropertiesKHR)) (displayModeProperties)+    f   cStructSize = 40   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DisplayModePropertiesKHR)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DisplayModePropertiesKHR)) (zero)+    f  instance FromCStruct DisplayModeProperties2KHR where   peekCStruct p = do@@ -519,6 +673,12 @@     pure $ DisplayModeProperties2KHR              displayModeProperties +instance Storable DisplayModeProperties2KHR where+  sizeOf ~_ = 40+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero DisplayModeProperties2KHR where   zero = DisplayModeProperties2KHR            zero@@ -631,24 +791,30 @@  instance ToCStruct DisplayPlaneCapabilities2KHR where   withCStruct x f = allocaBytesAligned 88 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p DisplayPlaneCapabilities2KHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DisplayPlaneCapabilitiesKHR)) (capabilities) . ($ ())-    lift $ f+  pokeCStruct p DisplayPlaneCapabilities2KHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DisplayPlaneCapabilitiesKHR)) (capabilities)+    f   cStructSize = 88   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DisplayPlaneCapabilitiesKHR)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DisplayPlaneCapabilitiesKHR)) (zero)+    f  instance FromCStruct DisplayPlaneCapabilities2KHR where   peekCStruct p = do     capabilities <- peekCStruct @DisplayPlaneCapabilitiesKHR ((p `plusPtr` 16 :: Ptr DisplayPlaneCapabilitiesKHR))     pure $ DisplayPlaneCapabilities2KHR              capabilities++instance Storable DisplayPlaneCapabilities2KHR where+  sizeOf ~_ = 88+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())  instance Zero DisplayPlaneCapabilities2KHR where   zero = DisplayPlaneCapabilities2KHR
src/Vulkan/Extensions/VK_KHR_get_display_properties2.hs-boot view
@@ -1,4 +1,152 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_get_display_properties2 - instance extension+--+-- == VK_KHR_get_display_properties2+--+-- [__Name String__]+--     @VK_KHR_get_display_properties2@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     122+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_display@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_get_display_properties2:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-02-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Ian Elliott, Google+--+--     -   James Jones, NVIDIA+--+-- == Description+--+-- This extension provides new entry points to query device display+-- properties and capabilities in a way that can be easily extended by+-- other extensions, without introducing any further entry points. This+-- extension can be considered the @VK_KHR_display@ equivalent of the+-- @VK_KHR_get_physical_device_properties2@ extension.+--+-- == New Commands+--+-- -   'getDisplayModeProperties2KHR'+--+-- -   'getDisplayPlaneCapabilities2KHR'+--+-- -   'getPhysicalDeviceDisplayPlaneProperties2KHR'+--+-- -   'getPhysicalDeviceDisplayProperties2KHR'+--+-- == New Structures+--+-- -   'DisplayModeProperties2KHR'+--+-- -   'DisplayPlaneCapabilities2KHR'+--+-- -   'DisplayPlaneInfo2KHR'+--+-- -   'DisplayPlaneProperties2KHR'+--+-- -   'DisplayProperties2KHR'+--+-- == New Enum Constants+--+-- -   'KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME'+--+-- -   'KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR'+--+-- == Issues+--+-- 1) What should this extension be named?+--+-- __RESOLVED__: @VK_KHR_get_display_properties2@. Other alternatives:+--+-- -   @VK_KHR_display2@+--+-- -   One extension, combined with @VK_KHR_surface_capabilites2@.+--+-- 2) Should extensible input structs be added for these new functions:+--+-- __RESOLVED__:+--+-- -   'getPhysicalDeviceDisplayProperties2KHR': No. The only current input+--     is a 'Vulkan.Core10.Handles.PhysicalDevice'. Other inputs wouldn’t+--     make sense.+--+-- -   'getPhysicalDeviceDisplayPlaneProperties2KHR': No. The only current+--     input is a 'Vulkan.Core10.Handles.PhysicalDevice'. Other inputs+--     wouldn’t make sense.+--+-- -   'getDisplayModeProperties2KHR': No. The only current inputs are a+--     'Vulkan.Core10.Handles.PhysicalDevice' and a+--     'Vulkan.Extensions.Handles.DisplayModeKHR'. Other inputs wouldn’t+--     make sense.+--+-- 3) Should additional display query functions be extended?+--+-- __RESOLVED__:+--+-- -   'Vulkan.Extensions.VK_KHR_display.getDisplayPlaneSupportedDisplaysKHR':+--     No. Extensions should instead extend+--     'Vulkan.Extensions.VK_KHR_display.getDisplayPlaneCapabilitiesKHR'().+--+-- == Version History+--+-- -   Revision 1, 2017-02-21 (James Jones)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'DisplayModeProperties2KHR', 'DisplayPlaneCapabilities2KHR',+-- 'DisplayPlaneInfo2KHR', 'DisplayPlaneProperties2KHR',+-- 'DisplayProperties2KHR', 'getDisplayModeProperties2KHR',+-- 'getDisplayPlaneCapabilities2KHR',+-- 'getPhysicalDeviceDisplayPlaneProperties2KHR',+-- 'getPhysicalDeviceDisplayProperties2KHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_display_properties2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_get_display_properties2  ( DisplayModeProperties2KHR                                                          , DisplayPlaneCapabilities2KHR                                                          , DisplayPlaneInfo2KHR
src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs view
@@ -1,4 +1,133 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_get_memory_requirements2 - device extension+--+-- == VK_KHR_get_memory_requirements2+--+-- [__Name String__]+--     @VK_KHR_get_memory_requirements2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     147+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Jason Ekstrand+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_get_memory_requirements2:%20&body=@jekstrand%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-05+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Jason Ekstrand, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jesse Hall, Google+--+-- == Description+--+-- This extension provides new entry points to query memory requirements of+-- images and buffers in a way that can be easily extended by other+-- extensions, without introducing any further entry points. The Vulkan 1.0+-- 'Vulkan.Core10.MemoryManagement.MemoryRequirements' and+-- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements'+-- structures do not include @sType@ and @pNext@ members. This extension+-- wraps them in new structures with these members, so an application can+-- query a chain of memory requirements structures by constructing the+-- chain and letting the implementation fill them in. A new command is+-- added for each @vkGet*MemoryRequrements@ command in core Vulkan 1.0.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Commands+--+-- -   'getBufferMemoryRequirements2KHR'+--+-- -   'getImageMemoryRequirements2KHR'+--+-- -   'getImageSparseMemoryRequirements2KHR'+--+-- == New Structures+--+-- -   'BufferMemoryRequirementsInfo2KHR'+--+-- -   'ImageMemoryRequirementsInfo2KHR'+--+-- -   'ImageSparseMemoryRequirementsInfo2KHR'+--+-- -   'MemoryRequirements2KHR'+--+-- -   'SparseImageMemoryRequirements2KHR'+--+-- == New Enum Constants+--+-- -   'KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME'+--+-- -   'KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR'+--+--     -   'STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR'+--+--     -   'STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR'+--+--     -   'STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR'+--+--     -   'STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR'+--+-- == Version History+--+-- -   Revision 1, 2017-03-23 (Jason Ekstrand)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'BufferMemoryRequirementsInfo2KHR', 'ImageMemoryRequirementsInfo2KHR',+-- 'ImageSparseMemoryRequirementsInfo2KHR', 'MemoryRequirements2KHR',+-- 'SparseImageMemoryRequirements2KHR', 'getBufferMemoryRequirements2KHR',+-- 'getImageMemoryRequirements2KHR', 'getImageSparseMemoryRequirements2KHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_get_memory_requirements2  ( pattern STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR                                                           , pattern STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR                                                           , pattern STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR
src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs-boot view
@@ -1,4 +1,133 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_get_memory_requirements2 - device extension+--+-- == VK_KHR_get_memory_requirements2+--+-- [__Name String__]+--     @VK_KHR_get_memory_requirements2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     147+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Jason Ekstrand+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_get_memory_requirements2:%20&body=@jekstrand%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-05+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Jason Ekstrand, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jesse Hall, Google+--+-- == Description+--+-- This extension provides new entry points to query memory requirements of+-- images and buffers in a way that can be easily extended by other+-- extensions, without introducing any further entry points. The Vulkan 1.0+-- 'Vulkan.Core10.MemoryManagement.MemoryRequirements' and+-- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements'+-- structures do not include @sType@ and @pNext@ members. This extension+-- wraps them in new structures with these members, so an application can+-- query a chain of memory requirements structures by constructing the+-- chain and letting the implementation fill them in. A new command is+-- added for each @vkGet*MemoryRequrements@ command in core Vulkan 1.0.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Commands+--+-- -   'getBufferMemoryRequirements2KHR'+--+-- -   'getImageMemoryRequirements2KHR'+--+-- -   'getImageSparseMemoryRequirements2KHR'+--+-- == New Structures+--+-- -   'BufferMemoryRequirementsInfo2KHR'+--+-- -   'ImageMemoryRequirementsInfo2KHR'+--+-- -   'ImageSparseMemoryRequirementsInfo2KHR'+--+-- -   'MemoryRequirements2KHR'+--+-- -   'SparseImageMemoryRequirements2KHR'+--+-- == New Enum Constants+--+-- -   'KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME'+--+-- -   'KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR'+--+--     -   'STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR'+--+--     -   'STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR'+--+--     -   'STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR'+--+--     -   'STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR'+--+-- == Version History+--+-- -   Revision 1, 2017-03-23 (Jason Ekstrand)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'BufferMemoryRequirementsInfo2KHR', 'ImageMemoryRequirementsInfo2KHR',+-- 'ImageSparseMemoryRequirementsInfo2KHR', 'MemoryRequirements2KHR',+-- 'SparseImageMemoryRequirements2KHR', 'getBufferMemoryRequirements2KHR',+-- 'getImageMemoryRequirements2KHR', 'getImageSparseMemoryRequirements2KHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_get_memory_requirements2  (MemoryRequirements2KHR) where  
src/Vulkan/Extensions/VK_KHR_get_physical_device_properties2.hs view
@@ -1,4 +1,221 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_get_physical_device_properties2 - instance extension+--+-- == VK_KHR_get_physical_device_properties2+--+-- [__Name String__]+--     @VK_KHR_get_physical_device_properties2@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     60+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_get_physical_device_properties2:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-05+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Ian Elliott, Google+--+-- == Description+--+-- This extension provides new entry points to query device features,+-- device properties, and format properties in a way that can be easily+-- extended by other extensions, without introducing any further entry+-- points. The Vulkan 1.0 feature\/limit\/formatproperty structures do not+-- include @sType@\/@pNext@ members. This extension wraps them in new+-- structures with @sType@\/@pNext@ members, so an application can query a+-- chain of feature\/limit\/formatproperty structures by constructing the+-- chain and letting the implementation fill them in. A new command is+-- added for each @vkGetPhysicalDevice*@ command in core Vulkan 1.0. The+-- new feature structure (and a @pNext@ chain of extending structures) can+-- also be passed in to device creation to enable features.+--+-- This extension also allows applications to use the physical-device+-- components of device extensions before+-- 'Vulkan.Core10.Device.createDevice' is called.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Commands+--+-- -   'getPhysicalDeviceFeatures2KHR'+--+-- -   'getPhysicalDeviceFormatProperties2KHR'+--+-- -   'getPhysicalDeviceImageFormatProperties2KHR'+--+-- -   'getPhysicalDeviceMemoryProperties2KHR'+--+-- -   'getPhysicalDeviceProperties2KHR'+--+-- -   'getPhysicalDeviceQueueFamilyProperties2KHR'+--+-- -   'getPhysicalDeviceSparseImageFormatProperties2KHR'+--+-- == New Structures+--+-- -   'FormatProperties2KHR'+--+-- -   'ImageFormatProperties2KHR'+--+-- -   'PhysicalDeviceImageFormatInfo2KHR'+--+-- -   'PhysicalDeviceMemoryProperties2KHR'+--+-- -   'PhysicalDeviceProperties2KHR'+--+-- -   'PhysicalDeviceSparseImageFormatInfo2KHR'+--+-- -   'QueueFamilyProperties2KHR'+--+-- -   'SparseImageFormatProperties2KHR'+--+-- -   Extending 'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceFeatures2KHR'+--+-- == New Enum Constants+--+-- -   'KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME'+--+-- -   'KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR'+--+--     -   'STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR'+--+--     -   'STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR'+--+--     -   'STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR'+--+-- == Examples+--+-- >     // Get features with a hypothetical future extension.+-- >     VkHypotheticalExtensionFeaturesKHR hypotheticalFeatures =+-- >     {+-- >         VK_STRUCTURE_TYPE_HYPOTHETICAL_FEATURES_KHR,                            // sType+-- >         NULL,                                                                   // pNext+-- >     };+-- >+-- >     VkPhysicalDeviceFeatures2KHR features =+-- >     {+-- >         VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,                       // sType+-- >         &hypotheticalFeatures,                                                  // pNext+-- >     };+-- >+-- >     // After this call, features and hypotheticalFeatures have been filled out.+-- >     vkGetPhysicalDeviceFeatures2KHR(physicalDevice, &features);+-- >+-- >     // Properties/limits can be chained and queried similarly.+-- >+-- >     // Enable some features:+-- >     VkHypotheticalExtensionFeaturesKHR enabledHypotheticalFeatures =+-- >     {+-- >         VK_STRUCTURE_TYPE_HYPOTHETICAL_FEATURES_KHR,                            // sType+-- >         NULL,                                                                   // pNext+-- >     };+-- >+-- >     VkPhysicalDeviceFeatures2KHR enabledFeatures =+-- >     {+-- >         VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,                       // sType+-- >         &enabledHypotheticalFeatures,                                           // pNext+-- >     };+-- >+-- >     enabledFeatures.features.xyz = VK_TRUE;+-- >     enabledHypotheticalFeatures.abc = VK_TRUE;+-- >+-- >     VkDeviceCreateInfo deviceCreateInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,                                   // sType+-- >         &enabledFeatures,                                                       // pNext+-- >         ...+-- >         NULL,                                                                   // pEnabledFeatures+-- >     }+-- >+-- >     VkDevice device;+-- >     vkCreateDevice(physicalDevice, &deviceCreateInfo, NULL, &device);+--+-- == Version History+--+-- -   Revision 1, 2016-09-12 (Jeff Bolz)+--+--     -   Internal revisions+--+-- -   Revision 2, 2016-11-02 (Ian Elliott)+--+--     -   Added ability for applications to use the physical-device+--         components of device extensions before vkCreateDevice is called.+--+-- = See Also+--+-- 'FormatProperties2KHR', 'ImageFormatProperties2KHR',+-- 'PhysicalDeviceFeatures2KHR', 'PhysicalDeviceImageFormatInfo2KHR',+-- 'PhysicalDeviceMemoryProperties2KHR', 'PhysicalDeviceProperties2KHR',+-- 'PhysicalDeviceSparseImageFormatInfo2KHR', 'QueueFamilyProperties2KHR',+-- 'SparseImageFormatProperties2KHR', 'getPhysicalDeviceFeatures2KHR',+-- 'getPhysicalDeviceFormatProperties2KHR',+-- 'getPhysicalDeviceImageFormatProperties2KHR',+-- 'getPhysicalDeviceMemoryProperties2KHR',+-- 'getPhysicalDeviceProperties2KHR',+-- 'getPhysicalDeviceQueueFamilyProperties2KHR',+-- 'getPhysicalDeviceSparseImageFormatProperties2KHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_get_physical_device_properties2  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR                                                                  , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR                                                                  , pattern STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR
src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs view
@@ -1,4 +1,146 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_get_surface_capabilities2 - instance extension+--+-- == VK_KHR_get_surface_capabilities2+--+-- [__Name String__]+--     @VK_KHR_get_surface_capabilities2@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     120+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_get_surface_capabilities2:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-02-27+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Ian Elliott, Google+--+--     -   James Jones, NVIDIA+--+--     -   Alon Or-bach, Samsung+--+-- == Description+--+-- This extension provides new entry points to query device surface+-- capabilities in a way that can be easily extended by other extensions,+-- without introducing any further entry points. This extension can be+-- considered the @VK_KHR_surface@ equivalent of the+-- @VK_KHR_get_physical_device_properties2@ extension.+--+-- == New Commands+--+-- -   'getPhysicalDeviceSurfaceCapabilities2KHR'+--+-- -   'getPhysicalDeviceSurfaceFormats2KHR'+--+-- == New Structures+--+-- -   'PhysicalDeviceSurfaceInfo2KHR'+--+-- -   'SurfaceCapabilities2KHR'+--+-- -   'SurfaceFormat2KHR'+--+-- == New Enum Constants+--+-- -   'KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME'+--+-- -   'KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR'+--+-- == Issues+--+-- 1) What should this extension be named?+--+-- __RESOLVED__: @VK_KHR_get_surface_capabilities2@. Other alternatives:+--+-- -   @VK_KHR_surface2@+--+-- -   One extension, combining a separate display-specific query+--     extension.+--+-- 2) Should additional WSI query functions be extended?+--+-- __RESOLVED__:+--+-- -   'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR':+--     Yes. The need for this motivated the extension.+--+-- -   'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR':+--     No. Currently only has boolean output. Extensions should instead+--     extend 'getPhysicalDeviceSurfaceCapabilities2KHR'.+--+-- -   'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceFormatsKHR':+--     Yes.+--+-- -   'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR':+--     No. Recent discussion concluded this introduced too much variability+--     for applications to deal with. Extensions should instead extend+--     'getPhysicalDeviceSurfaceCapabilities2KHR'.+--+-- -   'Vulkan.Extensions.VK_KHR_xlib_surface.getPhysicalDeviceXlibPresentationSupportKHR':+--     Not in this extension.+--+-- -   'Vulkan.Extensions.VK_KHR_xcb_surface.getPhysicalDeviceXcbPresentationSupportKHR':+--     Not in this extension.+--+-- -   'Vulkan.Extensions.VK_KHR_wayland_surface.getPhysicalDeviceWaylandPresentationSupportKHR':+--     Not in this extension.+--+-- -   'Vulkan.Extensions.VK_KHR_win32_surface.getPhysicalDeviceWin32PresentationSupportKHR':+--     Not in this extension.+--+-- == Version History+--+-- -   Revision 1, 2017-02-27 (James Jones)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'PhysicalDeviceSurfaceInfo2KHR', 'SurfaceCapabilities2KHR',+-- 'SurfaceFormat2KHR', 'getPhysicalDeviceSurfaceCapabilities2KHR',+-- 'getPhysicalDeviceSurfaceFormats2KHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_get_surface_capabilities2  ( getPhysicalDeviceSurfaceCapabilities2KHR                                                            , getPhysicalDeviceSurfaceFormats2KHR                                                            , PhysicalDeviceSurfaceInfo2KHR(..)@@ -38,8 +180,10 @@ import Data.String (IsString) import Data.Type.Equality ((:~:)(Refl)) import Data.Typeable (Typeable)+import Foreign.Storable (Storable) import Foreign.Storable (Storable(peek)) import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..)) import GHC.Generics (Generic) import GHC.IO.Exception (IOErrorType(..)) import GHC.IO.Exception (IOException(..))@@ -461,7 +605,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR)     pNext'' <- fmap castPtr . ContT $ withChain (next)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SurfaceCapabilitiesKHR)) (surfaceCapabilities) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr SurfaceCapabilitiesKHR)) (surfaceCapabilities)     lift $ f   cStructSize = 72   cStructAlignment = 8@@ -469,7 +613,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR)     pNext' <- fmap castPtr . ContT $ withZeroChain @es     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SurfaceCapabilitiesKHR)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 16 :: Ptr SurfaceCapabilitiesKHR)) (zero)     lift $ f  instance (Extendss SurfaceCapabilities2KHR es, PeekChain es) => FromCStruct (SurfaceCapabilities2KHR es) where@@ -509,24 +653,30 @@  instance ToCStruct SurfaceFormat2KHR where   withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p SurfaceFormat2KHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SurfaceFormatKHR)) (surfaceFormat) . ($ ())-    lift $ f+  pokeCStruct p SurfaceFormat2KHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SurfaceFormatKHR)) (surfaceFormat)+    f   cStructSize = 24   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SurfaceFormatKHR)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SurfaceFormatKHR)) (zero)+    f  instance FromCStruct SurfaceFormat2KHR where   peekCStruct p = do     surfaceFormat <- peekCStruct @SurfaceFormatKHR ((p `plusPtr` 16 :: Ptr SurfaceFormatKHR))     pure $ SurfaceFormat2KHR              surfaceFormat++instance Storable SurfaceFormat2KHR where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())  instance Zero SurfaceFormat2KHR where   zero = SurfaceFormat2KHR
src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs-boot view
@@ -1,4 +1,146 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_get_surface_capabilities2 - instance extension+--+-- == VK_KHR_get_surface_capabilities2+--+-- [__Name String__]+--     @VK_KHR_get_surface_capabilities2@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     120+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_get_surface_capabilities2:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-02-27+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Ian Elliott, Google+--+--     -   James Jones, NVIDIA+--+--     -   Alon Or-bach, Samsung+--+-- == Description+--+-- This extension provides new entry points to query device surface+-- capabilities in a way that can be easily extended by other extensions,+-- without introducing any further entry points. This extension can be+-- considered the @VK_KHR_surface@ equivalent of the+-- @VK_KHR_get_physical_device_properties2@ extension.+--+-- == New Commands+--+-- -   'getPhysicalDeviceSurfaceCapabilities2KHR'+--+-- -   'getPhysicalDeviceSurfaceFormats2KHR'+--+-- == New Structures+--+-- -   'PhysicalDeviceSurfaceInfo2KHR'+--+-- -   'SurfaceCapabilities2KHR'+--+-- -   'SurfaceFormat2KHR'+--+-- == New Enum Constants+--+-- -   'KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME'+--+-- -   'KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR'+--+-- == Issues+--+-- 1) What should this extension be named?+--+-- __RESOLVED__: @VK_KHR_get_surface_capabilities2@. Other alternatives:+--+-- -   @VK_KHR_surface2@+--+-- -   One extension, combining a separate display-specific query+--     extension.+--+-- 2) Should additional WSI query functions be extended?+--+-- __RESOLVED__:+--+-- -   'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR':+--     Yes. The need for this motivated the extension.+--+-- -   'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR':+--     No. Currently only has boolean output. Extensions should instead+--     extend 'getPhysicalDeviceSurfaceCapabilities2KHR'.+--+-- -   'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceFormatsKHR':+--     Yes.+--+-- -   'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR':+--     No. Recent discussion concluded this introduced too much variability+--     for applications to deal with. Extensions should instead extend+--     'getPhysicalDeviceSurfaceCapabilities2KHR'.+--+-- -   'Vulkan.Extensions.VK_KHR_xlib_surface.getPhysicalDeviceXlibPresentationSupportKHR':+--     Not in this extension.+--+-- -   'Vulkan.Extensions.VK_KHR_xcb_surface.getPhysicalDeviceXcbPresentationSupportKHR':+--     Not in this extension.+--+-- -   'Vulkan.Extensions.VK_KHR_wayland_surface.getPhysicalDeviceWaylandPresentationSupportKHR':+--     Not in this extension.+--+-- -   'Vulkan.Extensions.VK_KHR_win32_surface.getPhysicalDeviceWin32PresentationSupportKHR':+--     Not in this extension.+--+-- == Version History+--+-- -   Revision 1, 2017-02-27 (James Jones)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'PhysicalDeviceSurfaceInfo2KHR', 'SurfaceCapabilities2KHR',+-- 'SurfaceFormat2KHR', 'getPhysicalDeviceSurfaceCapabilities2KHR',+-- 'getPhysicalDeviceSurfaceFormats2KHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_get_surface_capabilities2  ( PhysicalDeviceSurfaceInfo2KHR                                                            , SurfaceCapabilities2KHR                                                            , SurfaceFormat2KHR
src/Vulkan/Extensions/VK_KHR_image_format_list.hs view
@@ -1,4 +1,117 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_image_format_list - device extension+--+-- == VK_KHR_image_format_list+--+-- [__Name String__]+--     @VK_KHR_image_format_list@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     148+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Jason Ekstrand+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_image_format_list:%20&body=@jekstrand%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-03-20+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jason Ekstrand, Intel+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jeff Leger, Qualcomm+--+--     -   Neil Henning, Codeplay+--+-- == Description+--+-- On some implementations, setting the+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'+-- on image creation can cause access to that image to perform worse than+-- an equivalent image created without+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'+-- because the implementation does not know what view formats will be+-- paired with the image.+--+-- This extension allows an application to provide the list of all formats+-- that /can/ be used with an image when it is created. The implementation+-- may then be able to create a more efficient image that supports the+-- subset of formats required by the application without having to support+-- all formats in the format compatibility class of the image format.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo',+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2':+--+--     -   'ImageFormatListCreateInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME'+--+-- -   'KHR_IMAGE_FORMAT_LIST_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR'+--+-- == Version History+--+-- -   Revision 1, 2017-03-20 (Jason Ekstrand)+--+--     -   Initial revision+--+-- = See Also+--+-- 'ImageFormatListCreateInfoKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_image_format_list Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_image_format_list  ( pattern STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR                                                    , ImageFormatListCreateInfoKHR                                                    , KHR_IMAGE_FORMAT_LIST_SPEC_VERSION
src/Vulkan/Extensions/VK_KHR_imageless_framebuffer.hs view
@@ -1,4 +1,132 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_imageless_framebuffer - device extension+--+-- == VK_KHR_imageless_framebuffer+--+-- [__Name String__]+--     @VK_KHR_imageless_framebuffer@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     109+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_maintenance2@+--+--     -   Requires @VK_KHR_image_format_list@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_imageless_framebuffer:%20&body=@tobias%20 >+--+-- == Other Extension Metadata+--+-- [Last Modified Date]+--     2018-12-14+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [Contributors]+--+--     -   Tobias Hector+--+--     -   Graham Wihlidal+--+-- == Description+--+-- This extension allows framebuffers to be created without the need for+-- creating images first, allowing more flexibility in how they are used,+-- and avoiding the need for many of the confusing compatibility rules.+--+-- Framebuffers are now created with a small amount of additional metadata+-- about the image views that will be used in+-- 'FramebufferAttachmentsCreateInfoKHR', and the actual image views are+-- provided at render pass begin time via+-- 'RenderPassAttachmentBeginInfoKHR'.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   'FramebufferAttachmentImageInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Pass.FramebufferCreateInfo':+--+--     -   'FramebufferAttachmentsCreateInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceImagelessFramebufferFeaturesKHR'+--+-- -   Extending 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo':+--+--     -   'RenderPassAttachmentBeginInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME'+--+-- -   'KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FramebufferCreateFlagBits':+--+--     -   'FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR'+--+--     -   'STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR'+--+-- == Version History+--+-- -   Revision 1, 2018-12-14 (Tobias Hector)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'FramebufferAttachmentImageInfoKHR',+-- 'FramebufferAttachmentsCreateInfoKHR',+-- 'PhysicalDeviceImagelessFramebufferFeaturesKHR',+-- 'RenderPassAttachmentBeginInfoKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_imageless_framebuffer Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_imageless_framebuffer  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR                                                        , pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR                                                        , pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR
src/Vulkan/Extensions/VK_KHR_incremental_present.hs view
@@ -1,4 +1,149 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_incremental_present - device extension+--+-- == VK_KHR_incremental_present+--+-- [__Name String__]+--     @VK_KHR_incremental_present@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     85+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+-- [__Contact__]+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_incremental_present:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-11-02+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Ian Elliott, Google+--+--     -   Jesse Hall, Google+--+--     -   Alon Or-bach, Samsung+--+--     -   James Jones, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Ray Smith, ARM+--+--     -   Mika Isojarvi, Google+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This device extension extends+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR', from the+-- @VK_KHR_swapchain@ extension, allowing an application to specify a list+-- of rectangular, modified regions of each image to present. This should+-- be used in situations where an application is only changing a small+-- portion of the presentable images within a swapchain, since it enables+-- the presentation engine to avoid wasting time presenting parts of the+-- surface that have not changed.+--+-- This extension is leveraged from the @EGL_KHR_swap_buffers_with_damage@+-- extension.+--+-- == New Structures+--+-- -   'PresentRegionKHR'+--+-- -   'RectLayerKHR'+--+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':+--+--     -   'PresentRegionsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_INCREMENTAL_PRESENT_EXTENSION_NAME'+--+-- -   'KHR_INCREMENTAL_PRESENT_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_REGIONS_KHR'+--+-- == Issues+--+-- 1) How should we handle steroescopic-3D swapchains? We need to add a+-- layer for each rectangle. One approach is to create another struct+-- containing the 'Vulkan.Core10.FundamentalTypes.Rect2D' plus layer, and+-- have 'PresentRegionsKHR' point to an array of that struct. Another+-- approach is to have two parallel arrays, @pRectangles@ and @pLayers@,+-- where @pRectangles@[i] and @pLayers@[i] must be used together. Which+-- approach should we use, and if the array of a new structure, what should+-- that be called?+--+-- __RESOLVED__: Create a new structure, which is a+-- 'Vulkan.Core10.FundamentalTypes.Rect2D' plus a layer, and will be called+-- 'RectLayerKHR'.+--+-- 2) Where is the origin of the 'RectLayerKHR'?+--+-- __RESOLVED__: The upper left corner of the presentable image(s) of the+-- swapchain, per the definition of framebuffer coordinates.+--+-- 3) Does the rectangular region, 'RectLayerKHR', specify pixels of the+-- swapchain’s image(s), or of the surface?+--+-- __RESOLVED__: Of the image(s). Some presentation engines may scale the+-- pixels of a swapchain’s image(s) to the size of the surface. The size of+-- the swapchain’s image(s) will be consistent, where the size of the+-- surface may vary over time.+--+-- 4) What if all of the rectangles for a given swapchain contain a width+-- and\/or height of zero?+--+-- __RESOLVED__: The application is indicating that no pixels changed since+-- the last present. The presentation engine may use such a hint and not+-- update any pixels for the swapchain. However, all other semantics of+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' must still be+-- honored, including waiting for semaphores to signal.+--+-- == Version History+--+-- -   Revision 1, 2016-11-02 (Ian Elliott)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PresentRegionKHR', 'PresentRegionsKHR', 'RectLayerKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_incremental_present Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_incremental_present  ( PresentRegionsKHR(..)                                                      , PresentRegionKHR(..)                                                      , RectLayerKHR(..)@@ -21,8 +166,10 @@ import qualified Data.Vector (null) import Data.String (IsString) import Data.Typeable (Typeable)+import Foreign.Storable (Storable) import Foreign.Storable (Storable(peek)) import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..)) import GHC.Generics (Generic) import GHC.IO.Exception (IOErrorType(..)) import GHC.IO.Exception (IOException(..))@@ -174,7 +321,7 @@       then pure nullPtr       else do         pPRectangles <- ContT $ allocaBytesAligned @RectLayerKHR (((Data.Vector.length (rectangles))) * 20) 4-        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRectangles `plusPtr` (20 * (i)) :: Ptr RectLayerKHR) (e) . ($ ())) ((rectangles))+        lift $ Data.Vector.imapM_ (\i e -> poke (pPRectangles `plusPtr` (20 * (i)) :: Ptr RectLayerKHR) (e)) ((rectangles))         pure $ pPRectangles     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr RectLayerKHR))) pRectangles''     lift $ f@@ -240,18 +387,18 @@  instance ToCStruct RectLayerKHR where   withCStruct x f = allocaBytesAligned 20 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p RectLayerKHR{..} f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Offset2D)) (offset) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (extent) . ($ ())-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (layer)-    lift $ f+  pokeCStruct p RectLayerKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Offset2D)) (offset)+    poke ((p `plusPtr` 8 :: Ptr Extent2D)) (extent)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (layer)+    f   cStructSize = 20   cStructAlignment = 4-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Offset2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Offset2D)) (zero)+    poke ((p `plusPtr` 8 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+    f  instance FromCStruct RectLayerKHR where   peekCStruct p = do@@ -260,6 +407,12 @@     layer <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))     pure $ RectLayerKHR              offset extent layer++instance Storable RectLayerKHR where+  sizeOf ~_ = 20+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())  instance Zero RectLayerKHR where   zero = RectLayerKHR
src/Vulkan/Extensions/VK_KHR_incremental_present.hs-boot view
@@ -1,4 +1,149 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_incremental_present - device extension+--+-- == VK_KHR_incremental_present+--+-- [__Name String__]+--     @VK_KHR_incremental_present@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     85+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+-- [__Contact__]+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_incremental_present:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-11-02+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Ian Elliott, Google+--+--     -   Jesse Hall, Google+--+--     -   Alon Or-bach, Samsung+--+--     -   James Jones, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Ray Smith, ARM+--+--     -   Mika Isojarvi, Google+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This device extension extends+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR', from the+-- @VK_KHR_swapchain@ extension, allowing an application to specify a list+-- of rectangular, modified regions of each image to present. This should+-- be used in situations where an application is only changing a small+-- portion of the presentable images within a swapchain, since it enables+-- the presentation engine to avoid wasting time presenting parts of the+-- surface that have not changed.+--+-- This extension is leveraged from the @EGL_KHR_swap_buffers_with_damage@+-- extension.+--+-- == New Structures+--+-- -   'PresentRegionKHR'+--+-- -   'RectLayerKHR'+--+-- -   Extending 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR':+--+--     -   'PresentRegionsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_INCREMENTAL_PRESENT_EXTENSION_NAME'+--+-- -   'KHR_INCREMENTAL_PRESENT_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_REGIONS_KHR'+--+-- == Issues+--+-- 1) How should we handle steroescopic-3D swapchains? We need to add a+-- layer for each rectangle. One approach is to create another struct+-- containing the 'Vulkan.Core10.FundamentalTypes.Rect2D' plus layer, and+-- have 'PresentRegionsKHR' point to an array of that struct. Another+-- approach is to have two parallel arrays, @pRectangles@ and @pLayers@,+-- where @pRectangles@[i] and @pLayers@[i] must be used together. Which+-- approach should we use, and if the array of a new structure, what should+-- that be called?+--+-- __RESOLVED__: Create a new structure, which is a+-- 'Vulkan.Core10.FundamentalTypes.Rect2D' plus a layer, and will be called+-- 'RectLayerKHR'.+--+-- 2) Where is the origin of the 'RectLayerKHR'?+--+-- __RESOLVED__: The upper left corner of the presentable image(s) of the+-- swapchain, per the definition of framebuffer coordinates.+--+-- 3) Does the rectangular region, 'RectLayerKHR', specify pixels of the+-- swapchain’s image(s), or of the surface?+--+-- __RESOLVED__: Of the image(s). Some presentation engines may scale the+-- pixels of a swapchain’s image(s) to the size of the surface. The size of+-- the swapchain’s image(s) will be consistent, where the size of the+-- surface may vary over time.+--+-- 4) What if all of the rectangles for a given swapchain contain a width+-- and\/or height of zero?+--+-- __RESOLVED__: The application is indicating that no pixels changed since+-- the last present. The presentation engine may use such a hint and not+-- update any pixels for the swapchain. However, all other semantics of+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' must still be+-- honored, including waiting for semaphores to signal.+--+-- == Version History+--+-- -   Revision 1, 2016-11-02 (Ian Elliott)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PresentRegionKHR', 'PresentRegionsKHR', 'RectLayerKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_incremental_present Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_incremental_present  ( PresentRegionKHR                                                      , PresentRegionsKHR                                                      , RectLayerKHR
src/Vulkan/Extensions/VK_KHR_maintenance1.hs view
@@ -1,4 +1,187 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_maintenance1 - device extension+--+-- == VK_KHR_maintenance1+--+-- [__Name String__]+--     @VK_KHR_maintenance1@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     70+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_maintenance1:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-03-13+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Dan Ginsburg, Valve+--+--     -   Daniel Koch, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Jason Ekstrand, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jesse Hall, Google+--+--     -   John Kessenich, Google+--+--     -   Michael Worcester, Imagination Technologies+--+--     -   Neil Henning, Codeplay Software Ltd.+--+--     -   Piers Daniell, NVIDIA+--+--     -   Slawomir Grajewski, Intel+--+--     -   Tobias Hector, Imagination Technologies+--+--     -   Tom Olson, ARM+--+-- == Description+--+-- @VK_KHR_maintenance1@ adds a collection of minor features that were+-- intentionally left out or overlooked from the original Vulkan 1.0+-- release.+--+-- The new features are as follows:+--+-- -   Allow 2D and 2D array image views to be created from 3D images,+--     which can then be used as color framebuffer attachments. This allows+--     applications to render to slices of a 3D image.+--+-- -   Support 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImage' between+--     2D array layers and 3D slices. This extension allows copying from+--     layers of a 2D array image to slices of a 3D image and vice versa.+--+-- -   Allow negative height to be specified in the+--     'Vulkan.Core10.Pipeline.Viewport'::@height@ field to perform+--     y-inversion of the clip-space to framebuffer-space transform. This+--     allows apps to avoid having to use @gl_Position.y = -gl_Position.y@+--     in shaders also targeting other APIs.+--+-- -   Allow implementations to express support for doing just transfers+--     and clears of image formats that they otherwise support no other+--     format features for. This is done by adding new format feature flags+--     'FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR' and+--     'FORMAT_FEATURE_TRANSFER_DST_BIT_KHR'.+--+-- -   Support 'Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer' on+--     transfer-only queues. Previously+--     'Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer' was defined to+--     only work on command buffers allocated from command pools which+--     support graphics or compute queues. It is now allowed on queues that+--     just support transfer operations.+--+-- -   Fix the inconsistency of how error conditions are returned between+--     the 'Vulkan.Core10.Pipeline.createGraphicsPipelines' and+--     'Vulkan.Core10.Pipeline.createComputePipelines' functions and the+--     'Vulkan.Core10.DescriptorSet.allocateDescriptorSets' and+--     'Vulkan.Core10.CommandBuffer.allocateCommandBuffers' functions.+--+-- -   Add new 'ERROR_OUT_OF_POOL_MEMORY_KHR' error so implementations can+--     give a more precise reason for+--     'Vulkan.Core10.DescriptorSet.allocateDescriptorSets' failures.+--+-- -   Add a new command 'trimCommandPoolKHR' which gives the+--     implementation an opportunity to release any unused command pool+--     memory back to the system.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Commands+--+-- -   'trimCommandPoolKHR'+--+-- == New Bitmasks+--+-- -   'CommandPoolTrimFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_MAINTENANCE1_EXTENSION_NAME'+--+-- -   'KHR_MAINTENANCE1_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':+--+--     -   'FORMAT_FEATURE_TRANSFER_DST_BIT_KHR'+--+--     -   'FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':+--+--     -   'IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'ERROR_OUT_OF_POOL_MEMORY_KHR'+--+-- == Issues+--+-- 1.  Are viewports with zero height allowed?+--+--     __RESOLVED__: Yes, although they have low utility.+--+-- == Version History+--+-- -   Revision 1, 2016-10-26 (Piers Daniell)+--+--     -   Internal revisions+--+-- -   Revision 2, 2018-03-13 (Jon Leech)+--+--     -   Add issue for zero-height viewports+--+-- = See Also+--+-- 'CommandPoolTrimFlagsKHR', 'trimCommandPoolKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance1 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_maintenance1  ( pattern ERROR_OUT_OF_POOL_MEMORY_KHR                                               , pattern FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR                                               , pattern FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
src/Vulkan/Extensions/VK_KHR_maintenance2.hs view
@@ -1,4 +1,245 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_maintenance2 - device extension+--+-- == VK_KHR_maintenance2+--+-- [__Name String__]+--     @VK_KHR_maintenance2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     118+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Michael Worcester+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_maintenance2:%20&body=@michaelworcester%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-05+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Michael Worcester, Imagination Technologies+--+--     -   Stuart Smith, Imagination Technologies+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Daniel Rakos, AMD+--+--     -   Neil Henning, Codeplay+--+--     -   Piers Daniell, NVIDIA+--+-- == Description+--+-- @VK_KHR_maintenance2@ adds a collection of minor features that were+-- intentionally left out or overlooked from the original Vulkan 1.0+-- release.+--+-- The new features are as follows:+--+-- -   Allow the application to specify which aspect of an input attachment+--     might be read for a given subpass.+--+-- -   Allow implementations to express the clipping behavior of points.+--+-- -   Allow creating images with usage flags that may not be supported for+--     the base image’s format, but are supported for image views of the+--     image that have a different but compatible format.+--+-- -   Allow creating uncompressed image views of compressed images.+--+-- -   Allow the application to select between an upper-left and lower-left+--     origin for the tessellation domain space.+--+-- -   Adds two new image layouts for depth stencil images to allow either+--     the depth or stencil aspect to be read-only while the other aspect+--     is writable.+--+-- == Input Attachment Specification+--+-- Input attachment specification allows an application to specify which+-- aspect of a multi-aspect image (e.g. a combined depth stencil format)+-- will be accessed via a @subpassLoad@ operation.+--+-- On some implementations there /may/ be a performance penalty if the+-- implementation does not know (at 'Vulkan.Core10.Pass.createRenderPass'+-- time) which aspect(s) of multi-aspect images /can/ be accessed as input+-- attachments.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   'InputAttachmentAspectReferenceKHR'+--+-- -   Extending 'Vulkan.Core10.ImageView.ImageViewCreateInfo':+--+--     -   'ImageViewUsageCreateInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDevicePointClippingPropertiesKHR'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo':+--+--     -   'PipelineTessellationDomainOriginStateCreateInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Pass.RenderPassCreateInfo':+--+--     -   'RenderPassInputAttachmentAspectCreateInfoKHR'+--+-- == New Enums+--+-- -   'PointClippingBehaviorKHR'+--+-- -   'TessellationDomainOriginKHR'+--+-- == New Enum Constants+--+-- -   'KHR_MAINTENANCE2_EXTENSION_NAME'+--+-- -   'KHR_MAINTENANCE2_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':+--+--     -   'IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR'+--+--     -   'IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':+--+--     -   'IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR'+--+--     -   'IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR'+--+-- -   Extending+--     'Vulkan.Core11.Enums.PointClippingBehavior.PointClippingBehavior':+--+--     -   'POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR'+--+--     -   'POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR'+--+--     -   'STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR'+--+-- -   Extending+--     'Vulkan.Core11.Enums.TessellationDomainOrigin.TessellationDomainOrigin':+--+--     -   'TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR'+--+--     -   'TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR'+--+-- == Input Attachment Specification Example+--+-- Consider the case where a render pass has two subpasses and two+-- attachments.+--+-- Attachment 0 has the format+-- 'Vulkan.Core10.Enums.Format.FORMAT_D24_UNORM_S8_UINT', attachment 1 has+-- some color format.+--+-- Subpass 0 writes to attachment 0, subpass 1 reads only the depth+-- information from attachment 0 (using inputAttachmentRead) and writes to+-- attachment 1.+--+-- >     VkInputAttachmentAspectReferenceKHR references[] = {+-- >         {+-- >             .subpass = 1,+-- >             .inputAttachmentIndex = 0,+-- >             .aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT+-- >         }+-- >     };+-- >+-- >     VkRenderPassInputAttachmentAspectCreateInfoKHR specifyAspects = {+-- >         .sType = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR,+-- >         .pNext = NULL,+-- >         .aspectReferenceCount = 1,+-- >         .pAspectReferences = references+-- >     };+-- >+-- >+-- >     VkRenderPassCreateInfo createInfo = {+-- >         ...+-- >         .pNext = &specifyAspects,+-- >         ...+-- >     }+-- >+-- >     vkCreateRenderPass(...);+--+-- == Issues+--+-- 1) What is the default tessellation domain origin?+--+-- __RESOLVED__: Vulkan 1.0 originally inadvertently documented a+-- lower-left origin, but the conformance tests and all implementations+-- implemented an upper-left origin. This extension adds a control to+-- select between lower-left (for compatibility with OpenGL) and+-- upper-left, and we retroactively fix unextended Vulkan to have a default+-- of an upper-left origin.+--+-- == Version History+--+-- -   Revision 1, 2017-04-28+--+-- = See Also+--+-- 'ImageViewUsageCreateInfoKHR', 'InputAttachmentAspectReferenceKHR',+-- 'PhysicalDevicePointClippingPropertiesKHR',+-- 'PipelineTessellationDomainOriginStateCreateInfoKHR',+-- 'PointClippingBehaviorKHR',+-- 'RenderPassInputAttachmentAspectCreateInfoKHR',+-- 'TessellationDomainOriginKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_maintenance2  ( pattern IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR                                               , pattern IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR                                               , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR
src/Vulkan/Extensions/VK_KHR_maintenance3.hs view
@@ -1,4 +1,116 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_maintenance3 - device extension+--+-- == VK_KHR_maintenance3+--+-- [__Name String__]+--     @VK_KHR_maintenance3@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     169+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_maintenance3:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-05+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- @VK_KHR_maintenance3@ adds a collection of minor features that were+-- intentionally left out or overlooked from the original Vulkan 1.0+-- release.+--+-- The new features are as follows:+--+-- -   A limit on the maximum number of descriptors that are supported in a+--     single descriptor set layout. Some implementations have a limit on+--     the total size of descriptors in a set, which cannot be expressed in+--     terms of the limits in Vulkan 1.0.+--+-- -   A limit on the maximum size of a single memory allocation. Some+--     platforms have kernel interfaces that limit the maximum size of an+--     allocation.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Commands+--+-- -   'getDescriptorSetLayoutSupportKHR'+--+-- == New Structures+--+-- -   'DescriptorSetLayoutSupportKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceMaintenance3PropertiesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_MAINTENANCE3_EXTENSION_NAME'+--+-- -   'KHR_MAINTENANCE3_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR'+--+-- == Version History+--+-- -   Revision 1, 2017-08-22+--+-- = See Also+--+-- 'DescriptorSetLayoutSupportKHR',+-- 'PhysicalDeviceMaintenance3PropertiesKHR',+-- 'getDescriptorSetLayoutSupportKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance3 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_maintenance3  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR                                               , pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR                                               , getDescriptorSetLayoutSupportKHR
src/Vulkan/Extensions/VK_KHR_multiview.hs view
@@ -1,4 +1,154 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_multiview - device extension+--+-- == VK_KHR_multiview+--+-- [__Name String__]+--     @VK_KHR_multiview@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     54+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_multiview:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_multiview.html SPV_KHR_multiview>+--+--     -   This extension provides API support for+--         <https://raw.githubusercontent.com/KhronosGroup/GLSL/master/extensions/ext/GL_EXT_multiview.txt GL_EXT_multiview>+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension has the same goal as the OpenGL ES @GL_OVR_multiview@+-- extension. Multiview is a rendering technique originally designed for VR+-- where it is more efficient to record a single set of commands to be+-- executed with slightly different behavior for each \"view\".+--+-- It includes a concise way to declare a render pass with multiple views,+-- and gives implementations freedom to render the views in the most+-- efficient way possible. This is done with a multiview configuration+-- specified during+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass render pass>+-- creation with the+-- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'+-- passed into 'Vulkan.Core10.Pass.RenderPassCreateInfo'::@pNext@.+--+-- This extension enables the use of the+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_multiview.html SPV_KHR_multiview>+-- shader extension which adds a new @ViewIndex@ built-in type to shaders+-- that allow shaders to control what to do for each view. If using GLSL+-- there is also a+-- <https://raw.githubusercontent.com/KhronosGroup/GLSL/master/extensions/ext/GL_EXT_multiview.txt GL_EXT_multiview>+-- extension that introduces a @highp int gl_ViewIndex;@ built-in variable+-- for vertex, tessellation, geometry, and fragment shaders.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceMultiviewFeaturesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceMultiviewPropertiesKHR'+--+-- -   Extending 'Vulkan.Core10.Pass.RenderPassCreateInfo':+--+--     -   'RenderPassMultiviewCreateInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_MULTIVIEW_EXTENSION_NAME'+--+-- -   'KHR_MULTIVIEW_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits':+--+--     -   'DEPENDENCY_VIEW_LOCAL_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR'+--+--     -   'STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR'+--+-- == New Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-viewindex ViewIndex>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-multiview MultiView>+--+-- == Version History+--+-- -   Revision 1, 2016-10-28 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceMultiviewFeaturesKHR',+-- 'PhysicalDeviceMultiviewPropertiesKHR',+-- 'RenderPassMultiviewCreateInfoKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_multiview Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_multiview  ( pattern STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR                                            , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR                                            , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR
src/Vulkan/Extensions/VK_KHR_performance_query.hs view
@@ -1,4 +1,481 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_performance_query - device extension+--+-- == VK_KHR_performance_query+--+-- [__Name String__]+--     @VK_KHR_performance_query@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     117+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>+--+-- [__Contact__]+--+--     -   Alon Or-bach+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_performance_query:%20&body=@alonorbach%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-10-08+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jesse Barker, Unity Technologies+--+--     -   Kenneth Benzie, Codeplay+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Jeff Leger, Qualcomm+--+--     -   Jesse Hall, Google+--+--     -   Tobias Hector, AMD+--+--     -   Neil Henning, Codeplay+--+--     -   Baldur Karlsson+--+--     -   Lionel Landwerlin, Intel+--+--     -   Peter Lohrmann, AMD+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Niklas Smedberg, Unity Technologies+--+--     -   Igor Ostrowski, Intel+--+-- == Description+--+-- The @VK_KHR_performance_query@ extension adds a mechanism to allow+-- querying of performance counters for use in applications and by+-- profiling tools.+--+-- Each queue family /may/ expose counters that /can/ be enabled on a queue+-- of that family. We extend 'Vulkan.Core10.Enums.QueryType.QueryType' to+-- add a new query type for performance queries, and chain a structure on+-- 'Vulkan.Core10.Query.QueryPoolCreateInfo' to specify the performance+-- queries to enable.+--+-- == New Commands+--+-- -   'acquireProfilingLockKHR'+--+-- -   'enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR'+--+-- -   'getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'+--+-- -   'releaseProfilingLockKHR'+--+-- == New Structures+--+-- -   'AcquireProfilingLockInfoKHR'+--+-- -   'PerformanceCounterDescriptionKHR'+--+-- -   'PerformanceCounterKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevicePerformanceQueryFeaturesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDevicePerformanceQueryPropertiesKHR'+--+-- -   Extending 'Vulkan.Core10.Query.QueryPoolCreateInfo':+--+--     -   'QueryPoolPerformanceCreateInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Queue.SubmitInfo':+--+--     -   'PerformanceQuerySubmitInfoKHR'+--+-- == New Unions+--+-- -   'PerformanceCounterResultKHR'+--+-- == New Enums+--+-- -   'AcquireProfilingLockFlagBitsKHR'+--+-- -   'PerformanceCounterDescriptionFlagBitsKHR'+--+-- -   'PerformanceCounterScopeKHR'+--+-- -   'PerformanceCounterStorageKHR'+--+-- -   'PerformanceCounterUnitKHR'+--+-- == New Bitmasks+--+-- -   'AcquireProfilingLockFlagsKHR'+--+-- -   'PerformanceCounterDescriptionFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_PERFORMANCE_QUERY_EXTENSION_NAME'+--+-- -   'KHR_PERFORMANCE_QUERY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':+--+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) Should this extension include a mechanism to begin a query in command+-- buffer /A/ and end the query in command buffer /B/?+--+-- __RESOLVED__ No - queries are tied to command buffer creation and thus+-- have to be encapsulated within a single command buffer.+--+-- 2) Should this extension include a mechanism to begin and end queries+-- globally on the queue, not using the existing command buffer commands?+--+-- __RESOLVED__ No - for the same reasoning as the resolution of 1).+--+-- 3) Should this extension expose counters that require multiple passes?+--+-- __RESOLVED__ Yes - users should re-submit a command buffer with the same+-- commands in it multiple times, specifying the pass to count as the query+-- parameter in VkPerformanceQuerySubmitInfoKHR.+--+-- 4) How to handle counters across parallel workloads?+--+-- __RESOLVED__ In the spirit of Vulkan, a counter description flag+-- 'PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR' denotes+-- that the accuracy of a counter result is affected by parallel workloads.+--+-- 5) How to handle secondary command buffers?+--+-- __RESOLVED__ Secondary command buffers inherit any counter pass index+-- specified in the parent primary command buffer. Note: this is no longer+-- an issue after change from issue 10 resolution+--+-- 6) What commands does the profiling lock have to be held for?+--+-- __RESOLVED__ For any command buffer that is being queried with a+-- performance query pool, the profiling lock /must/ be held while that+-- command buffer is in the /recording/, /executable/, or /pending state/.+--+-- 7) Should we support+-- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults'?+--+-- __RESOLVED__ Yes.+--+-- 8) Should we allow performance queries to interact with multiview?+--+-- __RESOLVED__ Yes, but the performance queries must be performed once for+-- each pass per view.+--+-- 9) Should a @queryCount > 1@ be usable for performance queries?+--+-- __RESOLVED__ Yes. Some vendors will have costly performance counter+-- query pool creation, and would rather if a certain set of counters were+-- to be used multiple times that a @queryCount > 1@ can be used to+-- amortize the instantiation cost.+--+-- 10) Should we introduce an indirect mechanism to set the counter pass+-- index?+--+-- __RESOLVED__ Specify the counter pass index at submit time instead to+-- avoid requiring re-recording of command buffers when multiple counter+-- passes needed.+--+-- == Examples+--+-- The following example shows how to find what performance counters a+-- queue family supports, setup a query pool to record these performance+-- counters, how to add the query pool to the command buffer to record+-- information, and how to get the results from the query pool.+--+-- > // A previously created physical device+-- > VkPhysicalDevice physicalDevice;+-- >+-- > // One of the queue families our device supports+-- > uint32_t queueFamilyIndex;+-- >+-- > uint32_t counterCount;+-- >+-- > // Get the count of counters supported+-- > vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(+-- >   physicalDevice,+-- >   queueFamilyIndex,+-- >   &counterCount,+-- >   NULL,+-- >   NULL);+-- >+-- > VkPerformanceCounterKHR* counters =+-- >   malloc(sizeof(VkPerformanceCounterKHR) * counterCount);+-- > VkPerformanceCounterDescriptionKHR* counterDescriptions =+-- >   malloc(sizeof(VkPerformanceCounterDescriptionKHR) * counterCount);+-- >+-- > // Get the counters supported+-- > vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(+-- >   physicalDevice,+-- >   queueFamilyIndex,+-- >   &counterCount,+-- >   counters,+-- >   counterDescriptions);+-- >+-- > // Try to enable the first 8 counters+-- > uint32_t enabledCounters[8];+-- >+-- > const uint32_t enabledCounterCount = min(counterCount, 8));+-- >+-- > for (uint32_t i = 0; i < enabledCounterCount; i++) {+-- >   enabledCounters[i] = i;+-- > }+-- >+-- > // A previously created device that had the performanceCounterQueryPools feature+-- > // set to VK_TRUE+-- > VkDevice device;+-- >+-- > VkQueryPoolPerformanceCreateInfoKHR performanceQueryCreateInfo = {+-- >   VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,+-- >   NULL,+-- >+-- >   // Specify the queue family that this performance query is performed on+-- >   queueFamilyIndex,+-- >+-- >   // The number of counters to enable+-- >   enabledCounterCount,+-- >+-- >   // The array of indices of counters to enable+-- >   enabledCounters+-- > };+-- >+-- >+-- > // Get the number of passes our counters will require.+-- > uint32_t numPasses;+-- >+-- > vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(+-- >   physicalDevice,+-- >   &performanceQueryCreateInfo,+-- >   &numPasses);+-- >+-- > VkQueryPoolCreateInfo queryPoolCreateInfo = {+-- >   VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,+-- >   &performanceQueryCreateInfo,+-- >   0,+-- >+-- >   // Using our new query type here+-- >   VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR,+-- >+-- >   1,+-- >+-- >   0+-- > };+-- >+-- > VkQueryPool queryPool;+-- >+-- > VkResult result = vkCreateQueryPool(+-- >   device,+-- >   &queryPoolCreateInfo,+-- >   NULL,+-- >   &queryPool);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > // A queue from queueFamilyIndex+-- > VkQueue queue;+-- >+-- > // A command buffer we want to record counters on+-- > VkCommandBuffer commandBuffer;+-- >+-- > VkCommandBufferBeginInfo commandBufferBeginInfo = {+-- >   VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,+-- >   NULL,+-- >   0,+-- >   NULL+-- > };+-- >+-- > VkAcquireProfilingLockInfoKHR lockInfo = {+-- >   VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR,+-- >   NULL,+-- >   0,+-- >   UINT64_MAX // Wait forever for the lock+-- > };+-- >+-- > // Acquire the profiling lock before we record command buffers+-- > // that will use performance queries+-- >+-- > result = vkAcquireProfilingLockKHR(device, &lockInfo);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > result = vkBeginCommandBuffer(commandBuffer, &commandBufferBeginInfo);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > vkCmdResetQueryPool(+-- >   commandBuffer,+-- >   queryPool,+-- >   0,+-- >   1);+-- >+-- > vkCmdBeginQuery(+-- >   commandBuffer,+-- >   queryPool,+-- >   0,+-- >   0);+-- >+-- > // Perform the commands you want to get performance information on+-- > // ...+-- >+-- > // Perform a barrier to ensure all previous commands were complete before+-- > // ending the query+-- > vkCmdPipelineBarrier(commandBuffer,+-- >   VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,+-- >   VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,+-- >   0,+-- >   0,+-- >   NULL,+-- >   0,+-- >   NULL,+-- >   0,+-- >   NULL);+-- >+-- > vkCmdEndQuery(+-- >   commandBuffer,+-- >   queryPool,+-- >   0);+-- >+-- > result = vkEndCommandBuffer(commandBuffer);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > for (uint32_t counterPass = 0; counterPass < numPasses; counterPass++) {+-- >+-- >   VkPerformanceQuerySubmitInfoKHR performanceQuerySubmitInfo = {+-- >     VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR,+-- >     NULL,+-- >     counterPass+-- >   };+-- >+-- >+-- >   // Submit the command buffer and wait for its completion+-- >   // ...+-- > }+-- >+-- > // Release the profiling lock after the command buffer is no longer in the+-- > // pending state.+-- > vkReleaseProfilingLockKHR(device);+-- >+-- > result = vkResetCommandBuffer(commandBuffer, 0);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > // Create an array to hold the results of all counters+-- > VkPerformanceCounterResultKHR* recordedCounters = malloc(+-- >   sizeof(VkPerformanceCounterResultKHR) * enabledCounterCount);+-- >+-- > result = vkGetQueryPoolResults(+-- >   device,+-- >   queryPool,+-- >   0,+-- >   1,+-- >   sizeof(VkPerformanceCounterResultKHR) * enabledCounterCount,+-- >   recordedCounters,+-- >   sizeof(VkPerformanceCounterResultKHR),+-- >   NULL);+-- >+-- > // recordedCounters is filled with our counters, we'll look at one for posterity+-- > switch (counters[0].storage) {+-- >   case VK_PERFORMANCE_COUNTER_STORAGE_INT32:+-- >     // use recordCounters[0].int32 to get at the counter result!+-- >     break;+-- >   case VK_PERFORMANCE_COUNTER_STORAGE_INT64:+-- >     // use recordCounters[0].int64 to get at the counter result!+-- >     break;+-- >   case VK_PERFORMANCE_COUNTER_STORAGE_UINT32:+-- >     // use recordCounters[0].uint32 to get at the counter result!+-- >     break;+-- >   case VK_PERFORMANCE_COUNTER_STORAGE_UINT64:+-- >     // use recordCounters[0].uint64 to get at the counter result!+-- >     break;+-- >   case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32:+-- >     // use recordCounters[0].float32 to get at the counter result!+-- >     break;+-- >   case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64:+-- >     // use recordCounters[0].float64 to get at the counter result!+-- >     break;+-- > }+--+-- == Version History+--+-- -   Revision 1, 2019-10-08+--+-- = See Also+--+-- 'AcquireProfilingLockFlagBitsKHR', 'AcquireProfilingLockFlagsKHR',+-- 'AcquireProfilingLockInfoKHR',+-- 'PerformanceCounterDescriptionFlagBitsKHR',+-- 'PerformanceCounterDescriptionFlagsKHR',+-- 'PerformanceCounterDescriptionKHR', 'PerformanceCounterKHR',+-- 'PerformanceCounterResultKHR', 'PerformanceCounterScopeKHR',+-- 'PerformanceCounterStorageKHR', 'PerformanceCounterUnitKHR',+-- 'PerformanceQuerySubmitInfoKHR',+-- 'PhysicalDevicePerformanceQueryFeaturesKHR',+-- 'PhysicalDevicePerformanceQueryPropertiesKHR',+-- 'QueryPoolPerformanceCreateInfoKHR', 'acquireProfilingLockKHR',+-- 'enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR',+-- 'getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR',+-- 'releaseProfilingLockKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_performance_query Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_performance_query  ( enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR                                                    , getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR                                                    , acquireProfilingLockKHR@@ -42,13 +519,13 @@                                                                                  , PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR                                                                                  , ..                                                                                  )+                                                   , PerformanceCounterDescriptionFlagsKHR                                                    , PerformanceCounterDescriptionFlagBitsKHR( PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR                                                                                              , PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR                                                                                              , ..                                                                                              )-                                                   , PerformanceCounterDescriptionFlagsKHR-                                                   , AcquireProfilingLockFlagBitsKHR(..)                                                    , AcquireProfilingLockFlagsKHR+                                                   , AcquireProfilingLockFlagBitsKHR(..)                                                    , KHR_PERFORMANCE_QUERY_SPEC_VERSION                                                    , pattern KHR_PERFORMANCE_QUERY_SPEC_VERSION                                                    , KHR_PERFORMANCE_QUERY_EXTENSION_NAME@@ -56,6 +533,8 @@                                                    ) where  import Vulkan.CStruct.Utils (FixedArray)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -68,16 +547,9 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import GHC.Show (showsPrec) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.ByteString (packCString) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT)@@ -107,10 +579,10 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32) import Data.Word (Word64) import Data.Word (Word8)-import Text.Read.Lex (Lexeme(Ident)) import Data.ByteString (ByteString) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))@@ -948,30 +1420,39 @@ -- scope is zero or more complete render passes. The performance query -- containing the performance counter /must/ begin and end outside a render -- pass instance.-pattern PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = PerformanceCounterScopeKHR 1+pattern PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR    = PerformanceCounterScopeKHR 1 -- | 'PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR' - the performance counter scope -- is zero or more commands.-pattern PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = PerformanceCounterScopeKHR 2+pattern PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR        = PerformanceCounterScopeKHR 2 {-# complete PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR,              PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR,              PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR :: PerformanceCounterScopeKHR #-} +conNamePerformanceCounterScopeKHR :: String+conNamePerformanceCounterScopeKHR = "PerformanceCounterScopeKHR"++enumPrefixPerformanceCounterScopeKHR :: String+enumPrefixPerformanceCounterScopeKHR = "PERFORMANCE_COUNTER_SCOPE_"++showTablePerformanceCounterScopeKHR :: [(PerformanceCounterScopeKHR, String)]+showTablePerformanceCounterScopeKHR =+  [ (PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR, "COMMAND_BUFFER_KHR")+  , (PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR   , "RENDER_PASS_KHR")+  , (PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR       , "COMMAND_KHR")+  ]+ instance Show PerformanceCounterScopeKHR where-  showsPrec p = \case-    PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR -> showString "PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR"-    PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR -> showString "PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR"-    PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR -> showString "PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR"-    PerformanceCounterScopeKHR x -> showParen (p >= 11) (showString "PerformanceCounterScopeKHR " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixPerformanceCounterScopeKHR+                            showTablePerformanceCounterScopeKHR+                            conNamePerformanceCounterScopeKHR+                            (\(PerformanceCounterScopeKHR x) -> x)+                            (showsPrec 11)  instance Read PerformanceCounterScopeKHR where-  readPrec = parens (choose [("PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR", pure PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR)-                            , ("PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR", pure PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR)-                            , ("PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR", pure PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "PerformanceCounterScopeKHR")-                       v <- step readPrec-                       pure (PerformanceCounterScopeKHR v)))+  readPrec = enumReadPrec enumPrefixPerformanceCounterScopeKHR+                          showTablePerformanceCounterScopeKHR+                          conNamePerformanceCounterScopeKHR+                          PerformanceCounterScopeKHR   -- | VkPerformanceCounterUnitKHR - Supported counter unit types@@ -984,37 +1465,37 @@  -- | 'PERFORMANCE_COUNTER_UNIT_GENERIC_KHR' - the performance counter unit is -- a generic data point.-pattern PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = PerformanceCounterUnitKHR 0+pattern PERFORMANCE_COUNTER_UNIT_GENERIC_KHR          = PerformanceCounterUnitKHR 0 -- | 'PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR' - the performance counter unit -- is a percentage (%).-pattern PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = PerformanceCounterUnitKHR 1+pattern PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR       = PerformanceCounterUnitKHR 1 -- | 'PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR' - the performance counter -- unit is a value of nanoseconds (ns).-pattern PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = PerformanceCounterUnitKHR 2+pattern PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR      = PerformanceCounterUnitKHR 2 -- | 'PERFORMANCE_COUNTER_UNIT_BYTES_KHR' - the performance counter unit is a -- value of bytes.-pattern PERFORMANCE_COUNTER_UNIT_BYTES_KHR = PerformanceCounterUnitKHR 3+pattern PERFORMANCE_COUNTER_UNIT_BYTES_KHR            = PerformanceCounterUnitKHR 3 -- | 'PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR' - the performance -- counter unit is a value of bytes\/s. pattern PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = PerformanceCounterUnitKHR 4 -- | 'PERFORMANCE_COUNTER_UNIT_KELVIN_KHR' - the performance counter unit is -- a temperature reported in Kelvin.-pattern PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = PerformanceCounterUnitKHR 5+pattern PERFORMANCE_COUNTER_UNIT_KELVIN_KHR           = PerformanceCounterUnitKHR 5 -- | 'PERFORMANCE_COUNTER_UNIT_WATTS_KHR' - the performance counter unit is a -- value of watts (W).-pattern PERFORMANCE_COUNTER_UNIT_WATTS_KHR = PerformanceCounterUnitKHR 6+pattern PERFORMANCE_COUNTER_UNIT_WATTS_KHR            = PerformanceCounterUnitKHR 6 -- | 'PERFORMANCE_COUNTER_UNIT_VOLTS_KHR' - the performance counter unit is a -- value of volts (V).-pattern PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = PerformanceCounterUnitKHR 7+pattern PERFORMANCE_COUNTER_UNIT_VOLTS_KHR            = PerformanceCounterUnitKHR 7 -- | 'PERFORMANCE_COUNTER_UNIT_AMPS_KHR' - the performance counter unit is a -- value of amps (A).-pattern PERFORMANCE_COUNTER_UNIT_AMPS_KHR = PerformanceCounterUnitKHR 8+pattern PERFORMANCE_COUNTER_UNIT_AMPS_KHR             = PerformanceCounterUnitKHR 8 -- | 'PERFORMANCE_COUNTER_UNIT_HERTZ_KHR' - the performance counter unit is a -- value of hertz (Hz).-pattern PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = PerformanceCounterUnitKHR 9+pattern PERFORMANCE_COUNTER_UNIT_HERTZ_KHR            = PerformanceCounterUnitKHR 9 -- | 'PERFORMANCE_COUNTER_UNIT_CYCLES_KHR' - the performance counter unit is -- a value of cycles.-pattern PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = PerformanceCounterUnitKHR 10+pattern PERFORMANCE_COUNTER_UNIT_CYCLES_KHR           = PerformanceCounterUnitKHR 10 {-# complete PERFORMANCE_COUNTER_UNIT_GENERIC_KHR,              PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR,              PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR,@@ -1027,38 +1508,39 @@              PERFORMANCE_COUNTER_UNIT_HERTZ_KHR,              PERFORMANCE_COUNTER_UNIT_CYCLES_KHR :: PerformanceCounterUnitKHR #-} +conNamePerformanceCounterUnitKHR :: String+conNamePerformanceCounterUnitKHR = "PerformanceCounterUnitKHR"++enumPrefixPerformanceCounterUnitKHR :: String+enumPrefixPerformanceCounterUnitKHR = "PERFORMANCE_COUNTER_UNIT_"++showTablePerformanceCounterUnitKHR :: [(PerformanceCounterUnitKHR, String)]+showTablePerformanceCounterUnitKHR =+  [ (PERFORMANCE_COUNTER_UNIT_GENERIC_KHR         , "GENERIC_KHR")+  , (PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR      , "PERCENTAGE_KHR")+  , (PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR     , "NANOSECONDS_KHR")+  , (PERFORMANCE_COUNTER_UNIT_BYTES_KHR           , "BYTES_KHR")+  , (PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR, "BYTES_PER_SECOND_KHR")+  , (PERFORMANCE_COUNTER_UNIT_KELVIN_KHR          , "KELVIN_KHR")+  , (PERFORMANCE_COUNTER_UNIT_WATTS_KHR           , "WATTS_KHR")+  , (PERFORMANCE_COUNTER_UNIT_VOLTS_KHR           , "VOLTS_KHR")+  , (PERFORMANCE_COUNTER_UNIT_AMPS_KHR            , "AMPS_KHR")+  , (PERFORMANCE_COUNTER_UNIT_HERTZ_KHR           , "HERTZ_KHR")+  , (PERFORMANCE_COUNTER_UNIT_CYCLES_KHR          , "CYCLES_KHR")+  ]+ instance Show PerformanceCounterUnitKHR where-  showsPrec p = \case-    PERFORMANCE_COUNTER_UNIT_GENERIC_KHR -> showString "PERFORMANCE_COUNTER_UNIT_GENERIC_KHR"-    PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR -> showString "PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR"-    PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR -> showString "PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR"-    PERFORMANCE_COUNTER_UNIT_BYTES_KHR -> showString "PERFORMANCE_COUNTER_UNIT_BYTES_KHR"-    PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR -> showString "PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR"-    PERFORMANCE_COUNTER_UNIT_KELVIN_KHR -> showString "PERFORMANCE_COUNTER_UNIT_KELVIN_KHR"-    PERFORMANCE_COUNTER_UNIT_WATTS_KHR -> showString "PERFORMANCE_COUNTER_UNIT_WATTS_KHR"-    PERFORMANCE_COUNTER_UNIT_VOLTS_KHR -> showString "PERFORMANCE_COUNTER_UNIT_VOLTS_KHR"-    PERFORMANCE_COUNTER_UNIT_AMPS_KHR -> showString "PERFORMANCE_COUNTER_UNIT_AMPS_KHR"-    PERFORMANCE_COUNTER_UNIT_HERTZ_KHR -> showString "PERFORMANCE_COUNTER_UNIT_HERTZ_KHR"-    PERFORMANCE_COUNTER_UNIT_CYCLES_KHR -> showString "PERFORMANCE_COUNTER_UNIT_CYCLES_KHR"-    PerformanceCounterUnitKHR x -> showParen (p >= 11) (showString "PerformanceCounterUnitKHR " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixPerformanceCounterUnitKHR+                            showTablePerformanceCounterUnitKHR+                            conNamePerformanceCounterUnitKHR+                            (\(PerformanceCounterUnitKHR x) -> x)+                            (showsPrec 11)  instance Read PerformanceCounterUnitKHR where-  readPrec = parens (choose [("PERFORMANCE_COUNTER_UNIT_GENERIC_KHR", pure PERFORMANCE_COUNTER_UNIT_GENERIC_KHR)-                            , ("PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR", pure PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR)-                            , ("PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR", pure PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR)-                            , ("PERFORMANCE_COUNTER_UNIT_BYTES_KHR", pure PERFORMANCE_COUNTER_UNIT_BYTES_KHR)-                            , ("PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR", pure PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR)-                            , ("PERFORMANCE_COUNTER_UNIT_KELVIN_KHR", pure PERFORMANCE_COUNTER_UNIT_KELVIN_KHR)-                            , ("PERFORMANCE_COUNTER_UNIT_WATTS_KHR", pure PERFORMANCE_COUNTER_UNIT_WATTS_KHR)-                            , ("PERFORMANCE_COUNTER_UNIT_VOLTS_KHR", pure PERFORMANCE_COUNTER_UNIT_VOLTS_KHR)-                            , ("PERFORMANCE_COUNTER_UNIT_AMPS_KHR", pure PERFORMANCE_COUNTER_UNIT_AMPS_KHR)-                            , ("PERFORMANCE_COUNTER_UNIT_HERTZ_KHR", pure PERFORMANCE_COUNTER_UNIT_HERTZ_KHR)-                            , ("PERFORMANCE_COUNTER_UNIT_CYCLES_KHR", pure PERFORMANCE_COUNTER_UNIT_CYCLES_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "PerformanceCounterUnitKHR")-                       v <- step readPrec-                       pure (PerformanceCounterUnitKHR v)))+  readPrec = enumReadPrec enumPrefixPerformanceCounterUnitKHR+                          showTablePerformanceCounterUnitKHR+                          conNamePerformanceCounterUnitKHR+                          PerformanceCounterUnitKHR   -- | VkPerformanceCounterStorageKHR - Supported counter storage types@@ -1071,16 +1553,16 @@  -- | 'PERFORMANCE_COUNTER_STORAGE_INT32_KHR' - the performance counter -- storage is a 32-bit signed integer.-pattern PERFORMANCE_COUNTER_STORAGE_INT32_KHR = PerformanceCounterStorageKHR 0+pattern PERFORMANCE_COUNTER_STORAGE_INT32_KHR   = PerformanceCounterStorageKHR 0 -- | 'PERFORMANCE_COUNTER_STORAGE_INT64_KHR' - the performance counter -- storage is a 64-bit signed integer.-pattern PERFORMANCE_COUNTER_STORAGE_INT64_KHR = PerformanceCounterStorageKHR 1+pattern PERFORMANCE_COUNTER_STORAGE_INT64_KHR   = PerformanceCounterStorageKHR 1 -- | 'PERFORMANCE_COUNTER_STORAGE_UINT32_KHR' - the performance counter -- storage is a 32-bit unsigned integer.-pattern PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = PerformanceCounterStorageKHR 2+pattern PERFORMANCE_COUNTER_STORAGE_UINT32_KHR  = PerformanceCounterStorageKHR 2 -- | 'PERFORMANCE_COUNTER_STORAGE_UINT64_KHR' - the performance counter -- storage is a 64-bit unsigned integer.-pattern PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = PerformanceCounterStorageKHR 3+pattern PERFORMANCE_COUNTER_STORAGE_UINT64_KHR  = PerformanceCounterStorageKHR 3 -- | 'PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR' - the performance counter -- storage is a 32-bit floating-point. pattern PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = PerformanceCounterStorageKHR 4@@ -1094,30 +1576,38 @@              PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR,              PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR :: PerformanceCounterStorageKHR #-} +conNamePerformanceCounterStorageKHR :: String+conNamePerformanceCounterStorageKHR = "PerformanceCounterStorageKHR"++enumPrefixPerformanceCounterStorageKHR :: String+enumPrefixPerformanceCounterStorageKHR = "PERFORMANCE_COUNTER_STORAGE_"++showTablePerformanceCounterStorageKHR :: [(PerformanceCounterStorageKHR, String)]+showTablePerformanceCounterStorageKHR =+  [ (PERFORMANCE_COUNTER_STORAGE_INT32_KHR  , "INT32_KHR")+  , (PERFORMANCE_COUNTER_STORAGE_INT64_KHR  , "INT64_KHR")+  , (PERFORMANCE_COUNTER_STORAGE_UINT32_KHR , "UINT32_KHR")+  , (PERFORMANCE_COUNTER_STORAGE_UINT64_KHR , "UINT64_KHR")+  , (PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR, "FLOAT32_KHR")+  , (PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR, "FLOAT64_KHR")+  ]+ instance Show PerformanceCounterStorageKHR where-  showsPrec p = \case-    PERFORMANCE_COUNTER_STORAGE_INT32_KHR -> showString "PERFORMANCE_COUNTER_STORAGE_INT32_KHR"-    PERFORMANCE_COUNTER_STORAGE_INT64_KHR -> showString "PERFORMANCE_COUNTER_STORAGE_INT64_KHR"-    PERFORMANCE_COUNTER_STORAGE_UINT32_KHR -> showString "PERFORMANCE_COUNTER_STORAGE_UINT32_KHR"-    PERFORMANCE_COUNTER_STORAGE_UINT64_KHR -> showString "PERFORMANCE_COUNTER_STORAGE_UINT64_KHR"-    PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR -> showString "PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR"-    PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR -> showString "PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR"-    PerformanceCounterStorageKHR x -> showParen (p >= 11) (showString "PerformanceCounterStorageKHR " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixPerformanceCounterStorageKHR+                            showTablePerformanceCounterStorageKHR+                            conNamePerformanceCounterStorageKHR+                            (\(PerformanceCounterStorageKHR x) -> x)+                            (showsPrec 11)  instance Read PerformanceCounterStorageKHR where-  readPrec = parens (choose [("PERFORMANCE_COUNTER_STORAGE_INT32_KHR", pure PERFORMANCE_COUNTER_STORAGE_INT32_KHR)-                            , ("PERFORMANCE_COUNTER_STORAGE_INT64_KHR", pure PERFORMANCE_COUNTER_STORAGE_INT64_KHR)-                            , ("PERFORMANCE_COUNTER_STORAGE_UINT32_KHR", pure PERFORMANCE_COUNTER_STORAGE_UINT32_KHR)-                            , ("PERFORMANCE_COUNTER_STORAGE_UINT64_KHR", pure PERFORMANCE_COUNTER_STORAGE_UINT64_KHR)-                            , ("PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR", pure PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR)-                            , ("PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR", pure PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "PerformanceCounterStorageKHR")-                       v <- step readPrec-                       pure (PerformanceCounterStorageKHR v)))+  readPrec = enumReadPrec enumPrefixPerformanceCounterStorageKHR+                          showTablePerformanceCounterStorageKHR+                          conNamePerformanceCounterStorageKHR+                          PerformanceCounterStorageKHR  +type PerformanceCounterDescriptionFlagsKHR = PerformanceCounterDescriptionFlagBitsKHR+ -- | VkPerformanceCounterDescriptionFlagBitsKHR - Bitmask specifying usage -- behavior for a counter --@@ -1130,30 +1620,42 @@ -- | 'PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR' -- specifies that recording the counter /may/ have a noticeable performance -- impact.-pattern PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = PerformanceCounterDescriptionFlagBitsKHR 0x00000001+pattern PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR =+  PerformanceCounterDescriptionFlagBitsKHR 0x00000001 -- | 'PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR' -- specifies that concurrently recording the counter while other submitted -- command buffers are running /may/ impact the accuracy of the recording.-pattern PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = PerformanceCounterDescriptionFlagBitsKHR 0x00000002+pattern PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR =+  PerformanceCounterDescriptionFlagBitsKHR 0x00000002 -type PerformanceCounterDescriptionFlagsKHR = PerformanceCounterDescriptionFlagBitsKHR+conNamePerformanceCounterDescriptionFlagBitsKHR :: String+conNamePerformanceCounterDescriptionFlagBitsKHR = "PerformanceCounterDescriptionFlagBitsKHR" +enumPrefixPerformanceCounterDescriptionFlagBitsKHR :: String+enumPrefixPerformanceCounterDescriptionFlagBitsKHR = "PERFORMANCE_COUNTER_DESCRIPTION_"++showTablePerformanceCounterDescriptionFlagBitsKHR :: [(PerformanceCounterDescriptionFlagBitsKHR, String)]+showTablePerformanceCounterDescriptionFlagBitsKHR =+  [ (PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR, "PERFORMANCE_IMPACTING_BIT_KHR")+  , (PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR, "CONCURRENTLY_IMPACTED_BIT_KHR")+  ]+ instance Show PerformanceCounterDescriptionFlagBitsKHR where-  showsPrec p = \case-    PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR -> showString "PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR"-    PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR -> showString "PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR"-    PerformanceCounterDescriptionFlagBitsKHR x -> showParen (p >= 11) (showString "PerformanceCounterDescriptionFlagBitsKHR 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPerformanceCounterDescriptionFlagBitsKHR+                            showTablePerformanceCounterDescriptionFlagBitsKHR+                            conNamePerformanceCounterDescriptionFlagBitsKHR+                            (\(PerformanceCounterDescriptionFlagBitsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PerformanceCounterDescriptionFlagBitsKHR where-  readPrec = parens (choose [("PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR", pure PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR)-                            , ("PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR", pure PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "PerformanceCounterDescriptionFlagBitsKHR")-                       v <- step readPrec-                       pure (PerformanceCounterDescriptionFlagBitsKHR v)))+  readPrec = enumReadPrec enumPrefixPerformanceCounterDescriptionFlagBitsKHR+                          showTablePerformanceCounterDescriptionFlagBitsKHR+                          conNamePerformanceCounterDescriptionFlagBitsKHR+                          PerformanceCounterDescriptionFlagBitsKHR  +type AcquireProfilingLockFlagsKHR = AcquireProfilingLockFlagBitsKHR+ -- | VkAcquireProfilingLockFlagBitsKHR - Reserved for future use -- -- = See Also@@ -1164,19 +1666,27 @@   -type AcquireProfilingLockFlagsKHR = AcquireProfilingLockFlagBitsKHR+conNameAcquireProfilingLockFlagBitsKHR :: String+conNameAcquireProfilingLockFlagBitsKHR = "AcquireProfilingLockFlagBitsKHR" +enumPrefixAcquireProfilingLockFlagBitsKHR :: String+enumPrefixAcquireProfilingLockFlagBitsKHR = ""++showTableAcquireProfilingLockFlagBitsKHR :: [(AcquireProfilingLockFlagBitsKHR, String)]+showTableAcquireProfilingLockFlagBitsKHR = []+ instance Show AcquireProfilingLockFlagBitsKHR where-  showsPrec p = \case-    AcquireProfilingLockFlagBitsKHR x -> showParen (p >= 11) (showString "AcquireProfilingLockFlagBitsKHR 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixAcquireProfilingLockFlagBitsKHR+                            showTableAcquireProfilingLockFlagBitsKHR+                            conNameAcquireProfilingLockFlagBitsKHR+                            (\(AcquireProfilingLockFlagBitsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read AcquireProfilingLockFlagBitsKHR where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "AcquireProfilingLockFlagBitsKHR")-                       v <- step readPrec-                       pure (AcquireProfilingLockFlagBitsKHR v)))+  readPrec = enumReadPrec enumPrefixAcquireProfilingLockFlagBitsKHR+                          showTableAcquireProfilingLockFlagBitsKHR+                          conNameAcquireProfilingLockFlagBitsKHR+                          AcquireProfilingLockFlagBitsKHR   type KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_KHR_performance_query.hs-boot view
@@ -1,4 +1,481 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_performance_query - device extension+--+-- == VK_KHR_performance_query+--+-- [__Name String__]+--     @VK_KHR_performance_query@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     117+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>+--+-- [__Contact__]+--+--     -   Alon Or-bach+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_performance_query:%20&body=@alonorbach%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-10-08+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jesse Barker, Unity Technologies+--+--     -   Kenneth Benzie, Codeplay+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Jeff Leger, Qualcomm+--+--     -   Jesse Hall, Google+--+--     -   Tobias Hector, AMD+--+--     -   Neil Henning, Codeplay+--+--     -   Baldur Karlsson+--+--     -   Lionel Landwerlin, Intel+--+--     -   Peter Lohrmann, AMD+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Niklas Smedberg, Unity Technologies+--+--     -   Igor Ostrowski, Intel+--+-- == Description+--+-- The @VK_KHR_performance_query@ extension adds a mechanism to allow+-- querying of performance counters for use in applications and by+-- profiling tools.+--+-- Each queue family /may/ expose counters that /can/ be enabled on a queue+-- of that family. We extend 'Vulkan.Core10.Enums.QueryType.QueryType' to+-- add a new query type for performance queries, and chain a structure on+-- 'Vulkan.Core10.Query.QueryPoolCreateInfo' to specify the performance+-- queries to enable.+--+-- == New Commands+--+-- -   'acquireProfilingLockKHR'+--+-- -   'enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR'+--+-- -   'getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'+--+-- -   'releaseProfilingLockKHR'+--+-- == New Structures+--+-- -   'AcquireProfilingLockInfoKHR'+--+-- -   'PerformanceCounterDescriptionKHR'+--+-- -   'PerformanceCounterKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevicePerformanceQueryFeaturesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDevicePerformanceQueryPropertiesKHR'+--+-- -   Extending 'Vulkan.Core10.Query.QueryPoolCreateInfo':+--+--     -   'QueryPoolPerformanceCreateInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Queue.SubmitInfo':+--+--     -   'PerformanceQuerySubmitInfoKHR'+--+-- == New Unions+--+-- -   'PerformanceCounterResultKHR'+--+-- == New Enums+--+-- -   'AcquireProfilingLockFlagBitsKHR'+--+-- -   'PerformanceCounterDescriptionFlagBitsKHR'+--+-- -   'PerformanceCounterScopeKHR'+--+-- -   'PerformanceCounterStorageKHR'+--+-- -   'PerformanceCounterUnitKHR'+--+-- == New Bitmasks+--+-- -   'AcquireProfilingLockFlagsKHR'+--+-- -   'PerformanceCounterDescriptionFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_PERFORMANCE_QUERY_EXTENSION_NAME'+--+-- -   'KHR_PERFORMANCE_QUERY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':+--+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) Should this extension include a mechanism to begin a query in command+-- buffer /A/ and end the query in command buffer /B/?+--+-- __RESOLVED__ No - queries are tied to command buffer creation and thus+-- have to be encapsulated within a single command buffer.+--+-- 2) Should this extension include a mechanism to begin and end queries+-- globally on the queue, not using the existing command buffer commands?+--+-- __RESOLVED__ No - for the same reasoning as the resolution of 1).+--+-- 3) Should this extension expose counters that require multiple passes?+--+-- __RESOLVED__ Yes - users should re-submit a command buffer with the same+-- commands in it multiple times, specifying the pass to count as the query+-- parameter in VkPerformanceQuerySubmitInfoKHR.+--+-- 4) How to handle counters across parallel workloads?+--+-- __RESOLVED__ In the spirit of Vulkan, a counter description flag+-- 'PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR' denotes+-- that the accuracy of a counter result is affected by parallel workloads.+--+-- 5) How to handle secondary command buffers?+--+-- __RESOLVED__ Secondary command buffers inherit any counter pass index+-- specified in the parent primary command buffer. Note: this is no longer+-- an issue after change from issue 10 resolution+--+-- 6) What commands does the profiling lock have to be held for?+--+-- __RESOLVED__ For any command buffer that is being queried with a+-- performance query pool, the profiling lock /must/ be held while that+-- command buffer is in the /recording/, /executable/, or /pending state/.+--+-- 7) Should we support+-- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults'?+--+-- __RESOLVED__ Yes.+--+-- 8) Should we allow performance queries to interact with multiview?+--+-- __RESOLVED__ Yes, but the performance queries must be performed once for+-- each pass per view.+--+-- 9) Should a @queryCount > 1@ be usable for performance queries?+--+-- __RESOLVED__ Yes. Some vendors will have costly performance counter+-- query pool creation, and would rather if a certain set of counters were+-- to be used multiple times that a @queryCount > 1@ can be used to+-- amortize the instantiation cost.+--+-- 10) Should we introduce an indirect mechanism to set the counter pass+-- index?+--+-- __RESOLVED__ Specify the counter pass index at submit time instead to+-- avoid requiring re-recording of command buffers when multiple counter+-- passes needed.+--+-- == Examples+--+-- The following example shows how to find what performance counters a+-- queue family supports, setup a query pool to record these performance+-- counters, how to add the query pool to the command buffer to record+-- information, and how to get the results from the query pool.+--+-- > // A previously created physical device+-- > VkPhysicalDevice physicalDevice;+-- >+-- > // One of the queue families our device supports+-- > uint32_t queueFamilyIndex;+-- >+-- > uint32_t counterCount;+-- >+-- > // Get the count of counters supported+-- > vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(+-- >   physicalDevice,+-- >   queueFamilyIndex,+-- >   &counterCount,+-- >   NULL,+-- >   NULL);+-- >+-- > VkPerformanceCounterKHR* counters =+-- >   malloc(sizeof(VkPerformanceCounterKHR) * counterCount);+-- > VkPerformanceCounterDescriptionKHR* counterDescriptions =+-- >   malloc(sizeof(VkPerformanceCounterDescriptionKHR) * counterCount);+-- >+-- > // Get the counters supported+-- > vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(+-- >   physicalDevice,+-- >   queueFamilyIndex,+-- >   &counterCount,+-- >   counters,+-- >   counterDescriptions);+-- >+-- > // Try to enable the first 8 counters+-- > uint32_t enabledCounters[8];+-- >+-- > const uint32_t enabledCounterCount = min(counterCount, 8));+-- >+-- > for (uint32_t i = 0; i < enabledCounterCount; i++) {+-- >   enabledCounters[i] = i;+-- > }+-- >+-- > // A previously created device that had the performanceCounterQueryPools feature+-- > // set to VK_TRUE+-- > VkDevice device;+-- >+-- > VkQueryPoolPerformanceCreateInfoKHR performanceQueryCreateInfo = {+-- >   VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,+-- >   NULL,+-- >+-- >   // Specify the queue family that this performance query is performed on+-- >   queueFamilyIndex,+-- >+-- >   // The number of counters to enable+-- >   enabledCounterCount,+-- >+-- >   // The array of indices of counters to enable+-- >   enabledCounters+-- > };+-- >+-- >+-- > // Get the number of passes our counters will require.+-- > uint32_t numPasses;+-- >+-- > vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(+-- >   physicalDevice,+-- >   &performanceQueryCreateInfo,+-- >   &numPasses);+-- >+-- > VkQueryPoolCreateInfo queryPoolCreateInfo = {+-- >   VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,+-- >   &performanceQueryCreateInfo,+-- >   0,+-- >+-- >   // Using our new query type here+-- >   VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR,+-- >+-- >   1,+-- >+-- >   0+-- > };+-- >+-- > VkQueryPool queryPool;+-- >+-- > VkResult result = vkCreateQueryPool(+-- >   device,+-- >   &queryPoolCreateInfo,+-- >   NULL,+-- >   &queryPool);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > // A queue from queueFamilyIndex+-- > VkQueue queue;+-- >+-- > // A command buffer we want to record counters on+-- > VkCommandBuffer commandBuffer;+-- >+-- > VkCommandBufferBeginInfo commandBufferBeginInfo = {+-- >   VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,+-- >   NULL,+-- >   0,+-- >   NULL+-- > };+-- >+-- > VkAcquireProfilingLockInfoKHR lockInfo = {+-- >   VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR,+-- >   NULL,+-- >   0,+-- >   UINT64_MAX // Wait forever for the lock+-- > };+-- >+-- > // Acquire the profiling lock before we record command buffers+-- > // that will use performance queries+-- >+-- > result = vkAcquireProfilingLockKHR(device, &lockInfo);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > result = vkBeginCommandBuffer(commandBuffer, &commandBufferBeginInfo);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > vkCmdResetQueryPool(+-- >   commandBuffer,+-- >   queryPool,+-- >   0,+-- >   1);+-- >+-- > vkCmdBeginQuery(+-- >   commandBuffer,+-- >   queryPool,+-- >   0,+-- >   0);+-- >+-- > // Perform the commands you want to get performance information on+-- > // ...+-- >+-- > // Perform a barrier to ensure all previous commands were complete before+-- > // ending the query+-- > vkCmdPipelineBarrier(commandBuffer,+-- >   VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,+-- >   VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,+-- >   0,+-- >   0,+-- >   NULL,+-- >   0,+-- >   NULL,+-- >   0,+-- >   NULL);+-- >+-- > vkCmdEndQuery(+-- >   commandBuffer,+-- >   queryPool,+-- >   0);+-- >+-- > result = vkEndCommandBuffer(commandBuffer);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > for (uint32_t counterPass = 0; counterPass < numPasses; counterPass++) {+-- >+-- >   VkPerformanceQuerySubmitInfoKHR performanceQuerySubmitInfo = {+-- >     VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR,+-- >     NULL,+-- >     counterPass+-- >   };+-- >+-- >+-- >   // Submit the command buffer and wait for its completion+-- >   // ...+-- > }+-- >+-- > // Release the profiling lock after the command buffer is no longer in the+-- > // pending state.+-- > vkReleaseProfilingLockKHR(device);+-- >+-- > result = vkResetCommandBuffer(commandBuffer, 0);+-- >+-- > assert(VK_SUCCESS == result);+-- >+-- > // Create an array to hold the results of all counters+-- > VkPerformanceCounterResultKHR* recordedCounters = malloc(+-- >   sizeof(VkPerformanceCounterResultKHR) * enabledCounterCount);+-- >+-- > result = vkGetQueryPoolResults(+-- >   device,+-- >   queryPool,+-- >   0,+-- >   1,+-- >   sizeof(VkPerformanceCounterResultKHR) * enabledCounterCount,+-- >   recordedCounters,+-- >   sizeof(VkPerformanceCounterResultKHR),+-- >   NULL);+-- >+-- > // recordedCounters is filled with our counters, we'll look at one for posterity+-- > switch (counters[0].storage) {+-- >   case VK_PERFORMANCE_COUNTER_STORAGE_INT32:+-- >     // use recordCounters[0].int32 to get at the counter result!+-- >     break;+-- >   case VK_PERFORMANCE_COUNTER_STORAGE_INT64:+-- >     // use recordCounters[0].int64 to get at the counter result!+-- >     break;+-- >   case VK_PERFORMANCE_COUNTER_STORAGE_UINT32:+-- >     // use recordCounters[0].uint32 to get at the counter result!+-- >     break;+-- >   case VK_PERFORMANCE_COUNTER_STORAGE_UINT64:+-- >     // use recordCounters[0].uint64 to get at the counter result!+-- >     break;+-- >   case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32:+-- >     // use recordCounters[0].float32 to get at the counter result!+-- >     break;+-- >   case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64:+-- >     // use recordCounters[0].float64 to get at the counter result!+-- >     break;+-- > }+--+-- == Version History+--+-- -   Revision 1, 2019-10-08+--+-- = See Also+--+-- 'AcquireProfilingLockFlagBitsKHR', 'AcquireProfilingLockFlagsKHR',+-- 'AcquireProfilingLockInfoKHR',+-- 'PerformanceCounterDescriptionFlagBitsKHR',+-- 'PerformanceCounterDescriptionFlagsKHR',+-- 'PerformanceCounterDescriptionKHR', 'PerformanceCounterKHR',+-- 'PerformanceCounterResultKHR', 'PerformanceCounterScopeKHR',+-- 'PerformanceCounterStorageKHR', 'PerformanceCounterUnitKHR',+-- 'PerformanceQuerySubmitInfoKHR',+-- 'PhysicalDevicePerformanceQueryFeaturesKHR',+-- 'PhysicalDevicePerformanceQueryPropertiesKHR',+-- 'QueryPoolPerformanceCreateInfoKHR', 'acquireProfilingLockKHR',+-- 'enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR',+-- 'getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR',+-- 'releaseProfilingLockKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_performance_query Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_performance_query  ( AcquireProfilingLockInfoKHR                                                    , PerformanceCounterDescriptionKHR                                                    , PerformanceCounterKHR
src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs view
@@ -1,4 +1,181 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_pipeline_executable_properties - device extension+--+-- == VK_KHR_pipeline_executable_properties+--+-- [__Name String__]+--     @VK_KHR_pipeline_executable_properties@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     270+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>+--+-- [__Contact__]+--+--     -   Jason Ekstrand+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_pipeline_executable_properties:%20&body=@jekstrand%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-05-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__; __Contributors__]+--+--     -   Jason Ekstrand, Intel+--+--     -   Ian Romanick, Intel+--+--     -   Kenneth Graunke, Intel+--+--     -   Baldur Karlsson, Valve+--+--     -   Jesse Hall, Google+--+--     -   Jeff Bolz, Nvidia+--+--     -   Piers Daniel, Nvidia+--+--     -   Tobias Hector, AMD+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Tom Olson, ARM+--+--     -   Daniel Koch, Nvidia+--+--     -   Spencer Fricke, Samsung+--+-- == Description+--+-- When a pipeline is created, its state and shaders are compiled into zero+-- or more device-specific executables, which are used when executing+-- commands against that pipeline. This extension adds a mechanism to query+-- properties and statistics about the different executables produced by+-- the pipeline compilation process. This is intended to be used by+-- debugging and performance tools to allow them to provide more detailed+-- information to the user. Certain compile-time shader statistics provided+-- through this extension may be useful to developers for debugging or+-- performance analysis.+--+-- == New Commands+--+-- -   'getPipelineExecutableInternalRepresentationsKHR'+--+-- -   'getPipelineExecutablePropertiesKHR'+--+-- -   'getPipelineExecutableStatisticsKHR'+--+-- == New Structures+--+-- -   'PipelineExecutableInfoKHR'+--+-- -   'PipelineExecutableInternalRepresentationKHR'+--+-- -   'PipelineExecutablePropertiesKHR'+--+-- -   'PipelineExecutableStatisticKHR'+--+-- -   'PipelineInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevicePipelineExecutablePropertiesFeaturesKHR'+--+-- == New Unions+--+-- -   'PipelineExecutableStatisticValueKHR'+--+-- == New Enums+--+-- -   'PipelineExecutableStatisticFormatKHR'+--+-- == New Enum Constants+--+-- -   'KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME'+--+-- -   'KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_INFO_KHR'+--+-- == Issues+--+-- 1) What should we call the pieces of the pipeline which are produced by+-- the compilation process and about which you can query properties and+-- statistics?+--+-- __RESOLVED__: Call them \"executables\". The name \"binary\" was used in+-- early drafts of the extension but it was determined that \"pipeline+-- binary\" could have a fairly broad meaning (such as a binary serialized+-- form of an entire pipeline) and was too big of a namespace for the very+-- specific needs of this extension.+--+-- == Version History+--+-- -   Revision 1, 2019-05-28 (Jason Ekstrand)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',+-- 'PipelineExecutableInfoKHR',+-- 'PipelineExecutableInternalRepresentationKHR',+-- 'PipelineExecutablePropertiesKHR',+-- 'PipelineExecutableStatisticFormatKHR',+-- 'PipelineExecutableStatisticKHR', 'PipelineExecutableStatisticValueKHR',+-- 'PipelineInfoKHR', 'getPipelineExecutableInternalRepresentationsKHR',+-- 'getPipelineExecutablePropertiesKHR',+-- 'getPipelineExecutableStatisticsKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_pipeline_executable_properties  ( getPipelineExecutablePropertiesKHR                                                                 , getPipelineExecutableStatisticsKHR                                                                 , getPipelineExecutableInternalRepresentationsKHR@@ -23,6 +200,8 @@                                                                 ) where  import Vulkan.CStruct.Utils (FixedArray)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -35,15 +214,7 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.ByteString (packCString) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT)@@ -69,9 +240,9 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32) import Data.Word (Word64)-import Text.Read.Lex (Lexeme(Ident)) import Data.ByteString (ByteString) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))@@ -922,15 +1093,15 @@ -- 'Vulkan.Core10.FundamentalTypes.TRUE' or -- 'Vulkan.Core10.FundamentalTypes.FALSE' and /should/ be read from the -- @b32@ field of 'PipelineExecutableStatisticValueKHR'.-pattern PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = PipelineExecutableStatisticFormatKHR 0+pattern PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR  = PipelineExecutableStatisticFormatKHR 0 -- | 'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR' specifies that the -- statistic is returned as a signed 64-bit integer and /should/ be read -- from the @i64@ field of 'PipelineExecutableStatisticValueKHR'.-pattern PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = PipelineExecutableStatisticFormatKHR 1+pattern PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR   = PipelineExecutableStatisticFormatKHR 1 -- | 'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR' specifies that the -- statistic is returned as an unsigned 64-bit integer and /should/ be read -- from the @u64@ field of 'PipelineExecutableStatisticValueKHR'.-pattern PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = PipelineExecutableStatisticFormatKHR 2+pattern PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR  = PipelineExecutableStatisticFormatKHR 2 -- | 'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR' specifies that the -- statistic is returned as a 64-bit floating-point value and /should/ be -- read from the @f64@ field of 'PipelineExecutableStatisticValueKHR'.@@ -940,24 +1111,32 @@              PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR,              PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR :: PipelineExecutableStatisticFormatKHR #-} +conNamePipelineExecutableStatisticFormatKHR :: String+conNamePipelineExecutableStatisticFormatKHR = "PipelineExecutableStatisticFormatKHR"++enumPrefixPipelineExecutableStatisticFormatKHR :: String+enumPrefixPipelineExecutableStatisticFormatKHR = "PIPELINE_EXECUTABLE_STATISTIC_FORMAT_"++showTablePipelineExecutableStatisticFormatKHR :: [(PipelineExecutableStatisticFormatKHR, String)]+showTablePipelineExecutableStatisticFormatKHR =+  [ (PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR , "BOOL32_KHR")+  , (PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR  , "INT64_KHR")+  , (PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR , "UINT64_KHR")+  , (PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR, "FLOAT64_KHR")+  ]+ instance Show PipelineExecutableStatisticFormatKHR where-  showsPrec p = \case-    PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR -> showString "PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR"-    PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR -> showString "PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR"-    PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR -> showString "PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR"-    PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR -> showString "PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR"-    PipelineExecutableStatisticFormatKHR x -> showParen (p >= 11) (showString "PipelineExecutableStatisticFormatKHR " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixPipelineExecutableStatisticFormatKHR+                            showTablePipelineExecutableStatisticFormatKHR+                            conNamePipelineExecutableStatisticFormatKHR+                            (\(PipelineExecutableStatisticFormatKHR x) -> x)+                            (showsPrec 11)  instance Read PipelineExecutableStatisticFormatKHR where-  readPrec = parens (choose [("PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR", pure PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR)-                            , ("PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR", pure PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR)-                            , ("PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR", pure PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR)-                            , ("PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR", pure PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineExecutableStatisticFormatKHR")-                       v <- step readPrec-                       pure (PipelineExecutableStatisticFormatKHR v)))+  readPrec = enumReadPrec enumPrefixPipelineExecutableStatisticFormatKHR+                          showTablePipelineExecutableStatisticFormatKHR+                          conNamePipelineExecutableStatisticFormatKHR+                          PipelineExecutableStatisticFormatKHR   type KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs-boot view
@@ -1,4 +1,181 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_pipeline_executable_properties - device extension+--+-- == VK_KHR_pipeline_executable_properties+--+-- [__Name String__]+--     @VK_KHR_pipeline_executable_properties@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     270+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Special Use__]+--+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>+--+-- [__Contact__]+--+--     -   Jason Ekstrand+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_pipeline_executable_properties:%20&body=@jekstrand%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-05-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__; __Contributors__]+--+--     -   Jason Ekstrand, Intel+--+--     -   Ian Romanick, Intel+--+--     -   Kenneth Graunke, Intel+--+--     -   Baldur Karlsson, Valve+--+--     -   Jesse Hall, Google+--+--     -   Jeff Bolz, Nvidia+--+--     -   Piers Daniel, Nvidia+--+--     -   Tobias Hector, AMD+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Tom Olson, ARM+--+--     -   Daniel Koch, Nvidia+--+--     -   Spencer Fricke, Samsung+--+-- == Description+--+-- When a pipeline is created, its state and shaders are compiled into zero+-- or more device-specific executables, which are used when executing+-- commands against that pipeline. This extension adds a mechanism to query+-- properties and statistics about the different executables produced by+-- the pipeline compilation process. This is intended to be used by+-- debugging and performance tools to allow them to provide more detailed+-- information to the user. Certain compile-time shader statistics provided+-- through this extension may be useful to developers for debugging or+-- performance analysis.+--+-- == New Commands+--+-- -   'getPipelineExecutableInternalRepresentationsKHR'+--+-- -   'getPipelineExecutablePropertiesKHR'+--+-- -   'getPipelineExecutableStatisticsKHR'+--+-- == New Structures+--+-- -   'PipelineExecutableInfoKHR'+--+-- -   'PipelineExecutableInternalRepresentationKHR'+--+-- -   'PipelineExecutablePropertiesKHR'+--+-- -   'PipelineExecutableStatisticKHR'+--+-- -   'PipelineInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevicePipelineExecutablePropertiesFeaturesKHR'+--+-- == New Unions+--+-- -   'PipelineExecutableStatisticValueKHR'+--+-- == New Enums+--+-- -   'PipelineExecutableStatisticFormatKHR'+--+-- == New Enum Constants+--+-- -   'KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME'+--+-- -   'KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_INFO_KHR'+--+-- == Issues+--+-- 1) What should we call the pieces of the pipeline which are produced by+-- the compilation process and about which you can query properties and+-- statistics?+--+-- __RESOLVED__: Call them \"executables\". The name \"binary\" was used in+-- early drafts of the extension but it was determined that \"pipeline+-- binary\" could have a fairly broad meaning (such as a binary serialized+-- form of an entire pipeline) and was too big of a namespace for the very+-- specific needs of this extension.+--+-- == Version History+--+-- -   Revision 1, 2019-05-28 (Jason Ekstrand)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',+-- 'PipelineExecutableInfoKHR',+-- 'PipelineExecutableInternalRepresentationKHR',+-- 'PipelineExecutablePropertiesKHR',+-- 'PipelineExecutableStatisticFormatKHR',+-- 'PipelineExecutableStatisticKHR', 'PipelineExecutableStatisticValueKHR',+-- 'PipelineInfoKHR', 'getPipelineExecutableInternalRepresentationsKHR',+-- 'getPipelineExecutablePropertiesKHR',+-- 'getPipelineExecutableStatisticsKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_pipeline_executable_properties  ( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR                                                                 , PipelineExecutableInfoKHR                                                                 , PipelineExecutableInternalRepresentationKHR
src/Vulkan/Extensions/VK_KHR_pipeline_library.hs view
@@ -1,4 +1,87 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_pipeline_library - device extension+--+-- == VK_KHR_pipeline_library+--+-- [__Name String__]+--     @VK_KHR_pipeline_library@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     291+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Christoph Kubisch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_pipeline_library:%20&body=@pixeljetstream%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-01-08+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   See contributors to @VK_KHR_ray_tracing@+--+-- == Description+--+-- A pipeline library is a special pipeline that cannot be bound, instead+-- it defines a set of shaders and shader groups which can be linked into+-- other pipelines. This extension defines the infrastructure for pipeline+-- libraries, but does not specify the creation or usage of pipeline+-- libraries. This is left to additional dependent extensions.+--+-- == New Structures+--+-- -   'PipelineLibraryCreateInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_PIPELINE_LIBRARY_EXTENSION_NAME'+--+-- -   'KHR_PIPELINE_LIBRARY_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR'+--+-- == Version History+--+-- -   Revision 1, 2020-01-08 (Christoph Kubisch)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'PipelineLibraryCreateInfoKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_library Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_pipeline_library  ( PipelineLibraryCreateInfoKHR(..)                                                   , KHR_PIPELINE_LIBRARY_SPEC_VERSION                                                   , pattern KHR_PIPELINE_LIBRARY_SPEC_VERSION@@ -58,7 +141,7 @@ -- = See Also -- -- 'Vulkan.Core10.Handles.Pipeline',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR', -- 'Vulkan.Core10.Enums.StructureType.StructureType' data PipelineLibraryCreateInfoKHR = PipelineLibraryCreateInfoKHR   { -- | @pLibraries@ is an array of pipeline libraries to use when creating a
src/Vulkan/Extensions/VK_KHR_pipeline_library.hs-boot view
@@ -1,4 +1,87 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_pipeline_library - device extension+--+-- == VK_KHR_pipeline_library+--+-- [__Name String__]+--     @VK_KHR_pipeline_library@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     291+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Christoph Kubisch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_pipeline_library:%20&body=@pixeljetstream%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-01-08+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   See contributors to @VK_KHR_ray_tracing@+--+-- == Description+--+-- A pipeline library is a special pipeline that cannot be bound, instead+-- it defines a set of shaders and shader groups which can be linked into+-- other pipelines. This extension defines the infrastructure for pipeline+-- libraries, but does not specify the creation or usage of pipeline+-- libraries. This is left to additional dependent extensions.+--+-- == New Structures+--+-- -   'PipelineLibraryCreateInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_PIPELINE_LIBRARY_EXTENSION_NAME'+--+-- -   'KHR_PIPELINE_LIBRARY_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR'+--+-- == Version History+--+-- -   Revision 1, 2020-01-08 (Christoph Kubisch)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'PipelineLibraryCreateInfoKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_library Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_pipeline_library  (PipelineLibraryCreateInfoKHR) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_KHR_portability_subset.hs view
@@ -1,4 +1,139 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_portability_subset - device extension+--+-- == VK_KHR_portability_subset+--+-- [__Name String__]+--     @VK_KHR_portability_subset@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     164+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   __This is a /provisional/ extension and /must/ be used with+--         caution. See the+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#boilerplate-provisional-header description>+--         of provisional header files for enablement and stability+--         details.__+--+-- [__Contact__]+--+--     -   Bill Hollings+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_portability_subset:%20&body=@billhollings%20 >+--+-- [__Last Modified Date__]+--     2020-07-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Bill Hollings, The Brenwill Workshop Ltd.+--+--     -   Daniel Koch, NVIDIA+--+--     -   Dzmitry Malyshau, Mozilla+--+--     -   Chip Davis, CodeWeavers+--+--     -   Dan Ginsburg, Valve+--+--     -   Mike Weiblen, LunarG+--+--     -   Neil Trevett, NVIDIA+--+-- This extension allows a non-conformant Vulkan implementation to be built+-- on top of another non-Vulkan graphics API, and identifies differences+-- between that implementation and a fully-conformant native Vulkan+-- implementation.+--+-- This extension provides Vulkan implementations with the ability to mark+-- otherwise-required capabilities as unsupported, or to establish+-- additional properties and limits that the application should adhere to+-- in order to guarantee portable behaviour and operation across platforms,+-- including platforms where Vulkan is not natively supported.+--+-- The goal of this specification is to document, and make queryable,+-- capabilities which are required to be supported by a fully-conformant+-- Vulkan 1.0 implementation, but may be optional for an implementation of+-- the Vulkan 1.0 Portability Subset.+--+-- The intent is that this extension will be advertised only on+-- implementations of the Vulkan 1.0 Portability Subset, and not on+-- conformant implementations of Vulkan 1.0. Fully-conformant Vulkan+-- implementations provide all the required capabilies, and so will not+-- provide this extension. Therefore, the existence of this extension can+-- be used to determine that an implementation is likely not fully+-- conformant with the Vulkan spec.+--+-- If this extension is supported by the Vulkan implementation, the+-- application must enable this extension.+--+-- This extension defines several new structures that can be chained to the+-- existing structures used by certain standard Vulkan calls, in order to+-- query for non-conformant portable behavior.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevicePortabilitySubsetFeaturesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDevicePortabilitySubsetPropertiesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_PORTABILITY_SUBSET_EXTENSION_NAME'+--+-- -   'KHR_PORTABILITY_SUBSET_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR'+--+-- == Issues+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2020-07-21 (Bill Hollings)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'PhysicalDevicePortabilitySubsetFeaturesKHR',+-- 'PhysicalDevicePortabilitySubsetPropertiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_portability_subset Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_portability_subset  ( PhysicalDevicePortabilitySubsetFeaturesKHR(..)                                                     , PhysicalDevicePortabilitySubsetPropertiesKHR(..)                                                     , KHR_PORTABILITY_SUBSET_SPEC_VERSION
src/Vulkan/Extensions/VK_KHR_portability_subset.hs-boot view
@@ -1,4 +1,139 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_portability_subset - device extension+--+-- == VK_KHR_portability_subset+--+-- [__Name String__]+--     @VK_KHR_portability_subset@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     164+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   __This is a /provisional/ extension and /must/ be used with+--         caution. See the+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#boilerplate-provisional-header description>+--         of provisional header files for enablement and stability+--         details.__+--+-- [__Contact__]+--+--     -   Bill Hollings+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_portability_subset:%20&body=@billhollings%20 >+--+-- [__Last Modified Date__]+--     2020-07-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Bill Hollings, The Brenwill Workshop Ltd.+--+--     -   Daniel Koch, NVIDIA+--+--     -   Dzmitry Malyshau, Mozilla+--+--     -   Chip Davis, CodeWeavers+--+--     -   Dan Ginsburg, Valve+--+--     -   Mike Weiblen, LunarG+--+--     -   Neil Trevett, NVIDIA+--+-- This extension allows a non-conformant Vulkan implementation to be built+-- on top of another non-Vulkan graphics API, and identifies differences+-- between that implementation and a fully-conformant native Vulkan+-- implementation.+--+-- This extension provides Vulkan implementations with the ability to mark+-- otherwise-required capabilities as unsupported, or to establish+-- additional properties and limits that the application should adhere to+-- in order to guarantee portable behaviour and operation across platforms,+-- including platforms where Vulkan is not natively supported.+--+-- The goal of this specification is to document, and make queryable,+-- capabilities which are required to be supported by a fully-conformant+-- Vulkan 1.0 implementation, but may be optional for an implementation of+-- the Vulkan 1.0 Portability Subset.+--+-- The intent is that this extension will be advertised only on+-- implementations of the Vulkan 1.0 Portability Subset, and not on+-- conformant implementations of Vulkan 1.0. Fully-conformant Vulkan+-- implementations provide all the required capabilies, and so will not+-- provide this extension. Therefore, the existence of this extension can+-- be used to determine that an implementation is likely not fully+-- conformant with the Vulkan spec.+--+-- If this extension is supported by the Vulkan implementation, the+-- application must enable this extension.+--+-- This extension defines several new structures that can be chained to the+-- existing structures used by certain standard Vulkan calls, in order to+-- query for non-conformant portable behavior.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDevicePortabilitySubsetFeaturesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDevicePortabilitySubsetPropertiesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_PORTABILITY_SUBSET_EXTENSION_NAME'+--+-- -   'KHR_PORTABILITY_SUBSET_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR'+--+-- == Issues+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2020-07-21 (Bill Hollings)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'PhysicalDevicePortabilitySubsetFeaturesKHR',+-- 'PhysicalDevicePortabilitySubsetPropertiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_portability_subset Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_portability_subset  ( PhysicalDevicePortabilitySubsetFeaturesKHR                                                     , PhysicalDevicePortabilitySubsetPropertiesKHR                                                     ) where
src/Vulkan/Extensions/VK_KHR_push_descriptor.hs view
@@ -1,4 +1,131 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_push_descriptor - device extension+--+-- == VK_KHR_push_descriptor+--+-- [__Name String__]+--     @VK_KHR_push_descriptor@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     81+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_push_descriptor:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-12+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Michael Worcester, Imagination Technologies+--+-- == Description+--+-- This extension allows descriptors to be written into the command buffer,+-- while the implementation is responsible for managing their memory. Push+-- descriptors may enable easier porting from older APIs and in some cases+-- can be more efficient than writing descriptors into descriptor sets.+--+-- == New Commands+--+-- -   'cmdPushDescriptorSetKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>+-- is supported:+--+-- -   'cmdPushDescriptorSetWithTemplateKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   'cmdPushDescriptorSetWithTemplateKHR'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDevicePushDescriptorPropertiesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_PUSH_DESCRIPTOR_EXTENSION_NAME'+--+-- -   'KHR_PUSH_DESCRIPTOR_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DescriptorSetLayoutCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DescriptorUpdateTemplateType':+--+--     -   'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DescriptorUpdateTemplateType':+--+--     -   'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'+--+-- == Version History+--+-- -   Revision 1, 2016-10-15 (Jeff Bolz)+--+--     -   Internal revisions+--+-- -   Revision 2, 2017-09-12 (Tobias Hector)+--+--     -   Added interactions with Vulkan 1.1+--+-- = See Also+--+-- 'PhysicalDevicePushDescriptorPropertiesKHR', 'cmdPushDescriptorSetKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_push_descriptor  ( cmdPushDescriptorSetKHR                                                  , cmdPushDescriptorSetWithTemplateKHR                                                  , PhysicalDevicePushDescriptorPropertiesKHR(..)@@ -292,7 +419,7 @@ -- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |                                                                                                                                     | -- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ ----- __API example.__+-- __API example__ -- -- > struct AppDataStructure -- > {
src/Vulkan/Extensions/VK_KHR_push_descriptor.hs-boot view
@@ -1,4 +1,131 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_push_descriptor - device extension+--+-- == VK_KHR_push_descriptor+--+-- [__Name String__]+--     @VK_KHR_push_descriptor@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     81+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_push_descriptor:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-12+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Michael Worcester, Imagination Technologies+--+-- == Description+--+-- This extension allows descriptors to be written into the command buffer,+-- while the implementation is responsible for managing their memory. Push+-- descriptors may enable easier porting from older APIs and in some cases+-- can be more efficient than writing descriptors into descriptor sets.+--+-- == New Commands+--+-- -   'cmdPushDescriptorSetKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>+-- is supported:+--+-- -   'cmdPushDescriptorSetWithTemplateKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   'cmdPushDescriptorSetWithTemplateKHR'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDevicePushDescriptorPropertiesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_PUSH_DESCRIPTOR_EXTENSION_NAME'+--+-- -   'KHR_PUSH_DESCRIPTOR_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DescriptorSetLayoutCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template VK_KHR_descriptor_update_template>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DescriptorUpdateTemplateType':+--+--     -   'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   Extending+--     'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DescriptorUpdateTemplateType':+--+--     -   'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'+--+-- == Version History+--+-- -   Revision 1, 2016-10-15 (Jeff Bolz)+--+--     -   Internal revisions+--+-- -   Revision 2, 2017-09-12 (Tobias Hector)+--+--     -   Added interactions with Vulkan 1.1+--+-- = See Also+--+-- 'PhysicalDevicePushDescriptorPropertiesKHR', 'cmdPushDescriptorSetKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_push_descriptor  (PhysicalDevicePushDescriptorPropertiesKHR) where  import Data.Kind (Type)
+ src/Vulkan/Extensions/VK_KHR_ray_query.hs view
@@ -0,0 +1,354 @@+{-# language CPP #-}+-- | = Name+--+-- VK_KHR_ray_query - device extension+--+-- == VK_KHR_ray_query+--+-- [__Name String__]+--     @VK_KHR_ray_query@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     349+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+--     -   Requires @VK_KHR_spirv_1_4@+--+--     -   Requires @VK_KHR_acceleration_structure@+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_ray_query:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-11-12+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_ray_query.html SPV_KHR_ray_query>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_ray_query.txt GLSL_EXT_ray_query>+--+-- [__Contributors__]+--+--     -   Matthäus Chajdas, AMD+--+--     -   Greg Grebe, AMD+--+--     -   Nicolai Hähnle, AMD+--+--     -   Tobias Hector, AMD+--+--     -   Dave Oldcorn, AMD+--+--     -   Skyler Saleh, AMD+--+--     -   Mathieu Robart, Arm+--+--     -   Marius Bjorge, Arm+--+--     -   Tom Olson, Arm+--+--     -   Sebastian Tafuri, EA+--+--     -   Henrik Rydgard, Embark+--+--     -   Juan Cañada, Epic Games+--+--     -   Patrick Kelly, Epic Games+--+--     -   Yuriy O’Donnell, Epic Games+--+--     -   Michael Doggett, Facebook\/Oculus+--+--     -   Andrew Garrard, Imagination+--+--     -   Don Scorgie, Imagination+--+--     -   Dae Kim, Imagination+--+--     -   Joshua Barczak, Intel+--+--     -   Slawek Grajewski, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Pascal Gautron, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Christoph Kubisch, NVIDIA+--+--     -   Ashwin Lele, NVIDIA+--+--     -   Robert Stepinski, NVIDIA+--+--     -   Martin Stich, NVIDIA+--+--     -   Nuno Subtil, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+--     -   Jon Leech, Khronos+--+--     -   Jeroen van Schijndel, OTOY+--+--     -   Juul Joosten, OTOY+--+--     -   Alex Bourd, Qualcomm+--+--     -   Roman Larionov, Qualcomm+--+--     -   David McAllister, Qualcomm+--+--     -   Spencer Fricke, Samsung+--+--     -   Lewis Gordon, Samsung+--+--     -   Ralph Potter, Samsung+--+--     -   Jasper Bekkers, Traverse Research+--+--     -   Jesse Barker, Unity+--+--     -   Baldur Karlsson, Valve+--+-- == Description+--+-- Rasterization has been the dominant method to produce interactive+-- graphics, but increasing performance of graphics hardware has made ray+-- tracing a viable option for interactive rendering. Being able to+-- integrate ray tracing with traditional rasterization makes it easier for+-- applications to incrementally add ray traced effects to existing+-- applications or to do hybrid approaches with rasterization for primary+-- visibility and ray tracing for secondary queries.+--+-- Ray queries are available to all shader types, including graphics,+-- compute and ray tracing pipelines. Ray queries are not able to launch+-- additional shaders, instead returning traversal results to the calling+-- shader.+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   @SPV_KHR_ray_query@+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceRayQueryFeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_RAY_QUERY_EXTENSION_NAME'+--+-- -   'KHR_RAY_QUERY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-khr-raytracing RayQueryKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-khr-raytracing RayTraversalPrimitiveCullingKHR>+--+-- == Sample Code+--+-- Example of ray query in a GLSL shader+--+-- > rayQueryEXT rq;+-- >+-- > rayQueryInitializeEXT(rq, accStruct, gl_RayFlagsNoneEXT, 0, origin, tMin, direction, tMax);+-- >+-- > while(rayQueryProceedEXT(rq)) {+-- > 	if (rayQueryGetIntersectionTypeEXT(rq, false) == gl_RayQueryCandidateIntersectionTriangleEXT) {+-- > 		//...+-- > 		rayQueryConfirmIntersectionEXT(rq);+-- > 	}+-- > }+-- >+-- > if (rayQueryGetIntersectionTypeEXT(rq, true) == gl_RayQueryCommittedIntersectionNoneEXT) {+-- > 	//...+-- > }+--+-- == Issues+--+-- (1) What are the changes between the public provisional+-- (VK_KHR_ray_tracing v8) release and the final+-- (VK_KHR_acceleration_structure v11 \/ VK_KHR_ray_query v1) release?+--+-- -   refactor VK_KHR_ray_tracing into 3 extensions, enabling+--     implementation flexibility and decoupling ray query support from ray+--     pipelines:+--+--     -   <VK_KHR_acceleration_structure.html VK_KHR_acceleration_structure>+--         (for acceleration structure operations)+--+--     -   <VK_KHR_ray_tracing_pipeline.html VK_KHR_ray_tracing_pipeline>+--         (for ray tracing pipeline and shader stages)+--+--     -   <VK_KHR_ray_query.html VK_KHR_ray_query> (for ray queries in+--         existing shader stages)+--+-- -   Update SPIRV capabilities to use @RayQueryKHR@+--+-- -   extension is no longer provisional+--+-- == Version History+--+-- -   Revision 1, 2020-11-12 (Mathieu Robart, Daniel Koch, Andrew Garrard)+--+--     -   Decomposition of the specification, from VK_KHR_ray_tracing to+--         VK_KHR_ray_query (#1918,!3912)+--+--     -   update to use @RayQueryKHR@ SPIR-V capability+--+--     -   add numerical limits for ray parameters (#2235,!3960)+--+--     -   relax formula for ray intersection candidate determination+--         (#2322,!4080)+--+--     -   restrict traces to TLAS (#2239,!4141)+--+--     -   require @HitT@ to be in ray interval for+--         @OpRayQueryGenerateIntersectionKHR@ (#2359,!4146)+--+--     -   add ray query shader stages for AS read bit (#2407,!4203)+--+-- = See Also+--+-- 'PhysicalDeviceRayQueryFeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_query Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_KHR_ray_query  ( PhysicalDeviceRayQueryFeaturesKHR(..)+                                           , KHR_RAY_QUERY_SPEC_VERSION+                                           , pattern KHR_RAY_QUERY_SPEC_VERSION+                                           , KHR_RAY_QUERY_EXTENSION_NAME+                                           , pattern KHR_RAY_QUERY_EXTENSION_NAME+                                           ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.Generics (Generic)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Vulkan.Core10.FundamentalTypes (bool32ToBool)+import Vulkan.Core10.FundamentalTypes (boolToBool32)+import Vulkan.Core10.FundamentalTypes (Bool32)+import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (FromCStruct(..))+import Vulkan.Core10.Enums.StructureType (StructureType)+import Vulkan.CStruct (ToCStruct)+import Vulkan.CStruct (ToCStruct(..))+import Vulkan.Zero (Zero(..))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR))+-- | VkPhysicalDeviceRayQueryFeaturesKHR - Structure describing the ray query+-- features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceRayQueryFeaturesKHR' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceRayQueryFeaturesKHR' structure is included in the+-- @pNext@ chain of+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceRayQueryFeaturesKHR' /can/ also be used in the @pNext@+-- chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceRayQueryFeaturesKHR = PhysicalDeviceRayQueryFeaturesKHR+  { -- | #features-rayQuery# @rayQuery@ indicates whether the implementation+    -- supports ray query (@OpRayQueryProceedKHR@) functionality.+    rayQuery :: Bool }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceRayQueryFeaturesKHR)+#endif+deriving instance Show PhysicalDeviceRayQueryFeaturesKHR++instance ToCStruct PhysicalDeviceRayQueryFeaturesKHR where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceRayQueryFeaturesKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (rayQuery))+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PhysicalDeviceRayQueryFeaturesKHR where+  peekCStruct p = do+    rayQuery <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    pure $ PhysicalDeviceRayQueryFeaturesKHR+             (bool32ToBool rayQuery)++instance Storable PhysicalDeviceRayQueryFeaturesKHR where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceRayQueryFeaturesKHR where+  zero = PhysicalDeviceRayQueryFeaturesKHR+           zero+++type KHR_RAY_QUERY_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_RAY_QUERY_SPEC_VERSION"+pattern KHR_RAY_QUERY_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_RAY_QUERY_SPEC_VERSION = 1+++type KHR_RAY_QUERY_EXTENSION_NAME = "VK_KHR_ray_query"++-- No documentation found for TopLevel "VK_KHR_RAY_QUERY_EXTENSION_NAME"+pattern KHR_RAY_QUERY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_RAY_QUERY_EXTENSION_NAME = "VK_KHR_ray_query"+
+ src/Vulkan/Extensions/VK_KHR_ray_query.hs-boot view
@@ -0,0 +1,259 @@+{-# language CPP #-}+-- | = Name+--+-- VK_KHR_ray_query - device extension+--+-- == VK_KHR_ray_query+--+-- [__Name String__]+--     @VK_KHR_ray_query@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     349+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+--     -   Requires @VK_KHR_spirv_1_4@+--+--     -   Requires @VK_KHR_acceleration_structure@+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_ray_query:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-11-12+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_ray_query.html SPV_KHR_ray_query>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_ray_query.txt GLSL_EXT_ray_query>+--+-- [__Contributors__]+--+--     -   Matthäus Chajdas, AMD+--+--     -   Greg Grebe, AMD+--+--     -   Nicolai Hähnle, AMD+--+--     -   Tobias Hector, AMD+--+--     -   Dave Oldcorn, AMD+--+--     -   Skyler Saleh, AMD+--+--     -   Mathieu Robart, Arm+--+--     -   Marius Bjorge, Arm+--+--     -   Tom Olson, Arm+--+--     -   Sebastian Tafuri, EA+--+--     -   Henrik Rydgard, Embark+--+--     -   Juan Cañada, Epic Games+--+--     -   Patrick Kelly, Epic Games+--+--     -   Yuriy O’Donnell, Epic Games+--+--     -   Michael Doggett, Facebook\/Oculus+--+--     -   Andrew Garrard, Imagination+--+--     -   Don Scorgie, Imagination+--+--     -   Dae Kim, Imagination+--+--     -   Joshua Barczak, Intel+--+--     -   Slawek Grajewski, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Pascal Gautron, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Christoph Kubisch, NVIDIA+--+--     -   Ashwin Lele, NVIDIA+--+--     -   Robert Stepinski, NVIDIA+--+--     -   Martin Stich, NVIDIA+--+--     -   Nuno Subtil, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+--     -   Jon Leech, Khronos+--+--     -   Jeroen van Schijndel, OTOY+--+--     -   Juul Joosten, OTOY+--+--     -   Alex Bourd, Qualcomm+--+--     -   Roman Larionov, Qualcomm+--+--     -   David McAllister, Qualcomm+--+--     -   Spencer Fricke, Samsung+--+--     -   Lewis Gordon, Samsung+--+--     -   Ralph Potter, Samsung+--+--     -   Jasper Bekkers, Traverse Research+--+--     -   Jesse Barker, Unity+--+--     -   Baldur Karlsson, Valve+--+-- == Description+--+-- Rasterization has been the dominant method to produce interactive+-- graphics, but increasing performance of graphics hardware has made ray+-- tracing a viable option for interactive rendering. Being able to+-- integrate ray tracing with traditional rasterization makes it easier for+-- applications to incrementally add ray traced effects to existing+-- applications or to do hybrid approaches with rasterization for primary+-- visibility and ray tracing for secondary queries.+--+-- Ray queries are available to all shader types, including graphics,+-- compute and ray tracing pipelines. Ray queries are not able to launch+-- additional shaders, instead returning traversal results to the calling+-- shader.+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   @SPV_KHR_ray_query@+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceRayQueryFeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_RAY_QUERY_EXTENSION_NAME'+--+-- -   'KHR_RAY_QUERY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-khr-raytracing RayQueryKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-khr-raytracing RayTraversalPrimitiveCullingKHR>+--+-- == Sample Code+--+-- Example of ray query in a GLSL shader+--+-- > rayQueryEXT rq;+-- >+-- > rayQueryInitializeEXT(rq, accStruct, gl_RayFlagsNoneEXT, 0, origin, tMin, direction, tMax);+-- >+-- > while(rayQueryProceedEXT(rq)) {+-- > 	if (rayQueryGetIntersectionTypeEXT(rq, false) == gl_RayQueryCandidateIntersectionTriangleEXT) {+-- > 		//...+-- > 		rayQueryConfirmIntersectionEXT(rq);+-- > 	}+-- > }+-- >+-- > if (rayQueryGetIntersectionTypeEXT(rq, true) == gl_RayQueryCommittedIntersectionNoneEXT) {+-- > 	//...+-- > }+--+-- == Issues+--+-- (1) What are the changes between the public provisional+-- (VK_KHR_ray_tracing v8) release and the final+-- (VK_KHR_acceleration_structure v11 \/ VK_KHR_ray_query v1) release?+--+-- -   refactor VK_KHR_ray_tracing into 3 extensions, enabling+--     implementation flexibility and decoupling ray query support from ray+--     pipelines:+--+--     -   <VK_KHR_acceleration_structure.html VK_KHR_acceleration_structure>+--         (for acceleration structure operations)+--+--     -   <VK_KHR_ray_tracing_pipeline.html VK_KHR_ray_tracing_pipeline>+--         (for ray tracing pipeline and shader stages)+--+--     -   <VK_KHR_ray_query.html VK_KHR_ray_query> (for ray queries in+--         existing shader stages)+--+-- -   Update SPIRV capabilities to use @RayQueryKHR@+--+-- -   extension is no longer provisional+--+-- == Version History+--+-- -   Revision 1, 2020-11-12 (Mathieu Robart, Daniel Koch, Andrew Garrard)+--+--     -   Decomposition of the specification, from VK_KHR_ray_tracing to+--         VK_KHR_ray_query (#1918,!3912)+--+--     -   update to use @RayQueryKHR@ SPIR-V capability+--+--     -   add numerical limits for ray parameters (#2235,!3960)+--+--     -   relax formula for ray intersection candidate determination+--         (#2322,!4080)+--+--     -   restrict traces to TLAS (#2239,!4141)+--+--     -   require @HitT@ to be in ray interval for+--         @OpRayQueryGenerateIntersectionKHR@ (#2359,!4146)+--+--     -   add ray query shader stages for AS read bit (#2407,!4203)+--+-- = See Also+--+-- 'PhysicalDeviceRayQueryFeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_query Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_KHR_ray_query  (PhysicalDeviceRayQueryFeaturesKHR) where++import Data.Kind (Type)+import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (ToCStruct)+data PhysicalDeviceRayQueryFeaturesKHR++instance ToCStruct PhysicalDeviceRayQueryFeaturesKHR+instance Show PhysicalDeviceRayQueryFeaturesKHR++instance FromCStruct PhysicalDeviceRayQueryFeaturesKHR+
− src/Vulkan/Extensions/VK_KHR_ray_tracing.hs
@@ -1,7016 +0,0 @@-{-# language CPP #-}-module Vulkan.Extensions.VK_KHR_ray_tracing  ( destroyAccelerationStructureKHR-                                             , getAccelerationStructureMemoryRequirementsKHR-                                             , bindAccelerationStructureMemoryKHR-                                             , cmdCopyAccelerationStructureKHR-                                             , copyAccelerationStructureKHR-                                             , cmdCopyAccelerationStructureToMemoryKHR-                                             , copyAccelerationStructureToMemoryKHR-                                             , cmdCopyMemoryToAccelerationStructureKHR-                                             , copyMemoryToAccelerationStructureKHR-                                             , cmdWriteAccelerationStructuresPropertiesKHR-                                             , writeAccelerationStructuresPropertiesKHR-                                             , cmdTraceRaysKHR-                                             , getRayTracingShaderGroupHandlesKHR-                                             , getRayTracingCaptureReplayShaderGroupHandlesKHR-                                             , createRayTracingPipelinesKHR-                                             , cmdTraceRaysIndirectKHR-                                             , getDeviceAccelerationStructureCompatibilityKHR-                                             , createAccelerationStructureKHR-                                             , withAccelerationStructureKHR-                                             , cmdBuildAccelerationStructureKHR-                                             , cmdBuildAccelerationStructureIndirectKHR-                                             , buildAccelerationStructureKHR-                                             , getAccelerationStructureDeviceAddressKHR-                                             , RayTracingShaderGroupCreateInfoKHR(..)-                                             , RayTracingPipelineCreateInfoKHR(..)-                                             , BindAccelerationStructureMemoryInfoKHR(..)-                                             , WriteDescriptorSetAccelerationStructureKHR(..)-                                             , AccelerationStructureMemoryRequirementsInfoKHR(..)-                                             , PhysicalDeviceRayTracingFeaturesKHR(..)-                                             , PhysicalDeviceRayTracingPropertiesKHR(..)-                                             , StridedBufferRegionKHR(..)-                                             , TraceRaysIndirectCommandKHR(..)-                                             , AccelerationStructureGeometryTrianglesDataKHR(..)-                                             , AccelerationStructureGeometryAabbsDataKHR(..)-                                             , AccelerationStructureGeometryInstancesDataKHR(..)-                                             , AccelerationStructureGeometryKHR(..)-                                             , AccelerationStructureBuildGeometryInfoKHR(..)-                                             , AccelerationStructureBuildOffsetInfoKHR(..)-                                             , AccelerationStructureCreateGeometryTypeInfoKHR(..)-                                             , AccelerationStructureCreateInfoKHR(..)-                                             , AabbPositionsKHR(..)-                                             , TransformMatrixKHR(..)-                                             , AccelerationStructureInstanceKHR(..)-                                             , AccelerationStructureDeviceAddressInfoKHR(..)-                                             , AccelerationStructureVersionKHR(..)-                                             , CopyAccelerationStructureInfoKHR(..)-                                             , CopyAccelerationStructureToMemoryInfoKHR(..)-                                             , CopyMemoryToAccelerationStructureInfoKHR(..)-                                             , RayTracingPipelineInterfaceCreateInfoKHR(..)-                                             , DeviceOrHostAddressKHR(..)-                                             , DeviceOrHostAddressConstKHR(..)-                                             , AccelerationStructureGeometryDataKHR(..)-                                             , GeometryInstanceFlagBitsKHR( GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR-                                                                          , GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR-                                                                          , GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR-                                                                          , GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR-                                                                          , ..-                                                                          )-                                             , GeometryInstanceFlagsKHR-                                             , GeometryFlagBitsKHR( GEOMETRY_OPAQUE_BIT_KHR-                                                                  , GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR-                                                                  , ..-                                                                  )-                                             , GeometryFlagsKHR-                                             , BuildAccelerationStructureFlagBitsKHR( BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR-                                                                                    , BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR-                                                                                    , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR-                                                                                    , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR-                                                                                    , BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR-                                                                                    , ..-                                                                                    )-                                             , BuildAccelerationStructureFlagsKHR-                                             , CopyAccelerationStructureModeKHR( COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR-                                                                               , COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR-                                                                               , COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR-                                                                               , COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR-                                                                               , ..-                                                                               )-                                             , AccelerationStructureTypeKHR( ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR-                                                                           , ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR-                                                                           , ..-                                                                           )-                                             , GeometryTypeKHR( GEOMETRY_TYPE_TRIANGLES_KHR-                                                              , GEOMETRY_TYPE_AABBS_KHR-                                                              , GEOMETRY_TYPE_INSTANCES_KHR-                                                              , ..-                                                              )-                                             , AccelerationStructureMemoryRequirementsTypeKHR( ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR-                                                                                             , ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR-                                                                                             , ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR-                                                                                             , ..-                                                                                             )-                                             , AccelerationStructureBuildTypeKHR( ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR-                                                                                , ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR-                                                                                , ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR-                                                                                , ..-                                                                                )-                                             , RayTracingShaderGroupTypeKHR( RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR-                                                                           , RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR-                                                                           , RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR-                                                                           , ..-                                                                           )-                                             , KHR_RAY_TRACING_SPEC_VERSION-                                             , pattern KHR_RAY_TRACING_SPEC_VERSION-                                             , KHR_RAY_TRACING_EXTENSION_NAME-                                             , pattern KHR_RAY_TRACING_EXTENSION_NAME-                                             , AccelerationStructureKHR(..)-                                             , PipelineLibraryCreateInfoKHR(..)-                                             , DebugReportObjectTypeEXT(..)-                                             , SHADER_UNUSED_KHR-                                             , pattern SHADER_UNUSED_KHR-                                             ) where--import Vulkan.CStruct.Utils (FixedArray)-import Control.Exception.Base (bracket)-import Control.Monad (unless)-import Control.Monad.IO.Class (liftIO)-import Data.Bits ((.&.))-import Data.Bits ((.|.))-import Data.Bits (shiftL)-import Data.Bits (shiftR)-import Data.Typeable (eqT)-import Foreign.Marshal.Alloc (allocaBytesAligned)-import Foreign.Marshal.Alloc (callocBytes)-import Foreign.Marshal.Alloc (free)-import Foreign.Marshal.Utils (maybePeek)-import Foreign.Marshal.Utils (with)-import GHC.Base (when)-import GHC.IO (throwIO)-import GHC.Ptr (castPtr)-import GHC.Ptr (nullFunPtr)-import Foreign.Ptr (nullPtr)-import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)-import GHC.Show (showsPrec)-import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step)-import qualified Data.ByteString (length)-import Data.ByteString (packCStringLen)-import Data.ByteString.Unsafe (unsafeUseAsCString)-import Data.Coerce (coerce)-import Control.Monad.Trans.Class (lift)-import Control.Monad.Trans.Cont (evalContT)-import Control.Monad.Trans.Cont (runContT)-import Data.Vector (generateM)-import qualified Data.Vector (imapM_)-import qualified Data.Vector (length)-import Foreign.C.Types (CSize(..))-import Control.Monad.IO.Class (MonadIO)-import Data.Bits (Bits)-import Data.Bits (FiniteBits)-import Data.String (IsString)-import Data.Type.Equality ((:~:)(Refl))-import Data.Typeable (Typeable)-import Foreign.C.Types (CChar)-import Foreign.C.Types (CFloat)-import Foreign.C.Types (CFloat(CFloat))-import Foreign.C.Types (CSize)-import Foreign.C.Types (CSize(CSize))-import Foreign.Storable (Storable)-import Foreign.Storable (Storable(peek))-import Foreign.Storable (Storable(poke))-import qualified Foreign.Storable (Storable(..))-import GHC.Generics (Generic)-import GHC.IO.Exception (IOErrorType(..))-import GHC.IO.Exception (IOException(..))-import Data.Int (Int32)-import Foreign.Ptr (FunPtr)-import Foreign.Ptr (Ptr)-import GHC.Read (Read(readPrec))-import Data.Word (Word32)-import Data.Word (Word64)-import Data.Word (Word8)-import Text.Read.Lex (Lexeme(Ident))-import Data.ByteString (ByteString)-import Data.Kind (Type)-import Control.Monad.Trans.Cont (ContT(..))-import Data.Vector (Vector)-import Vulkan.CStruct.Utils (advancePtrBytes)-import Vulkan.Core10.FundamentalTypes (bool32ToBool)-import Vulkan.Core10.FundamentalTypes (boolToBool32)-import Vulkan.CStruct.Extends (forgetExtensions)-import Vulkan.CStruct.Utils (lowerArrayPtr)-import Vulkan.CStruct.Extends (peekSomeCStruct)-import Vulkan.CStruct.Extends (pokeSomeCStruct)-import Vulkan.NamedType ((:::))-import Vulkan.Extensions.Handles (AccelerationStructureKHR)-import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))-import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)-import Vulkan.Core10.FundamentalTypes (Bool32)-import Vulkan.Core10.Handles (Buffer)-import Vulkan.Core10.Handles (Buffer(..))-import Vulkan.CStruct.Extends (Chain)-import Vulkan.Core10.Handles (CommandBuffer)-import Vulkan.Core10.Handles (CommandBuffer(..))-import Vulkan.Core10.Handles (CommandBuffer_T)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_deferred_host_operations (DeferredOperationInfoKHR)-import Vulkan.Core10.Handles (Device)-import Vulkan.Core10.Handles (Device(..))-import Vulkan.Core10.FundamentalTypes (DeviceAddress)-import Vulkan.Dynamic (DeviceCmds(pVkBindAccelerationStructureMemoryKHR))-import Vulkan.Dynamic (DeviceCmds(pVkBuildAccelerationStructureKHR))-import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructureIndirectKHR))-import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructureKHR))-import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureKHR))-import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureToMemoryKHR))-import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMemoryToAccelerationStructureKHR))-import Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysIndirectKHR))-import Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysKHR))-import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteAccelerationStructuresPropertiesKHR))-import Vulkan.Dynamic (DeviceCmds(pVkCopyAccelerationStructureKHR))-import Vulkan.Dynamic (DeviceCmds(pVkCopyAccelerationStructureToMemoryKHR))-import Vulkan.Dynamic (DeviceCmds(pVkCopyMemoryToAccelerationStructureKHR))-import Vulkan.Dynamic (DeviceCmds(pVkCreateAccelerationStructureKHR))-import Vulkan.Dynamic (DeviceCmds(pVkCreateRayTracingPipelinesKHR))-import Vulkan.Dynamic (DeviceCmds(pVkDestroyAccelerationStructureKHR))-import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureDeviceAddressKHR))-import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureMemoryRequirementsKHR))-import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceAccelerationStructureCompatibilityKHR))-import Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR))-import Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingShaderGroupHandlesKHR))-import Vulkan.Dynamic (DeviceCmds(pVkWriteAccelerationStructuresPropertiesKHR))-import Vulkan.Core10.Handles (DeviceMemory)-import Vulkan.Core10.FundamentalTypes (DeviceSize)-import Vulkan.Core10.Handles (Device_T)-import Vulkan.CStruct.Extends (Extends)-import Vulkan.CStruct.Extends (Extendss)-import Vulkan.CStruct.Extends (Extensible(..))-import Vulkan.Core10.FundamentalTypes (Flags)-import Vulkan.Core10.Enums.Format (Format)-import Vulkan.CStruct (FromCStruct)-import Vulkan.CStruct (FromCStruct(..))-import Vulkan.Core10.Enums.IndexType (IndexType)-import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)-import Vulkan.CStruct.Extends (PeekChain)-import Vulkan.CStruct.Extends (PeekChain(..))-import Vulkan.Core10.Handles (Pipeline)-import Vulkan.Core10.Handles (Pipeline(..))-import Vulkan.Core10.Handles (PipelineCache)-import Vulkan.Core10.Handles (PipelineCache(..))-import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfoEXT)-import Vulkan.Core10.Handles (PipelineLayout)-import Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR)-import Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)-import Vulkan.CStruct.Extends (PokeChain)-import Vulkan.CStruct.Extends (PokeChain(..))-import Vulkan.Core10.Handles (QueryPool)-import Vulkan.Core10.Handles (QueryPool(..))-import Vulkan.Core10.Enums.QueryType (QueryType)-import Vulkan.Core10.Enums.QueryType (QueryType(..))-import Vulkan.Core10.Enums.Result (Result)-import Vulkan.Core10.Enums.Result (Result(..))-import Vulkan.CStruct.Extends (SomeStruct)-import Vulkan.Core10.Enums.StructureType (StructureType)-import Vulkan.CStruct (ToCStruct)-import Vulkan.CStruct (ToCStruct(..))-import Vulkan.Exception (VulkanException(..))-import Vulkan.Zero (Zero)-import Vulkan.Zero (Zero(..))-import Vulkan.Core10.FundamentalTypes (Bool32(FALSE))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR))-import Vulkan.Core10.Enums.Result (Result(SUCCESS))-import Vulkan.Core10.APIConstants (pattern UUID_SIZE)-import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))-import Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))-import Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR(..))-import Vulkan.Core10.APIConstants (SHADER_UNUSED_KHR)-import Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkDestroyAccelerationStructureKHR-  :: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> AccelerationStructureKHR -> Ptr AllocationCallbacks -> IO ()---- | vkDestroyAccelerationStructureKHR - Destroy an acceleration structure--- object------ == Valid Usage------ -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02442#---     All submitted commands that refer to @accelerationStructure@ /must/---     have completed execution------ -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02443#---     If 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were---     provided when @accelerationStructure@ was created, a compatible set---     of callbacks /must/ be provided here------ -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02444#---     If no 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were---     provided when @accelerationStructure@ was created, @pAllocator@---     /must/ be @NULL@------ == Valid Usage (Implicit)------ -   #VUID-vkDestroyAccelerationStructureKHR-device-parameter# @device@---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parameter#---     If @accelerationStructure@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @accelerationStructure@---     /must/ be a valid---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle------ -   #VUID-vkDestroyAccelerationStructureKHR-pAllocator-parameter# If---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     structure------ -   #VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parent#---     If @accelerationStructure@ is a valid handle, it /must/ have been---     created, allocated, or retrieved from @device@------ == Host Synchronization------ -   Host access to @accelerationStructure@ /must/ be externally---     synchronized------ = See Also------ 'Vulkan.Extensions.Handles.AccelerationStructureKHR',--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Vulkan.Core10.Handles.Device'-destroyAccelerationStructureKHR :: forall io-                                 . (MonadIO io)-                                => -- | @device@ is the logical device that destroys the buffer.-                                   Device-                                -> -- | @accelerationStructure@ is the acceleration structure to destroy.-                                   AccelerationStructureKHR-                                -> -- | @pAllocator@ controls host memory allocation as described in the-                                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>-                                   -- chapter.-                                   ("allocator" ::: Maybe AllocationCallbacks)-                                -> io ()-destroyAccelerationStructureKHR device accelerationStructure allocator = liftIO . evalContT $ do-  let vkDestroyAccelerationStructureKHRPtr = pVkDestroyAccelerationStructureKHR (deviceCmds (device :: Device))-  lift $ unless (vkDestroyAccelerationStructureKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyAccelerationStructureKHR is null" Nothing Nothing-  let vkDestroyAccelerationStructureKHR' = mkVkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHRPtr-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  lift $ vkDestroyAccelerationStructureKHR' (deviceHandle (device)) (accelerationStructure) pAllocator-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkGetAccelerationStructureMemoryRequirementsKHR-  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoKHR -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoKHR -> Ptr (SomeStruct MemoryRequirements2) -> IO ()---- | vkGetAccelerationStructureMemoryRequirementsKHR - Get acceleration--- structure memory requirements------ == Valid Usage (Implicit)------ = See Also------ 'AccelerationStructureMemoryRequirementsInfoKHR',--- 'Vulkan.Core10.Handles.Device',--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'-getAccelerationStructureMemoryRequirementsKHR :: forall a io-                                               . (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io)-                                              => -- | @device@ is the logical device on which the acceleration structure was-                                                 -- created.-                                                 ---                                                 -- #VUID-vkGetAccelerationStructureMemoryRequirementsKHR-device-parameter#-                                                 -- @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle-                                                 Device-                                              -> -- | @pInfo@ specifies the acceleration structure to get memory requirements-                                                 -- for.-                                                 ---                                                 -- #VUID-vkGetAccelerationStructureMemoryRequirementsKHR-pInfo-parameter#-                                                 -- @pInfo@ /must/ be a valid pointer to a valid-                                                 -- 'AccelerationStructureMemoryRequirementsInfoKHR' structure-                                                 AccelerationStructureMemoryRequirementsInfoKHR-                                              -> io (MemoryRequirements2 a)-getAccelerationStructureMemoryRequirementsKHR device info = liftIO . evalContT $ do-  let vkGetAccelerationStructureMemoryRequirementsKHRPtr = pVkGetAccelerationStructureMemoryRequirementsKHR (deviceCmds (device :: Device))-  lift $ unless (vkGetAccelerationStructureMemoryRequirementsKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureMemoryRequirementsKHR is null" Nothing Nothing-  let vkGetAccelerationStructureMemoryRequirementsKHR' = mkVkGetAccelerationStructureMemoryRequirementsKHR vkGetAccelerationStructureMemoryRequirementsKHRPtr-  pInfo <- ContT $ withCStruct (info)-  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))-  lift $ vkGetAccelerationStructureMemoryRequirementsKHR' (deviceHandle (device)) pInfo (forgetExtensions (pPMemoryRequirements))-  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements-  pure $ (pMemoryRequirements)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkBindAccelerationStructureMemoryKHR-  :: FunPtr (Ptr Device_T -> Word32 -> Ptr BindAccelerationStructureMemoryInfoKHR -> IO Result) -> Ptr Device_T -> Word32 -> Ptr BindAccelerationStructureMemoryInfoKHR -> IO Result---- | vkBindAccelerationStructureMemoryKHR - Bind acceleration structure--- memory------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'BindAccelerationStructureMemoryInfoKHR', 'Vulkan.Core10.Handles.Device'-bindAccelerationStructureMemoryKHR :: forall io-                                    . (MonadIO io)-                                   => -- | @device@ is the logical device that owns the acceleration structures and-                                      -- memory.-                                      ---                                      -- #VUID-vkBindAccelerationStructureMemoryKHR-device-parameter# @device@-                                      -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle-                                      Device-                                   -> -- | @pBindInfos@ is a pointer to an array of-                                      -- 'BindAccelerationStructureMemoryInfoKHR' structures describing-                                      -- acceleration structures and memory to bind.-                                      ---                                      -- #VUID-vkBindAccelerationStructureMemoryKHR-pBindInfos-parameter#-                                      -- @pBindInfos@ /must/ be a valid pointer to an array of @bindInfoCount@-                                      -- valid 'BindAccelerationStructureMemoryInfoKHR' structures-                                      ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoKHR)-                                   -> io ()-bindAccelerationStructureMemoryKHR device bindInfos = liftIO . evalContT $ do-  let vkBindAccelerationStructureMemoryKHRPtr = pVkBindAccelerationStructureMemoryKHR (deviceCmds (device :: Device))-  lift $ unless (vkBindAccelerationStructureMemoryKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkBindAccelerationStructureMemoryKHR is null" Nothing Nothing-  let vkBindAccelerationStructureMemoryKHR' = mkVkBindAccelerationStructureMemoryKHR vkBindAccelerationStructureMemoryKHRPtr-  pPBindInfos <- ContT $ allocaBytesAligned @BindAccelerationStructureMemoryInfoKHR ((Data.Vector.length (bindInfos)) * 56) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBindInfos `plusPtr` (56 * (i)) :: Ptr BindAccelerationStructureMemoryInfoKHR) (e) . ($ ())) (bindInfos)-  r <- lift $ vkBindAccelerationStructureMemoryKHR' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (bindInfos)) :: Word32)) (pPBindInfos)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdCopyAccelerationStructureKHR-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct CopyAccelerationStructureInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct CopyAccelerationStructureInfoKHR) -> IO ()---- | vkCmdCopyAccelerationStructureKHR - Copy an acceleration structure------ == Valid Usage------ -   #VUID-vkCmdCopyAccelerationStructureKHR-None-03556# All---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' objects---     referenced by this command /must/ be bound to device memory------ -   #VUID-vkCmdCopyAccelerationStructureKHR-pNext-03557# The---     'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'---     structure /must/ not be included in the @pNext@ chain of the---     'CopyAccelerationStructureInfoKHR' structure------ == Valid Usage (Implicit)------ -   #VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdCopyAccelerationStructureKHR-pInfo-parameter# @pInfo@---     /must/ be a valid pointer to a valid---     'CopyAccelerationStructureInfoKHR' structure------ -   #VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-recording#---     @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   #VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support compute operations------ -   #VUID-vkCmdCopyAccelerationStructureKHR-renderpass# This command---     /must/ only be called outside of a render pass instance------ == Host Synchronization------ -   Host access to @commandBuffer@ /must/ be externally synchronized------ -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Vulkan.Core10.Handles.CommandBuffer',--- 'CopyAccelerationStructureInfoKHR'-cmdCopyAccelerationStructureKHR :: forall a io-                                 . (Extendss CopyAccelerationStructureInfoKHR a, PokeChain a, MonadIO io)-                                => -- | @commandBuffer@ is the command buffer into which the command will be-                                   -- recorded.-                                   CommandBuffer-                                -> -- | @pInfo@ is a pointer to a 'CopyAccelerationStructureInfoKHR' structure-                                   -- defining the copy operation.-                                   (CopyAccelerationStructureInfoKHR a)-                                -> io ()-cmdCopyAccelerationStructureKHR commandBuffer info = liftIO . evalContT $ do-  let vkCmdCopyAccelerationStructureKHRPtr = pVkCmdCopyAccelerationStructureKHR (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdCopyAccelerationStructureKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyAccelerationStructureKHR is null" Nothing Nothing-  let vkCmdCopyAccelerationStructureKHR' = mkVkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHRPtr-  pInfo <- ContT $ withCStruct (info)-  lift $ vkCmdCopyAccelerationStructureKHR' (commandBufferHandle (commandBuffer)) (forgetExtensions pInfo)-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCopyAccelerationStructureKHR-  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct CopyAccelerationStructureInfoKHR) -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct CopyAccelerationStructureInfoKHR) -> IO Result---- | vkCopyAccelerationStructureKHR - Copy an acceleration structure on the--- host------ = Parameters------ This command fulfills the same task as 'cmdCopyAccelerationStructureKHR'--- but executed by the host.------ = Description------ -   @device@ is the device which owns the acceleration structures.------ -   @pInfo@ is a pointer to a 'CopyAccelerationStructureInfoKHR'---     structure defining the copy operation.------ If the--- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'--- structure is included in the @pNext@ chain of the--- 'CopyAccelerationStructureInfoKHR' structure, the operation of this--- command is /deferred/, as defined in the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations Deferred Host Operations>--- chapter.------ == Valid Usage------ -   #VUID-vkCopyAccelerationStructureKHR-None-03440# All---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' objects---     referenced by this command /must/ be bound to host-visible memory------ -   #VUID-vkCopyAccelerationStructureKHR-rayTracingHostAccelerationStructureCommands-03441#---     the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-hostascmds ::rayTracingHostAccelerationStructureCommands>---     feature /must/ be enabled------ == Valid Usage (Implicit)------ -   #VUID-vkCopyAccelerationStructureKHR-device-parameter# @device@---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkCopyAccelerationStructureKHR-pInfo-parameter# @pInfo@ /must/---     be a valid pointer to a valid 'CopyAccelerationStructureInfoKHR'---     structure------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'------     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'CopyAccelerationStructureInfoKHR', 'Vulkan.Core10.Handles.Device'-copyAccelerationStructureKHR :: forall a io-                              . (Extendss CopyAccelerationStructureInfoKHR a, PokeChain a, MonadIO io)-                             => -- No documentation found for Nested "vkCopyAccelerationStructureKHR" "device"-                                Device-                             -> -- No documentation found for Nested "vkCopyAccelerationStructureKHR" "pInfo"-                                (CopyAccelerationStructureInfoKHR a)-                             -> io (Result)-copyAccelerationStructureKHR device info = liftIO . evalContT $ do-  let vkCopyAccelerationStructureKHRPtr = pVkCopyAccelerationStructureKHR (deviceCmds (device :: Device))-  lift $ unless (vkCopyAccelerationStructureKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyAccelerationStructureKHR is null" Nothing Nothing-  let vkCopyAccelerationStructureKHR' = mkVkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHRPtr-  pInfo <- ContT $ withCStruct (info)-  r <- lift $ vkCopyAccelerationStructureKHR' (deviceHandle (device)) (forgetExtensions pInfo)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pure $ (r)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdCopyAccelerationStructureToMemoryKHR-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct CopyAccelerationStructureToMemoryInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct CopyAccelerationStructureToMemoryInfoKHR) -> IO ()---- | vkCmdCopyAccelerationStructureToMemoryKHR - Copy an acceleration--- structure to device memory------ = Parameters------ This command produces the same results as--- 'copyAccelerationStructureToMemoryKHR', but writes its result to a--- device address, and is executed on the device rather than the host. The--- output /may/ not necessarily be bit-for-bit identical, but it can be--- equally used by either 'cmdCopyMemoryToAccelerationStructureKHR' or--- 'copyMemoryToAccelerationStructureKHR'.------ = Description------ -   @commandBuffer@ is the command buffer into which the command will be---     recorded.------ -   @pInfo@ is an a pointer to a---     'CopyAccelerationStructureToMemoryInfoKHR' structure defining the---     copy operation.------ The defined header structure for the serialized data consists of:------ -   'Vulkan.Core10.APIConstants.UUID_SIZE' bytes of data matching---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@driverUUID@------ -   'Vulkan.Core10.APIConstants.UUID_SIZE' bytes of data identifying the---     compatibility for comparison using---     'getDeviceAccelerationStructureCompatibilityKHR'------ -   A 64-bit integer of the total size matching the value queried using---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'------ -   A 64-bit integer of the deserialized size to be passed in to---     'AccelerationStructureCreateInfoKHR'::@compactedSize@------ -   A 64-bit integer of the count of the number of acceleration---     structure handles following. This will be zero for a bottom-level---     acceleration structure.------ The corresponding handles matching the values returned by--- 'getAccelerationStructureDeviceAddressKHR' or--- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'--- are tightly packed in the buffer following the count. The application is--- expected to store a mapping between those handles and the original--- application-generated bottom-level acceleration structures to provide--- when deserializing.------ == Valid Usage------ -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-04048# All---     'DeviceOrHostAddressConstKHR' referenced by this command /must/---     contain valid device addresses for a buffer bound to device memory.---     If the buffer is non-sparse then it /must/ be bound completely and---     contiguously to a single VkDeviceMemory object------ -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-03559# All---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' objects---     referenced by this command /must/ be bound to device memory------ -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pNext-03560# The---     'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'---     structure /must/ not be included in the @pNext@ chain of the---     'CopyAccelerationStructureToMemoryInfoKHR' structure------ -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-mode-03412# @mode@---     /must/ be 'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR'------ == Valid Usage (Implicit)------ -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-parameter#---     @pInfo@ /must/ be a valid pointer to a valid---     'CopyAccelerationStructureToMemoryInfoKHR' structure------ -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-recording#---     @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-cmdpool#---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support compute operations------ -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-renderpass# This---     command /must/ only be called outside of a render pass instance------ == Host Synchronization------ -   Host access to @commandBuffer@ /must/ be externally synchronized------ -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Vulkan.Core10.Handles.CommandBuffer',--- 'CopyAccelerationStructureToMemoryInfoKHR'-cmdCopyAccelerationStructureToMemoryKHR :: forall a io-                                         . (Extendss CopyAccelerationStructureToMemoryInfoKHR a, PokeChain a, MonadIO io)-                                        => -- No documentation found for Nested "vkCmdCopyAccelerationStructureToMemoryKHR" "commandBuffer"-                                           CommandBuffer-                                        -> -- No documentation found for Nested "vkCmdCopyAccelerationStructureToMemoryKHR" "pInfo"-                                           (CopyAccelerationStructureToMemoryInfoKHR a)-                                        -> io ()-cmdCopyAccelerationStructureToMemoryKHR commandBuffer info = liftIO . evalContT $ do-  let vkCmdCopyAccelerationStructureToMemoryKHRPtr = pVkCmdCopyAccelerationStructureToMemoryKHR (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdCopyAccelerationStructureToMemoryKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyAccelerationStructureToMemoryKHR is null" Nothing Nothing-  let vkCmdCopyAccelerationStructureToMemoryKHR' = mkVkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHRPtr-  pInfo <- ContT $ withCStruct (info)-  lift $ vkCmdCopyAccelerationStructureToMemoryKHR' (commandBufferHandle (commandBuffer)) (forgetExtensions pInfo)-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCopyAccelerationStructureToMemoryKHR-  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct CopyAccelerationStructureToMemoryInfoKHR) -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct CopyAccelerationStructureToMemoryInfoKHR) -> IO Result---- | vkCopyAccelerationStructureToMemoryKHR - Serialize an acceleration--- structure on the host------ = Parameters------ This command fulfills the same task as--- 'cmdCopyAccelerationStructureToMemoryKHR' but executed by the host.------ = Description------ This command produces the same results as--- 'cmdCopyAccelerationStructureToMemoryKHR', but writes its result--- directly to a host pointer, and is executed on the host rather than the--- device. The output /may/ not necessarily be bit-for-bit identical, but--- it can be equally used by either--- 'cmdCopyMemoryToAccelerationStructureKHR' or--- 'copyMemoryToAccelerationStructureKHR'.------ -   @device@ is the device which owns @pInfo->src@.------ -   @pInfo@ is a pointer to a 'CopyAccelerationStructureToMemoryInfoKHR'---     structure defining the copy operation.------ If the--- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'--- structure is included in the @pNext@ chain of the--- 'CopyAccelerationStructureToMemoryInfoKHR' structure, the operation of--- this command is /deferred/, as defined in the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations>--- chapter.------ == Valid Usage------ -   #VUID-vkCopyAccelerationStructureToMemoryKHR-None-03445# All---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' objects---     referenced by this command /must/ be bound to host-visible memory------ -   #VUID-vkCopyAccelerationStructureToMemoryKHR-None-03446# All---     'DeviceOrHostAddressKHR' referenced by this command /must/ contain---     valid host pointers------ -   #VUID-vkCopyAccelerationStructureToMemoryKHR-rayTracingHostAccelerationStructureCommands-03447#---     the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-hostascmds ::rayTracingHostAccelerationStructureCommands>---     feature /must/ be enabled------ == Valid Usage (Implicit)------ -   #VUID-vkCopyAccelerationStructureToMemoryKHR-device-parameter#---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-parameter#---     @pInfo@ /must/ be a valid pointer to a valid---     'CopyAccelerationStructureToMemoryInfoKHR' structure------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'------     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'CopyAccelerationStructureToMemoryInfoKHR',--- 'Vulkan.Core10.Handles.Device'-copyAccelerationStructureToMemoryKHR :: forall a io-                                      . (Extendss CopyAccelerationStructureToMemoryInfoKHR a, PokeChain a, MonadIO io)-                                     => -- No documentation found for Nested "vkCopyAccelerationStructureToMemoryKHR" "device"-                                        Device-                                     -> -- No documentation found for Nested "vkCopyAccelerationStructureToMemoryKHR" "pInfo"-                                        (CopyAccelerationStructureToMemoryInfoKHR a)-                                     -> io (Result)-copyAccelerationStructureToMemoryKHR device info = liftIO . evalContT $ do-  let vkCopyAccelerationStructureToMemoryKHRPtr = pVkCopyAccelerationStructureToMemoryKHR (deviceCmds (device :: Device))-  lift $ unless (vkCopyAccelerationStructureToMemoryKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyAccelerationStructureToMemoryKHR is null" Nothing Nothing-  let vkCopyAccelerationStructureToMemoryKHR' = mkVkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHRPtr-  pInfo <- ContT $ withCStruct (info)-  r <- lift $ vkCopyAccelerationStructureToMemoryKHR' (deviceHandle (device)) (forgetExtensions pInfo)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pure $ (r)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdCopyMemoryToAccelerationStructureKHR-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct CopyMemoryToAccelerationStructureInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct CopyMemoryToAccelerationStructureInfoKHR) -> IO ()---- | vkCmdCopyMemoryToAccelerationStructureKHR - Copy device memory to an--- acceleration structure------ = Parameters------ This command can accept acceleration structures produced by either--- 'cmdCopyAccelerationStructureToMemoryKHR' or--- 'copyAccelerationStructureToMemoryKHR'.------ = Description------ -   @commandBuffer@ is the command buffer into which the command will be---     recorded.------ -   @pInfo@ is a pointer to a 'CopyMemoryToAccelerationStructureInfoKHR'---     structure defining the copy operation.------ The structure provided as input to deserialize is as described in--- 'cmdCopyAccelerationStructureToMemoryKHR', with any acceleration--- structure handles filled in with the newly-queried handles to bottom--- level acceleration structures created before deserialization. These do--- not need to be built at deserialize time, but /must/ be created.------ == Valid Usage------ -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-None-04049# All---     'DeviceOrHostAddressKHR' referenced by this command /must/ contain---     valid device addresses for a buffer bound to device memory. If the---     buffer is non-sparse then it /must/ be bound completely and---     contiguously to a single VkDeviceMemory object------ -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-None-03563# All---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' objects---     referenced by this command /must/ be bound to device memory------ -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pNext-03564# The---     'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'---     structure /must/ not be included in the @pNext@ chain of the---     'CopyMemoryToAccelerationStructureInfoKHR' structure------ -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-mode-03413# @mode@---     /must/ be 'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR'------ -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03414# The---     data in @pInfo->src@ /must/ have a format compatible with the---     destination physical device as returned by---     'getDeviceAccelerationStructureCompatibilityKHR'------ == Valid Usage (Implicit)------ -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-parameter#---     @pInfo@ /must/ be a valid pointer to a valid---     'CopyMemoryToAccelerationStructureInfoKHR' structure------ -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-recording#---     @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-cmdpool#---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support compute operations------ -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-renderpass# This---     command /must/ only be called outside of a render pass instance------ == Host Synchronization------ -   Host access to @commandBuffer@ /must/ be externally synchronized------ -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Vulkan.Core10.Handles.CommandBuffer',--- 'CopyMemoryToAccelerationStructureInfoKHR'-cmdCopyMemoryToAccelerationStructureKHR :: forall a io-                                         . (Extendss CopyMemoryToAccelerationStructureInfoKHR a, PokeChain a, MonadIO io)-                                        => -- No documentation found for Nested "vkCmdCopyMemoryToAccelerationStructureKHR" "commandBuffer"-                                           CommandBuffer-                                        -> -- No documentation found for Nested "vkCmdCopyMemoryToAccelerationStructureKHR" "pInfo"-                                           (CopyMemoryToAccelerationStructureInfoKHR a)-                                        -> io ()-cmdCopyMemoryToAccelerationStructureKHR commandBuffer info = liftIO . evalContT $ do-  let vkCmdCopyMemoryToAccelerationStructureKHRPtr = pVkCmdCopyMemoryToAccelerationStructureKHR (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdCopyMemoryToAccelerationStructureKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyMemoryToAccelerationStructureKHR is null" Nothing Nothing-  let vkCmdCopyMemoryToAccelerationStructureKHR' = mkVkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHRPtr-  pInfo <- ContT $ withCStruct (info)-  lift $ vkCmdCopyMemoryToAccelerationStructureKHR' (commandBufferHandle (commandBuffer)) (forgetExtensions pInfo)-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCopyMemoryToAccelerationStructureKHR-  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct CopyMemoryToAccelerationStructureInfoKHR) -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct CopyMemoryToAccelerationStructureInfoKHR) -> IO Result---- | vkCopyMemoryToAccelerationStructureKHR - Deserialize an acceleration--- structure on the host------ = Parameters------ This command fulfills the same task as--- 'cmdCopyMemoryToAccelerationStructureKHR' but is executed by the host.------ = Description------ This command can accept acceleration structures produced by either--- 'cmdCopyAccelerationStructureToMemoryKHR' or--- 'copyAccelerationStructureToMemoryKHR'.------ -   @device@ is the device which owns @pInfo->dst@.------ -   @pInfo@ is a pointer to a 'CopyMemoryToAccelerationStructureInfoKHR'---     structure defining the copy operation.------ If the--- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'--- structure is included in the @pNext@ chain of the--- 'CopyMemoryToAccelerationStructureInfoKHR' structure, the operation of--- this command is /deferred/, as defined in the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations Deferred Host Operations>--- chapter.------ == Valid Usage------ -   #VUID-vkCopyMemoryToAccelerationStructureKHR-None-03442# All---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' objects---     referenced by this command /must/ be bound to host-visible memory------ -   #VUID-vkCopyMemoryToAccelerationStructureKHR-None-03443# All---     'DeviceOrHostAddressConstKHR' referenced by this command /must/---     contain valid host pointers------ -   #VUID-vkCopyMemoryToAccelerationStructureKHR-rayTracingHostAccelerationStructureCommands-03444#---     the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-hostascmds ::rayTracingHostAccelerationStructureCommands>---     feature /must/ be enabled------ == Valid Usage (Implicit)------ -   #VUID-vkCopyMemoryToAccelerationStructureKHR-device-parameter#---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-parameter#---     @pInfo@ /must/ be a valid pointer to a valid---     'CopyMemoryToAccelerationStructureInfoKHR' structure------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'------     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'CopyMemoryToAccelerationStructureInfoKHR',--- 'Vulkan.Core10.Handles.Device'-copyMemoryToAccelerationStructureKHR :: forall a io-                                      . (Extendss CopyMemoryToAccelerationStructureInfoKHR a, PokeChain a, MonadIO io)-                                     => -- No documentation found for Nested "vkCopyMemoryToAccelerationStructureKHR" "device"-                                        Device-                                     -> -- No documentation found for Nested "vkCopyMemoryToAccelerationStructureKHR" "pInfo"-                                        (CopyMemoryToAccelerationStructureInfoKHR a)-                                     -> io (Result)-copyMemoryToAccelerationStructureKHR device info = liftIO . evalContT $ do-  let vkCopyMemoryToAccelerationStructureKHRPtr = pVkCopyMemoryToAccelerationStructureKHR (deviceCmds (device :: Device))-  lift $ unless (vkCopyMemoryToAccelerationStructureKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCopyMemoryToAccelerationStructureKHR is null" Nothing Nothing-  let vkCopyMemoryToAccelerationStructureKHR' = mkVkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHRPtr-  pInfo <- ContT $ withCStruct (info)-  r <- lift $ vkCopyMemoryToAccelerationStructureKHR' (deviceHandle (device)) (forgetExtensions pInfo)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pure $ (r)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdWriteAccelerationStructuresPropertiesKHR-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> QueryPool -> Word32 -> IO ()---- | vkCmdWriteAccelerationStructuresPropertiesKHR - Write acceleration--- structure result parameters to query results.------ == Valid Usage------ -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02493#---     @queryPool@ /must/ have been created with a @queryType@ matching---     @queryType@------ -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02494#---     The queries identified by @queryPool@ and @firstQuery@ /must/ be---     /unavailable/------ -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431#---     All acceleration structures in @accelerationStructures@ /must/ have---     been built with---     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' if---     @queryType@ is---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'------ -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-03432#---     @queryType@ /must/ be---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'---     or---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'------ == Valid Usage (Implicit)------ -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter#---     @pAccelerationStructures@ /must/ be a valid pointer to an array of---     @accelerationStructureCount@ valid---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handles------ -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-parameter#---     @queryType@ /must/ be a valid---     'Vulkan.Core10.Enums.QueryType.QueryType' value------ -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-parameter#---     @queryPool@ /must/ be a valid 'Vulkan.Core10.Handles.QueryPool'---     handle------ -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-recording#---     @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-cmdpool#---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support compute operations------ -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-renderpass# This---     command /must/ only be called outside of a render pass instance------ -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength#---     @accelerationStructureCount@ /must/ be greater than @0@------ -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commonparent#---     Each of @commandBuffer@, @queryPool@, and the elements of---     @pAccelerationStructures@ /must/ have been created, allocated, or---     retrieved from the same 'Vulkan.Core10.Handles.Device'------ == Host Synchronization------ -   Host access to @commandBuffer@ /must/ be externally synchronized------ -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Vulkan.Extensions.Handles.AccelerationStructureKHR',--- 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.Handles.QueryPool',--- 'Vulkan.Core10.Enums.QueryType.QueryType'-cmdWriteAccelerationStructuresPropertiesKHR :: forall io-                                             . (MonadIO io)-                                            => -- | @commandBuffer@ is the command buffer into which the command will be-                                               -- recorded.-                                               CommandBuffer-                                            -> -- | @pAccelerationStructures@ is a pointer to an array of existing-                                               -- previously built acceleration structures.-                                               ("accelerationStructures" ::: Vector AccelerationStructureKHR)-                                            -> -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value-                                               -- specifying the type of queries managed by the pool.-                                               QueryType-                                            -> -- | @queryPool@ is the query pool that will manage the results of the query.-                                               QueryPool-                                            -> -- | @firstQuery@ is the first query index within the query pool that will-                                               -- contain the @accelerationStructureCount@ number of results.-                                               ("firstQuery" ::: Word32)-                                            -> io ()-cmdWriteAccelerationStructuresPropertiesKHR commandBuffer accelerationStructures queryType queryPool firstQuery = liftIO . evalContT $ do-  let vkCmdWriteAccelerationStructuresPropertiesKHRPtr = pVkCmdWriteAccelerationStructuresPropertiesKHR (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdWriteAccelerationStructuresPropertiesKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteAccelerationStructuresPropertiesKHR is null" Nothing Nothing-  let vkCmdWriteAccelerationStructuresPropertiesKHR' = mkVkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHRPtr-  pPAccelerationStructures <- ContT $ allocaBytesAligned @AccelerationStructureKHR ((Data.Vector.length (accelerationStructures)) * 8) 8-  lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (accelerationStructures)-  lift $ vkCmdWriteAccelerationStructuresPropertiesKHR' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32)) (pPAccelerationStructures) (queryType) (queryPool) (firstQuery)-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkWriteAccelerationStructuresPropertiesKHR-  :: FunPtr (Ptr Device_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> CSize -> Ptr () -> CSize -> IO Result) -> Ptr Device_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> CSize -> Ptr () -> CSize -> IO Result---- | vkWriteAccelerationStructuresPropertiesKHR - Query acceleration--- structure meta-data on the host------ = Parameters------ This command fulfills the same task as--- 'cmdWriteAccelerationStructuresPropertiesKHR' but executed by the host.------ = Description------ -   @device@ is the device which owns the acceleration structures in---     @pAccelerationStructures@.------ -   @accelerationStructureCount@ is the count of acceleration structures---     for which to query the property.------ -   @pAccelerationStructures@ points to an array of existing previously---     built acceleration structures.------ -   @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value---     specifying the property to be queried.------ -   @dataSize@ is the size in bytes of the buffer pointed to by @pData@.------ -   @pData@ is a pointer to a user-allocated buffer where the results---     will be written.------ -   @stride@ is the stride in bytes between results for individual---     queries within @pData@.------ == Valid Usage------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03448# If---     @queryType@ is---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',---     then @stride@ /must/ be a multiple of the size of---     'Vulkan.Core10.FundamentalTypes.DeviceSize'------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03449# If---     @queryType@ is---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',---     then @data@ /must/ point to a---     'Vulkan.Core10.FundamentalTypes.DeviceSize'------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03450# If---     @queryType@ is---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR',---     then @stride@ /must/ be a multiple of the size of---     'Vulkan.Core10.FundamentalTypes.DeviceSize'------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03451# If---     @queryType@ is---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR',---     then @data@ /must/ point to a---     'Vulkan.Core10.FundamentalTypes.DeviceSize'------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-03452#---     @dataSize@ /must/ be greater than or equal to---     @accelerationStructureCount@*@stride@------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-03453#---     The acceleration structures referenced by @pAccelerationStructures@---     /must/ be bound to host-visible memory------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431#---     All acceleration structures in @accelerationStructures@ /must/ have---     been built with---     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' if---     @queryType@ is---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03432#---     @queryType@ /must/ be---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'---     or---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-rayTracingHostAccelerationStructureCommands-03454#---     the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-hostascmds ::rayTracingHostAccelerationStructureCommands>---     feature /must/ be enabled------ == Valid Usage (Implicit)------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-device-parameter#---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter#---     @pAccelerationStructures@ /must/ be a valid pointer to an array of---     @accelerationStructureCount@ valid---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handles------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-parameter#---     @queryType@ /must/ be a valid---     'Vulkan.Core10.Enums.QueryType.QueryType' value------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pData-parameter#---     @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength#---     @accelerationStructureCount@ /must/ be greater than @0@------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-arraylength#---     @dataSize@ /must/ be greater than @0@------ -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parent#---     Each element of @pAccelerationStructures@ /must/ have been created,---     allocated, or retrieved from @device@------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'Vulkan.Extensions.Handles.AccelerationStructureKHR',--- 'Vulkan.Core10.Handles.Device',--- 'Vulkan.Core10.Enums.QueryType.QueryType'-writeAccelerationStructuresPropertiesKHR :: forall io-                                          . (MonadIO io)-                                         => -- No documentation found for Nested "vkWriteAccelerationStructuresPropertiesKHR" "device"-                                            Device-                                         -> -- No documentation found for Nested "vkWriteAccelerationStructuresPropertiesKHR" "pAccelerationStructures"-                                            ("accelerationStructures" ::: Vector AccelerationStructureKHR)-                                         -> -- No documentation found for Nested "vkWriteAccelerationStructuresPropertiesKHR" "queryType"-                                            QueryType-                                         -> -- No documentation found for Nested "vkWriteAccelerationStructuresPropertiesKHR" "dataSize"-                                            ("dataSize" ::: Word64)-                                         -> -- No documentation found for Nested "vkWriteAccelerationStructuresPropertiesKHR" "pData"-                                            ("data" ::: Ptr ())-                                         -> -- No documentation found for Nested "vkWriteAccelerationStructuresPropertiesKHR" "stride"-                                            ("stride" ::: Word64)-                                         -> io ()-writeAccelerationStructuresPropertiesKHR device accelerationStructures queryType dataSize data' stride = liftIO . evalContT $ do-  let vkWriteAccelerationStructuresPropertiesKHRPtr = pVkWriteAccelerationStructuresPropertiesKHR (deviceCmds (device :: Device))-  lift $ unless (vkWriteAccelerationStructuresPropertiesKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkWriteAccelerationStructuresPropertiesKHR is null" Nothing Nothing-  let vkWriteAccelerationStructuresPropertiesKHR' = mkVkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHRPtr-  pPAccelerationStructures <- ContT $ allocaBytesAligned @AccelerationStructureKHR ((Data.Vector.length (accelerationStructures)) * 8) 8-  lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (accelerationStructures)-  r <- lift $ vkWriteAccelerationStructuresPropertiesKHR' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32)) (pPAccelerationStructures) (queryType) (CSize (dataSize)) (data') (CSize (stride))-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdTraceRaysKHR-  :: FunPtr (Ptr CommandBuffer_T -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Word32 -> Word32 -> Word32 -> IO ()---- | vkCmdTraceRaysKHR - Initialize a ray tracing dispatch------ = Description------ When the command is executed, a ray generation group of @width@ ×--- @height@ × @depth@ rays is assembled.------ == Valid Usage------ -   #VUID-vkCmdTraceRaysKHR-magFilter-04553# If a---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and---     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is---     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of---     this command, then the image view’s---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>---     /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'------ -   #VUID-vkCmdTraceRaysKHR-None-02691# If a---     'Vulkan.Core10.Handles.ImageView' is accessed using atomic---     operations as a result of this command, then the image view’s---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>---     /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'------ -   #VUID-vkCmdTraceRaysKHR-None-02692# If a---     'Vulkan.Core10.Handles.ImageView' is sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result---     of this command, then the image view’s---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>---     /must/ contain---     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'------ -   #VUID-vkCmdTraceRaysKHR-filterCubic-02694# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result---     of this command /must/ have a---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that---     supports cubic filtering, as specified by---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@---     returned by---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'------ -   #VUID-vkCmdTraceRaysKHR-filterCubicMinmax-02695# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a---     reduction mode of either---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'---     or---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'---     as a result of this command /must/ have a---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that---     supports cubic filtering together with minmax filtering, as---     specified by---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@---     returned by---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'------ -   #VUID-vkCmdTraceRaysKHR-flags-02696# Any---     'Vulkan.Core10.Handles.Image' created with a---     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'---     sampled as a result of this command /must/ only be sampled using a---     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of---     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'------ -   #VUID-vkCmdTraceRaysKHR-None-02697# For each set /n/ that is---     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the---     pipeline bind point used by this command, a descriptor set /must/---     have been bound to /n/ at the same pipeline bind point, with a---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set---     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to create---     the current 'Vulkan.Core10.Handles.Pipeline', as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>------ -   #VUID-vkCmdTraceRaysKHR-None-02698# For each push constant that is---     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the---     pipeline bind point used by this command, a push constant value---     /must/ have been set for the same pipeline bind point, with a---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push---     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to---     create the current 'Vulkan.Core10.Handles.Pipeline', as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>------ -   #VUID-vkCmdTraceRaysKHR-None-02699# Descriptors in each bound---     descriptor set, specified via---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/---     be valid if they are statically used by the---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point---     used by this command------ -   #VUID-vkCmdTraceRaysKHR-None-02700# A valid pipeline /must/ be bound---     to the pipeline bind point used by this command------ -   #VUID-vkCmdTraceRaysKHR-commandBuffer-02701# If the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command requires any dynamic state, that state---     /must/ have been set for @commandBuffer@, and done so after any---     previously bound pipeline with the corresponding state not specified---     as dynamic------ -   #VUID-vkCmdTraceRaysKHR-None-02859# There /must/ not have been any---     calls to dynamic state setting commands for any state not specified---     as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object bound to---     the pipeline bind point used by this command, since that pipeline---     was bound------ -   #VUID-vkCmdTraceRaysKHR-None-02702# If the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command accesses a---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized---     coordinates, that sampler /must/ not be used to sample from any---     'Vulkan.Core10.Handles.Image' with a---     'Vulkan.Core10.Handles.ImageView' of the type---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in---     any shader stage------ -   #VUID-vkCmdTraceRaysKHR-None-02703# If the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command accesses a---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized---     coordinates, that sampler /must/ not be used with any of the SPIR-V---     @OpImageSample*@ or @OpImageSparseSample*@ instructions with---     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ -   #VUID-vkCmdTraceRaysKHR-None-02704# If the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command accesses a---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized---     coordinates, that sampler /must/ not be used with any of the SPIR-V---     @OpImageSample*@ or @OpImageSparseSample*@ instructions that---     includes a LOD bias or any offset values, in any shader stage------ -   #VUID-vkCmdTraceRaysKHR-None-02705# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a uniform buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdTraceRaysKHR-None-02706# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a storage buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdTraceRaysKHR-commandBuffer-02707# If @commandBuffer@ is---     an unprotected command buffer, any resource accessed by the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command /must/ not be a protected resource------ -   #VUID-vkCmdTraceRaysKHR-None-04115# If a---     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@---     as a result of this command, then the @Type@ of the @Texel@ operand---     of that instruction /must/ have at least as many components as the---     image view’s format.------ -   #VUID-vkCmdTraceRaysKHR-OpImageWrite-04469# If a---     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@---     as a result of this command, then the @Type@ of the @Texel@ operand---     of that instruction /must/ have at least as many components as the---     image view’s format.------ -   #VUID-vkCmdTraceRaysKHR-SampledType-04470# If a---     'Vulkan.Core10.Handles.ImageView' with a---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width---     is accessed as a result of this command, the @SampledType@ of the---     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of---     64.------ -   #VUID-vkCmdTraceRaysKHR-SampledType-04471# If a---     'Vulkan.Core10.Handles.ImageView' with a---     'Vulkan.Core10.Enums.Format.Format' that has a channel width less---     than 64-bit is accessed as a result of this command, the---     @SampledType@ of the @OpTypeImage@ operand of that instruction---     /must/ have a @Width@ of 32.------ -   #VUID-vkCmdTraceRaysKHR-SampledType-04472# If a---     'Vulkan.Core10.Handles.BufferView' with a---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width---     is accessed as a result of this command, the @SampledType@ of the---     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of---     64.------ -   #VUID-vkCmdTraceRaysKHR-SampledType-04473# If a---     'Vulkan.Core10.Handles.BufferView' with a---     'Vulkan.Core10.Enums.Format.Format' that has a channel width less---     than 64-bit is accessed as a result of this command, the---     @SampledType@ of the @OpTypeImage@ operand of that instruction---     /must/ have a @Width@ of 32.------ -   #VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04474# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>---     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects---     created with the---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'---     flag /must/ not be accessed by atomic instructions through an---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this---     command.------ -   #VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04475# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>---     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects---     created with the---     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'---     flag /must/ not be accessed by atomic instructions through an---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this---     command.------ -   #VUID-vkCmdTraceRaysKHR-None-03429# Any shader group handle---     referenced by this call /must/ have been queried from the currently---     bound ray tracing shader pipeline------ -   #VUID-vkCmdTraceRaysKHR-maxRecursionDepth-03430# This command /must/---     not cause a shader call instruction to be executed from a shader---     invocation with a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth recursion depth>---     greater than the value of @maxRecursionDepth@ used to create the---     bound ray tracing pipeline------ -   #VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-04019# If---     @pRayGenShaderBindingTable->buffer@ is non-sparse then it /must/ be---     bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdTraceRaysKHR-offset-04020# The @offset@ member of---     @pRayGenShaderBindingTable@ /must/ be less than the size of the---     @pRayGenShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-04021#---     @pRayGenShaderBindingTable->offset@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@------ -   #VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-04022#---     @pRayGenShaderBindingTable->offset@ +---     @pRayGenShaderBindingTable->size@ /must/ be less than or equal to---     the size of @pRayGenShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysKHR-size-04023# The @size@ member of---     @pRayGenShaderBindingTable@ /must/ be equal to its @stride@ member------ -   #VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-04024# If---     @pMissShaderBindingTable->buffer@ is non-sparse then it /must/ be---     bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdTraceRaysKHR-offset-04025# The @offset@ member of---     @pMissShaderBindingTable@ /must/ be less than the size of---     @pMissShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysKHR-offset-04026# The @offset@ member of---     @pMissShaderBindingTable@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@------ -   #VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-04027#---     @pMissShaderBindingTable->offset@ + @pMissShaderBindingTable->size@---     /must/ be less than or equal to the size of---     @pMissShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysKHR-stride-04028# The @stride@ member of---     @pMissShaderBindingTable@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@------ -   #VUID-vkCmdTraceRaysKHR-stride-04029# The @stride@ member of---     @pMissShaderBindingTable@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesKHR'::@maxShaderGroupStride@------ -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04030# If---     @pHitShaderBindingTable->buffer@ is non-sparse then it /must/ be---     bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdTraceRaysKHR-offset-04031# The @offset@ member of---     @pHitShaderBindingTable@ /must/ be less than the size of---     @pHitShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysKHR-offset-04032# The @offset@ member of---     @pHitShaderBindingTable@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@------ -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04033#---     @pHitShaderBindingTable->offset@ + @pHitShaderBindingTable->size@---     /must/ be less than or equal to the size of---     @pHitShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysKHR-stride-04034# The @stride@ member of---     @pHitShaderBindingTable@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@------ -   #VUID-vkCmdTraceRaysKHR-stride-04035# The @stride@ member of---     @pHitShaderBindingTable@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesKHR'::@maxShaderGroupStride@------ -   #VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-04036# If---     @pCallableShaderBindingTable->buffer@ is non-sparse then it /must/---     be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdTraceRaysKHR-offset-04037# The @offset@ member of---     @pCallableShaderBindingTable@ /must/ be less than the size of---     @pCallableShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysKHR-offset-04038# The @offset@ member of---     @pCallableShaderBindingTable@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@------ -   #VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-04039#---     @pCallableShaderBindingTable->offset@ +---     @pCallableShaderBindingTable->size@ /must/ be less than or equal to---     the size of @pCallableShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysKHR-stride-04040# The @stride@ member of---     @pCallableShaderBindingTable@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@------ -   #VUID-vkCmdTraceRaysKHR-stride-04041# The @stride@ member of---     @pCallableShaderBindingTable@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesKHR'::@maxShaderGroupStride@------ -   #VUID-vkCmdTraceRaysKHR-flags-03508# If the currently bound ray---     tracing pipeline was created with @flags@ that included---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',---     the @buffer@ member of @pHitShaderBindingTable@ /must/ not be---     'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-vkCmdTraceRaysKHR-flags-03509# If the currently bound ray---     tracing pipeline was created with @flags@ that included---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',---     the @buffer@ member of @pHitShaderBindingTable@ /must/ not be---     'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-vkCmdTraceRaysKHR-flags-03510# If the currently bound ray---     tracing pipeline was created with @flags@ that included---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',---     the @buffer@ member of @pHitShaderBindingTable@ /must/ not be---     'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-vkCmdTraceRaysKHR-flags-03511# If the currently bound ray---     tracing pipeline was created with @flags@ that included---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',---     the shader group handle identified by @pMissShaderBindingTable@---     /must/ contain a valid miss shader------ -   #VUID-vkCmdTraceRaysKHR-flags-03512# If the currently bound ray---     tracing pipeline was created with @flags@ that included---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',---     entries in @pHitShaderBindingTable@ accessed as a result of this---     command in order to execute an any hit shader /must/ not be set to---     zero------ -   #VUID-vkCmdTraceRaysKHR-flags-03513# If the currently bound ray---     tracing pipeline was created with @flags@ that included---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',---     entries in @pHitShaderBindingTable@ accessed as a result of this---     command in order to execute a closest hit shader /must/ not be set---     to zero------ -   #VUID-vkCmdTraceRaysKHR-flags-03514# If the currently bound ray---     tracing pipeline was created with @flags@ that included---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',---     entries in @pHitShaderBindingTable@ accessed as a result of this---     command in order to execute an intersection shader /must/ not be set---     to zero------ -   #VUID-vkCmdTraceRaysKHR-commandBuffer-02712# If @commandBuffer@ is a---     protected command buffer, any resource written to by the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command /must/ not be an unprotected resource------ -   #VUID-vkCmdTraceRaysKHR-commandBuffer-02713# If @commandBuffer@ is a---     protected command buffer, pipeline stages other than the---     framebuffer-space and compute stages in the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point /must/ not write to any resource------ -   #VUID-vkCmdTraceRaysKHR-width-03505# @width@ /must/ be less than or---     equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]------ -   #VUID-vkCmdTraceRaysKHR-height-03506# @height@ /must/ be less than---     or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]------ -   #VUID-vkCmdTraceRaysKHR-depth-03507# @depth@ /must/ be less than or---     equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]------ == Valid Usage (Implicit)------ -   #VUID-vkCmdTraceRaysKHR-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdTraceRaysKHR-pRaygenShaderBindingTable-parameter#---     @pRaygenShaderBindingTable@ /must/ be a valid pointer to a valid---     'StridedBufferRegionKHR' structure------ -   #VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-parameter#---     @pMissShaderBindingTable@ /must/ be a valid pointer to a valid---     'StridedBufferRegionKHR' structure------ -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-parameter#---     @pHitShaderBindingTable@ /must/ be a valid pointer to a valid---     'StridedBufferRegionKHR' structure------ -   #VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-parameter#---     @pCallableShaderBindingTable@ /must/ be a valid pointer to a valid---     'StridedBufferRegionKHR' structure------ -   #VUID-vkCmdTraceRaysKHR-commandBuffer-recording# @commandBuffer@---     /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   #VUID-vkCmdTraceRaysKHR-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support compute operations------ -   #VUID-vkCmdTraceRaysKHR-renderpass# This command /must/ only be---     called outside of a render pass instance------ == Host Synchronization------ -   Host access to @commandBuffer@ /must/ be externally synchronized------ -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Vulkan.Core10.Handles.CommandBuffer', 'StridedBufferRegionKHR'-cmdTraceRaysKHR :: forall io-                 . (MonadIO io)-                => -- | @commandBuffer@ is the command buffer into which the command will be-                   -- recorded.-                   CommandBuffer-                -> -- | @pRaygenShaderBindingTable@ is a 'StridedBufferRegionKHR' that holds the-                   -- shader binding table data for the ray generation shader stage.-                   ("raygenShaderBindingTable" ::: StridedBufferRegionKHR)-                -> -- | @pMissShaderBindingTable@ is a 'StridedBufferRegionKHR' that holds the-                   -- shader binding table data for the miss shader stage.-                   ("missShaderBindingTable" ::: StridedBufferRegionKHR)-                -> -- | @pHitShaderBindingTable@ is a 'StridedBufferRegionKHR' that holds the-                   -- shader binding table data for the hit shader stage.-                   ("hitShaderBindingTable" ::: StridedBufferRegionKHR)-                -> -- | @pCallableShaderBindingTable@ is a 'StridedBufferRegionKHR' that holds-                   -- the shader binding table data for the callable shader stage.-                   ("callableShaderBindingTable" ::: StridedBufferRegionKHR)-                -> -- | @width@ is the width of the ray trace query dimensions.-                   ("width" ::: Word32)-                -> -- | @height@ is height of the ray trace query dimensions.-                   ("height" ::: Word32)-                -> -- | @depth@ is depth of the ray trace query dimensions.-                   ("depth" ::: Word32)-                -> io ()-cmdTraceRaysKHR commandBuffer raygenShaderBindingTable missShaderBindingTable hitShaderBindingTable callableShaderBindingTable width height depth = liftIO . evalContT $ do-  let vkCmdTraceRaysKHRPtr = pVkCmdTraceRaysKHR (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdTraceRaysKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdTraceRaysKHR is null" Nothing Nothing-  let vkCmdTraceRaysKHR' = mkVkCmdTraceRaysKHR vkCmdTraceRaysKHRPtr-  pRaygenShaderBindingTable <- ContT $ withCStruct (raygenShaderBindingTable)-  pMissShaderBindingTable <- ContT $ withCStruct (missShaderBindingTable)-  pHitShaderBindingTable <- ContT $ withCStruct (hitShaderBindingTable)-  pCallableShaderBindingTable <- ContT $ withCStruct (callableShaderBindingTable)-  lift $ vkCmdTraceRaysKHR' (commandBufferHandle (commandBuffer)) pRaygenShaderBindingTable pMissShaderBindingTable pHitShaderBindingTable pCallableShaderBindingTable (width) (height) (depth)-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkGetRayTracingShaderGroupHandlesKHR-  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result---- | vkGetRayTracingShaderGroupHandlesKHR - Query ray tracing pipeline shader--- group handles------ == Valid Usage------ -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-04050#---     @firstGroup@ /must/ be less than the number of shader groups in---     @pipeline@------ -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-02419# The sum---     of @firstGroup@ and @groupCount@ /must/ be less than or equal to the---     number of shader groups in @pipeline@------ -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-02420#---     @dataSize@ /must/ be at least---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@ ×---     @groupCount@------ -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-03482#---     @pipeline@ /must/ have not been created with---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'------ == Valid Usage (Implicit)------ -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-device-parameter#---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parameter#---     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle------ -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pData-parameter# @pData@---     /must/ be a valid pointer to an array of @dataSize@ bytes------ -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-arraylength#---     @dataSize@ /must/ be greater than @0@------ -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parent#---     @pipeline@ /must/ have been created, allocated, or retrieved from---     @device@------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'-getRayTracingShaderGroupHandlesKHR :: forall io-                                    . (MonadIO io)-                                   => -- | @device@ is the logical device containing the ray tracing pipeline.-                                      Device-                                   -> -- | @pipeline@ is the ray tracing pipeline object containing the shaders.-                                      Pipeline-                                   -> -- | @firstGroup@ is the index of the first group to retrieve a handle for-                                      -- from the 'RayTracingPipelineCreateInfoKHR'::@pGroups@ or-                                      -- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@pGroups@-                                      -- array.-                                      ("firstGroup" ::: Word32)-                                   -> -- | @groupCount@ is the number of shader handles to retrieve.-                                      ("groupCount" ::: Word32)-                                   -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.-                                      ("dataSize" ::: Word64)-                                   -> -- | @pData@ is a pointer to a user-allocated buffer where the results will-                                      -- be written.-                                      ("data" ::: Ptr ())-                                   -> io ()-getRayTracingShaderGroupHandlesKHR device pipeline firstGroup groupCount dataSize data' = liftIO $ do-  let vkGetRayTracingShaderGroupHandlesKHRPtr = pVkGetRayTracingShaderGroupHandlesKHR (deviceCmds (device :: Device))-  unless (vkGetRayTracingShaderGroupHandlesKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetRayTracingShaderGroupHandlesKHR is null" Nothing Nothing-  let vkGetRayTracingShaderGroupHandlesKHR' = mkVkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHRPtr-  r <- vkGetRayTracingShaderGroupHandlesKHR' (deviceHandle (device)) (pipeline) (firstGroup) (groupCount) (CSize (dataSize)) (data')-  when (r < SUCCESS) (throwIO (VulkanException r))---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkGetRayTracingCaptureReplayShaderGroupHandlesKHR-  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result---- | vkGetRayTracingCaptureReplayShaderGroupHandlesKHR - Query ray tracing--- capture replay pipeline shader group handles------ == Valid Usage------ -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-04051#---     @firstGroup@ /must/ be less than the number of shader groups in---     @pipeline@------ -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-03483#---     The sum of @firstGroup@ and @groupCount@ /must/ be less than or---     equal to the number of shader groups in @pipeline@------ -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-03484#---     @dataSize@ /must/ be at least---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleCaptureReplaySize@---     × @groupCount@------ -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-rayTracingShaderGroupHandleCaptureReplay-03485#---     'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingShaderGroupHandleCaptureReplay@---     /must/ be enabled to call this function------ == Valid Usage (Implicit)------ -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-device-parameter#---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parameter#---     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle------ -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pData-parameter#---     @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes------ -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-arraylength#---     @dataSize@ /must/ be greater than @0@------ -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parent#---     @pipeline@ /must/ have been created, allocated, or retrieved from---     @device@------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'-getRayTracingCaptureReplayShaderGroupHandlesKHR :: forall io-                                                 . (MonadIO io)-                                                => -- | @device@ is the logical device containing the ray tracing pipeline.-                                                   Device-                                                -> -- | @pipeline@ is the ray tracing pipeline object containing the shaders.-                                                   Pipeline-                                                -> -- | @firstGroup@ is the index of the first group to retrieve a handle for-                                                   -- from the 'RayTracingPipelineCreateInfoKHR'::@pGroups@ array.-                                                   ("firstGroup" ::: Word32)-                                                -> -- | @groupCount@ is the number of shader handles to retrieve.-                                                   ("groupCount" ::: Word32)-                                                -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.-                                                   ("dataSize" ::: Word64)-                                                -> -- | @pData@ is a pointer to a user-allocated buffer where the results will-                                                   -- be written.-                                                   ("data" ::: Ptr ())-                                                -> io ()-getRayTracingCaptureReplayShaderGroupHandlesKHR device pipeline firstGroup groupCount dataSize data' = liftIO $ do-  let vkGetRayTracingCaptureReplayShaderGroupHandlesKHRPtr = pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR (deviceCmds (device :: Device))-  unless (vkGetRayTracingCaptureReplayShaderGroupHandlesKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetRayTracingCaptureReplayShaderGroupHandlesKHR is null" Nothing Nothing-  let vkGetRayTracingCaptureReplayShaderGroupHandlesKHR' = mkVkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHRPtr-  r <- vkGetRayTracingCaptureReplayShaderGroupHandlesKHR' (deviceHandle (device)) (pipeline) (firstGroup) (groupCount) (CSize (dataSize)) (data')-  when (r < SUCCESS) (throwIO (VulkanException r))---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCreateRayTracingPipelinesKHR-  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result---- | vkCreateRayTracingPipelinesKHR - Creates a new ray tracing pipeline--- object------ = Description------ The 'Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS'--- error is returned if the implementation is unable to re-use the shader--- group handles provided in--- 'RayTracingShaderGroupCreateInfoKHR'::@pShaderGroupCaptureReplayHandle@--- when--- 'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingShaderGroupHandleCaptureReplay@--- is enabled.------ == Valid Usage------ -   #VUID-vkCreateRayTracingPipelinesKHR-flags-03415# If the @flags@---     member of any element of @pCreateInfos@ contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and the @basePipelineIndex@ member of that same element is not---     @-1@, @basePipelineIndex@ /must/ be less than the index into---     @pCreateInfos@ that corresponds to that element------ -   #VUID-vkCreateRayTracingPipelinesKHR-flags-03416# If the @flags@---     member of any element of @pCreateInfos@ contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, the base pipeline /must/ have been created with the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'---     flag set------ -   #VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903# If---     @pipelineCache@ was created with---     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT',---     host access to @pipelineCache@ /must/ be---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>------ -   #VUID-vkCreateRayTracingPipelinesKHR-rayTracing-03455# The---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing rayTracing>---     feature /must/ be enabled------ == Valid Usage (Implicit)------ -   #VUID-vkCreateRayTracingPipelinesKHR-device-parameter# @device@---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parameter# If---     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',---     @pipelineCache@ /must/ be a valid---     'Vulkan.Core10.Handles.PipelineCache' handle------ -   #VUID-vkCreateRayTracingPipelinesKHR-pCreateInfos-parameter#---     @pCreateInfos@ /must/ be a valid pointer to an array of---     @createInfoCount@ valid 'RayTracingPipelineCreateInfoKHR' structures------ -   #VUID-vkCreateRayTracingPipelinesKHR-pAllocator-parameter# If---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     structure------ -   #VUID-vkCreateRayTracingPipelinesKHR-pPipelines-parameter#---     @pPipelines@ /must/ be a valid pointer to an array of---     @createInfoCount@ 'Vulkan.Core10.Handles.Pipeline' handles------ -   #VUID-vkCreateRayTracingPipelinesKHR-createInfoCount-arraylength#---     @createInfoCount@ /must/ be greater than @0@------ -   #VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parent# If---     @pipelineCache@ is a valid handle, it /must/ have been created,---     allocated, or retrieved from @device@------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'------     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'------     -   'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS'------ = See Also------ 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline',--- 'Vulkan.Core10.Handles.PipelineCache', 'RayTracingPipelineCreateInfoKHR'-createRayTracingPipelinesKHR :: forall io-                              . (MonadIO io)-                             => -- | @device@ is the logical device that creates the ray tracing pipelines.-                                Device-                             -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',-                                -- indicating that pipeline caching is disabled, or the handle of a valid-                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache pipeline cache>-                                -- object, in which case use of that cache is enabled for the duration of-                                -- the command.-                                PipelineCache-                             -> -- | @pCreateInfos@ is a pointer to an array of-                                -- 'RayTracingPipelineCreateInfoKHR' structures.-                                ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoKHR))-                             -> -- | @pAllocator@ controls host memory allocation as described in the-                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>-                                -- chapter.-                                ("allocator" ::: Maybe AllocationCallbacks)-                             -> io (Result, ("pipelines" ::: Vector Pipeline))-createRayTracingPipelinesKHR device pipelineCache createInfos allocator = liftIO . evalContT $ do-  let vkCreateRayTracingPipelinesKHRPtr = pVkCreateRayTracingPipelinesKHR (deviceCmds (device :: Device))-  lift $ unless (vkCreateRayTracingPipelinesKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateRayTracingPipelinesKHR is null" Nothing Nothing-  let vkCreateRayTracingPipelinesKHR' = mkVkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHRPtr-  pPCreateInfos <- ContT $ allocaBytesAligned @(RayTracingPipelineCreateInfoKHR _) ((Data.Vector.length (createInfos)) * 120) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (120 * (i)) :: Ptr (RayTracingPipelineCreateInfoKHR _))) (e) . ($ ())) (createInfos)-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free-  r <- lift $ vkCreateRayTracingPipelinesKHR' (deviceHandle (device)) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (forgetExtensions (pPCreateInfos)) pAllocator (pPPipelines)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))-  pure $ (r, pPipelines)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdTraceRaysIndirectKHR-  :: FunPtr (Ptr CommandBuffer_T -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Buffer -> DeviceSize -> IO ()---- | vkCmdTraceRaysIndirectKHR - Initialize an indirect ray tracing dispatch------ = Description------ 'cmdTraceRaysIndirectKHR' behaves similarly to 'cmdTraceRaysKHR' except--- that the ray trace query dimensions are read by the device from @buffer@--- during execution. The parameters of trace ray are encoded in the--- 'TraceRaysIndirectCommandKHR' structure located at @offset@ bytes in--- @buffer@.------ == Valid Usage------ -   #VUID-vkCmdTraceRaysIndirectKHR-magFilter-04553# If a---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and---     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is---     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of---     this command, then the image view’s---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>---     /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'------ -   #VUID-vkCmdTraceRaysIndirectKHR-None-02691# If a---     'Vulkan.Core10.Handles.ImageView' is accessed using atomic---     operations as a result of this command, then the image view’s---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>---     /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'------ -   #VUID-vkCmdTraceRaysIndirectKHR-None-02692# If a---     'Vulkan.Core10.Handles.ImageView' is sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result---     of this command, then the image view’s---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>---     /must/ contain---     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'------ -   #VUID-vkCmdTraceRaysIndirectKHR-filterCubic-02694# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result---     of this command /must/ have a---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that---     supports cubic filtering, as specified by---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@---     returned by---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'------ -   #VUID-vkCmdTraceRaysIndirectKHR-filterCubicMinmax-02695# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a---     reduction mode of either---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'---     or---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'---     as a result of this command /must/ have a---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that---     supports cubic filtering together with minmax filtering, as---     specified by---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@---     returned by---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'------ -   #VUID-vkCmdTraceRaysIndirectKHR-flags-02696# Any---     'Vulkan.Core10.Handles.Image' created with a---     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'---     sampled as a result of this command /must/ only be sampled using a---     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of---     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'------ -   #VUID-vkCmdTraceRaysIndirectKHR-None-02697# For each set /n/ that is---     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the---     pipeline bind point used by this command, a descriptor set /must/---     have been bound to /n/ at the same pipeline bind point, with a---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set---     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to create---     the current 'Vulkan.Core10.Handles.Pipeline', as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>------ -   #VUID-vkCmdTraceRaysIndirectKHR-None-02698# For each push constant---     that is statically used by the 'Vulkan.Core10.Handles.Pipeline'---     bound to the pipeline bind point used by this command, a push---     constant value /must/ have been set for the same pipeline bind---     point, with a 'Vulkan.Core10.Handles.PipelineLayout' that is---     compatible for push constants, with the---     'Vulkan.Core10.Handles.PipelineLayout' used to create the current---     'Vulkan.Core10.Handles.Pipeline', as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>------ -   #VUID-vkCmdTraceRaysIndirectKHR-None-02699# Descriptors in each---     bound descriptor set, specified via---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/---     be valid if they are statically used by the---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point---     used by this command------ -   #VUID-vkCmdTraceRaysIndirectKHR-None-02700# A valid pipeline /must/---     be bound to the pipeline bind point used by this command------ -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02701# If the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command requires any dynamic state, that state---     /must/ have been set for @commandBuffer@, and done so after any---     previously bound pipeline with the corresponding state not specified---     as dynamic------ -   #VUID-vkCmdTraceRaysIndirectKHR-None-02859# There /must/ not have---     been any calls to dynamic state setting commands for any state not---     specified as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object---     bound to the pipeline bind point used by this command, since that---     pipeline was bound------ -   #VUID-vkCmdTraceRaysIndirectKHR-None-02702# If the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command accesses a---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized---     coordinates, that sampler /must/ not be used to sample from any---     'Vulkan.Core10.Handles.Image' with a---     'Vulkan.Core10.Handles.ImageView' of the type---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in---     any shader stage------ -   #VUID-vkCmdTraceRaysIndirectKHR-None-02703# If the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command accesses a---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized---     coordinates, that sampler /must/ not be used with any of the SPIR-V---     @OpImageSample*@ or @OpImageSparseSample*@ instructions with---     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ -   #VUID-vkCmdTraceRaysIndirectKHR-None-02704# If the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command accesses a---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized---     coordinates, that sampler /must/ not be used with any of the SPIR-V---     @OpImageSample*@ or @OpImageSparseSample*@ instructions that---     includes a LOD bias or any offset values, in any shader stage------ -   #VUID-vkCmdTraceRaysIndirectKHR-None-02705# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a uniform buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdTraceRaysIndirectKHR-None-02706# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a storage buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02707# If---     @commandBuffer@ is an unprotected command buffer, any resource---     accessed by the 'Vulkan.Core10.Handles.Pipeline' object bound to the---     pipeline bind point used by this command /must/ not be a protected---     resource------ -   #VUID-vkCmdTraceRaysIndirectKHR-None-04115# If a---     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@---     as a result of this command, then the @Type@ of the @Texel@ operand---     of that instruction /must/ have at least as many components as the---     image view’s format.------ -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageWrite-04469# If a---     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@---     as a result of this command, then the @Type@ of the @Texel@ operand---     of that instruction /must/ have at least as many components as the---     image view’s format.------ -   #VUID-vkCmdTraceRaysIndirectKHR-SampledType-04470# If a---     'Vulkan.Core10.Handles.ImageView' with a---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width---     is accessed as a result of this command, the @SampledType@ of the---     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of---     64.------ -   #VUID-vkCmdTraceRaysIndirectKHR-SampledType-04471# If a---     'Vulkan.Core10.Handles.ImageView' with a---     'Vulkan.Core10.Enums.Format.Format' that has a channel width less---     than 64-bit is accessed as a result of this command, the---     @SampledType@ of the @OpTypeImage@ operand of that instruction---     /must/ have a @Width@ of 32.------ -   #VUID-vkCmdTraceRaysIndirectKHR-SampledType-04472# If a---     'Vulkan.Core10.Handles.BufferView' with a---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width---     is accessed as a result of this command, the @SampledType@ of the---     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of---     64.------ -   #VUID-vkCmdTraceRaysIndirectKHR-SampledType-04473# If a---     'Vulkan.Core10.Handles.BufferView' with a---     'Vulkan.Core10.Enums.Format.Format' that has a channel width less---     than 64-bit is accessed as a result of this command, the---     @SampledType@ of the @OpTypeImage@ operand of that instruction---     /must/ have a @Width@ of 32.------ -   #VUID-vkCmdTraceRaysIndirectKHR-sparseImageInt64Atomics-04474# If---     the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>---     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects---     created with the---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'---     flag /must/ not be accessed by atomic instructions through an---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this---     command.------ -   #VUID-vkCmdTraceRaysIndirectKHR-sparseImageInt64Atomics-04475# If---     the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>---     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects---     created with the---     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'---     flag /must/ not be accessed by atomic instructions through an---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this---     command.------ -   #VUID-vkCmdTraceRaysIndirectKHR-None-03429# Any shader group handle---     referenced by this call /must/ have been queried from the currently---     bound ray tracing shader pipeline------ -   #VUID-vkCmdTraceRaysIndirectKHR-maxRecursionDepth-03430# This---     command /must/ not cause a shader call instruction to be executed---     from a shader invocation with a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth recursion depth>---     greater than the value of @maxRecursionDepth@ used to create the---     bound ray tracing pipeline------ -   #VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-04019# If---     @pRayGenShaderBindingTable->buffer@ is non-sparse then it /must/ be---     bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdTraceRaysIndirectKHR-offset-04020# The @offset@ member of---     @pRayGenShaderBindingTable@ /must/ be less than the size of the---     @pRayGenShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-04021#---     @pRayGenShaderBindingTable->offset@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@------ -   #VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-04022#---     @pRayGenShaderBindingTable->offset@ +---     @pRayGenShaderBindingTable->size@ /must/ be less than or equal to---     the size of @pRayGenShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysIndirectKHR-size-04023# The @size@ member of---     @pRayGenShaderBindingTable@ /must/ be equal to its @stride@ member------ -   #VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-04024# If---     @pMissShaderBindingTable->buffer@ is non-sparse then it /must/ be---     bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdTraceRaysIndirectKHR-offset-04025# The @offset@ member of---     @pMissShaderBindingTable@ /must/ be less than the size of---     @pMissShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysIndirectKHR-offset-04026# The @offset@ member of---     @pMissShaderBindingTable@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@------ -   #VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-04027#---     @pMissShaderBindingTable->offset@ + @pMissShaderBindingTable->size@---     /must/ be less than or equal to the size of---     @pMissShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysIndirectKHR-stride-04028# The @stride@ member of---     @pMissShaderBindingTable@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@------ -   #VUID-vkCmdTraceRaysIndirectKHR-stride-04029# The @stride@ member of---     @pMissShaderBindingTable@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesKHR'::@maxShaderGroupStride@------ -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04030# If---     @pHitShaderBindingTable->buffer@ is non-sparse then it /must/ be---     bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdTraceRaysIndirectKHR-offset-04031# The @offset@ member of---     @pHitShaderBindingTable@ /must/ be less than the size of---     @pHitShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysIndirectKHR-offset-04032# The @offset@ member of---     @pHitShaderBindingTable@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@------ -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04033#---     @pHitShaderBindingTable->offset@ + @pHitShaderBindingTable->size@---     /must/ be less than or equal to the size of---     @pHitShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysIndirectKHR-stride-04034# The @stride@ member of---     @pHitShaderBindingTable@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@------ -   #VUID-vkCmdTraceRaysIndirectKHR-stride-04035# The @stride@ member of---     @pHitShaderBindingTable@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesKHR'::@maxShaderGroupStride@------ -   #VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-04036#---     If @pCallableShaderBindingTable->buffer@ is non-sparse then it---     /must/ be bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdTraceRaysIndirectKHR-offset-04037# The @offset@ member of---     @pCallableShaderBindingTable@ /must/ be less than the size of---     @pCallableShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysIndirectKHR-offset-04038# The @offset@ member of---     @pCallableShaderBindingTable@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@------ -   #VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-04039#---     @pCallableShaderBindingTable->offset@ +---     @pCallableShaderBindingTable->size@ /must/ be less than or equal to---     the size of @pCallableShaderBindingTable->buffer@------ -   #VUID-vkCmdTraceRaysIndirectKHR-stride-04040# The @stride@ member of---     @pCallableShaderBindingTable@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@------ -   #VUID-vkCmdTraceRaysIndirectKHR-stride-04041# The @stride@ member of---     @pCallableShaderBindingTable@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesKHR'::@maxShaderGroupStride@------ -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03508# If the currently bound---     ray tracing pipeline was created with @flags@ that included---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',---     the @buffer@ member of @pHitShaderBindingTable@ /must/ not be---     'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03509# If the currently bound---     ray tracing pipeline was created with @flags@ that included---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',---     the @buffer@ member of @pHitShaderBindingTable@ /must/ not be---     'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03510# If the currently bound---     ray tracing pipeline was created with @flags@ that included---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',---     the @buffer@ member of @pHitShaderBindingTable@ /must/ not be---     'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03511# If the currently bound---     ray tracing pipeline was created with @flags@ that included---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',---     the shader group handle identified by @pMissShaderBindingTable@---     /must/ contain a valid miss shader------ -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03512# If the currently bound---     ray tracing pipeline was created with @flags@ that included---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',---     entries in @pHitShaderBindingTable@ accessed as a result of this---     command in order to execute an any hit shader /must/ not be set to---     zero------ -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03513# If the currently bound---     ray tracing pipeline was created with @flags@ that included---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',---     entries in @pHitShaderBindingTable@ accessed as a result of this---     command in order to execute a closest hit shader /must/ not be set---     to zero------ -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03514# If the currently bound---     ray tracing pipeline was created with @flags@ that included---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',---     entries in @pHitShaderBindingTable@ accessed as a result of this---     command in order to execute an intersection shader /must/ not be set---     to zero------ -   #VUID-vkCmdTraceRaysIndirectKHR-buffer-02708# If @buffer@ is---     non-sparse then it /must/ be bound completely and contiguously to a---     single 'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdTraceRaysIndirectKHR-buffer-02709# @buffer@ /must/ have---     been created with the---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'---     bit set------ -   #VUID-vkCmdTraceRaysIndirectKHR-offset-02710# @offset@ /must/ be a---     multiple of @4@------ -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02711# @commandBuffer@---     /must/ not be a protected command buffer------ -   #VUID-vkCmdTraceRaysIndirectKHR-offset-03517# (@offset@ +---     @sizeof@('TraceRaysIndirectCommandKHR')) /must/ be less than or---     equal to the size of @buffer@------ -   #VUID-vkCmdTraceRaysIndirectKHR-rayTracingIndirectTraceRays-03518#---     the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-indirecttraceray ::rayTracingIndirectTraceRays>---     feature /must/ be enabled------ == Valid Usage (Implicit)------ -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdTraceRaysIndirectKHR-pRaygenShaderBindingTable-parameter#---     @pRaygenShaderBindingTable@ /must/ be a valid pointer to a valid---     'StridedBufferRegionKHR' structure------ -   #VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-parameter#---     @pMissShaderBindingTable@ /must/ be a valid pointer to a valid---     'StridedBufferRegionKHR' structure------ -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-parameter#---     @pHitShaderBindingTable@ /must/ be a valid pointer to a valid---     'StridedBufferRegionKHR' structure------ -   #VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-parameter#---     @pCallableShaderBindingTable@ /must/ be a valid pointer to a valid---     'StridedBufferRegionKHR' structure------ -   #VUID-vkCmdTraceRaysIndirectKHR-buffer-parameter# @buffer@ /must/ be---     a valid 'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-recording#---     @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support compute operations------ -   #VUID-vkCmdTraceRaysIndirectKHR-renderpass# This command /must/ only---     be called outside of a render pass instance------ -   #VUID-vkCmdTraceRaysIndirectKHR-commonparent# Both of @buffer@, and---     @commandBuffer@ /must/ have been created, allocated, or retrieved---     from the same 'Vulkan.Core10.Handles.Device'------ == Host Synchronization------ -   Host access to @commandBuffer@ /must/ be externally synchronized------ -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'StridedBufferRegionKHR'-cmdTraceRaysIndirectKHR :: forall io-                         . (MonadIO io)-                        => -- | @commandBuffer@ is the command buffer into which the command will be-                           -- recorded.-                           CommandBuffer-                        -> -- | @pRaygenShaderBindingTable@ is a 'StridedBufferRegionKHR' that holds the-                           -- shader binding table data for the ray generation shader stage.-                           ("raygenShaderBindingTable" ::: StridedBufferRegionKHR)-                        -> -- | @pMissShaderBindingTable@ is a 'StridedBufferRegionKHR' that holds the-                           -- shader binding table data for the miss shader stage.-                           ("missShaderBindingTable" ::: StridedBufferRegionKHR)-                        -> -- | @pHitShaderBindingTable@ is a 'StridedBufferRegionKHR' that holds the-                           -- shader binding table data for the hit shader stage.-                           ("hitShaderBindingTable" ::: StridedBufferRegionKHR)-                        -> -- | @pCallableShaderBindingTable@ is a 'StridedBufferRegionKHR' that holds-                           -- the shader binding table data for the callable shader stage.-                           ("callableShaderBindingTable" ::: StridedBufferRegionKHR)-                        -> -- | @buffer@ is the buffer containing the trace ray parameters.-                           Buffer-                        -> -- | @offset@ is the byte offset into @buffer@ where parameters begin.-                           ("offset" ::: DeviceSize)-                        -> io ()-cmdTraceRaysIndirectKHR commandBuffer raygenShaderBindingTable missShaderBindingTable hitShaderBindingTable callableShaderBindingTable buffer offset = liftIO . evalContT $ do-  let vkCmdTraceRaysIndirectKHRPtr = pVkCmdTraceRaysIndirectKHR (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdTraceRaysIndirectKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdTraceRaysIndirectKHR is null" Nothing Nothing-  let vkCmdTraceRaysIndirectKHR' = mkVkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHRPtr-  pRaygenShaderBindingTable <- ContT $ withCStruct (raygenShaderBindingTable)-  pMissShaderBindingTable <- ContT $ withCStruct (missShaderBindingTable)-  pHitShaderBindingTable <- ContT $ withCStruct (hitShaderBindingTable)-  pCallableShaderBindingTable <- ContT $ withCStruct (callableShaderBindingTable)-  lift $ vkCmdTraceRaysIndirectKHR' (commandBufferHandle (commandBuffer)) pRaygenShaderBindingTable pMissShaderBindingTable pHitShaderBindingTable pCallableShaderBindingTable (buffer) (offset)-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkGetDeviceAccelerationStructureCompatibilityKHR-  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureVersionKHR -> IO Result) -> Ptr Device_T -> Ptr AccelerationStructureVersionKHR -> IO Result---- | vkGetDeviceAccelerationStructureCompatibilityKHR - Check if a serialized--- acceleration structure is compatible with the current device------ = Description------ This possible return values for--- 'getDeviceAccelerationStructureCompatibilityKHR' are:------ -   'Vulkan.Core10.Enums.Result.SUCCESS' is returned if an acceleration---     structure serialized with @version@ as the version information is---     compatible with @device@.------ -   'Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_VERSION_KHR' is---     returned if an acceleration structure serialized with @version@ as---     the version information is not compatible with @device@.------ == Valid Usage------ -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-rayTracing-03565#---     The---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing rayTracing>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>---     feature /must/ be enabled------ == Valid Usage (Implicit)------ -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-device-parameter#---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-version-parameter#---     @version@ /must/ be a valid pointer to a valid---     'AccelerationStructureVersionKHR' structure------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_VERSION_KHR'------ = See Also------ 'AccelerationStructureVersionKHR', 'Vulkan.Core10.Handles.Device'-getDeviceAccelerationStructureCompatibilityKHR :: forall io-                                                . (MonadIO io)-                                               => -- | @device@ is the device to check the version against.-                                                  Device-                                               -> -- | @version@ points to the 'AccelerationStructureVersionKHR' version-                                                  -- information to check against the device.-                                                  AccelerationStructureVersionKHR-                                               -> io ()-getDeviceAccelerationStructureCompatibilityKHR device version = liftIO . evalContT $ do-  let vkGetDeviceAccelerationStructureCompatibilityKHRPtr = pVkGetDeviceAccelerationStructureCompatibilityKHR (deviceCmds (device :: Device))-  lift $ unless (vkGetDeviceAccelerationStructureCompatibilityKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceAccelerationStructureCompatibilityKHR is null" Nothing Nothing-  let vkGetDeviceAccelerationStructureCompatibilityKHR' = mkVkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHRPtr-  version' <- ContT $ withCStruct (version)-  r <- lift $ vkGetDeviceAccelerationStructureCompatibilityKHR' (deviceHandle (device)) version'-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCreateAccelerationStructureKHR-  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr AccelerationStructureKHR -> IO Result) -> Ptr Device_T -> Ptr AccelerationStructureCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr AccelerationStructureKHR -> IO Result---- | vkCreateAccelerationStructureKHR - Create a new acceleration structure--- object------ = Description------ Similar to other objects in Vulkan, the acceleration structure creation--- merely creates an object with a specific “shape”. The type and quantity--- of geometry that can be built into an acceleration structure is--- determined by the parameters of 'AccelerationStructureCreateInfoKHR'.------ Populating the data in the object after allocating and binding memory is--- done with commands such as 'cmdBuildAccelerationStructureKHR',--- 'buildAccelerationStructureKHR', 'cmdCopyAccelerationStructureKHR', and--- 'copyAccelerationStructureKHR'.------ The input buffers passed to acceleration structure build commands will--- be referenced by the implementation for the duration of the command.--- After the command completes, the acceleration structure /may/ hold a--- reference to any acceleration structure specified by an active instance--- contained therein. Apart from this referencing, acceleration structures--- /must/ be fully self-contained. The application /may/ re-use or free any--- memory which was used by the command as an input or as scratch without--- affecting the results of ray traversal.------ == Valid Usage------ -   #VUID-vkCreateAccelerationStructureKHR-rayTracing-03487# The---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing rayTracing>---     or---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>---     feature /must/ be enabled------ -   #VUID-vkCreateAccelerationStructureKHR-deviceAddress-03488# If---     'AccelerationStructureCreateInfoKHR'::@deviceAddress@ is not zero,---     the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-ascapturereplay rayTracingAccelerationStructureCaptureReplay>---     feature /must/ be enabled------ -   #VUID-vkCreateAccelerationStructureKHR-device-03489# If @device@ was---     created with multiple physical devices, then the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>---     feature /must/ be enabled------ == Valid Usage (Implicit)------ -   #VUID-vkCreateAccelerationStructureKHR-device-parameter# @device@---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkCreateAccelerationStructureKHR-pCreateInfo-parameter#---     @pCreateInfo@ /must/ be a valid pointer to a valid---     'AccelerationStructureCreateInfoKHR' structure------ -   #VUID-vkCreateAccelerationStructureKHR-pAllocator-parameter# If---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     structure------ -   #VUID-vkCreateAccelerationStructureKHR-pAccelerationStructure-parameter#---     @pAccelerationStructure@ /must/ be a valid pointer to a---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'------ = See Also------ 'AccelerationStructureCreateInfoKHR',--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Vulkan.Core10.Handles.Device'-createAccelerationStructureKHR :: forall io-                                . (MonadIO io)-                               => -- | @device@ is the logical device that creates the buffer object.-                                  Device-                               -> -- | @pCreateInfo@ is a pointer to a 'AccelerationStructureCreateInfoKHR'-                                  -- structure containing parameters affecting creation of the acceleration-                                  -- structure.-                                  AccelerationStructureCreateInfoKHR-                               -> -- | @pAllocator@ controls host memory allocation as described in the-                                  -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>-                                  -- chapter.-                                  ("allocator" ::: Maybe AllocationCallbacks)-                               -> io (AccelerationStructureKHR)-createAccelerationStructureKHR device createInfo allocator = liftIO . evalContT $ do-  let vkCreateAccelerationStructureKHRPtr = pVkCreateAccelerationStructureKHR (deviceCmds (device :: Device))-  lift $ unless (vkCreateAccelerationStructureKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateAccelerationStructureKHR is null" Nothing Nothing-  let vkCreateAccelerationStructureKHR' = mkVkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHRPtr-  pCreateInfo <- ContT $ withCStruct (createInfo)-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  pPAccelerationStructure <- ContT $ bracket (callocBytes @AccelerationStructureKHR 8) free-  r <- lift $ vkCreateAccelerationStructureKHR' (deviceHandle (device)) pCreateInfo pAllocator (pPAccelerationStructure)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pAccelerationStructure <- lift $ peek @AccelerationStructureKHR pPAccelerationStructure-  pure $ (pAccelerationStructure)---- | A convenience wrapper to make a compatible pair of calls to--- 'createAccelerationStructureKHR' and 'destroyAccelerationStructureKHR'------ To ensure that 'destroyAccelerationStructureKHR' is always called: pass--- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.----withAccelerationStructureKHR :: forall io r . MonadIO io => Device -> AccelerationStructureCreateInfoKHR -> Maybe AllocationCallbacks -> (io (AccelerationStructureKHR) -> ((AccelerationStructureKHR) -> io ()) -> r) -> r-withAccelerationStructureKHR device pCreateInfo pAllocator b =-  b (createAccelerationStructureKHR device pCreateInfo pAllocator)-    (\(o0) -> destroyAccelerationStructureKHR device o0 pAllocator)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdBuildAccelerationStructureKHR-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr (SomeStruct AccelerationStructureBuildGeometryInfoKHR) -> Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr (SomeStruct AccelerationStructureBuildGeometryInfoKHR) -> Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR) -> IO ()---- | vkCmdBuildAccelerationStructureKHR - Build an acceleration structure------ = Description------ The 'cmdBuildAccelerationStructureKHR' command provides the ability to--- initiate multiple acceleration structures builds, however there is no--- ordering or synchronization implied between any of the individual--- acceleration structure builds.------ Note------ This means that an application /cannot/ build a top-level acceleration--- structure in the same 'cmdBuildAccelerationStructureKHR' call as the--- associated bottom-level or instance acceleration structures are being--- built. There also /cannot/ be any memory aliasing between any--- acceleration structure memories or scratch memories being used by any of--- the builds.------ Accesses to the acceleration structure scratch buffers as identified by--- the 'AccelerationStructureBuildGeometryInfoKHR'→@scratchData@ buffer--- device addresses /must/ be--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>--- with the--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>--- and an--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>--- of--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'--- or--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'.------ == Valid Usage------ -   #VUID-vkCmdBuildAccelerationStructureKHR-pOffsetInfos-03402# Each---     element of @ppOffsetInfos@[i] /must/ be a valid pointer to an array---     of @pInfos@[i].@geometryCount@---     'AccelerationStructureBuildOffsetInfoKHR' structures------ -   #VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03403# Each---     @pInfos@[i].@srcAccelerationStructure@ /must/ not refer to the same---     acceleration structure as any @pInfos@[i].@dstAccelerationStructure@---     that is provided to the same build command unless it is identical---     for an update------ -   #VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03404# For each---     @pInfos@[i], @dstAccelerationStructure@ /must/ have been created---     with compatible 'AccelerationStructureCreateInfoKHR' where---     'AccelerationStructureCreateInfoKHR'::@type@ and---     'AccelerationStructureCreateInfoKHR'::@flags@ are identical to---     'AccelerationStructureBuildGeometryInfoKHR'::@type@ and---     'AccelerationStructureBuildGeometryInfoKHR'::@flags@ respectively,---     'AccelerationStructureBuildGeometryInfoKHR'::@geometryCount@ for---     @dstAccelerationStructure@ are greater than or equal to the build---     size, and each geometry in---     'AccelerationStructureBuildGeometryInfoKHR'::@ppGeometries@ for---     @dstAccelerationStructure@ has greater than or equal to the number---     of vertices, indices, and AABBs,---     'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@ is---     both 0 or both non-zero, and all other parameters are the same------ -   #VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03405# For each---     @pInfos@[i], if @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE',---     then objects that were previously active for that acceleration---     structure /must/ not be made inactive as per---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims ???>------ -   #VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03406# For each---     @pInfos@[i], if @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE',---     then objects that were previously inactive for that acceleration---     structure /must/ not be made active as per---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims ???>------ -   #VUID-vkCmdBuildAccelerationStructureKHR-None-03407# Any---     acceleration structure instance in any top level build in this---     command /must/ not reference any bottom level acceleration structure---     built by this command------ -   #VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03408# There /must/---     not be any---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>---     between the scratch memories that are provided in all the---     @pInfos@[i].@scratchData@ memories for the acceleration structure---     builds------ -   #VUID-vkCmdBuildAccelerationStructureKHR-None-03409# There /must/---     not be any---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>---     between memory bound to any top level, bottom level, or instance---     acceleration structure accessed by this command------ -   #VUID-vkCmdBuildAccelerationStructureKHR-update-03527# If @update@---     is 'Vulkan.Core10.FundamentalTypes.FALSE', all addresses between---     @pInfos@[i].@scratchData@ and @pInfos@[i].@scratchData@ + N - 1---     /must/ be in the buffer device address range of the same buffer,---     where N is given by the @size@ member of the---     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure---     returned from a call to---     'getAccelerationStructureMemoryRequirementsKHR' with---     'AccelerationStructureMemoryRequirementsInfoKHR'::@accelerationStructure@---     set to @pInfos@[i].@dstAccelerationStructure@ and---     'AccelerationStructureMemoryRequirementsInfoKHR'::@type@ set to---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR'------ -   #VUID-vkCmdBuildAccelerationStructureKHR-update-03528# If @update@---     is 'Vulkan.Core10.FundamentalTypes.TRUE', all addresses between---     @pInfos@[i].@scratchData@ and @pInfos@[i].@scratchData@ + N - 1---     /must/ be in the buffer device address range of the same buffer,---     where N is given by the @size@ member of the---     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure---     returned from a call to---     'getAccelerationStructureMemoryRequirementsKHR' with---     'AccelerationStructureMemoryRequirementsInfoKHR'::@accelerationStructure@---     set to @pInfos@[i].@dstAccelerationStructure@ and---     'AccelerationStructureMemoryRequirementsInfoKHR'::@type@ set to---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR'------ -   #VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03529# The buffer---     from which the buffer device address @pInfos@[i].@scratchData@ is---     queried /must/ have been created with---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RAY_TRACING_BIT_KHR'---     usage flag------ -   #VUID-vkCmdBuildAccelerationStructureKHR-None-04046# All---     'DeviceOrHostAddressKHR' or 'DeviceOrHostAddressConstKHR' referenced---     by this command /must/ contain valid device addresses for a buffer---     bound to device memory. If the buffer is non-sparse then it /must/---     be bound completely and contiguously to a single VkDeviceMemory---     object------ -   #VUID-vkCmdBuildAccelerationStructureKHR-None-03531# All---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' objects---     referenced by this command /must/ be bound to device memory------ -   #VUID-vkCmdBuildAccelerationStructureKHR-pNext-03532# The---     'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'---     structure /must/ not be included in the @pNext@ chain of any of the---     provided 'AccelerationStructureBuildGeometryInfoKHR' structures------ == Valid Usage (Implicit)------ -   #VUID-vkCmdBuildAccelerationStructureKHR-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdBuildAccelerationStructureKHR-pInfos-parameter# @pInfos@---     /must/ be a valid pointer to an array of @infoCount@ valid---     'AccelerationStructureBuildGeometryInfoKHR' structures------ -   #VUID-vkCmdBuildAccelerationStructureKHR-ppOffsetInfos-parameter#---     @ppOffsetInfos@ /must/ be a valid pointer to an array of @infoCount@---     'AccelerationStructureBuildOffsetInfoKHR' structures------ -   #VUID-vkCmdBuildAccelerationStructureKHR-commandBuffer-recording#---     @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   #VUID-vkCmdBuildAccelerationStructureKHR-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support compute operations------ -   #VUID-vkCmdBuildAccelerationStructureKHR-renderpass# This command---     /must/ only be called outside of a render pass instance------ -   #VUID-vkCmdBuildAccelerationStructureKHR-infoCount-arraylength#---     @infoCount@ /must/ be greater than @0@------ == Host Synchronization------ -   Host access to @commandBuffer@ /must/ be externally synchronized------ -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'AccelerationStructureBuildGeometryInfoKHR',--- 'AccelerationStructureBuildOffsetInfoKHR',--- 'Vulkan.Core10.Handles.CommandBuffer'-cmdBuildAccelerationStructureKHR :: forall io-                                  . (MonadIO io)-                                 => -- | @commandBuffer@ is the command buffer into which the command will be-                                    -- recorded.-                                    CommandBuffer-                                 -> -- | @pInfos@ is an array of @infoCount@-                                    -- 'AccelerationStructureBuildGeometryInfoKHR' structures defining the-                                    -- geometry used to build each acceleration structure.-                                    ("infos" ::: Vector (SomeStruct AccelerationStructureBuildGeometryInfoKHR))-                                 -> -- | @ppOffsetInfos@ is an array of @infoCount@ pointers to arrays of-                                    -- 'AccelerationStructureBuildOffsetInfoKHR' structures. Each-                                    -- @ppOffsetInfos@[i] is an array of @pInfos@[i].@geometryCount@-                                    -- 'AccelerationStructureBuildOffsetInfoKHR' structures defining dynamic-                                    -- offsets to the addresses where geometry data is stored, as defined by-                                    -- @pInfos@[i].-                                    ("offsetInfos" ::: Vector AccelerationStructureBuildOffsetInfoKHR)-                                 -> io ()-cmdBuildAccelerationStructureKHR commandBuffer infos offsetInfos = liftIO . evalContT $ do-  let vkCmdBuildAccelerationStructureKHRPtr = pVkCmdBuildAccelerationStructureKHR (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdBuildAccelerationStructureKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBuildAccelerationStructureKHR is null" Nothing Nothing-  let vkCmdBuildAccelerationStructureKHR' = mkVkCmdBuildAccelerationStructureKHR vkCmdBuildAccelerationStructureKHRPtr-  let pInfosLength = Data.Vector.length $ (infos)-  lift $ unless ((Data.Vector.length $ (offsetInfos)) == pInfosLength) $-    throwIO $ IOError Nothing InvalidArgument "" "ppOffsetInfos and pInfos must have the same length" Nothing Nothing-  pPInfos <- ContT $ allocaBytesAligned @(AccelerationStructureBuildGeometryInfoKHR _) ((Data.Vector.length (infos)) * 72) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPInfos `plusPtr` (72 * (i)) :: Ptr (AccelerationStructureBuildGeometryInfoKHR _))) (e) . ($ ())) (infos)-  pPpOffsetInfos <- ContT $ allocaBytesAligned @(Ptr AccelerationStructureBuildOffsetInfoKHR) ((Data.Vector.length (offsetInfos)) * 8) 8-  Data.Vector.imapM_ (\i e -> do-    ppOffsetInfos <- ContT $ withCStruct (e)-    lift $ poke (pPpOffsetInfos `plusPtr` (8 * (i)) :: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) ppOffsetInfos) (offsetInfos)-  lift $ vkCmdBuildAccelerationStructureKHR' (commandBufferHandle (commandBuffer)) ((fromIntegral pInfosLength :: Word32)) (forgetExtensions (pPInfos)) (pPpOffsetInfos)-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdBuildAccelerationStructureIndirectKHR-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct AccelerationStructureBuildGeometryInfoKHR) -> Buffer -> DeviceSize -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct AccelerationStructureBuildGeometryInfoKHR) -> Buffer -> DeviceSize -> Word32 -> IO ()---- | vkCmdBuildAccelerationStructureIndirectKHR - Build an acceleration--- structure with some parameters provided on the device------ == Valid Usage------ -   #VUID-vkCmdBuildAccelerationStructureIndirectKHR-None-04047# All---     'DeviceOrHostAddressKHR' or 'DeviceOrHostAddressConstKHR' referenced---     by this command /must/ contain valid device addresses for a buffer---     bound to device memory. If the buffer is non-sparse then it /must/---     be bound completely and contiguously to a single VkDeviceMemory---     object------ -   #VUID-vkCmdBuildAccelerationStructureIndirectKHR-None-03534# All---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' objects---     referenced by this command /must/ be bound to device memory------ -   #VUID-vkCmdBuildAccelerationStructureIndirectKHR-rayTracingIndirectAccelerationStructureBuild-03535#---     The---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-indirectasbuild ::rayTracingIndirectAccelerationStructureBuild>---     feature /must/ be enabled------ -   #VUID-vkCmdBuildAccelerationStructureIndirectKHR-pNext-03536# The---     'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'---     structure /must/ not be included in the @pNext@ chain of any of the---     provided 'AccelerationStructureBuildGeometryInfoKHR' structures------ == Valid Usage (Implicit)------ -   #VUID-vkCmdBuildAccelerationStructureIndirectKHR-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdBuildAccelerationStructureIndirectKHR-pInfo-parameter#---     @pInfo@ /must/ be a valid pointer to a valid---     'AccelerationStructureBuildGeometryInfoKHR' structure------ -   #VUID-vkCmdBuildAccelerationStructureIndirectKHR-indirectBuffer-parameter#---     @indirectBuffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'---     handle------ -   #VUID-vkCmdBuildAccelerationStructureIndirectKHR-commandBuffer-recording#---     @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   #VUID-vkCmdBuildAccelerationStructureIndirectKHR-commandBuffer-cmdpool#---     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support compute operations------ -   #VUID-vkCmdBuildAccelerationStructureIndirectKHR-renderpass# This---     command /must/ only be called outside of a render pass instance------ -   #VUID-vkCmdBuildAccelerationStructureIndirectKHR-commonparent# Both---     of @commandBuffer@, and @indirectBuffer@ /must/ have been created,---     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'------ == Host Synchronization------ -   Host access to @commandBuffer@ /must/ be externally synchronized------ -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'AccelerationStructureBuildGeometryInfoKHR',--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'-cmdBuildAccelerationStructureIndirectKHR :: forall a io-                                          . (Extendss AccelerationStructureBuildGeometryInfoKHR a, PokeChain a, MonadIO io)-                                         => -- | @commandBuffer@ is the command buffer into which the command will be-                                            -- recorded.-                                            CommandBuffer-                                         -> -- | @pInfo@ is a pointer to a 'AccelerationStructureBuildGeometryInfoKHR'-                                            -- structure defining the geometry used to build the acceleration-                                            -- structure.-                                            (AccelerationStructureBuildGeometryInfoKHR a)-                                         -> -- | @indirectBuffer@ is the 'Vulkan.Core10.Handles.Buffer' containing-                                            -- @pInfo->geometryCount@ 'AccelerationStructureBuildOffsetInfoKHR'-                                            -- structures defining dynamic offsets to the addresses where geometry data-                                            -- is stored, as defined by @pInfo@.-                                            ("indirectBuffer" ::: Buffer)-                                         -> -- | @indirectOffset@ is the byte offset into @indirectBuffer@ where offset-                                            -- parameters begin.-                                            ("indirectOffset" ::: DeviceSize)-                                         -> -- No documentation found for Nested "vkCmdBuildAccelerationStructureIndirectKHR" "indirectStride"-                                            ("indirectStride" ::: Word32)-                                         -> io ()-cmdBuildAccelerationStructureIndirectKHR commandBuffer info indirectBuffer indirectOffset indirectStride = liftIO . evalContT $ do-  let vkCmdBuildAccelerationStructureIndirectKHRPtr = pVkCmdBuildAccelerationStructureIndirectKHR (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdBuildAccelerationStructureIndirectKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBuildAccelerationStructureIndirectKHR is null" Nothing Nothing-  let vkCmdBuildAccelerationStructureIndirectKHR' = mkVkCmdBuildAccelerationStructureIndirectKHR vkCmdBuildAccelerationStructureIndirectKHRPtr-  pInfo <- ContT $ withCStruct (info)-  lift $ vkCmdBuildAccelerationStructureIndirectKHR' (commandBufferHandle (commandBuffer)) (forgetExtensions pInfo) (indirectBuffer) (indirectOffset) (indirectStride)-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkBuildAccelerationStructureKHR-  :: FunPtr (Ptr Device_T -> Word32 -> Ptr (SomeStruct AccelerationStructureBuildGeometryInfoKHR) -> Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR) -> IO Result) -> Ptr Device_T -> Word32 -> Ptr (SomeStruct AccelerationStructureBuildGeometryInfoKHR) -> Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR) -> IO Result---- | vkBuildAccelerationStructureKHR - Build an acceleration structure on the--- host------ = Parameters------ This command fulfills the same task as--- 'cmdBuildAccelerationStructureKHR' but executed by the host.------ = Description------ -   @device@ is the 'Vulkan.Core10.Handles.Device' for which the---     acceleration structures are being built.------ -   @infoCount@ is the number of acceleration structures to build. It---     specifies the number of the @pInfos@ structures and @ppOffsetInfos@---     pointers that /must/ be provided.------ -   @pInfos@ is a pointer to an array of @infoCount@---     'AccelerationStructureBuildGeometryInfoKHR' structures defining the---     geometry used to build each acceleration structure.------ -   @ppOffsetInfos@ is an array of @infoCount@ pointers to arrays of---     'AccelerationStructureBuildOffsetInfoKHR' structures. Each---     @ppOffsetInfos@[i] is an array of @pInfos@[i].@geometryCount@---     'AccelerationStructureBuildOffsetInfoKHR' structures defining---     dynamic offsets to the addresses where geometry data is stored, as---     defined by @pInfos@[i].------ The 'buildAccelerationStructureKHR' command provides the ability to--- initiate multiple acceleration structures builds, however there is no--- ordering or synchronization implied between any of the individual--- acceleration structure builds.------ Note------ This means that an application /cannot/ build a top-level acceleration--- structure in the same 'buildAccelerationStructureKHR' call as the--- associated bottom-level or instance acceleration structures are being--- built. There also /cannot/ be any memory aliasing between any--- acceleration structure memories or scratch memories being used by any of--- the builds.------ If the--- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'--- structure is included in the @pNext@ chain of any--- 'AccelerationStructureBuildGeometryInfoKHR' structure, the operation of--- this command is /deferred/, as defined in the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations Deferred Host Operations>--- chapter.------ == Valid Usage------ -   #VUID-vkBuildAccelerationStructureKHR-pOffsetInfos-03402# Each---     element of @ppOffsetInfos@[i] /must/ be a valid pointer to an array---     of @pInfos@[i].@geometryCount@---     'AccelerationStructureBuildOffsetInfoKHR' structures------ -   #VUID-vkBuildAccelerationStructureKHR-pInfos-03403# Each---     @pInfos@[i].@srcAccelerationStructure@ /must/ not refer to the same---     acceleration structure as any @pInfos@[i].@dstAccelerationStructure@---     that is provided to the same build command unless it is identical---     for an update------ -   #VUID-vkBuildAccelerationStructureKHR-pInfos-03404# For each---     @pInfos@[i], @dstAccelerationStructure@ /must/ have been created---     with compatible 'AccelerationStructureCreateInfoKHR' where---     'AccelerationStructureCreateInfoKHR'::@type@ and---     'AccelerationStructureCreateInfoKHR'::@flags@ are identical to---     'AccelerationStructureBuildGeometryInfoKHR'::@type@ and---     'AccelerationStructureBuildGeometryInfoKHR'::@flags@ respectively,---     'AccelerationStructureBuildGeometryInfoKHR'::@geometryCount@ for---     @dstAccelerationStructure@ are greater than or equal to the build---     size, and each geometry in---     'AccelerationStructureBuildGeometryInfoKHR'::@ppGeometries@ for---     @dstAccelerationStructure@ has greater than or equal to the number---     of vertices, indices, and AABBs,---     'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@ is---     both 0 or both non-zero, and all other parameters are the same------ -   #VUID-vkBuildAccelerationStructureKHR-pInfos-03405# For each---     @pInfos@[i], if @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE',---     then objects that were previously active for that acceleration---     structure /must/ not be made inactive as per---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims ???>------ -   #VUID-vkBuildAccelerationStructureKHR-pInfos-03406# For each---     @pInfos@[i], if @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE',---     then objects that were previously inactive for that acceleration---     structure /must/ not be made active as per---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims ???>------ -   #VUID-vkBuildAccelerationStructureKHR-None-03407# Any acceleration---     structure instance in any top level build in this command /must/ not---     reference any bottom level acceleration structure built by this---     command------ -   #VUID-vkBuildAccelerationStructureKHR-pInfos-03408# There /must/ not---     be any---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>---     between the scratch memories that are provided in all the---     @pInfos@[i].@scratchData@ memories for the acceleration structure---     builds------ -   #VUID-vkBuildAccelerationStructureKHR-None-03409# There /must/ not---     be any---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>---     between memory bound to any top level, bottom level, or instance---     acceleration structure accessed by this command------ -   #VUID-vkBuildAccelerationStructureKHR-None-03437# All---     'DeviceOrHostAddressKHR' or 'DeviceOrHostAddressConstKHR' referenced---     by this command /must/ contain valid host addresses------ -   #VUID-vkBuildAccelerationStructureKHR-None-03438# All---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' objects---     referenced by this command /must/ be bound to host-visible memory------ -   #VUID-vkBuildAccelerationStructureKHR-rayTracingHostAccelerationStructureCommands-03439#---     The---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-hostascmds ::rayTracingHostAccelerationStructureCommands>---     feature /must/ be enabled------ == Valid Usage (Implicit)------ -   #VUID-vkBuildAccelerationStructureKHR-device-parameter# @device@---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkBuildAccelerationStructureKHR-pInfos-parameter# @pInfos@---     /must/ be a valid pointer to an array of @infoCount@ valid---     'AccelerationStructureBuildGeometryInfoKHR' structures------ -   #VUID-vkBuildAccelerationStructureKHR-ppOffsetInfos-parameter#---     @ppOffsetInfos@ /must/ be a valid pointer to an array of @infoCount@---     'AccelerationStructureBuildOffsetInfoKHR' structures------ -   #VUID-vkBuildAccelerationStructureKHR-infoCount-arraylength#---     @infoCount@ /must/ be greater than @0@------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'------     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'AccelerationStructureBuildGeometryInfoKHR',--- 'AccelerationStructureBuildOffsetInfoKHR',--- 'Vulkan.Core10.Handles.Device'-buildAccelerationStructureKHR :: forall io-                               . (MonadIO io)-                              => -- No documentation found for Nested "vkBuildAccelerationStructureKHR" "device"-                                 Device-                              -> -- No documentation found for Nested "vkBuildAccelerationStructureKHR" "pInfos"-                                 ("infos" ::: Vector (SomeStruct AccelerationStructureBuildGeometryInfoKHR))-                              -> -- No documentation found for Nested "vkBuildAccelerationStructureKHR" "ppOffsetInfos"-                                 ("offsetInfos" ::: Vector AccelerationStructureBuildOffsetInfoKHR)-                              -> io (Result)-buildAccelerationStructureKHR device infos offsetInfos = liftIO . evalContT $ do-  let vkBuildAccelerationStructureKHRPtr = pVkBuildAccelerationStructureKHR (deviceCmds (device :: Device))-  lift $ unless (vkBuildAccelerationStructureKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkBuildAccelerationStructureKHR is null" Nothing Nothing-  let vkBuildAccelerationStructureKHR' = mkVkBuildAccelerationStructureKHR vkBuildAccelerationStructureKHRPtr-  let pInfosLength = Data.Vector.length $ (infos)-  lift $ unless ((Data.Vector.length $ (offsetInfos)) == pInfosLength) $-    throwIO $ IOError Nothing InvalidArgument "" "ppOffsetInfos and pInfos must have the same length" Nothing Nothing-  pPInfos <- ContT $ allocaBytesAligned @(AccelerationStructureBuildGeometryInfoKHR _) ((Data.Vector.length (infos)) * 72) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPInfos `plusPtr` (72 * (i)) :: Ptr (AccelerationStructureBuildGeometryInfoKHR _))) (e) . ($ ())) (infos)-  pPpOffsetInfos <- ContT $ allocaBytesAligned @(Ptr AccelerationStructureBuildOffsetInfoKHR) ((Data.Vector.length (offsetInfos)) * 8) 8-  Data.Vector.imapM_ (\i e -> do-    ppOffsetInfos <- ContT $ withCStruct (e)-    lift $ poke (pPpOffsetInfos `plusPtr` (8 * (i)) :: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) ppOffsetInfos) (offsetInfos)-  r <- lift $ vkBuildAccelerationStructureKHR' (deviceHandle (device)) ((fromIntegral pInfosLength :: Word32)) (forgetExtensions (pPInfos)) (pPpOffsetInfos)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pure $ (r)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkGetAccelerationStructureDeviceAddressKHR-  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureDeviceAddressInfoKHR -> IO DeviceAddress) -> Ptr Device_T -> Ptr AccelerationStructureDeviceAddressInfoKHR -> IO DeviceAddress---- | vkGetAccelerationStructureDeviceAddressKHR - Query an address of a--- acceleration structure------ = Description------ The 64-bit return value is an address of the acceleration structure,--- which can be used for device and shader operations that involve--- acceleration structures, such as ray traversal and acceleration--- structure building.------ If the acceleration structure was created with a non-zero value of--- 'AccelerationStructureCreateInfoKHR'::@deviceAddress@ the return value--- will be the same address.------ == Valid Usage------ -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-device-03504# If---     @device@ was created with multiple physical devices, then the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>---     feature /must/ be enabled------ == Valid Usage (Implicit)------ -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter#---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-parameter#---     @pInfo@ /must/ be a valid pointer to a valid---     'AccelerationStructureDeviceAddressInfoKHR' structure------ = See Also------ 'AccelerationStructureDeviceAddressInfoKHR',--- 'Vulkan.Core10.Handles.Device'-getAccelerationStructureDeviceAddressKHR :: forall io-                                          . (MonadIO io)-                                         => -- | @device@ is the logical device that the accelerationStructure was-                                            -- created on.-                                            Device-                                         -> -- | @pInfo@ is a pointer to a 'AccelerationStructureDeviceAddressInfoKHR'-                                            -- structure specifying the acceleration structure to retrieve an address-                                            -- for.-                                            AccelerationStructureDeviceAddressInfoKHR-                                         -> io (DeviceAddress)-getAccelerationStructureDeviceAddressKHR device info = liftIO . evalContT $ do-  let vkGetAccelerationStructureDeviceAddressKHRPtr = pVkGetAccelerationStructureDeviceAddressKHR (deviceCmds (device :: Device))-  lift $ unless (vkGetAccelerationStructureDeviceAddressKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureDeviceAddressKHR is null" Nothing Nothing-  let vkGetAccelerationStructureDeviceAddressKHR' = mkVkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHRPtr-  pInfo <- ContT $ withCStruct (info)-  r <- lift $ vkGetAccelerationStructureDeviceAddressKHR' (deviceHandle (device)) pInfo-  pure $ (r)----- | VkRayTracingShaderGroupCreateInfoKHR - Structure specifying shaders in a--- shader group------ == Valid Usage------ -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03474# If @type@ is---     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR' then @generalShader@---     /must/ be a valid index into---     'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to a shader---     of---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR',---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR',---     or---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'------ -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03475# If @type@ is---     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR' then @closestHitShader@,---     @anyHitShader@, and @intersectionShader@ /must/ be---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'------ -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03476# If @type@ is---     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR' then---     @intersectionShader@ /must/ be a valid index into---     'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to a shader---     of---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_INTERSECTION_BIT_KHR'------ -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03477# If @type@ is---     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' then---     @intersectionShader@ /must/ be---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'------ -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-closestHitShader-03478#---     @closestHitShader@ /must/ be either---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' or a valid index into---     'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to a shader---     of---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLOSEST_HIT_BIT_KHR'------ -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-anyHitShader-03479#---     @anyHitShader@ /must/ be either---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' or a valid index into---     'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to a shader---     of---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ANY_HIT_BIT_KHR'------ -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingShaderGroupHandleCaptureReplayMixed-03480#---     If---     'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingShaderGroupHandleCaptureReplayMixed@---     is 'Vulkan.Core10.FundamentalTypes.FALSE' then---     @pShaderGroupCaptureReplayHandle@ /must/ not be provided if it has---     not been provided on a previous call to ray tracing pipeline---     creation------ -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingShaderGroupHandleCaptureReplayMixed-03481#---     If---     'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingShaderGroupHandleCaptureReplayMixed@---     is 'Vulkan.Core10.FundamentalTypes.FALSE' then the caller /must/---     guarantee that no ray tracing pipeline creation commands with---     @pShaderGroupCaptureReplayHandle@ provided execute simultaneously---     with ray tracing pipeline creation commands without---     @pShaderGroupCaptureReplayHandle@ provided------ == Valid Usage (Implicit)------ -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-sType-sType# @sType@---     /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR'------ -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-pNext-pNext# @pNext@---     /must/ be @NULL@------ -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-parameter# @type@---     /must/ be a valid 'RayTracingShaderGroupTypeKHR' value------ = See Also------ 'RayTracingPipelineCreateInfoKHR', 'RayTracingShaderGroupTypeKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data RayTracingShaderGroupCreateInfoKHR = RayTracingShaderGroupCreateInfoKHR-  { -- | @type@ is the type of hit group specified in this structure.-    type' :: RayTracingShaderGroupTypeKHR-  , -- | @generalShader@ is the index of the ray generation, miss, or callable-    -- shader from 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if-    -- the shader group has @type@ of-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR', and-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.-    generalShader :: Word32-  , -- | @closestHitShader@ is the optional index of the closest hit shader from-    -- 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if the shader-    -- group has @type@ of-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', and-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.-    closestHitShader :: Word32-  , -- | @anyHitShader@ is the optional index of the any-hit shader from-    -- 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if the shader-    -- group has @type@ of-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', and-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.-    anyHitShader :: Word32-  , -- | @intersectionShader@ is the index of the intersection shader from-    -- 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if the shader-    -- group has @type@ of-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', and-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.-    intersectionShader :: Word32-  , -- | @pShaderGroupCaptureReplayHandle@ is an optional pointer to replay-    -- information for this shader group. Ignored if-    -- 'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingShaderGroupHandleCaptureReplay@-    -- is 'Vulkan.Core10.FundamentalTypes.FALSE'.-    shaderGroupCaptureReplayHandle :: Ptr ()-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (RayTracingShaderGroupCreateInfoKHR)-#endif-deriving instance Show RayTracingShaderGroupCreateInfoKHR--instance ToCStruct RayTracingShaderGroupCreateInfoKHR where-  withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p RayTracingShaderGroupCreateInfoKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (type')-    poke ((p `plusPtr` 20 :: Ptr Word32)) (generalShader)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (closestHitShader)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (anyHitShader)-    poke ((p `plusPtr` 32 :: Ptr Word32)) (intersectionShader)-    poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (shaderGroupCaptureReplayHandle)-    f-  cStructSize = 48-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (zero)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)-    f--instance FromCStruct RayTracingShaderGroupCreateInfoKHR where-  peekCStruct p = do-    type' <- peek @RayTracingShaderGroupTypeKHR ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR))-    generalShader <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    closestHitShader <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))-    anyHitShader <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))-    intersectionShader <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    pShaderGroupCaptureReplayHandle <- peek @(Ptr ()) ((p `plusPtr` 40 :: Ptr (Ptr ())))-    pure $ RayTracingShaderGroupCreateInfoKHR-             type' generalShader closestHitShader anyHitShader intersectionShader pShaderGroupCaptureReplayHandle--instance Storable RayTracingShaderGroupCreateInfoKHR where-  sizeOf ~_ = 48-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero RayTracingShaderGroupCreateInfoKHR where-  zero = RayTracingShaderGroupCreateInfoKHR-           zero-           zero-           zero-           zero-           zero-           zero----- | VkRayTracingPipelineCreateInfoKHR - Structure specifying parameters of a--- newly created ray tracing pipeline------ = Description------ The parameters @basePipelineHandle@ and @basePipelineIndex@ are--- described in more detail in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.------ When--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'--- is specified, this pipeline defines a /pipeline library/ which /cannot/--- be bound as a ray tracing pipeline directly. Instead, pipeline libraries--- define common shaders and shader groups which /can/ be included in--- future pipeline creation.------ If pipeline libraries are included in @libraries@, shaders defined in--- those libraries are treated as if they were defined as additional--- entries in @pStages@, appended in the order they appear in the--- @pLibraries@ array and in the @pStages@ array when those libraries were--- defined.------ When referencing shader groups in order to obtain a shader group handle,--- groups defined in those libraries are treated as if they were defined as--- additional entries in @pGroups@, appended in the order they appear in--- the @pLibraries@ array and in the @pGroups@ array when those libraries--- were defined. The shaders these groups reference are set when the--- pipeline library is created, referencing those specified in the pipeline--- library, not in the pipeline that includes it.------ If the--- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'--- structure is included in the @pNext@ chain of--- 'RayTracingPipelineCreateInfoKHR', the operation of this pipeline--- creation is /deferred/, as defined in the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations Deferred Host Operations>--- chapter.------ == Valid Usage------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03421# If @flags@---     contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineIndex@ is @-1@, @basePipelineHandle@ /must/---     be a valid handle to a ray tracing 'Vulkan.Core10.Handles.Pipeline'------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03422# If @flags@---     contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineHandle@ is---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/---     be a valid index into the calling command’s @pCreateInfos@ parameter------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03423# If @flags@---     contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineIndex@ is not @-1@, @basePipelineHandle@---     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03424# If @flags@---     contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineHandle@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/---     be @-1@------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-stage-03425# The @stage@---     member of at least one element of @pStages@ /must/ be---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR'------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-pStages-03426# The shader---     code for the entry points identified by @pStages@, and the rest of---     the state identified by this structure /must/ adhere to the pipeline---     linking rules described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>---     chapter------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-03427# @layout@---     /must/ be---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>---     with all shaders specified in @pStages@------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-03428# The number of---     resources in @layout@ accessible to each shader stage that is used---     by the pipeline /must/ be less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-02904# @flags@ /must/---     not include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-pipelineCreationCacheControl-02905#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>---     feature is not enabled, @flags@ /must/ not include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'---     or---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-maxRecursionDepth-03464#---     @maxRecursionDepth@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesKHR'::@maxRecursionDepth@------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03465# If @flags@---     includes---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',---     @pLibraryInterface@ /must/ not be @NULL@------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-libraryCount-03466# If the---     @libraryCount@ member of @libraries@ is greater than @0@,---     @pLibraryInterface@ /must/ not be @NULL@------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03467# Each---     element of the @pLibraries@ member of @libraries@ /must/ have been---     created with the value of @maxRecursionDepth@ equal to that in this---     pipeline------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03468# Each---     element of the @pLibraries@ member of @libraries@ /must/ have been---     created with a @layout@ that is compatible with the @layout@ in this---     pipeline------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03469# Each---     element of the @pLibraries@ member of @libraries@ /must/ have been---     created with values of the @maxPayloadSize@, @maxAttributeSize@, and---     @maxCallableSize@ members of @pLibraryInterface@ equal to those in---     this pipeline------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03470# If @flags@---     includes---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',---     for any element of @pGroups@ with a @type@ of---     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or---     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', the---     @anyHitShader@ of that element /must/ not be---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03471# If @flags@---     includes---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',---     for any element of @pGroups@ with a @type@ of---     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or---     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', the---     @closestHitShader@ of that element /must/ not be---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPrimitiveCulling-03472#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPrimitiveCulling rayTracingPrimitiveCulling>---     feature is not enabled, @flags@ /must/ not include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPrimitiveCulling-03473#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPrimitiveCulling rayTracingPrimitiveCulling>---     feature is not enabled, @flags@ /must/ not include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-libraries-02958# If---     @libraries.libraryCount@ is zero, then @stageCount@ /must/ not be---     zero------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-libraries-02959# If---     @libraries.libraryCount@ is zero, then @groupCount@ /must/ not be---     zero------ == Valid Usage (Implicit)------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-sType-sType# @sType@ /must/---     be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR'------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-pNext-pNext# Each @pNext@---     member of any structure (including this one) in the @pNext@ chain---     /must/ be either @NULL@ or a pointer to a valid instance of---     'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'---     or---     'Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT'------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-sType-unique# The @sType@---     value of each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-parameter# @flags@---     /must/ be a valid combination of---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'---     values------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-pStages-parameter# If---     @stageCount@ is not @0@, @pStages@ /must/ be a valid pointer to an---     array of @stageCount@ valid---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-pGroups-parameter# If---     @groupCount@ is not @0@, @pGroups@ /must/ be a valid pointer to an---     array of @groupCount@ valid 'RayTracingShaderGroupCreateInfoKHR'---     structures------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-libraries-parameter#---     @libraries@ /must/ be a valid---     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'---     structure------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInterface-parameter#---     If @pLibraryInterface@ is not @NULL@, @pLibraryInterface@ /must/ be---     a valid pointer to a valid---     'RayTracingPipelineInterfaceCreateInfoKHR' structure------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-parameter# @layout@---     /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle------ -   #VUID-VkRayTracingPipelineCreateInfoKHR-commonparent# Both of---     @basePipelineHandle@, and @layout@ that are valid handles of---     non-ignored parameters /must/ have been created, allocated, or---     retrieved from the same 'Vulkan.Core10.Handles.Device'------ = See Also------ 'Vulkan.Core10.Handles.Pipeline',--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',--- 'Vulkan.Core10.Handles.PipelineLayout',--- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR',--- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',--- 'RayTracingPipelineInterfaceCreateInfoKHR',--- 'RayTracingShaderGroupCreateInfoKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'createRayTracingPipelinesKHR'-data RayTracingPipelineCreateInfoKHR (es :: [Type]) = RayTracingPipelineCreateInfoKHR-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.-    next :: Chain es-  , -- | @flags@ is a bitmask of-    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'-    -- specifying how the pipeline will be generated.-    flags :: PipelineCreateFlags-  , -- | @pStages@ is a pointer to an array of @stageCount@-    -- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures-    -- describing the set of the shader stages to be included in the ray-    -- tracing pipeline.-    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)-  , -- | @pGroups@ is a pointer to an array of @groupCount@-    -- 'RayTracingShaderGroupCreateInfoKHR' structures describing the set of-    -- the shader stages to be included in each shader group in the ray tracing-    -- pipeline.-    groups :: Vector RayTracingShaderGroupCreateInfoKHR-  , -- | @maxRecursionDepth@ is the-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth maximum recursion depth>-    -- of shaders executed by this pipeline.-    maxRecursionDepth :: Word32-  , -- | @libraries@ is a-    -- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'-    -- structure defining pipeline libraries to include.-    libraries :: PipelineLibraryCreateInfoKHR-  , -- | @pLibraryInterface@ is a pointer to a-    -- 'RayTracingPipelineInterfaceCreateInfoKHR' structure defining additional-    -- information when using pipeline libraries.-    libraryInterface :: Maybe RayTracingPipelineInterfaceCreateInfoKHR-  , -- | @layout@ is the description of binding locations used by both the-    -- pipeline and descriptor sets used with the pipeline.-    layout :: PipelineLayout-  , -- | @basePipelineHandle@ is a pipeline to derive from.-    basePipelineHandle :: Pipeline-  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use-    -- as a pipeline to derive from.-    basePipelineIndex :: Int32-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (RayTracingPipelineCreateInfoKHR (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (RayTracingPipelineCreateInfoKHR es)--instance Extensible RayTracingPipelineCreateInfoKHR where-  extensibleType = STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR-  setNext x next = x{next = next}-  getNext RayTracingPipelineCreateInfoKHR{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoKHR e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @DeferredOperationInfoKHR = Just f-    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfoEXT = Just f-    | otherwise = Nothing--instance (Extendss RayTracingPipelineCreateInfoKHR es, PokeChain es) => ToCStruct (RayTracingPipelineCreateInfoKHR es) where-  withCStruct x f = allocaBytesAligned 120 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p RayTracingPipelineCreateInfoKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))-    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (groups)) :: Word32))-    pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoKHR ((Data.Vector.length (groups)) * 48) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (48 * (i)) :: Ptr RayTracingShaderGroupCreateInfoKHR) (e) . ($ ())) (groups)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoKHR))) (pPGroups')-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxRecursionDepth)-    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr PipelineLibraryCreateInfoKHR)) (libraries) . ($ ())-    pLibraryInterface'' <- case (libraryInterface) of-      Nothing -> pure nullPtr-      Just j -> ContT $ withCStruct (j)-    lift $ poke ((p `plusPtr` 88 :: Ptr (Ptr RayTracingPipelineInterfaceCreateInfoKHR))) pLibraryInterface''-    lift $ poke ((p `plusPtr` 96 :: Ptr PipelineLayout)) (layout)-    lift $ poke ((p `plusPtr` 104 :: Ptr Pipeline)) (basePipelineHandle)-    lift $ poke ((p `plusPtr` 112 :: Ptr Int32)) (basePipelineIndex)-    lift $ f-  cStructSize = 120-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (mempty)) * 48) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (mempty)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')-    pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoKHR ((Data.Vector.length (mempty)) * 48) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (48 * (i)) :: Ptr RayTracingShaderGroupCreateInfoKHR) (e) . ($ ())) (mempty)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoKHR))) (pPGroups')-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr PipelineLibraryCreateInfoKHR)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 96 :: Ptr PipelineLayout)) (zero)-    lift $ poke ((p `plusPtr` 112 :: Ptr Int32)) (zero)-    lift $ f--instance (Extendss RayTracingPipelineCreateInfoKHR es, PeekChain es) => FromCStruct (RayTracingPipelineCreateInfoKHR es) where-  peekCStruct p = do-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))-    next <- peekChain (castPtr pNext)-    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))-    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo a))))-    pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))-    groupCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    pGroups <- peek @(Ptr RayTracingShaderGroupCreateInfoKHR) ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoKHR)))-    pGroups' <- generateM (fromIntegral groupCount) (\i -> peekCStruct @RayTracingShaderGroupCreateInfoKHR ((pGroups `advancePtrBytes` (48 * (i)) :: Ptr RayTracingShaderGroupCreateInfoKHR)))-    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))-    libraries <- peekCStruct @PipelineLibraryCreateInfoKHR ((p `plusPtr` 56 :: Ptr PipelineLibraryCreateInfoKHR))-    pLibraryInterface <- peek @(Ptr RayTracingPipelineInterfaceCreateInfoKHR) ((p `plusPtr` 88 :: Ptr (Ptr RayTracingPipelineInterfaceCreateInfoKHR)))-    pLibraryInterface' <- maybePeek (\j -> peekCStruct @RayTracingPipelineInterfaceCreateInfoKHR (j)) pLibraryInterface-    layout <- peek @PipelineLayout ((p `plusPtr` 96 :: Ptr PipelineLayout))-    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 104 :: Ptr Pipeline))-    basePipelineIndex <- peek @Int32 ((p `plusPtr` 112 :: Ptr Int32))-    pure $ RayTracingPipelineCreateInfoKHR-             next flags pStages' pGroups' maxRecursionDepth libraries pLibraryInterface' layout basePipelineHandle basePipelineIndex--instance es ~ '[] => Zero (RayTracingPipelineCreateInfoKHR es) where-  zero = RayTracingPipelineCreateInfoKHR-           ()-           zero-           mempty-           mempty-           zero-           zero-           Nothing-           zero-           zero-           zero----- | VkBindAccelerationStructureMemoryInfoKHR - Structure specifying--- acceleration structure memory binding------ == Valid Usage------ -   #VUID-VkBindAccelerationStructureMemoryInfoKHR-accelerationStructure-02450#---     @accelerationStructure@ /must/ not already be backed by a memory---     object------ -   #VUID-VkBindAccelerationStructureMemoryInfoKHR-memoryOffset-02451#---     @memoryOffset@ /must/ be less than the size of @memory@------ -   #VUID-VkBindAccelerationStructureMemoryInfoKHR-memory-02593#---     @memory@ /must/ have been allocated using one of the memory types---     allowed in the @memoryTypeBits@ member of the---     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure---     returned from a call to---     'getAccelerationStructureMemoryRequirementsKHR' with---     @accelerationStructure@ and @type@ of---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR'------ -   #VUID-VkBindAccelerationStructureMemoryInfoKHR-memoryOffset-02594#---     @memoryOffset@ /must/ be an integer multiple of the @alignment@---     member of the 'Vulkan.Core10.MemoryManagement.MemoryRequirements'---     structure returned from a call to---     'getAccelerationStructureMemoryRequirementsKHR' with---     @accelerationStructure@ and @type@ of---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR'------ -   #VUID-VkBindAccelerationStructureMemoryInfoKHR-size-02595# The---     @size@ member of the---     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure---     returned from a call to---     'getAccelerationStructureMemoryRequirementsKHR' with---     @accelerationStructure@ and @type@ of---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR' /must/---     be less than or equal to the size of @memory@ minus @memoryOffset@------ == Valid Usage (Implicit)------ -   #VUID-VkBindAccelerationStructureMemoryInfoKHR-sType-sType# @sType@---     /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR'------ -   #VUID-VkBindAccelerationStructureMemoryInfoKHR-pNext-pNext# @pNext@---     /must/ be @NULL@------ -   #VUID-VkBindAccelerationStructureMemoryInfoKHR-accelerationStructure-parameter#---     @accelerationStructure@ /must/ be a valid---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle------ -   #VUID-VkBindAccelerationStructureMemoryInfoKHR-memory-parameter#---     @memory@ /must/ be a valid 'Vulkan.Core10.Handles.DeviceMemory'---     handle------ -   #VUID-VkBindAccelerationStructureMemoryInfoKHR-pDeviceIndices-parameter#---     If @deviceIndexCount@ is not @0@, @pDeviceIndices@ /must/ be a valid---     pointer to an array of @deviceIndexCount@ @uint32_t@ values------ -   #VUID-VkBindAccelerationStructureMemoryInfoKHR-commonparent# Both of---     @accelerationStructure@, and @memory@ /must/ have been created,---     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'------ = See Also------ 'Vulkan.Extensions.Handles.AccelerationStructureKHR',--- 'Vulkan.Core10.Handles.DeviceMemory',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'bindAccelerationStructureMemoryKHR',--- 'Vulkan.Extensions.VK_NV_ray_tracing.bindAccelerationStructureMemoryNV'-data BindAccelerationStructureMemoryInfoKHR = BindAccelerationStructureMemoryInfoKHR-  { -- | @accelerationStructure@ is the acceleration structure to be attached to-    -- memory.-    accelerationStructure :: AccelerationStructureKHR-  , -- | @memory@ is a 'Vulkan.Core10.Handles.DeviceMemory' object describing the-    -- device memory to attach.-    memory :: DeviceMemory-  , -- | @memoryOffset@ is the start offset of the region of memory that is to be-    -- bound to the acceleration structure. The number of bytes returned in the-    -- 'Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@ member in-    -- @memory@, starting from @memoryOffset@ bytes, will be bound to the-    -- specified acceleration structure.-    memoryOffset :: DeviceSize-  , -- | @pDeviceIndices@ is a pointer to an array of device indices.-    deviceIndices :: Vector Word32-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (BindAccelerationStructureMemoryInfoKHR)-#endif-deriving instance Show BindAccelerationStructureMemoryInfoKHR--instance ToCStruct BindAccelerationStructureMemoryInfoKHR where-  withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p BindAccelerationStructureMemoryInfoKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (accelerationStructure)-    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (memory)-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (memoryOffset)-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (deviceIndices)) :: Word32))-    pPDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (deviceIndices)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (deviceIndices)-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPDeviceIndices')-    lift $ f-  cStructSize = 56-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)-    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (zero)-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)-    pPDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPDeviceIndices')-    lift $ f--instance FromCStruct BindAccelerationStructureMemoryInfoKHR where-  peekCStruct p = do-    accelerationStructure <- peek @AccelerationStructureKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR))-    memory <- peek @DeviceMemory ((p `plusPtr` 24 :: Ptr DeviceMemory))-    memoryOffset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))-    deviceIndexCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))-    pDeviceIndices <- peek @(Ptr Word32) ((p `plusPtr` 48 :: Ptr (Ptr Word32)))-    pDeviceIndices' <- generateM (fromIntegral deviceIndexCount) (\i -> peek @Word32 ((pDeviceIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))-    pure $ BindAccelerationStructureMemoryInfoKHR-             accelerationStructure memory memoryOffset pDeviceIndices'--instance Zero BindAccelerationStructureMemoryInfoKHR where-  zero = BindAccelerationStructureMemoryInfoKHR-           zero-           zero-           zero-           mempty----- | VkWriteDescriptorSetAccelerationStructureKHR - Structure specifying--- acceleration structure descriptor info------ == Valid Usage------ -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-02236#---     @accelerationStructureCount@ /must/ be equal to @descriptorCount@ in---     the extended structure------ -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-02764#---     Each acceleration structure in @pAccelerationStructures@ /must/ have---     been created with 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR'------ == Valid Usage (Implicit)------ -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-sType-sType#---     @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR'------ -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-parameter#---     @pAccelerationStructures@ /must/ be a valid pointer to an array of---     @accelerationStructureCount@ valid---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handles------ -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-arraylength#---     @accelerationStructureCount@ /must/ be greater than @0@------ = See Also------ 'Vulkan.Extensions.Handles.AccelerationStructureKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data WriteDescriptorSetAccelerationStructureKHR = WriteDescriptorSetAccelerationStructureKHR-  { -- | @pAccelerationStructures@ are the acceleration structures to update.-    accelerationStructures :: Vector AccelerationStructureKHR }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (WriteDescriptorSetAccelerationStructureKHR)-#endif-deriving instance Show WriteDescriptorSetAccelerationStructureKHR--instance ToCStruct WriteDescriptorSetAccelerationStructureKHR where-  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p WriteDescriptorSetAccelerationStructureKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))-    pPAccelerationStructures' <- ContT $ allocaBytesAligned @AccelerationStructureKHR ((Data.Vector.length (accelerationStructures)) * 8) 8-    lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (accelerationStructures)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureKHR))) (pPAccelerationStructures')-    lift $ f-  cStructSize = 32-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    pPAccelerationStructures' <- ContT $ allocaBytesAligned @AccelerationStructureKHR ((Data.Vector.length (mempty)) * 8) 8-    lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (mempty)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureKHR))) (pPAccelerationStructures')-    lift $ f--instance FromCStruct WriteDescriptorSetAccelerationStructureKHR where-  peekCStruct p = do-    accelerationStructureCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))-    pAccelerationStructures <- peek @(Ptr AccelerationStructureKHR) ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureKHR)))-    pAccelerationStructures' <- generateM (fromIntegral accelerationStructureCount) (\i -> peek @AccelerationStructureKHR ((pAccelerationStructures `advancePtrBytes` (8 * (i)) :: Ptr AccelerationStructureKHR)))-    pure $ WriteDescriptorSetAccelerationStructureKHR-             pAccelerationStructures'--instance Zero WriteDescriptorSetAccelerationStructureKHR where-  zero = WriteDescriptorSetAccelerationStructureKHR-           mempty----- | VkAccelerationStructureMemoryRequirementsInfoKHR - Structure specifying--- acceleration to query for memory requirements------ == Valid Usage (Implicit)------ = See Also------ 'AccelerationStructureBuildTypeKHR',--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',--- 'AccelerationStructureMemoryRequirementsTypeKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'getAccelerationStructureMemoryRequirementsKHR'-data AccelerationStructureMemoryRequirementsInfoKHR = AccelerationStructureMemoryRequirementsInfoKHR-  { -- | @type@ selects the type of memory requirement being queried.-    -- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR' returns the-    -- memory requirements for the object itself.-    -- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR'-    -- returns the memory requirements for the scratch memory when doing a-    -- build.-    -- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR'-    -- returns the memory requirements for the scratch memory when doing an-    -- update.-    ---    -- #VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-type-parameter#-    -- @type@ /must/ be a valid-    -- 'AccelerationStructureMemoryRequirementsTypeKHR' value-    type' :: AccelerationStructureMemoryRequirementsTypeKHR-  , -- | @buildType@ selects the build types whose memory requirements are being-    -- queried.-    ---    -- #VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-buildType-parameter#-    -- @buildType@ /must/ be a valid 'AccelerationStructureBuildTypeKHR' value-    buildType :: AccelerationStructureBuildTypeKHR-  , -- | @accelerationStructure@ is the acceleration structure to be queried for-    -- memory requirements.-    ---    -- #VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-accelerationStructure-parameter#-    -- @accelerationStructure@ /must/ be a valid-    -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle-    accelerationStructure :: AccelerationStructureKHR-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureMemoryRequirementsInfoKHR)-#endif-deriving instance Show AccelerationStructureMemoryRequirementsInfoKHR--instance ToCStruct AccelerationStructureMemoryRequirementsInfoKHR where-  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureMemoryRequirementsInfoKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeKHR)) (type')-    poke ((p `plusPtr` 20 :: Ptr AccelerationStructureBuildTypeKHR)) (buildType)-    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (accelerationStructure)-    f-  cStructSize = 32-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeKHR)) (zero)-    poke ((p `plusPtr` 20 :: Ptr AccelerationStructureBuildTypeKHR)) (zero)-    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (zero)-    f--instance FromCStruct AccelerationStructureMemoryRequirementsInfoKHR where-  peekCStruct p = do-    type' <- peek @AccelerationStructureMemoryRequirementsTypeKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeKHR))-    buildType <- peek @AccelerationStructureBuildTypeKHR ((p `plusPtr` 20 :: Ptr AccelerationStructureBuildTypeKHR))-    accelerationStructure <- peek @AccelerationStructureKHR ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR))-    pure $ AccelerationStructureMemoryRequirementsInfoKHR-             type' buildType accelerationStructure--instance Storable AccelerationStructureMemoryRequirementsInfoKHR where-  sizeOf ~_ = 32-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero AccelerationStructureMemoryRequirementsInfoKHR where-  zero = AccelerationStructureMemoryRequirementsInfoKHR-           zero-           zero-           zero----- | VkPhysicalDeviceRayTracingFeaturesKHR - Structure describing the ray--- tracing features that can be supported by an implementation------ = Members------ The members of the 'PhysicalDeviceRayTracingFeaturesKHR' structure--- describe the following features:------ = Description------ -   #features-raytracing# @rayTracing@ indicates whether the---     implementation supports ray tracing functionality. See---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing Ray Tracing>.------ -   #features-raytracing-sghcapturereplay#---     @rayTracingShaderGroupHandleCaptureReplay@ indicates whether the---     implementation supports saving and reusing shader group handles,---     e.g. for trace capture and replay.------ -   #features-raytracing-sghcapturereplaymixed#---     @rayTracingShaderGroupHandleCaptureReplayMixed@ indicates whether---     the implementation supports reuse of shader group handles being---     arbitrarily mixed with creation of non-reused shader group handles.---     If this is 'Vulkan.Core10.FundamentalTypes.FALSE', all reused shader---     group handles /must/ be specified before any non-reused handles---     /may/ be created.------ -   #features-raytracing-ascapturereplay#---     @rayTracingAccelerationStructureCaptureReplay@ indicates whether the---     implementation supports saving and reusing acceleration structure---     device addresses, e.g. for trace capture and replay.------ -   #features-raytracing-indirecttraceray# @rayTracingIndirectTraceRays@---     indicates whether the implementation supports indirect trace ray---     commands, e.g. 'cmdTraceRaysIndirectKHR'.------ -   #features-raytracing-indirectasbuild#---     @rayTracingIndirectAccelerationStructureBuild@ indicates whether the---     implementation supports indirect acceleration structure build---     commands, e.g. 'cmdBuildAccelerationStructureIndirectKHR'.------ -   #features-raytracing-hostascmds#---     @rayTracingHostAccelerationStructureCommands@ indicates whether the---     implementation supports host side acceleration structure commands,---     e.g. 'buildAccelerationStructureKHR',---     'copyAccelerationStructureKHR',---     'copyAccelerationStructureToMemoryKHR',---     'copyMemoryToAccelerationStructureKHR',---     'writeAccelerationStructuresPropertiesKHR'.------ -   #features-rayQuery# @rayQuery@ indicates whether the implementation---     supports ray query (@OpRayQueryProceedKHR@) functionality.------ -   #features-rayTracingPrimitiveCulling# @rayTracingPrimitiveCulling@---     indicates whether the implementation supports---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-traversal-culling-primitive primitive culling during ray traversal>.------ If the 'PhysicalDeviceRayTracingFeaturesKHR' structure is included in--- the @pNext@ chain of--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',--- it is filled with values indicating whether the feature is supported.--- 'PhysicalDeviceRayTracingFeaturesKHR' /can/ also be used in the @pNext@--- chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the features.------ == Valid Usage------ -   #VUID-VkPhysicalDeviceRayTracingFeaturesKHR-rayTracingShaderGroupHandleCaptureReplayMixed-03348#---     If @rayTracingShaderGroupHandleCaptureReplayMixed@ is---     'Vulkan.Core10.FundamentalTypes.TRUE',---     @rayTracingShaderGroupHandleCaptureReplay@ /must/ also be---     'Vulkan.Core10.FundamentalTypes.TRUE'------ == Valid Usage (Implicit)------ -   #VUID-VkPhysicalDeviceRayTracingFeaturesKHR-sType-sType# @sType@---     /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR'------ = See Also------ 'Vulkan.Core10.FundamentalTypes.Bool32',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data PhysicalDeviceRayTracingFeaturesKHR = PhysicalDeviceRayTracingFeaturesKHR-  { -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracing"-    rayTracing :: Bool-  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracingShaderGroupHandleCaptureReplay"-    rayTracingShaderGroupHandleCaptureReplay :: Bool-  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracingShaderGroupHandleCaptureReplayMixed"-    rayTracingShaderGroupHandleCaptureReplayMixed :: Bool-  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracingAccelerationStructureCaptureReplay"-    rayTracingAccelerationStructureCaptureReplay :: Bool-  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracingIndirectTraceRays"-    rayTracingIndirectTraceRays :: Bool-  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracingIndirectAccelerationStructureBuild"-    rayTracingIndirectAccelerationStructureBuild :: Bool-  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracingHostAccelerationStructureCommands"-    rayTracingHostAccelerationStructureCommands :: Bool-  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayQuery"-    rayQuery :: Bool-  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracingPrimitiveCulling"-    rayTracingPrimitiveCulling :: Bool-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (PhysicalDeviceRayTracingFeaturesKHR)-#endif-deriving instance Show PhysicalDeviceRayTracingFeaturesKHR--instance ToCStruct PhysicalDeviceRayTracingFeaturesKHR where-  withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PhysicalDeviceRayTracingFeaturesKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (rayTracing))-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (rayTracingShaderGroupHandleCaptureReplay))-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (rayTracingShaderGroupHandleCaptureReplayMixed))-    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (rayTracingAccelerationStructureCaptureReplay))-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (rayTracingIndirectTraceRays))-    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (rayTracingIndirectAccelerationStructureBuild))-    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (rayTracingHostAccelerationStructureCommands))-    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (rayQuery))-    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (rayTracingPrimitiveCulling))-    f-  cStructSize = 56-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))-    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))-    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))-    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))-    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))-    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))-    f--instance FromCStruct PhysicalDeviceRayTracingFeaturesKHR where-  peekCStruct p = do-    rayTracing <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))-    rayTracingShaderGroupHandleCaptureReplay <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))-    rayTracingShaderGroupHandleCaptureReplayMixed <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))-    rayTracingAccelerationStructureCaptureReplay <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))-    rayTracingIndirectTraceRays <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))-    rayTracingIndirectAccelerationStructureBuild <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))-    rayTracingHostAccelerationStructureCommands <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))-    rayQuery <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))-    rayTracingPrimitiveCulling <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))-    pure $ PhysicalDeviceRayTracingFeaturesKHR-             (bool32ToBool rayTracing) (bool32ToBool rayTracingShaderGroupHandleCaptureReplay) (bool32ToBool rayTracingShaderGroupHandleCaptureReplayMixed) (bool32ToBool rayTracingAccelerationStructureCaptureReplay) (bool32ToBool rayTracingIndirectTraceRays) (bool32ToBool rayTracingIndirectAccelerationStructureBuild) (bool32ToBool rayTracingHostAccelerationStructureCommands) (bool32ToBool rayQuery) (bool32ToBool rayTracingPrimitiveCulling)--instance Storable PhysicalDeviceRayTracingFeaturesKHR where-  sizeOf ~_ = 56-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero PhysicalDeviceRayTracingFeaturesKHR where-  zero = PhysicalDeviceRayTracingFeaturesKHR-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero----- | VkPhysicalDeviceRayTracingPropertiesKHR - Properties of the physical--- device for ray tracing------ = Description------ If the 'PhysicalDeviceRayTracingPropertiesKHR' structure is included in--- the @pNext@ chain of--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',--- it is filled with the implementation-dependent limits.------ Limits specified by this structure /must/ match those specified with the--- same name in--- 'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'.------ == Valid Usage (Implicit)------ = See Also------ 'Vulkan.Core10.Enums.StructureType.StructureType'-data PhysicalDeviceRayTracingPropertiesKHR = PhysicalDeviceRayTracingPropertiesKHR-  { -- | @shaderGroupHandleSize@ size in bytes of the shader header.-    shaderGroupHandleSize :: Word32-  , -- | #limits-maxRecursionDepth# @maxRecursionDepth@ is the maximum number of-    -- levels of recursion allowed in a trace command.-    maxRecursionDepth :: Word32-  , -- | @maxShaderGroupStride@ is the maximum stride in bytes allowed between-    -- shader groups in the SBT.-    maxShaderGroupStride :: Word32-  , -- | @shaderGroupBaseAlignment@ is the required alignment in bytes for the-    -- base of the SBTs.-    shaderGroupBaseAlignment :: Word32-  , -- | @maxGeometryCount@ is the maximum number of geometries in the bottom-    -- level acceleration structure.-    maxGeometryCount :: Word64-  , -- | @maxInstanceCount@ is the maximum number of instances in the top level-    -- acceleration structure.-    maxInstanceCount :: Word64-  , -- | @maxPrimitiveCount@ is the maximum number of triangles or AABBs in all-    -- geometries in the bottom level acceleration structure.-    maxPrimitiveCount :: Word64-  , -- | @maxDescriptorSetAccelerationStructures@ is the maximum number of-    -- acceleration structure descriptors that are allowed in a descriptor set.-    maxDescriptorSetAccelerationStructures :: Word32-  , -- | @shaderGroupHandleCaptureReplaySize@ is the number of bytes for the-    -- information required to do capture and replay for shader group handles.-    shaderGroupHandleCaptureReplaySize :: Word32-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (PhysicalDeviceRayTracingPropertiesKHR)-#endif-deriving instance Show PhysicalDeviceRayTracingPropertiesKHR--instance ToCStruct PhysicalDeviceRayTracingPropertiesKHR where-  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PhysicalDeviceRayTracingPropertiesKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Word32)) (shaderGroupHandleSize)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxRecursionDepth)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxShaderGroupStride)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (shaderGroupBaseAlignment)-    poke ((p `plusPtr` 32 :: Ptr Word64)) (maxGeometryCount)-    poke ((p `plusPtr` 40 :: Ptr Word64)) (maxInstanceCount)-    poke ((p `plusPtr` 48 :: Ptr Word64)) (maxPrimitiveCount)-    poke ((p `plusPtr` 56 :: Ptr Word32)) (maxDescriptorSetAccelerationStructures)-    poke ((p `plusPtr` 60 :: Ptr Word32)) (shaderGroupHandleCaptureReplaySize)-    f-  cStructSize = 64-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)-    poke ((p `plusPtr` 40 :: Ptr Word64)) (zero)-    poke ((p `plusPtr` 48 :: Ptr Word64)) (zero)-    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 60 :: Ptr Word32)) (zero)-    f--instance FromCStruct PhysicalDeviceRayTracingPropertiesKHR where-  peekCStruct p = do-    shaderGroupHandleSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))-    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    maxShaderGroupStride <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))-    shaderGroupBaseAlignment <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))-    maxGeometryCount <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))-    maxInstanceCount <- peek @Word64 ((p `plusPtr` 40 :: Ptr Word64))-    maxPrimitiveCount <- peek @Word64 ((p `plusPtr` 48 :: Ptr Word64))-    maxDescriptorSetAccelerationStructures <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))-    shaderGroupHandleCaptureReplaySize <- peek @Word32 ((p `plusPtr` 60 :: Ptr Word32))-    pure $ PhysicalDeviceRayTracingPropertiesKHR-             shaderGroupHandleSize maxRecursionDepth maxShaderGroupStride shaderGroupBaseAlignment maxGeometryCount maxInstanceCount maxPrimitiveCount maxDescriptorSetAccelerationStructures shaderGroupHandleCaptureReplaySize--instance Storable PhysicalDeviceRayTracingPropertiesKHR where-  sizeOf ~_ = 64-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero PhysicalDeviceRayTracingPropertiesKHR where-  zero = PhysicalDeviceRayTracingPropertiesKHR-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero----- | VkStridedBufferRegionKHR - Structure specifying a region of a VkBuffer--- with a stride------ == Valid Usage------ -   #VUID-VkStridedBufferRegionKHR-buffer-03515# If @buffer@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @size@ plus @offset@---     /must/ be less than or equal to the size of @buffer@------ -   #VUID-VkStridedBufferRegionKHR-buffer-03516# If @buffer@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @stride@ /must/ be less---     than the size of @buffer@------ == Valid Usage (Implicit)------ -   #VUID-VkStridedBufferRegionKHR-buffer-parameter# If @buffer@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @buffer@ /must/ be a valid---     'Vulkan.Core10.Handles.Buffer' handle------ = See Also------ 'Vulkan.Core10.Handles.Buffer',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'cmdTraceRaysIndirectKHR',--- 'cmdTraceRaysKHR'-data StridedBufferRegionKHR = StridedBufferRegionKHR-  { -- | @buffer@ is the buffer containing this region.-    buffer :: Buffer-  , -- | @offset@ is the byte offset in @buffer@ at which the region starts.-    offset :: DeviceSize-  , -- | @stride@ is the byte stride between consecutive elements.-    stride :: DeviceSize-  , -- | @size@ is the size in bytes of the region starting at @offset@.-    size :: DeviceSize-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (StridedBufferRegionKHR)-#endif-deriving instance Show StridedBufferRegionKHR--instance ToCStruct StridedBufferRegionKHR where-  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p StridedBufferRegionKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr Buffer)) (buffer)-    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (offset)-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (stride)-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (size)-    f-  cStructSize = 32-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)-    f--instance FromCStruct StridedBufferRegionKHR where-  peekCStruct p = do-    buffer <- peek @Buffer ((p `plusPtr` 0 :: Ptr Buffer))-    offset <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize))-    stride <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))-    size <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))-    pure $ StridedBufferRegionKHR-             buffer offset stride size--instance Storable StridedBufferRegionKHR where-  sizeOf ~_ = 32-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero StridedBufferRegionKHR where-  zero = StridedBufferRegionKHR-           zero-           zero-           zero-           zero----- | VkTraceRaysIndirectCommandKHR - Structure specifying the parameters of--- an indirect trace ray command------ = Description------ The members of 'TraceRaysIndirectCommandKHR' have the same meaning as--- the similarly named parameters of 'cmdTraceRaysKHR'.------ == Valid Usage------ = See Also------ No cross-references are available-data TraceRaysIndirectCommandKHR = TraceRaysIndirectCommandKHR-  { -- | @width@ is the width of the ray trace query dimensions.-    ---    -- #VUID-VkTraceRaysIndirectCommandKHR-width-03519# @width@ /must/ be less-    -- than or equal to-    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]-    width :: Word32-  , -- | @height@ is height of the ray trace query dimensions.-    ---    -- #VUID-VkTraceRaysIndirectCommandKHR-height-03520# @height@ /must/ be-    -- less than or equal to-    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]-    height :: Word32-  , -- | @depth@ is depth of the ray trace query dimensions.-    ---    -- #VUID-VkTraceRaysIndirectCommandKHR-depth-03521# @depth@ /must/ be less-    -- than or equal to-    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]-    depth :: Word32-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (TraceRaysIndirectCommandKHR)-#endif-deriving instance Show TraceRaysIndirectCommandKHR--instance ToCStruct TraceRaysIndirectCommandKHR where-  withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p TraceRaysIndirectCommandKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr Word32)) (width)-    poke ((p `plusPtr` 4 :: Ptr Word32)) (height)-    poke ((p `plusPtr` 8 :: Ptr Word32)) (depth)-    f-  cStructSize = 12-  cStructAlignment = 4-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)-    f--instance FromCStruct TraceRaysIndirectCommandKHR where-  peekCStruct p = do-    width <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))-    height <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))-    depth <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))-    pure $ TraceRaysIndirectCommandKHR-             width height depth--instance Storable TraceRaysIndirectCommandKHR where-  sizeOf ~_ = 12-  alignment ~_ = 4-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero TraceRaysIndirectCommandKHR where-  zero = TraceRaysIndirectCommandKHR-           zero-           zero-           zero----- | VkAccelerationStructureGeometryTrianglesDataKHR - Structure specifying a--- triangle geometry in a bottom-level acceleration structure------ == Valid Usage (Implicit)------ -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-sType#---     @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR'------ -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-pNext-pNext#---     @pNext@ /must/ be @NULL@------ -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter#---     @vertexFormat@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format'---     value------ -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexData-parameter#---     @vertexData@ /must/ be a valid 'DeviceOrHostAddressConstKHR' union------ -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter#---     @indexType@ /must/ be a valid---     'Vulkan.Core10.Enums.IndexType.IndexType' value------ -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexData-parameter#---     If @indexData@ is not @0@, @indexData@ /must/ be a valid---     'DeviceOrHostAddressConstKHR' union------ -   #VUID-VkAccelerationStructureGeometryTrianglesDataKHR-transformData-parameter#---     If @transformData@ is not @0@, @transformData@ /must/ be a valid---     'DeviceOrHostAddressConstKHR' union------ = See Also------ 'AccelerationStructureGeometryDataKHR', 'DeviceOrHostAddressConstKHR',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',--- 'Vulkan.Core10.Enums.Format.Format',--- 'Vulkan.Core10.Enums.IndexType.IndexType',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data AccelerationStructureGeometryTrianglesDataKHR = AccelerationStructureGeometryTrianglesDataKHR-  { -- | @vertexFormat@ is the 'Vulkan.Core10.Enums.Format.Format' of each vertex-    -- element.-    vertexFormat :: Format-  , -- | @vertexData@ is a device or host address to memory containing vertex-    -- data for this geometry.-    vertexData :: DeviceOrHostAddressConstKHR-  , -- | @vertexStride@ is the stride in bytes between each vertex.-    vertexStride :: DeviceSize-  , -- | @indexType@ is the 'Vulkan.Core10.Enums.IndexType.IndexType' of each-    -- index element.-    indexType :: IndexType-  , -- | @indexData@ is a device or host address to memory containing index data-    -- for this geometry.-    indexData :: DeviceOrHostAddressConstKHR-  , -- | @transformData@ is a device or host address to memory containing an-    -- optional reference to a 'TransformMatrixKHR' structure defining a-    -- transformation that should be applied to vertices in this geometry.-    transformData :: DeviceOrHostAddressConstKHR-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureGeometryTrianglesDataKHR)-#endif-deriving instance Show AccelerationStructureGeometryTrianglesDataKHR--instance ToCStruct AccelerationStructureGeometryTrianglesDataKHR where-  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureGeometryTrianglesDataKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (vertexFormat)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (vertexData) . ($ ())-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (vertexStride)-    lift $ poke ((p `plusPtr` 40 :: Ptr IndexType)) (indexType)-    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr DeviceOrHostAddressConstKHR)) (indexData) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr DeviceOrHostAddressConstKHR)) (transformData) . ($ ())-    lift $ f-  cStructSize = 64-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)-    lift $ poke ((p `plusPtr` 40 :: Ptr IndexType)) (zero)-    lift $ f--instance Zero AccelerationStructureGeometryTrianglesDataKHR where-  zero = AccelerationStructureGeometryTrianglesDataKHR-           zero-           zero-           zero-           zero-           zero-           zero----- | VkAccelerationStructureGeometryAabbsDataKHR - Structure specifying--- axis-aligned bounding box geometry in a bottom-level acceleration--- structure------ == Valid Usage (Implicit)------ = See Also------ 'AccelerationStructureGeometryDataKHR', 'DeviceOrHostAddressConstKHR',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data AccelerationStructureGeometryAabbsDataKHR = AccelerationStructureGeometryAabbsDataKHR-  { -- | @data@ is a device or host address to memory containing-    -- 'AabbPositionsKHR' structures containing position data for each-    -- axis-aligned bounding box in the geometry.-    ---    -- #VUID-VkAccelerationStructureGeometryAabbsDataKHR-data-03544# @data@-    -- /must/ be aligned to @8@ bytes-    ---    -- #VUID-VkAccelerationStructureGeometryAabbsDataKHR-data-parameter# @data@-    -- /must/ be a valid 'DeviceOrHostAddressConstKHR' union-    data' :: DeviceOrHostAddressConstKHR-  , -- | @stride@ is the stride in bytes between each entry in @data@.-    ---    -- #VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03545# @stride@-    -- /must/ be a multiple of @8@-    stride :: DeviceSize-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureGeometryAabbsDataKHR)-#endif-deriving instance Show AccelerationStructureGeometryAabbsDataKHR--instance ToCStruct AccelerationStructureGeometryAabbsDataKHR where-  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureGeometryAabbsDataKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (data') . ($ ())-    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (stride)-    lift $ f-  cStructSize = 32-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)-    lift $ f--instance Zero AccelerationStructureGeometryAabbsDataKHR where-  zero = AccelerationStructureGeometryAabbsDataKHR-           zero-           zero----- | VkAccelerationStructureGeometryInstancesDataKHR - Structure specifying a--- geometry consisting of instances of other acceleration structures------ == Valid Usage------ -   #VUID-VkAccelerationStructureGeometryInstancesDataKHR-data-03549#---     @data@ /must/ be aligned to @16@ bytes------ -   #VUID-VkAccelerationStructureGeometryInstancesDataKHR-arrayOfPointers-03550#---     If @arrayOfPointers@ is true, each pointer /must/ be aligned to @16@---     bytes------ == Valid Usage (Implicit)------ -   #VUID-VkAccelerationStructureGeometryInstancesDataKHR-sType-sType#---     @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR'------ -   #VUID-VkAccelerationStructureGeometryInstancesDataKHR-pNext-pNext#---     @pNext@ /must/ be @NULL@------ -   #VUID-VkAccelerationStructureGeometryInstancesDataKHR-data-parameter#---     @data@ /must/ be a valid 'DeviceOrHostAddressConstKHR' union------ = See Also------ 'AccelerationStructureGeometryDataKHR',--- 'Vulkan.Core10.FundamentalTypes.Bool32', 'DeviceOrHostAddressConstKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data AccelerationStructureGeometryInstancesDataKHR = AccelerationStructureGeometryInstancesDataKHR-  { -- | @arrayOfPointers@ specifies whether @data@ is used as an array of-    -- addresses or just an array.-    arrayOfPointers :: Bool-  , -- | @data@ is either the address of an array of device or host addresses-    -- referencing individual 'AccelerationStructureInstanceKHR' structures if-    -- @arrayOfPointers@ is 'Vulkan.Core10.FundamentalTypes.TRUE', or the-    -- address of an array of 'AccelerationStructureInstanceKHR' structures.-    data' :: DeviceOrHostAddressConstKHR-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureGeometryInstancesDataKHR)-#endif-deriving instance Show AccelerationStructureGeometryInstancesDataKHR--instance ToCStruct AccelerationStructureGeometryInstancesDataKHR where-  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureGeometryInstancesDataKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (arrayOfPointers))-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (data') . ($ ())-    lift $ f-  cStructSize = 32-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())-    lift $ f--instance Zero AccelerationStructureGeometryInstancesDataKHR where-  zero = AccelerationStructureGeometryInstancesDataKHR-           zero-           zero----- | VkAccelerationStructureGeometryKHR - Structure specifying geometries to--- be built into an acceleration structure------ == Valid Usage------ -   #VUID-VkAccelerationStructureGeometryKHR-geometryType-03541# If---     @geometryType@ is 'GEOMETRY_TYPE_AABBS_KHR', the @aabbs@ member of---     @geometry@ /must/ be a valid---     'AccelerationStructureGeometryAabbsDataKHR' structure------ -   #VUID-VkAccelerationStructureGeometryKHR-geometryType-03542# If---     @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR', the @triangles@---     member of @geometry@ /must/ be a valid---     'AccelerationStructureGeometryTrianglesDataKHR' structure------ -   #VUID-VkAccelerationStructureGeometryKHR-geometryType-03543# If---     @geometryType@ is 'GEOMETRY_TYPE_INSTANCES_KHR', the @instances@---     member of @geometry@ /must/ be a valid---     'AccelerationStructureGeometryInstancesDataKHR' structure------ == Valid Usage (Implicit)------ -   #VUID-VkAccelerationStructureGeometryKHR-sType-sType# @sType@ /must/---     be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR'------ -   #VUID-VkAccelerationStructureGeometryKHR-pNext-pNext# @pNext@ /must/---     be @NULL@------ -   #VUID-VkAccelerationStructureGeometryKHR-geometryType-parameter#---     @geometryType@ /must/ be a valid 'GeometryTypeKHR' value------ -   #VUID-VkAccelerationStructureGeometryKHR-triangles-parameter# If---     @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR', the @triangles@---     member of @geometry@ /must/ be a valid---     'AccelerationStructureGeometryTrianglesDataKHR' structure------ -   #VUID-VkAccelerationStructureGeometryKHR-aabbs-parameter# If---     @geometryType@ is 'GEOMETRY_TYPE_AABBS_KHR', the @aabbs@ member of---     @geometry@ /must/ be a valid---     'AccelerationStructureGeometryAabbsDataKHR' structure------ -   #VUID-VkAccelerationStructureGeometryKHR-instances-parameter# If---     @geometryType@ is 'GEOMETRY_TYPE_INSTANCES_KHR', the @instances@---     member of @geometry@ /must/ be a valid---     'AccelerationStructureGeometryInstancesDataKHR' structure------ -   #VUID-VkAccelerationStructureGeometryKHR-flags-parameter# @flags@---     /must/ be a valid combination of 'GeometryFlagBitsKHR' values------ = See Also------ 'AccelerationStructureBuildGeometryInfoKHR',--- 'AccelerationStructureGeometryDataKHR', 'GeometryFlagsKHR',--- 'GeometryTypeKHR', 'Vulkan.Core10.Enums.StructureType.StructureType'-data AccelerationStructureGeometryKHR = AccelerationStructureGeometryKHR-  { -- | @geometryType@ describes which type of geometry this-    -- 'AccelerationStructureGeometryKHR' refers to.-    geometryType :: GeometryTypeKHR-  , -- | @geometry@ is a 'AccelerationStructureGeometryDataKHR' union describing-    -- the geometry data for the relevant geometry type.-    geometry :: AccelerationStructureGeometryDataKHR-  , -- | @flags@ is a bitmask of 'GeometryFlagBitsKHR' values describing-    -- additional properties of how the geometry should be built.-    flags :: GeometryFlagsKHR-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureGeometryKHR)-#endif-deriving instance Show AccelerationStructureGeometryKHR--instance ToCStruct AccelerationStructureGeometryKHR where-  withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureGeometryKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (geometryType)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureGeometryDataKHR)) (geometry) . ($ ())-    lift $ poke ((p `plusPtr` 88 :: Ptr GeometryFlagsKHR)) (flags)-    lift $ f-  cStructSize = 96-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureGeometryDataKHR)) (zero) . ($ ())-    lift $ f--instance Zero AccelerationStructureGeometryKHR where-  zero = AccelerationStructureGeometryKHR-           zero-           zero-           zero----- | VkAccelerationStructureBuildGeometryInfoKHR - Structure specifying the--- geometry data used to build an acceleration structure------ = Description------ Note------ Elements of @ppGeometries@ are accessed as follows, based on--- @geometryArrayOfPointers@:------ > if (geometryArrayOfPointers) {--- >     use *(ppGeometries[i]);--- > } else {--- >     use (*ppGeometries)[i];--- > }------ == Valid Usage------ -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-update-03537# If---     @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE',---     @srcAccelerationStructure@ /must/ not be---     'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-update-03538# If---     @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE',---     @srcAccelerationStructure@ /must/ have been built before with---     'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' set in---     'AccelerationStructureBuildGeometryInfoKHR'::@flags@------ -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-scratchData-03539#---     @scratchData@ /must/ have been created with---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RAY_TRACING_BIT_KHR'---     usage flag------ -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-update-03540# If---     @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE', the---     @srcAccelerationStructure@ and @dstAccelerationStructure@ objects---     /must/ either be the same object or not have any---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>------ == Valid Usage (Implicit)------ -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-sType#---     @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR'------ -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-pNext-pNext#---     @pNext@ /must/ be @NULL@ or a pointer to a valid instance of---     'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'------ -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-unique# The---     @sType@ value of each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-parameter#---     @type@ /must/ be a valid 'AccelerationStructureTypeKHR' value------ -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-parameter#---     @flags@ /must/ be a valid combination of---     'BuildAccelerationStructureFlagBitsKHR' values------ -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-srcAccelerationStructure-parameter#---     If @srcAccelerationStructure@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @srcAccelerationStructure@---     /must/ be a valid---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle------ -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-dstAccelerationStructure-parameter#---     @dstAccelerationStructure@ /must/ be a valid---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle------ -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-scratchData-parameter#---     @scratchData@ /must/ be a valid 'DeviceOrHostAddressKHR' union------ -   #VUID-VkAccelerationStructureBuildGeometryInfoKHR-commonparent# Both---     of @dstAccelerationStructure@, and @srcAccelerationStructure@ that---     are valid handles of non-ignored parameters /must/ have been---     created, allocated, or retrieved from the same---     'Vulkan.Core10.Handles.Device'------ = See Also------ 'AccelerationStructureGeometryKHR',--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',--- 'AccelerationStructureTypeKHR', 'Vulkan.Core10.FundamentalTypes.Bool32',--- 'BuildAccelerationStructureFlagsKHR', 'DeviceOrHostAddressKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'buildAccelerationStructureKHR',--- 'cmdBuildAccelerationStructureIndirectKHR',--- 'cmdBuildAccelerationStructureKHR'-data AccelerationStructureBuildGeometryInfoKHR (es :: [Type]) = AccelerationStructureBuildGeometryInfoKHR-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.-    next :: Chain es-  , -- | @type@ is a 'AccelerationStructureTypeKHR' value specifying the type of-    -- acceleration structure being built.-    type' :: AccelerationStructureTypeKHR-  , -- | @flags@ is a bitmask of 'BuildAccelerationStructureFlagBitsKHR'-    -- specifying additional parameters of the acceleration structure.-    flags :: BuildAccelerationStructureFlagsKHR-  , -- | @update@ specifies whether to update @dstAccelerationStructure@ with the-    -- data in @srcAccelerationStructure@ or not.-    update :: Bool-  , -- | @srcAccelerationStructure@ points to an existing acceleration structure-    -- that is to be used to update the @dst@ acceleration structure when-    -- @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE'.-    srcAccelerationStructure :: AccelerationStructureKHR-  , -- | @dstAccelerationStructure@ points to the target acceleration structure-    -- for the build.-    dstAccelerationStructure :: AccelerationStructureKHR-  , -- | @ppGeometries@ is either a pointer to an array of pointers to-    -- 'AccelerationStructureGeometryKHR' structures if-    -- @geometryArrayOfPointers@ is 'Vulkan.Core10.FundamentalTypes.TRUE', or a-    -- pointer to a pointer to an array of 'AccelerationStructureGeometryKHR'-    -- structures if it is 'Vulkan.Core10.FundamentalTypes.FALSE'. Each element-    -- of the array describes the data used to build each acceleration-    -- structure geometry.-    geometries :: Vector AccelerationStructureGeometryKHR-  , -- | @scratchData@ is the device or host address to memory that will be used-    -- as scratch memory for the build.-    scratchData :: DeviceOrHostAddressKHR-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureBuildGeometryInfoKHR (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (AccelerationStructureBuildGeometryInfoKHR es)--instance Extensible AccelerationStructureBuildGeometryInfoKHR where-  extensibleType = STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR-  setNext x next = x{next = next}-  getNext AccelerationStructureBuildGeometryInfoKHR{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends AccelerationStructureBuildGeometryInfoKHR e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @DeferredOperationInfoKHR = Just f-    | otherwise = Nothing--instance (Extendss AccelerationStructureBuildGeometryInfoKHR es, PokeChain es) => ToCStruct (AccelerationStructureBuildGeometryInfoKHR es) where-  withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureBuildGeometryInfoKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeKHR)) (type')-    lift $ poke ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsKHR)) (flags)-    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (update))-    lift $ poke ((p `plusPtr` 32 :: Ptr AccelerationStructureKHR)) (srcAccelerationStructure)-    lift $ poke ((p `plusPtr` 40 :: Ptr AccelerationStructureKHR)) (dstAccelerationStructure)-    lift $ poke ((p `plusPtr` 48 :: Ptr Bool32)) (FALSE)-    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (geometries)) :: Word32))-    pPpGeometries' <- ContT $ allocaBytesAligned @AccelerationStructureGeometryKHR ((Data.Vector.length (geometries)) * 96) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPpGeometries' `plusPtr` (96 * (i)) :: Ptr AccelerationStructureGeometryKHR) (e) . ($ ())) (geometries)-    ppGeometries'' <- ContT $ with (pPpGeometries')-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr AccelerationStructureGeometryKHR)))) ppGeometries''-    ContT $ pokeCStruct ((p `plusPtr` 64 :: Ptr DeviceOrHostAddressKHR)) (scratchData) . ($ ())-    lift $ f-  cStructSize = 72-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeKHR)) (zero)-    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ poke ((p `plusPtr` 40 :: Ptr AccelerationStructureKHR)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 64 :: Ptr DeviceOrHostAddressKHR)) (zero) . ($ ())-    lift $ f--instance es ~ '[] => Zero (AccelerationStructureBuildGeometryInfoKHR es) where-  zero = AccelerationStructureBuildGeometryInfoKHR-           ()-           zero-           zero-           zero-           zero-           zero-           mempty-           zero----- | VkAccelerationStructureBuildOffsetInfoKHR - Structure specifying build--- offsets and counts for acceleration structure builds------ = Description------ The primitive count and primitive offset are interpreted differently--- depending on the 'GeometryTypeKHR' used:------ -   For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR',---     @primitiveCount@ is the number of triangles to be built, where each---     triangle is treated as 3 vertices.------     -   If the geometry uses indices, @primitiveCount@ × 3 indices are---         consumed from---         'AccelerationStructureGeometryTrianglesDataKHR'::@indexData@,---         starting at an offset of @primitiveOffset@. The value of---         @firstVertex@ is added to the index values before fetching---         vertices.------     -   If the geometry does not use indices, @primitiveCount@ × 3---         vertices are consumed from---         'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@,---         starting at an offset of @primitiveOffset@ +---         'AccelerationStructureGeometryTrianglesDataKHR'::@vertexStride@---         × @firstVertex@.------     -   A single 'TransformMatrixKHR' structure is consumed from---         'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@,---         at an offset of @transformOffset@. This transformation matrix is---         used by all triangles.------ -   For geometries of type 'GEOMETRY_TYPE_AABBS_KHR', @primitiveCount@---     is the number of axis-aligned bounding boxes. @primitiveCount@---     'AabbPositionsKHR' structures are consumed from---     'AccelerationStructureGeometryAabbsDataKHR'::@data@, starting at an---     offset of @primitiveOffset@.------ -   For geometries of type 'GEOMETRY_TYPE_INSTANCES_KHR',---     @primitiveCount@ is the number of acceleration structures.---     @primitiveCount@ 'AccelerationStructureInstanceKHR' structures are---     consumed from---     'AccelerationStructureGeometryInstancesDataKHR'::@data@, starting at---     an offset of @primitiveOffset@.------ == Valid Usage------ -   #VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03551#---     For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', if the---     geometry uses indices, the offset @primitiveOffset@ from---     'AccelerationStructureGeometryTrianglesDataKHR'::@indexData@ /must/---     be a multiple of the element size of---     'AccelerationStructureGeometryTrianglesDataKHR'::@indexType@------ -   #VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03552#---     For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', if the---     geometry doesn’t use indices, the offset @primitiveOffset@ from---     'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@ /must/---     be a multiple of the component size of---     'AccelerationStructureGeometryTrianglesDataKHR'::@vertexFormat@------ -   #VUID-VkAccelerationStructureBuildOffsetInfoKHR-transformOffset-03553#---     For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', the offset---     @transformOffset@ from---     'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@---     /must/ be a multiple of 16------ -   #VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03554#---     For geometries of type 'GEOMETRY_TYPE_AABBS_KHR', the offset---     @primitiveOffset@ from---     'AccelerationStructureGeometryAabbsDataKHR'::@data@ /must/ be a---     multiple of 8------ -   #VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03555#---     For geometries of type 'GEOMETRY_TYPE_INSTANCES_KHR', the offset---     @primitiveOffset@ from---     'AccelerationStructureGeometryInstancesDataKHR'::@data@ /must/ be a---     multiple of 16 \/\/ TODO - Almost certainly should be more here------ = See Also------ 'buildAccelerationStructureKHR', 'cmdBuildAccelerationStructureKHR'-data AccelerationStructureBuildOffsetInfoKHR = AccelerationStructureBuildOffsetInfoKHR-  { -- | @primitiveCount@ defines the number of primitives for a corresponding-    -- acceleration structure geometry.-    primitiveCount :: Word32-  , -- | @primitiveOffset@ defines an offset in bytes into the memory where-    -- primitive data is defined.-    primitiveOffset :: Word32-  , -- | @firstVertex@ is the index of the first vertex to build from for-    -- triangle geometry.-    firstVertex :: Word32-  , -- | @transformOffset@ defines an offset in bytes into the memory where a-    -- transform matrix is defined.-    transformOffset :: Word32-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureBuildOffsetInfoKHR)-#endif-deriving instance Show AccelerationStructureBuildOffsetInfoKHR--instance ToCStruct AccelerationStructureBuildOffsetInfoKHR where-  withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureBuildOffsetInfoKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr Word32)) (primitiveCount)-    poke ((p `plusPtr` 4 :: Ptr Word32)) (primitiveOffset)-    poke ((p `plusPtr` 8 :: Ptr Word32)) (firstVertex)-    poke ((p `plusPtr` 12 :: Ptr Word32)) (transformOffset)-    f-  cStructSize = 16-  cStructAlignment = 4-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)-    f--instance FromCStruct AccelerationStructureBuildOffsetInfoKHR where-  peekCStruct p = do-    primitiveCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))-    primitiveOffset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))-    firstVertex <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))-    transformOffset <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))-    pure $ AccelerationStructureBuildOffsetInfoKHR-             primitiveCount primitiveOffset firstVertex transformOffset--instance Storable AccelerationStructureBuildOffsetInfoKHR where-  sizeOf ~_ = 16-  alignment ~_ = 4-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero AccelerationStructureBuildOffsetInfoKHR where-  zero = AccelerationStructureBuildOffsetInfoKHR-           zero-           zero-           zero-           zero----- | VkAccelerationStructureCreateGeometryTypeInfoKHR - Structure specifying--- the shape of geometries that will be built into an acceleration--- structure------ = Description------ When @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR':------ -   if @indexType@ is---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then this---     structure describes a set of triangles.------ -   if @indexType@ is not---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then this---     structure describes a set of indexed triangles.------ == Valid Usage------ -   #VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-geometryType-03501#---     If @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR', @vertexFormat@---     /must/ support the---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'---     in---     'Vulkan.Core10.DeviceInitialization.FormatProperties'::@bufferFeatures@---     as returned by---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'------ -   #VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-geometryType-03502#---     If @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR', @indexType@---     /must/ be 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'------ == Valid Usage (Implicit)------ -   #VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-sType-sType#---     @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR'------ -   #VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-pNext-pNext#---     @pNext@ /must/ be @NULL@------ -   #VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-geometryType-parameter#---     @geometryType@ /must/ be a valid 'GeometryTypeKHR' value------ -   #VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-indexType-parameter#---     @indexType@ /must/ be a valid---     'Vulkan.Core10.Enums.IndexType.IndexType' value------ -   #VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-vertexFormat-parameter#---     If @vertexFormat@ is not @0@, @vertexFormat@ /must/ be a valid---     'Vulkan.Core10.Enums.Format.Format' value------ = See Also------ 'AccelerationStructureCreateInfoKHR',--- 'Vulkan.Core10.FundamentalTypes.Bool32',--- 'Vulkan.Core10.Enums.Format.Format', 'GeometryTypeKHR',--- 'Vulkan.Core10.Enums.IndexType.IndexType',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data AccelerationStructureCreateGeometryTypeInfoKHR = AccelerationStructureCreateGeometryTypeInfoKHR-  { -- | @geometryType@ is a 'GeometryTypeKHR' that describes the type of an-    -- acceleration structure geometry.-    geometryType :: GeometryTypeKHR-  , -- | @maxPrimitiveCount@ describes the maximum number of primitives that-    -- /can/ be built into an acceleration structure geometry.-    maxPrimitiveCount :: Word32-  , -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' that-    -- describes the index type used to build this geometry when @geometryType@-    -- is 'GEOMETRY_TYPE_TRIANGLES_KHR'.-    indexType :: IndexType-  , -- | @maxVertexCount@ describes the maximum vertex count that /can/ be used-    -- to build an acceleration structure geometry when @geometryType@ is-    -- 'GEOMETRY_TYPE_TRIANGLES_KHR'.-    maxVertexCount :: Word32-  , -- | @vertexFormat@ is a 'Vulkan.Core10.Enums.Format.Format' that describes-    -- the vertex format used to build this geometry when @geometryType@ is-    -- 'GEOMETRY_TYPE_TRIANGLES_KHR'.-    vertexFormat :: Format-  , -- | @allowsTransforms@ indicates whether transform data /can/ be used by-    -- this acceleration structure or not, when @geometryType@ is-    -- 'GEOMETRY_TYPE_TRIANGLES_KHR'.-    allowsTransforms :: Bool-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureCreateGeometryTypeInfoKHR)-#endif-deriving instance Show AccelerationStructureCreateGeometryTypeInfoKHR--instance ToCStruct AccelerationStructureCreateGeometryTypeInfoKHR where-  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureCreateGeometryTypeInfoKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (geometryType)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxPrimitiveCount)-    poke ((p `plusPtr` 24 :: Ptr IndexType)) (indexType)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (maxVertexCount)-    poke ((p `plusPtr` 32 :: Ptr Format)) (vertexFormat)-    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (allowsTransforms))-    f-  cStructSize = 40-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (zero)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 24 :: Ptr IndexType)) (zero)-    f--instance FromCStruct AccelerationStructureCreateGeometryTypeInfoKHR where-  peekCStruct p = do-    geometryType <- peek @GeometryTypeKHR ((p `plusPtr` 16 :: Ptr GeometryTypeKHR))-    maxPrimitiveCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    indexType <- peek @IndexType ((p `plusPtr` 24 :: Ptr IndexType))-    maxVertexCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))-    vertexFormat <- peek @Format ((p `plusPtr` 32 :: Ptr Format))-    allowsTransforms <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))-    pure $ AccelerationStructureCreateGeometryTypeInfoKHR-             geometryType maxPrimitiveCount indexType maxVertexCount vertexFormat (bool32ToBool allowsTransforms)--instance Storable AccelerationStructureCreateGeometryTypeInfoKHR where-  sizeOf ~_ = 40-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero AccelerationStructureCreateGeometryTypeInfoKHR where-  zero = AccelerationStructureCreateGeometryTypeInfoKHR-           zero-           zero-           zero-           zero-           zero-           zero----- | VkAccelerationStructureCreateInfoKHR - Structure specifying the--- parameters of a newly created acceleration structure object------ = Description------ If @deviceAddress@ is zero, no specific address is requested.------ If @deviceAddress@ is not zero, @deviceAddress@ /must/ be an address--- retrieved from an identically created acceleration structure on the same--- implementation. The acceleration structure /must/ also be bound to an--- identically created 'Vulkan.Core10.Handles.DeviceMemory' object.------ Apps /should/ avoid creating acceleration structures with app-provided--- addresses and implementation-provided addresses in the same process, to--- reduce the likelihood of--- 'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'--- errors.------ == Valid Usage------ -   #VUID-VkAccelerationStructureCreateInfoKHR-compactedSize-03490# If---     @compactedSize@ is not @0@ then @maxGeometryCount@ /must/ be @0@------ -   #VUID-VkAccelerationStructureCreateInfoKHR-compactedSize-02993# If---     @compactedSize@ is @0@ then @maxGeometryCount@ /must/ not be @0@------ -   #VUID-VkAccelerationStructureCreateInfoKHR-type-03491# If @type@ is---     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' then---     @maxGeometryCount@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesKHR'::@maxGeometryCount@------ -   #VUID-VkAccelerationStructureCreateInfoKHR-type-03492# If @type@ is---     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' then the---     @maxPrimitiveCount@ member of each element of the @pGeometryInfos@---     array /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesKHR'::@maxInstanceCount@------ -   #VUID-VkAccelerationStructureCreateInfoKHR-maxPrimitiveCount-03493#---     The total number of triangles in all geometries /must/ be less than---     or equal to---     'PhysicalDeviceRayTracingPropertiesKHR'::@maxPrimitiveCount@------ -   #VUID-VkAccelerationStructureCreateInfoKHR-maxPrimitiveCount-03494#---     The total number of AABBs in all geometries /must/ be less than or---     equal to---     'PhysicalDeviceRayTracingPropertiesKHR'::@maxPrimitiveCount@------ -   #VUID-VkAccelerationStructureCreateInfoKHR-type-03495# If @type@ is---     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' and @compactedSize@ is---     @0@, @maxGeometryCount@ /must/ be @1@------ -   #VUID-VkAccelerationStructureCreateInfoKHR-type-03496# If @type@ is---     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' and @compactedSize@ is---     @0@, the @geometryType@ member of elements of @pGeometryInfos@---     /must/ be 'GEOMETRY_TYPE_INSTANCES_KHR'------ -   #VUID-VkAccelerationStructureCreateInfoKHR-type-03497# If @type@ is---     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' and @compactedSize@---     is @0@, the @geometryType@ member of elements of @pGeometryInfos@---     /must/ not be 'GEOMETRY_TYPE_INSTANCES_KHR'------ -   #VUID-VkAccelerationStructureCreateInfoKHR-type-03498# If @type@ is---     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' then the---     @geometryType@ member of each geometry in @pGeometryInfos@ /must/ be---     the same------ -   #VUID-VkAccelerationStructureCreateInfoKHR-flags-03499# If @flags@---     has the 'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR' bit---     set, then it /must/ not have the---     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR' bit set------ -   #VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-03500# If---     @deviceAddress@ is not @0@,---     'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingAccelerationStructureCaptureReplay@---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'------ == Valid Usage (Implicit)------ -   #VUID-VkAccelerationStructureCreateInfoKHR-sType-sType# @sType@---     /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR'------ -   #VUID-VkAccelerationStructureCreateInfoKHR-pNext-pNext# @pNext@---     /must/ be @NULL@------ -   #VUID-VkAccelerationStructureCreateInfoKHR-type-parameter# @type@---     /must/ be a valid 'AccelerationStructureTypeKHR' value------ -   #VUID-VkAccelerationStructureCreateInfoKHR-flags-parameter# @flags@---     /must/ be a valid combination of---     'BuildAccelerationStructureFlagBitsKHR' values------ -   #VUID-VkAccelerationStructureCreateInfoKHR-pGeometryInfos-parameter#---     If @maxGeometryCount@ is not @0@, @pGeometryInfos@ /must/ be a valid---     pointer to an array of @maxGeometryCount@ valid---     'AccelerationStructureCreateGeometryTypeInfoKHR' structures------ = See Also------ 'AccelerationStructureCreateGeometryTypeInfoKHR',--- 'AccelerationStructureTypeKHR', 'BuildAccelerationStructureFlagsKHR',--- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'createAccelerationStructureKHR'-data AccelerationStructureCreateInfoKHR = AccelerationStructureCreateInfoKHR-  { -- | @compactedSize@ is the size from the result of-    -- 'cmdWriteAccelerationStructuresPropertiesKHR' if this acceleration-    -- structure is going to be the target of a compacting copy.-    compactedSize :: DeviceSize-  , -- | @type@ is a 'AccelerationStructureTypeKHR' value specifying the type of-    -- acceleration structure that will be created.-    type' :: AccelerationStructureTypeKHR-  , -- | @flags@ is a bitmask of 'BuildAccelerationStructureFlagBitsKHR'-    -- specifying additional parameters of the acceleration structure.-    flags :: BuildAccelerationStructureFlagsKHR-  , -- | @pGeometryInfos@ is an array of @maxGeometryCount@-    -- 'AccelerationStructureCreateGeometryTypeInfoKHR' structures, which-    -- describe the maximum size and format of the data that will be built into-    -- the acceleration structure.-    geometryInfos :: Vector AccelerationStructureCreateGeometryTypeInfoKHR-  , -- | @deviceAddress@ is the device address requested for the acceleration-    -- structure if the-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-ascapturereplay rayTracingAccelerationStructureCaptureReplay>-    -- feature is being used.-    deviceAddress :: DeviceAddress-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureCreateInfoKHR)-#endif-deriving instance Show AccelerationStructureCreateInfoKHR--instance ToCStruct AccelerationStructureCreateInfoKHR where-  withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureCreateInfoKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (compactedSize)-    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureTypeKHR)) (type')-    lift $ poke ((p `plusPtr` 28 :: Ptr BuildAccelerationStructureFlagsKHR)) (flags)-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (geometryInfos)) :: Word32))-    pPGeometryInfos' <- ContT $ allocaBytesAligned @AccelerationStructureCreateGeometryTypeInfoKHR ((Data.Vector.length (geometryInfos)) * 40) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGeometryInfos' `plusPtr` (40 * (i)) :: Ptr AccelerationStructureCreateGeometryTypeInfoKHR) (e) . ($ ())) (geometryInfos)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr AccelerationStructureCreateGeometryTypeInfoKHR))) (pPGeometryInfos')-    lift $ poke ((p `plusPtr` 48 :: Ptr DeviceAddress)) (deviceAddress)-    lift $ f-  cStructSize = 56-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)-    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureTypeKHR)) (zero)-    pPGeometryInfos' <- ContT $ allocaBytesAligned @AccelerationStructureCreateGeometryTypeInfoKHR ((Data.Vector.length (mempty)) * 40) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGeometryInfos' `plusPtr` (40 * (i)) :: Ptr AccelerationStructureCreateGeometryTypeInfoKHR) (e) . ($ ())) (mempty)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr AccelerationStructureCreateGeometryTypeInfoKHR))) (pPGeometryInfos')-    lift $ f--instance FromCStruct AccelerationStructureCreateInfoKHR where-  peekCStruct p = do-    compactedSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))-    type' <- peek @AccelerationStructureTypeKHR ((p `plusPtr` 24 :: Ptr AccelerationStructureTypeKHR))-    flags <- peek @BuildAccelerationStructureFlagsKHR ((p `plusPtr` 28 :: Ptr BuildAccelerationStructureFlagsKHR))-    maxGeometryCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    pGeometryInfos <- peek @(Ptr AccelerationStructureCreateGeometryTypeInfoKHR) ((p `plusPtr` 40 :: Ptr (Ptr AccelerationStructureCreateGeometryTypeInfoKHR)))-    pGeometryInfos' <- generateM (fromIntegral maxGeometryCount) (\i -> peekCStruct @AccelerationStructureCreateGeometryTypeInfoKHR ((pGeometryInfos `advancePtrBytes` (40 * (i)) :: Ptr AccelerationStructureCreateGeometryTypeInfoKHR)))-    deviceAddress <- peek @DeviceAddress ((p `plusPtr` 48 :: Ptr DeviceAddress))-    pure $ AccelerationStructureCreateInfoKHR-             compactedSize type' flags pGeometryInfos' deviceAddress--instance Zero AccelerationStructureCreateInfoKHR where-  zero = AccelerationStructureCreateInfoKHR-           zero-           zero-           zero-           mempty-           zero----- | VkAabbPositionsKHR - Structure specifying two opposing corners of an--- axis-aligned bounding box------ == Valid Usage------ = See Also------ No cross-references are available-data AabbPositionsKHR = AabbPositionsKHR-  { -- | @minX@ is the x position of one opposing corner of a bounding box.-    ---    -- #VUID-VkAabbPositionsKHR-minX-03546# @minX@ /must/ be less than or equal-    -- to @maxX@-    minX :: Float-  , -- | @minY@ is the y position of one opposing corner of a bounding box.-    ---    -- #VUID-VkAabbPositionsKHR-minY-03547# @minY@ /must/ be less than or equal-    -- to @maxY@-    minY :: Float-  , -- | @minZ@ is the z position of one opposing corner of a bounding box.-    ---    -- #VUID-VkAabbPositionsKHR-minZ-03548# @minZ@ /must/ be less than or equal-    -- to @maxZ@-    minZ :: Float-  , -- | @maxX@ is the x position of the other opposing corner of a bounding box.-    maxX :: Float-  , -- | @maxY@ is the y position of the other opposing corner of a bounding box.-    maxY :: Float-  , -- | @maxZ@ is the z position of the other opposing corner of a bounding box.-    maxZ :: Float-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AabbPositionsKHR)-#endif-deriving instance Show AabbPositionsKHR--instance ToCStruct AabbPositionsKHR where-  withCStruct x f = allocaBytesAligned 24 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AabbPositionsKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (minX))-    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (minY))-    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (minZ))-    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (maxX))-    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (maxY))-    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (maxZ))-    f-  cStructSize = 24-  cStructAlignment = 4-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))-    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (zero))-    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (zero))-    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (zero))-    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))-    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))-    f--instance FromCStruct AabbPositionsKHR where-  peekCStruct p = do-    minX <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))-    minY <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))-    minZ <- peek @CFloat ((p `plusPtr` 8 :: Ptr CFloat))-    maxX <- peek @CFloat ((p `plusPtr` 12 :: Ptr CFloat))-    maxY <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))-    maxZ <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))-    pure $ AabbPositionsKHR-             ((\(CFloat a) -> a) minX) ((\(CFloat a) -> a) minY) ((\(CFloat a) -> a) minZ) ((\(CFloat a) -> a) maxX) ((\(CFloat a) -> a) maxY) ((\(CFloat a) -> a) maxZ)--instance Storable AabbPositionsKHR where-  sizeOf ~_ = 24-  alignment ~_ = 4-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero AabbPositionsKHR where-  zero = AabbPositionsKHR-           zero-           zero-           zero-           zero-           zero-           zero----- | VkTransformMatrixKHR - Structure specifying a 3x4 affine transformation--- matrix------ = See Also------ 'AccelerationStructureInstanceKHR'-data TransformMatrixKHR = TransformMatrixKHR-  { -- | @matrix@ is a 3x4 row-major affine transformation matrix.-    matrix :: ((Float, Float, Float, Float), (Float, Float, Float, Float), (Float, Float, Float, Float)) }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (TransformMatrixKHR)-#endif-deriving instance Show TransformMatrixKHR--instance ToCStruct TransformMatrixKHR where-  withCStruct x f = allocaBytesAligned 48 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p TransformMatrixKHR{..} f = do-    let pMatrix' = lowerArrayPtr ((p `plusPtr` 0 :: Ptr (FixedArray 3 (FixedArray 4 CFloat))))-    case (matrix) of-      (e0, e1, e2) -> do-        let pMatrix0 = lowerArrayPtr (pMatrix' :: Ptr (FixedArray 4 CFloat))-        case (e0) of-          (e0', e1', e2', e3) -> do-            poke (pMatrix0 :: Ptr CFloat) (CFloat (e0'))-            poke (pMatrix0 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1'))-            poke (pMatrix0 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2'))-            poke (pMatrix0 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))-        let pMatrix1 = lowerArrayPtr (pMatrix' `plusPtr` 16 :: Ptr (FixedArray 4 CFloat))-        case (e1) of-          (e0', e1', e2', e3) -> do-            poke (pMatrix1 :: Ptr CFloat) (CFloat (e0'))-            poke (pMatrix1 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1'))-            poke (pMatrix1 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2'))-            poke (pMatrix1 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))-        let pMatrix2 = lowerArrayPtr (pMatrix' `plusPtr` 32 :: Ptr (FixedArray 4 CFloat))-        case (e2) of-          (e0', e1', e2', e3) -> do-            poke (pMatrix2 :: Ptr CFloat) (CFloat (e0'))-            poke (pMatrix2 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1'))-            poke (pMatrix2 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2'))-            poke (pMatrix2 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))-        pure $ ()-    f-  cStructSize = 48-  cStructAlignment = 4-  pokeZeroCStruct p f = do-    let pMatrix' = lowerArrayPtr ((p `plusPtr` 0 :: Ptr (FixedArray 3 (FixedArray 4 CFloat))))-    case (((zero, zero, zero, zero), (zero, zero, zero, zero), (zero, zero, zero, zero))) of-      (e0, e1, e2) -> do-        let pMatrix0 = lowerArrayPtr (pMatrix' :: Ptr (FixedArray 4 CFloat))-        case (e0) of-          (e0', e1', e2', e3) -> do-            poke (pMatrix0 :: Ptr CFloat) (CFloat (e0'))-            poke (pMatrix0 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1'))-            poke (pMatrix0 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2'))-            poke (pMatrix0 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))-        let pMatrix1 = lowerArrayPtr (pMatrix' `plusPtr` 16 :: Ptr (FixedArray 4 CFloat))-        case (e1) of-          (e0', e1', e2', e3) -> do-            poke (pMatrix1 :: Ptr CFloat) (CFloat (e0'))-            poke (pMatrix1 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1'))-            poke (pMatrix1 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2'))-            poke (pMatrix1 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))-        let pMatrix2 = lowerArrayPtr (pMatrix' `plusPtr` 32 :: Ptr (FixedArray 4 CFloat))-        case (e2) of-          (e0', e1', e2', e3) -> do-            poke (pMatrix2 :: Ptr CFloat) (CFloat (e0'))-            poke (pMatrix2 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1'))-            poke (pMatrix2 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2'))-            poke (pMatrix2 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))-        pure $ ()-    f--instance FromCStruct TransformMatrixKHR where-  peekCStruct p = do-    let pmatrix = lowerArrayPtr @(FixedArray 4 CFloat) ((p `plusPtr` 0 :: Ptr (FixedArray 3 (FixedArray 4 CFloat))))-    let pmatrix0 = lowerArrayPtr @CFloat ((pmatrix `advancePtrBytes` 0 :: Ptr (FixedArray 4 CFloat)))-    matrix00 <- peek @CFloat ((pmatrix0 `advancePtrBytes` 0 :: Ptr CFloat))-    matrix01 <- peek @CFloat ((pmatrix0 `advancePtrBytes` 4 :: Ptr CFloat))-    matrix02 <- peek @CFloat ((pmatrix0 `advancePtrBytes` 8 :: Ptr CFloat))-    matrix03 <- peek @CFloat ((pmatrix0 `advancePtrBytes` 12 :: Ptr CFloat))-    let pmatrix1 = lowerArrayPtr @CFloat ((pmatrix `advancePtrBytes` 16 :: Ptr (FixedArray 4 CFloat)))-    matrix10 <- peek @CFloat ((pmatrix1 `advancePtrBytes` 0 :: Ptr CFloat))-    matrix11 <- peek @CFloat ((pmatrix1 `advancePtrBytes` 4 :: Ptr CFloat))-    matrix12 <- peek @CFloat ((pmatrix1 `advancePtrBytes` 8 :: Ptr CFloat))-    matrix13 <- peek @CFloat ((pmatrix1 `advancePtrBytes` 12 :: Ptr CFloat))-    let pmatrix2 = lowerArrayPtr @CFloat ((pmatrix `advancePtrBytes` 32 :: Ptr (FixedArray 4 CFloat)))-    matrix20 <- peek @CFloat ((pmatrix2 `advancePtrBytes` 0 :: Ptr CFloat))-    matrix21 <- peek @CFloat ((pmatrix2 `advancePtrBytes` 4 :: Ptr CFloat))-    matrix22 <- peek @CFloat ((pmatrix2 `advancePtrBytes` 8 :: Ptr CFloat))-    matrix23 <- peek @CFloat ((pmatrix2 `advancePtrBytes` 12 :: Ptr CFloat))-    pure $ TransformMatrixKHR-             ((((((\(CFloat a) -> a) matrix00), ((\(CFloat a) -> a) matrix01), ((\(CFloat a) -> a) matrix02), ((\(CFloat a) -> a) matrix03))), ((((\(CFloat a) -> a) matrix10), ((\(CFloat a) -> a) matrix11), ((\(CFloat a) -> a) matrix12), ((\(CFloat a) -> a) matrix13))), ((((\(CFloat a) -> a) matrix20), ((\(CFloat a) -> a) matrix21), ((\(CFloat a) -> a) matrix22), ((\(CFloat a) -> a) matrix23)))))--instance Storable TransformMatrixKHR where-  sizeOf ~_ = 48-  alignment ~_ = 4-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero TransformMatrixKHR where-  zero = TransformMatrixKHR-           ((zero, zero, zero, zero), (zero, zero, zero, zero), (zero, zero, zero, zero))----- | VkAccelerationStructureInstanceKHR - Structure specifying a single--- acceleration structure instance for building into an acceleration--- structure geometry------ = Description------ The C language spec does not define the ordering of bit-fields, but in--- practice, this struct produces the correct layout with existing--- compilers. The intended bit pattern is for the following:------ If a compiler produces code that diverges from that pattern,--- applications /must/ employ another method to set values according to the--- correct bit pattern.------ == Valid Usage (Implicit)------ = See Also------ 'GeometryInstanceFlagsKHR', 'TransformMatrixKHR'-data AccelerationStructureInstanceKHR = AccelerationStructureInstanceKHR-  { -- | @transform@ is a 'TransformMatrixKHR' structure describing a-    -- transformation to be applied to the acceleration structure.-    transform :: TransformMatrixKHR-  , -- | @instanceCustomIndex@ is a 24-bit user-specified index value accessible-    -- to ray shaders in the @InstanceCustomIndexKHR@ built-in.-    ---    -- @instanceCustomIndex@ and @mask@ occupy the same memory as if a single-    -- @int32_t@ was specified in their place-    ---    -- -   @instanceCustomIndex@ occupies the 24 least significant bits of that-    --     memory-    ---    -- -   @mask@ occupies the 8 most significant bits of that memory-    instanceCustomIndex :: Word32-  , -- | @mask@ is an 8-bit visibility mask for the geometry. The instance /may/-    -- only be hit if @rayMask & instance.mask != 0@-    mask :: Word32-  , -- | @instanceShaderBindingTableRecordOffset@ is a 24-bit offset used in-    -- calculating the hit shader binding table index.-    ---    -- @instanceShaderBindingTableRecordOffset@ and @flags@ occupy the same-    -- memory as if a single @int32_t@ was specified in their place-    ---    -- -   @instanceShaderBindingTableRecordOffset@ occupies the 24 least-    --     significant bits of that memory-    ---    -- -   @flags@ occupies the 8 most significant bits of that memory-    instanceShaderBindingTableRecordOffset :: Word32-  , -- | @flags@ is an 8-bit mask of 'GeometryInstanceFlagBitsKHR' values to-    -- apply to this instance.-    ---    -- #VUID-VkAccelerationStructureInstanceKHR-flags-parameter# @flags@ /must/-    -- be a valid combination of 'GeometryInstanceFlagBitsKHR' values-    flags :: GeometryInstanceFlagsKHR-  , -- | @accelerationStructureReference@ is either:-    ---    -- -   a device address containing the value obtained from-    --     'getAccelerationStructureDeviceAddressKHR' or-    --     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'-    --     (used by device operations which reference acceleration structures)-    --     or,-    ---    -- -   a 'Vulkan.Extensions.Handles.AccelerationStructureKHR' object (used-    --     by host operations which reference acceleration structures).-    accelerationStructureReference :: Word64-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureInstanceKHR)-#endif-deriving instance Show AccelerationStructureInstanceKHR--instance ToCStruct AccelerationStructureInstanceKHR where-  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureInstanceKHR{..} f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr TransformMatrixKHR)) (transform) . ($ ())-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (((coerce @_ @Word32 (mask)) `shiftL` 24) .|. (instanceCustomIndex))-    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (((coerce @_ @Word32 (flags)) `shiftL` 24) .|. (instanceShaderBindingTableRecordOffset))-    lift $ poke ((p `plusPtr` 56 :: Ptr Word64)) (accelerationStructureReference)-    lift $ f-  cStructSize = 64-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr TransformMatrixKHR)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 56 :: Ptr Word64)) (zero)-    lift $ f--instance FromCStruct AccelerationStructureInstanceKHR where-  peekCStruct p = do-    transform <- peekCStruct @TransformMatrixKHR ((p `plusPtr` 0 :: Ptr TransformMatrixKHR))-    instanceCustomIndex <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))-    let instanceCustomIndex' = ((instanceCustomIndex .&. coerce @Word32 0xffffff))-    mask <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))-    let mask' = ((((mask `shiftR` 24)) .&. coerce @Word32 0xff))-    instanceShaderBindingTableRecordOffset <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))-    let instanceShaderBindingTableRecordOffset' = ((instanceShaderBindingTableRecordOffset .&. coerce @Word32 0xffffff))-    flags <- peek @GeometryInstanceFlagsKHR ((p `plusPtr` 52 :: Ptr GeometryInstanceFlagsKHR))-    let flags' = ((((flags `shiftR` 24)) .&. coerce @Word32 0xff))-    accelerationStructureReference <- peek @Word64 ((p `plusPtr` 56 :: Ptr Word64))-    pure $ AccelerationStructureInstanceKHR-             transform instanceCustomIndex' mask' instanceShaderBindingTableRecordOffset' flags' accelerationStructureReference--instance Zero AccelerationStructureInstanceKHR where-  zero = AccelerationStructureInstanceKHR-           zero-           zero-           zero-           zero-           zero-           zero----- | VkAccelerationStructureDeviceAddressInfoKHR - Structure specifying the--- acceleration structure to query an address for------ == Valid Usage (Implicit)------ = See Also------ 'Vulkan.Extensions.Handles.AccelerationStructureKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'getAccelerationStructureDeviceAddressKHR'-data AccelerationStructureDeviceAddressInfoKHR = AccelerationStructureDeviceAddressInfoKHR-  { -- | @accelerationStructure@ specifies the acceleration structure whose-    -- address is being queried.-    ---    -- #VUID-VkAccelerationStructureDeviceAddressInfoKHR-accelerationStructure-parameter#-    -- @accelerationStructure@ /must/ be a valid-    -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle-    accelerationStructure :: AccelerationStructureKHR }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureDeviceAddressInfoKHR)-#endif-deriving instance Show AccelerationStructureDeviceAddressInfoKHR--instance ToCStruct AccelerationStructureDeviceAddressInfoKHR where-  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureDeviceAddressInfoKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (accelerationStructure)-    f-  cStructSize = 24-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)-    f--instance FromCStruct AccelerationStructureDeviceAddressInfoKHR where-  peekCStruct p = do-    accelerationStructure <- peek @AccelerationStructureKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR))-    pure $ AccelerationStructureDeviceAddressInfoKHR-             accelerationStructure--instance Storable AccelerationStructureDeviceAddressInfoKHR where-  sizeOf ~_ = 24-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero AccelerationStructureDeviceAddressInfoKHR where-  zero = AccelerationStructureDeviceAddressInfoKHR-           zero----- | VkAccelerationStructureVersionKHR - Acceleration structure version--- information------ == Valid Usage (Implicit)------ = See Also------ 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'getDeviceAccelerationStructureCompatibilityKHR'-data AccelerationStructureVersionKHR = AccelerationStructureVersionKHR-  { -- | @versionData@ is a pointer to the version header as defined in-    -- 'CopyAccelerationStructureModeKHR'-    ---    -- #VUID-VkAccelerationStructureVersionKHR-versionData-parameter#-    -- @versionData@ /must/ be a valid pointer to an array of @2@*VK_UUID_SIZE-    -- @uint8_t@ values-    versionData :: ByteString }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureVersionKHR)-#endif-deriving instance Show AccelerationStructureVersionKHR--instance ToCStruct AccelerationStructureVersionKHR where-  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureVersionKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ unless (Data.ByteString.length (versionData) == 2 * UUID_SIZE) $-      throwIO $ IOError Nothing InvalidArgument "" "AccelerationStructureVersionKHR::versionData must be 2*VK_UUID_SIZE bytes" Nothing Nothing-    versionData'' <- fmap (castPtr @CChar @Word8) . ContT $ unsafeUseAsCString (versionData)-    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr Word8))) versionData''-    lift $ f-  cStructSize = 24-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    f--instance FromCStruct AccelerationStructureVersionKHR where-  peekCStruct p = do-    versionData <- peek @(Ptr Word8) ((p `plusPtr` 16 :: Ptr (Ptr Word8)))-    versionData' <- packCStringLen (castPtr @Word8 @CChar versionData, 2 * UUID_SIZE)-    pure $ AccelerationStructureVersionKHR-             versionData'--instance Zero AccelerationStructureVersionKHR where-  zero = AccelerationStructureVersionKHR-           mempty----- | VkCopyAccelerationStructureInfoKHR - Parameters for copying an--- acceleration structure------ == Valid Usage------ -   #VUID-VkCopyAccelerationStructureInfoKHR-mode-03410# @mode@ /must/---     be 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' or---     'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR'------ -   #VUID-VkCopyAccelerationStructureInfoKHR-src-03411# @src@ /must/---     have been built with---     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' if @mode@ is---     'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR'------ == Valid Usage (Implicit)------ -   #VUID-VkCopyAccelerationStructureInfoKHR-sType-sType# @sType@ /must/---     be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR'------ -   #VUID-VkCopyAccelerationStructureInfoKHR-pNext-pNext# @pNext@ /must/---     be @NULL@ or a pointer to a valid instance of---     'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'------ -   #VUID-VkCopyAccelerationStructureInfoKHR-sType-unique# The @sType@---     value of each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkCopyAccelerationStructureInfoKHR-src-parameter# @src@ /must/---     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureKHR'---     handle------ -   #VUID-VkCopyAccelerationStructureInfoKHR-dst-parameter# @dst@ /must/---     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureKHR'---     handle------ -   #VUID-VkCopyAccelerationStructureInfoKHR-mode-parameter# @mode@---     /must/ be a valid 'CopyAccelerationStructureModeKHR' value------ -   #VUID-VkCopyAccelerationStructureInfoKHR-commonparent# Both of---     @dst@, and @src@ /must/ have been created, allocated, or retrieved---     from the same 'Vulkan.Core10.Handles.Device'------ = See Also------ 'Vulkan.Extensions.Handles.AccelerationStructureKHR',--- 'CopyAccelerationStructureModeKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'cmdCopyAccelerationStructureKHR', 'copyAccelerationStructureKHR'-data CopyAccelerationStructureInfoKHR (es :: [Type]) = CopyAccelerationStructureInfoKHR-  { -- No documentation found for Nested "VkCopyAccelerationStructureInfoKHR" "pNext"-    next :: Chain es-  , -- | @src@ is the source acceleration structure for the copy.-    src :: AccelerationStructureKHR-  , -- | @dst@ is the target acceleration structure for the copy.-    dst :: AccelerationStructureKHR-  , -- | @mode@ is a 'CopyAccelerationStructureModeKHR' value that specifies-    -- additional operations to perform during the copy.-    mode :: CopyAccelerationStructureModeKHR-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (CopyAccelerationStructureInfoKHR (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (CopyAccelerationStructureInfoKHR es)--instance Extensible CopyAccelerationStructureInfoKHR where-  extensibleType = STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR-  setNext x next = x{next = next}-  getNext CopyAccelerationStructureInfoKHR{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends CopyAccelerationStructureInfoKHR e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @DeferredOperationInfoKHR = Just f-    | otherwise = Nothing--instance (Extendss CopyAccelerationStructureInfoKHR es, PokeChain es) => ToCStruct (CopyAccelerationStructureInfoKHR es) where-  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p CopyAccelerationStructureInfoKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (src)-    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (dst)-    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (mode)-    lift $ f-  cStructSize = 40-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)-    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (zero)-    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (zero)-    lift $ f--instance (Extendss CopyAccelerationStructureInfoKHR es, PeekChain es) => FromCStruct (CopyAccelerationStructureInfoKHR es) where-  peekCStruct p = do-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))-    next <- peekChain (castPtr pNext)-    src <- peek @AccelerationStructureKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR))-    dst <- peek @AccelerationStructureKHR ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR))-    mode <- peek @CopyAccelerationStructureModeKHR ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR))-    pure $ CopyAccelerationStructureInfoKHR-             next src dst mode--instance es ~ '[] => Zero (CopyAccelerationStructureInfoKHR es) where-  zero = CopyAccelerationStructureInfoKHR-           ()-           zero-           zero-           zero----- | VkCopyAccelerationStructureToMemoryInfoKHR - Parameters for serializing--- an acceleration structure------ == Valid Usage------ -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-03561# The---     memory pointed to by @dst@ /must/ be at least as large as the---     serialization size of @src@, as reported by---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'------ -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-03412# @mode@---     /must/ be 'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR'------ == Valid Usage (Implicit)------ -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-sType#---     @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR'------ -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-pNext-pNext#---     @pNext@ /must/ be @NULL@ or a pointer to a valid instance of---     'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'------ -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-unique# The---     @sType@ value of each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-parameter#---     @src@ /must/ be a valid---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle------ -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-parameter#---     @dst@ /must/ be a valid 'DeviceOrHostAddressKHR' union------ -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-parameter#---     @mode@ /must/ be a valid 'CopyAccelerationStructureModeKHR' value------ = See Also------ 'Vulkan.Extensions.Handles.AccelerationStructureKHR',--- 'CopyAccelerationStructureModeKHR', 'DeviceOrHostAddressKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'cmdCopyAccelerationStructureToMemoryKHR',--- 'copyAccelerationStructureToMemoryKHR'-data CopyAccelerationStructureToMemoryInfoKHR (es :: [Type]) = CopyAccelerationStructureToMemoryInfoKHR-  { -- No documentation found for Nested "VkCopyAccelerationStructureToMemoryInfoKHR" "pNext"-    next :: Chain es-  , -- | @src@ is the source acceleration structure for the copy-    src :: AccelerationStructureKHR-  , -- | @dst@ is the device or host address to memory which is the target for-    -- the copy-    dst :: DeviceOrHostAddressKHR-  , -- | @mode@ is a 'CopyAccelerationStructureModeKHR' value that specifies-    -- additional operations to perform during the copy.-    mode :: CopyAccelerationStructureModeKHR-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (CopyAccelerationStructureToMemoryInfoKHR (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (CopyAccelerationStructureToMemoryInfoKHR es)--instance Extensible CopyAccelerationStructureToMemoryInfoKHR where-  extensibleType = STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR-  setNext x next = x{next = next}-  getNext CopyAccelerationStructureToMemoryInfoKHR{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends CopyAccelerationStructureToMemoryInfoKHR e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @DeferredOperationInfoKHR = Just f-    | otherwise = Nothing--instance (Extendss CopyAccelerationStructureToMemoryInfoKHR es, PokeChain es) => ToCStruct (CopyAccelerationStructureToMemoryInfoKHR es) where-  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p CopyAccelerationStructureToMemoryInfoKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (src)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressKHR)) (dst) . ($ ())-    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (mode)-    lift $ f-  cStructSize = 40-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressKHR)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (zero)-    lift $ f--instance es ~ '[] => Zero (CopyAccelerationStructureToMemoryInfoKHR es) where-  zero = CopyAccelerationStructureToMemoryInfoKHR-           ()-           zero-           zero-           zero----- | VkCopyMemoryToAccelerationStructureInfoKHR - Parameters for--- deserializing an acceleration structure------ == Valid Usage------ -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-03413# @mode@---     /must/ be 'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR'------ -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pInfo-03414# The---     data in @pInfo->src@ /must/ have a format compatible with the---     destination physical device as returned by---     'getDeviceAccelerationStructureCompatibilityKHR'------ == Valid Usage (Implicit)------ -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-sType#---     @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR'------ -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pNext-pNext#---     @pNext@ /must/ be @NULL@ or a pointer to a valid instance of---     'Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'------ -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-unique# The---     @sType@ value of each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-src-parameter#---     @src@ /must/ be a valid 'DeviceOrHostAddressConstKHR' union------ -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-parameter#---     @dst@ /must/ be a valid---     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle------ -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-parameter#---     @mode@ /must/ be a valid 'CopyAccelerationStructureModeKHR' value------ = See Also------ 'Vulkan.Extensions.Handles.AccelerationStructureKHR',--- 'CopyAccelerationStructureModeKHR', 'DeviceOrHostAddressConstKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'cmdCopyMemoryToAccelerationStructureKHR',--- 'copyMemoryToAccelerationStructureKHR'-data CopyMemoryToAccelerationStructureInfoKHR (es :: [Type]) = CopyMemoryToAccelerationStructureInfoKHR-  { -- No documentation found for Nested "VkCopyMemoryToAccelerationStructureInfoKHR" "pNext"-    next :: Chain es-  , -- | @src@ is the device or host address to memory containing the source data-    -- for the copy.-    src :: DeviceOrHostAddressConstKHR-  , -- | @dst@ is the target acceleration structure for the copy.-    dst :: AccelerationStructureKHR-  , -- | @mode@ is a 'CopyAccelerationStructureModeKHR' value that specifies-    -- additional operations to perform during the copy.-    mode :: CopyAccelerationStructureModeKHR-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (CopyMemoryToAccelerationStructureInfoKHR (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (CopyMemoryToAccelerationStructureInfoKHR es)--instance Extensible CopyMemoryToAccelerationStructureInfoKHR where-  extensibleType = STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR-  setNext x next = x{next = next}-  getNext CopyMemoryToAccelerationStructureInfoKHR{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends CopyMemoryToAccelerationStructureInfoKHR e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @DeferredOperationInfoKHR = Just f-    | otherwise = Nothing--instance (Extendss CopyMemoryToAccelerationStructureInfoKHR es, PokeChain es) => ToCStruct (CopyMemoryToAccelerationStructureInfoKHR es) where-  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p CopyMemoryToAccelerationStructureInfoKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (src) . ($ ())-    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (dst)-    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (mode)-    lift $ f-  cStructSize = 40-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (zero)-    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (zero)-    lift $ f--instance es ~ '[] => Zero (CopyMemoryToAccelerationStructureInfoKHR es) where-  zero = CopyMemoryToAccelerationStructureInfoKHR-           ()-           zero-           zero-           zero----- | VkRayTracingPipelineInterfaceCreateInfoKHR - Structure specifying--- additional interface information when using libraries------ = Description------ @maxPayloadSize@ is calculated as the maximum number of bytes used by--- any block declared in the @RayPayloadKHR@ or @IncomingRayPayloadKHR@--- storage classes. @maxAttributeSize@ is calculated as the maximum number--- of bytes used by any block declared in the @HitAttributeKHR@ storage--- class. @maxCallableSize@ is calculated as the maximum number of bytes--- used by any block declred in the @CallableDataKHR@ or--- @IncomingCallableDataKHR@. As variables in these storage classes do not--- have explicit offsets, the size should be calculated as if each variable--- has a--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirements scalar alignment>--- equal to the largest scalar alignment of any of the block’s members.------ == Valid Usage (Implicit)------ = See Also------ 'RayTracingPipelineCreateInfoKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data RayTracingPipelineInterfaceCreateInfoKHR = RayTracingPipelineInterfaceCreateInfoKHR-  { -- | @maxPayloadSize@ is the maximum payload size in bytes used by any shader-    -- in the pipeline.-    maxPayloadSize :: Word32-  , -- | @maxAttributeSize@ is the maximum attribute structure size in bytes used-    -- by any shader in the pipeline.-    maxAttributeSize :: Word32-  , -- | @maxCallableSize@ is the maximum callable data size in bytes used by any-    -- shader in the pipeline.-    maxCallableSize :: Word32-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (RayTracingPipelineInterfaceCreateInfoKHR)-#endif-deriving instance Show RayTracingPipelineInterfaceCreateInfoKHR--instance ToCStruct RayTracingPipelineInterfaceCreateInfoKHR where-  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p RayTracingPipelineInterfaceCreateInfoKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxPayloadSize)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxAttributeSize)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxCallableSize)-    f-  cStructSize = 32-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)-    f--instance FromCStruct RayTracingPipelineInterfaceCreateInfoKHR where-  peekCStruct p = do-    maxPayloadSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))-    maxAttributeSize <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    maxCallableSize <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))-    pure $ RayTracingPipelineInterfaceCreateInfoKHR-             maxPayloadSize maxAttributeSize maxCallableSize--instance Storable RayTracingPipelineInterfaceCreateInfoKHR where-  sizeOf ~_ = 32-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero RayTracingPipelineInterfaceCreateInfoKHR where-  zero = RayTracingPipelineInterfaceCreateInfoKHR-           zero-           zero-           zero---data DeviceOrHostAddressKHR-  = DeviceAddress DeviceAddress-  | HostAddress (Ptr ())-  deriving (Show)--instance ToCStruct DeviceOrHostAddressKHR where-  withCStruct x f = allocaBytesAligned 8 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct :: Ptr DeviceOrHostAddressKHR -> DeviceOrHostAddressKHR -> IO a -> IO a-  pokeCStruct p = (. const) . runContT .  \case-    DeviceAddress v -> lift $ poke (castPtr @_ @DeviceAddress p) (v)-    HostAddress v -> lift $ poke (castPtr @_ @(Ptr ()) p) (v)-  pokeZeroCStruct :: Ptr DeviceOrHostAddressKHR -> IO b -> IO b-  pokeZeroCStruct _ f = f-  cStructSize = 8-  cStructAlignment = 8--instance Zero DeviceOrHostAddressKHR where-  zero = DeviceAddress zero---data DeviceOrHostAddressConstKHR-  = DeviceAddressConst DeviceAddress-  | HostAddressConst (Ptr ())-  deriving (Show)--instance ToCStruct DeviceOrHostAddressConstKHR where-  withCStruct x f = allocaBytesAligned 8 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct :: Ptr DeviceOrHostAddressConstKHR -> DeviceOrHostAddressConstKHR -> IO a -> IO a-  pokeCStruct p = (. const) . runContT .  \case-    DeviceAddressConst v -> lift $ poke (castPtr @_ @DeviceAddress p) (v)-    HostAddressConst v -> lift $ poke (castPtr @_ @(Ptr ()) p) (v)-  pokeZeroCStruct :: Ptr DeviceOrHostAddressConstKHR -> IO b -> IO b-  pokeZeroCStruct _ f = f-  cStructSize = 8-  cStructAlignment = 8--instance Zero DeviceOrHostAddressConstKHR where-  zero = DeviceAddressConst zero---data AccelerationStructureGeometryDataKHR-  = Triangles AccelerationStructureGeometryTrianglesDataKHR-  | Aabbs AccelerationStructureGeometryAabbsDataKHR-  | Instances AccelerationStructureGeometryInstancesDataKHR-  deriving (Show)--instance ToCStruct AccelerationStructureGeometryDataKHR where-  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct :: Ptr AccelerationStructureGeometryDataKHR -> AccelerationStructureGeometryDataKHR -> IO a -> IO a-  pokeCStruct p = (. const) . runContT .  \case-    Triangles v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryTrianglesDataKHR p) (v) . ($ ())-    Aabbs v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryAabbsDataKHR p) (v) . ($ ())-    Instances v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryInstancesDataKHR p) (v) . ($ ())-  pokeZeroCStruct :: Ptr AccelerationStructureGeometryDataKHR -> IO b -> IO b-  pokeZeroCStruct _ f = f-  cStructSize = 64-  cStructAlignment = 8--instance Zero AccelerationStructureGeometryDataKHR where-  zero = Triangles zero----- | VkGeometryInstanceFlagBitsKHR - Instance flag bits------ = Description------ 'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR' and--- 'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR' /must/ not be used in the same--- flag.------ = See Also------ 'GeometryInstanceFlagsKHR'-newtype GeometryInstanceFlagBitsKHR = GeometryInstanceFlagBitsKHR Flags-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)---- | 'GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR' disables face--- culling for this instance.-pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000001--- | 'GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR' indicates--- that the front face of the triangle for culling purposes is the face--- that is counter clockwise in object space relative to the ray origin.--- Because the facing is determined in object space, an instance transform--- matrix does not change the winding, but a geometry transform does.-pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000002--- | 'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR' causes this instance to act as--- though 'GEOMETRY_OPAQUE_BIT_KHR' were specified on all geometries--- referenced by this instance. This behavior /can/ be overridden by the--- SPIR-V @NoOpaqueKHR@ ray flag.-pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000004--- | 'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR' causes this instance to act--- as though 'GEOMETRY_OPAQUE_BIT_KHR' were not specified on all geometries--- referenced by this instance. This behavior /can/ be overridden by the--- SPIR-V @OpaqueKHR@ ray flag.-pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000008--type GeometryInstanceFlagsKHR = GeometryInstanceFlagBitsKHR--instance Show GeometryInstanceFlagBitsKHR where-  showsPrec p = \case-    GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR -> showString "GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR"-    GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR -> showString "GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR"-    GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR -> showString "GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR"-    GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR -> showString "GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR"-    GeometryInstanceFlagBitsKHR x -> showParen (p >= 11) (showString "GeometryInstanceFlagBitsKHR 0x" . showHex x)--instance Read GeometryInstanceFlagBitsKHR where-  readPrec = parens (choose [("GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR", pure GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR)-                            , ("GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR", pure GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR)-                            , ("GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR", pure GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR)-                            , ("GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR", pure GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "GeometryInstanceFlagBitsKHR")-                       v <- step readPrec-                       pure (GeometryInstanceFlagBitsKHR v)))----- | VkGeometryFlagBitsKHR - Bitmask specifying additional parameters for a--- geometry------ = See Also------ 'GeometryFlagsKHR'-newtype GeometryFlagBitsKHR = GeometryFlagBitsKHR Flags-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)---- | 'GEOMETRY_OPAQUE_BIT_KHR' indicates that this geometry does not invoke--- the any-hit shaders even if present in a hit group.-pattern GEOMETRY_OPAQUE_BIT_KHR = GeometryFlagBitsKHR 0x00000001--- | 'GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR' indicates that the--- implementation /must/ only call the any-hit shader a single time for--- each primitive in this geometry. If this bit is absent an implementation--- /may/ invoke the any-hit shader more than once for this geometry.-pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = GeometryFlagBitsKHR 0x00000002--type GeometryFlagsKHR = GeometryFlagBitsKHR--instance Show GeometryFlagBitsKHR where-  showsPrec p = \case-    GEOMETRY_OPAQUE_BIT_KHR -> showString "GEOMETRY_OPAQUE_BIT_KHR"-    GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR -> showString "GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR"-    GeometryFlagBitsKHR x -> showParen (p >= 11) (showString "GeometryFlagBitsKHR 0x" . showHex x)--instance Read GeometryFlagBitsKHR where-  readPrec = parens (choose [("GEOMETRY_OPAQUE_BIT_KHR", pure GEOMETRY_OPAQUE_BIT_KHR)-                            , ("GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR", pure GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "GeometryFlagBitsKHR")-                       v <- step readPrec-                       pure (GeometryFlagBitsKHR v)))----- | VkBuildAccelerationStructureFlagBitsKHR - Bitmask specifying additional--- parameters for acceleration structure builds------ = Description------ Note------ 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' and--- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' /may/ take more--- time and memory than a normal build, and so /should/ only be used when--- those features are needed.------ = See Also------ 'BuildAccelerationStructureFlagsKHR'-newtype BuildAccelerationStructureFlagBitsKHR = BuildAccelerationStructureFlagBitsKHR Flags-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)---- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' indicates that the--- specified acceleration structure /can/ be updated with @update@ of--- 'Vulkan.Core10.FundamentalTypes.TRUE' in--- 'cmdBuildAccelerationStructureKHR' or--- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV' .-pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000001--- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' indicates that--- the specified acceleration structure /can/ act as the source for a copy--- acceleration structure command with @mode@ of--- 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' to produce a compacted--- acceleration structure.-pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000002--- | 'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR' indicates that--- the given acceleration structure build /should/ prioritize trace--- performance over build time.-pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000004--- | 'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR' indicates that--- the given acceleration structure build /should/ prioritize build time--- over trace performance.-pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000008--- | 'BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR' indicates that this--- acceleration structure /should/ minimize the size of the scratch memory--- and the final result build, potentially at the expense of build time or--- trace performance.-pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000010--type BuildAccelerationStructureFlagsKHR = BuildAccelerationStructureFlagBitsKHR--instance Show BuildAccelerationStructureFlagBitsKHR where-  showsPrec p = \case-    BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR -> showString "BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR"-    BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR -> showString "BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR"-    BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR -> showString "BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR"-    BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR -> showString "BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR"-    BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR -> showString "BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR"-    BuildAccelerationStructureFlagBitsKHR x -> showParen (p >= 11) (showString "BuildAccelerationStructureFlagBitsKHR 0x" . showHex x)--instance Read BuildAccelerationStructureFlagBitsKHR where-  readPrec = parens (choose [("BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR", pure BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR)-                            , ("BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR", pure BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR)-                            , ("BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR", pure BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR)-                            , ("BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR", pure BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR)-                            , ("BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR", pure BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "BuildAccelerationStructureFlagBitsKHR")-                       v <- step readPrec-                       pure (BuildAccelerationStructureFlagBitsKHR v)))----- | VkCopyAccelerationStructureModeKHR - Acceleration structure copy mode------ = See Also------ 'CopyAccelerationStructureInfoKHR',--- 'CopyAccelerationStructureToMemoryInfoKHR',--- 'CopyMemoryToAccelerationStructureInfoKHR',--- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV'-newtype CopyAccelerationStructureModeKHR = CopyAccelerationStructureModeKHR Int32-  deriving newtype (Eq, Ord, Storable, Zero)---- | 'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR' creates a direct copy of--- the acceleration structure specified in @src@ into the one specified by--- @dst@. The @dst@ acceleration structure /must/ have been created with--- the same parameters as @src@.-pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = CopyAccelerationStructureModeKHR 0--- | 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' creates a more compact--- version of an acceleration structure @src@ into @dst@. The acceleration--- structure @dst@ /must/ have been created with a @compactedSize@--- corresponding to the one returned by--- 'cmdWriteAccelerationStructuresPropertiesKHR' after the build of the--- acceleration structure specified by @src@.-pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = CopyAccelerationStructureModeKHR 1--- | 'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR' serializes the--- acceleration structure to a semi-opaque format which can be reloaded on--- a compatible implementation.-pattern COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = CopyAccelerationStructureModeKHR 2--- | 'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR' deserializes the--- semi-opaque serialization format in the buffer to the acceleration--- structure.-pattern COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = CopyAccelerationStructureModeKHR 3-{-# complete COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR,-             COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR,-             COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR,-             COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR :: CopyAccelerationStructureModeKHR #-}--instance Show CopyAccelerationStructureModeKHR where-  showsPrec p = \case-    COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR -> showString "COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR"-    COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR -> showString "COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR"-    COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR -> showString "COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR"-    COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR -> showString "COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR"-    CopyAccelerationStructureModeKHR x -> showParen (p >= 11) (showString "CopyAccelerationStructureModeKHR " . showsPrec 11 x)--instance Read CopyAccelerationStructureModeKHR where-  readPrec = parens (choose [("COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR", pure COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR)-                            , ("COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR", pure COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR)-                            , ("COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR", pure COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR)-                            , ("COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR", pure COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "CopyAccelerationStructureModeKHR")-                       v <- step readPrec-                       pure (CopyAccelerationStructureModeKHR v)))----- | VkAccelerationStructureTypeKHR - Type of acceleration structure------ = See Also------ 'AccelerationStructureBuildGeometryInfoKHR',--- 'AccelerationStructureCreateInfoKHR'-newtype AccelerationStructureTypeKHR = AccelerationStructureTypeKHR Int32-  deriving newtype (Eq, Ord, Storable, Zero)---- | 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' is a top-level acceleration--- structure containing instance data referring to bottom-level--- acceleration structures.-pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = AccelerationStructureTypeKHR 0--- | 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' is a bottom-level--- acceleration structure containing the AABBs or geometry to be--- intersected.-pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = AccelerationStructureTypeKHR 1-{-# complete ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR,-             ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR :: AccelerationStructureTypeKHR #-}--instance Show AccelerationStructureTypeKHR where-  showsPrec p = \case-    ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR -> showString "ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR"-    ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR -> showString "ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR"-    AccelerationStructureTypeKHR x -> showParen (p >= 11) (showString "AccelerationStructureTypeKHR " . showsPrec 11 x)--instance Read AccelerationStructureTypeKHR where-  readPrec = parens (choose [("ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR", pure ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR)-                            , ("ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR", pure ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "AccelerationStructureTypeKHR")-                       v <- step readPrec-                       pure (AccelerationStructureTypeKHR v)))----- | VkGeometryTypeKHR - Enum specifying which type of geometry is provided------ = See Also------ 'AccelerationStructureCreateGeometryTypeInfoKHR',--- 'AccelerationStructureGeometryKHR',--- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV'-newtype GeometryTypeKHR = GeometryTypeKHR Int32-  deriving newtype (Eq, Ord, Storable, Zero)---- | 'GEOMETRY_TYPE_TRIANGLES_KHR' specifies a geometry type consisting of--- triangles.-pattern GEOMETRY_TYPE_TRIANGLES_KHR = GeometryTypeKHR 0--- | 'GEOMETRY_TYPE_AABBS_KHR' specifies a geometry type consisting of--- axis-aligned bounding boxes.-pattern GEOMETRY_TYPE_AABBS_KHR = GeometryTypeKHR 1--- | 'GEOMETRY_TYPE_INSTANCES_KHR' specifies a geometry type consisting of--- acceleration structure instances.-pattern GEOMETRY_TYPE_INSTANCES_KHR = GeometryTypeKHR 1000150000-{-# complete GEOMETRY_TYPE_TRIANGLES_KHR,-             GEOMETRY_TYPE_AABBS_KHR,-             GEOMETRY_TYPE_INSTANCES_KHR :: GeometryTypeKHR #-}--instance Show GeometryTypeKHR where-  showsPrec p = \case-    GEOMETRY_TYPE_TRIANGLES_KHR -> showString "GEOMETRY_TYPE_TRIANGLES_KHR"-    GEOMETRY_TYPE_AABBS_KHR -> showString "GEOMETRY_TYPE_AABBS_KHR"-    GEOMETRY_TYPE_INSTANCES_KHR -> showString "GEOMETRY_TYPE_INSTANCES_KHR"-    GeometryTypeKHR x -> showParen (p >= 11) (showString "GeometryTypeKHR " . showsPrec 11 x)--instance Read GeometryTypeKHR where-  readPrec = parens (choose [("GEOMETRY_TYPE_TRIANGLES_KHR", pure GEOMETRY_TYPE_TRIANGLES_KHR)-                            , ("GEOMETRY_TYPE_AABBS_KHR", pure GEOMETRY_TYPE_AABBS_KHR)-                            , ("GEOMETRY_TYPE_INSTANCES_KHR", pure GEOMETRY_TYPE_INSTANCES_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "GeometryTypeKHR")-                       v <- step readPrec-                       pure (GeometryTypeKHR v)))----- | VkAccelerationStructureMemoryRequirementsTypeKHR - Acceleration--- structure memory requirement type------ = See Also------ 'AccelerationStructureMemoryRequirementsInfoKHR'-newtype AccelerationStructureMemoryRequirementsTypeKHR = AccelerationStructureMemoryRequirementsTypeKHR Int32-  deriving newtype (Eq, Ord, Storable, Zero)---- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR' requests--- the memory requirement for the--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' backing store.-pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = AccelerationStructureMemoryRequirementsTypeKHR 0--- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR'--- requests the memory requirement for scratch space during the initial--- build.-pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = AccelerationStructureMemoryRequirementsTypeKHR 1--- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR'--- requests the memory requirement for scratch space during an update.-pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = AccelerationStructureMemoryRequirementsTypeKHR 2-{-# complete ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR,-             ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR,-             ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR :: AccelerationStructureMemoryRequirementsTypeKHR #-}--instance Show AccelerationStructureMemoryRequirementsTypeKHR where-  showsPrec p = \case-    ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR -> showString "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR"-    ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR -> showString "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR"-    ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR -> showString "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR"-    AccelerationStructureMemoryRequirementsTypeKHR x -> showParen (p >= 11) (showString "AccelerationStructureMemoryRequirementsTypeKHR " . showsPrec 11 x)--instance Read AccelerationStructureMemoryRequirementsTypeKHR where-  readPrec = parens (choose [("ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR", pure ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR)-                            , ("ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR", pure ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR)-                            , ("ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR", pure ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "AccelerationStructureMemoryRequirementsTypeKHR")-                       v <- step readPrec-                       pure (AccelerationStructureMemoryRequirementsTypeKHR v)))----- | VkAccelerationStructureBuildTypeKHR - Acceleration structure build type------ = See Also------ 'AccelerationStructureMemoryRequirementsInfoKHR'-newtype AccelerationStructureBuildTypeKHR = AccelerationStructureBuildTypeKHR Int32-  deriving newtype (Eq, Ord, Storable, Zero)---- | 'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR' requests the memory--- requirement for operations performed by the host.-pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = AccelerationStructureBuildTypeKHR 0--- | 'ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR' requests the memory--- requirement for operations performed by the device.-pattern ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = AccelerationStructureBuildTypeKHR 1--- | 'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR' requests the--- memory requirement for operations performed by either the host, or the--- device.-pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = AccelerationStructureBuildTypeKHR 2-{-# complete ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR,-             ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR,-             ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR :: AccelerationStructureBuildTypeKHR #-}--instance Show AccelerationStructureBuildTypeKHR where-  showsPrec p = \case-    ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR -> showString "ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR"-    ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR -> showString "ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR"-    ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR -> showString "ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR"-    AccelerationStructureBuildTypeKHR x -> showParen (p >= 11) (showString "AccelerationStructureBuildTypeKHR " . showsPrec 11 x)--instance Read AccelerationStructureBuildTypeKHR where-  readPrec = parens (choose [("ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR", pure ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR)-                            , ("ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR", pure ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR)-                            , ("ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR", pure ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "AccelerationStructureBuildTypeKHR")-                       v <- step readPrec-                       pure (AccelerationStructureBuildTypeKHR v)))----- | VkRayTracingShaderGroupTypeKHR - Shader group types------ = Description------ Note------ For current group types, the hit group type could be inferred from the--- presence or absence of the intersection shader, but we provide the type--- explicitly for future hit groups that do not have that property.------ = See Also------ 'RayTracingShaderGroupCreateInfoKHR',--- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupCreateInfoNV'-newtype RayTracingShaderGroupTypeKHR = RayTracingShaderGroupTypeKHR Int32-  deriving newtype (Eq, Ord, Storable, Zero)---- | 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR' indicates a shader group--- with a single--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR',--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR', or--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'--- shader in it.-pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = RayTracingShaderGroupTypeKHR 0--- | 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' specifies a--- shader group that only hits triangles and /must/ not contain an--- intersection shader, only closest hit and any-hit shaders.-pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = RayTracingShaderGroupTypeKHR 1--- | 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR' specifies a--- shader group that only intersects with custom geometry and /must/--- contain an intersection shader and /may/ contain closest hit and any-hit--- shaders.-pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = RayTracingShaderGroupTypeKHR 2-{-# complete RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR,-             RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR,-             RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR :: RayTracingShaderGroupTypeKHR #-}--instance Show RayTracingShaderGroupTypeKHR where-  showsPrec p = \case-    RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR -> showString "RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR"-    RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR -> showString "RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR"-    RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR -> showString "RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR"-    RayTracingShaderGroupTypeKHR x -> showParen (p >= 11) (showString "RayTracingShaderGroupTypeKHR " . showsPrec 11 x)--instance Read RayTracingShaderGroupTypeKHR where-  readPrec = parens (choose [("RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR", pure RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR)-                            , ("RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR", pure RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR)-                            , ("RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR", pure RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "RayTracingShaderGroupTypeKHR")-                       v <- step readPrec-                       pure (RayTracingShaderGroupTypeKHR v)))---type KHR_RAY_TRACING_SPEC_VERSION = 8---- No documentation found for TopLevel "VK_KHR_RAY_TRACING_SPEC_VERSION"-pattern KHR_RAY_TRACING_SPEC_VERSION :: forall a . Integral a => a-pattern KHR_RAY_TRACING_SPEC_VERSION = 8---type KHR_RAY_TRACING_EXTENSION_NAME = "VK_KHR_ray_tracing"---- No documentation found for TopLevel "VK_KHR_RAY_TRACING_EXTENSION_NAME"-pattern KHR_RAY_TRACING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a-pattern KHR_RAY_TRACING_EXTENSION_NAME = "VK_KHR_ray_tracing"-
− src/Vulkan/Extensions/VK_KHR_ray_tracing.hs-boot
@@ -1,275 +0,0 @@-{-# language CPP #-}-module Vulkan.Extensions.VK_KHR_ray_tracing  ( AabbPositionsKHR-                                             , AccelerationStructureBuildGeometryInfoKHR-                                             , AccelerationStructureBuildOffsetInfoKHR-                                             , AccelerationStructureCreateGeometryTypeInfoKHR-                                             , AccelerationStructureCreateInfoKHR-                                             , AccelerationStructureDeviceAddressInfoKHR-                                             , AccelerationStructureGeometryAabbsDataKHR-                                             , AccelerationStructureGeometryInstancesDataKHR-                                             , AccelerationStructureGeometryKHR-                                             , AccelerationStructureGeometryTrianglesDataKHR-                                             , AccelerationStructureInstanceKHR-                                             , AccelerationStructureMemoryRequirementsInfoKHR-                                             , AccelerationStructureVersionKHR-                                             , BindAccelerationStructureMemoryInfoKHR-                                             , CopyAccelerationStructureInfoKHR-                                             , CopyAccelerationStructureToMemoryInfoKHR-                                             , CopyMemoryToAccelerationStructureInfoKHR-                                             , PhysicalDeviceRayTracingFeaturesKHR-                                             , PhysicalDeviceRayTracingPropertiesKHR-                                             , RayTracingPipelineCreateInfoKHR-                                             , RayTracingPipelineInterfaceCreateInfoKHR-                                             , RayTracingShaderGroupCreateInfoKHR-                                             , StridedBufferRegionKHR-                                             , TraceRaysIndirectCommandKHR-                                             , TransformMatrixKHR-                                             , WriteDescriptorSetAccelerationStructureKHR-                                             , CopyAccelerationStructureModeKHR-                                             , GeometryFlagBitsKHR-                                             , GeometryFlagsKHR-                                             , GeometryInstanceFlagBitsKHR-                                             , GeometryInstanceFlagsKHR-                                             , BuildAccelerationStructureFlagBitsKHR-                                             , BuildAccelerationStructureFlagsKHR-                                             , AccelerationStructureTypeKHR-                                             , GeometryTypeKHR-                                             , RayTracingShaderGroupTypeKHR-                                             , AccelerationStructureMemoryRequirementsTypeKHR-                                             ) where--import Data.Kind (Type)-import {-# SOURCE #-} Vulkan.CStruct.Extends (Chain)-import {-# SOURCE #-} Vulkan.CStruct.Extends (Extendss)-import Vulkan.CStruct (FromCStruct)-import {-# SOURCE #-} Vulkan.CStruct.Extends (PeekChain)-import {-# SOURCE #-} Vulkan.CStruct.Extends (PokeChain)-import Vulkan.CStruct (ToCStruct)-data AabbPositionsKHR--instance ToCStruct AabbPositionsKHR-instance Show AabbPositionsKHR--instance FromCStruct AabbPositionsKHR---type role AccelerationStructureBuildGeometryInfoKHR nominal-data AccelerationStructureBuildGeometryInfoKHR (es :: [Type])--instance (Extendss AccelerationStructureBuildGeometryInfoKHR es, PokeChain es) => ToCStruct (AccelerationStructureBuildGeometryInfoKHR es)-instance Show (Chain es) => Show (AccelerationStructureBuildGeometryInfoKHR es)---data AccelerationStructureBuildOffsetInfoKHR--instance ToCStruct AccelerationStructureBuildOffsetInfoKHR-instance Show AccelerationStructureBuildOffsetInfoKHR--instance FromCStruct AccelerationStructureBuildOffsetInfoKHR---data AccelerationStructureCreateGeometryTypeInfoKHR--instance ToCStruct AccelerationStructureCreateGeometryTypeInfoKHR-instance Show AccelerationStructureCreateGeometryTypeInfoKHR--instance FromCStruct AccelerationStructureCreateGeometryTypeInfoKHR---data AccelerationStructureCreateInfoKHR--instance ToCStruct AccelerationStructureCreateInfoKHR-instance Show AccelerationStructureCreateInfoKHR--instance FromCStruct AccelerationStructureCreateInfoKHR---data AccelerationStructureDeviceAddressInfoKHR--instance ToCStruct AccelerationStructureDeviceAddressInfoKHR-instance Show AccelerationStructureDeviceAddressInfoKHR--instance FromCStruct AccelerationStructureDeviceAddressInfoKHR---data AccelerationStructureGeometryAabbsDataKHR--instance ToCStruct AccelerationStructureGeometryAabbsDataKHR-instance Show AccelerationStructureGeometryAabbsDataKHR---data AccelerationStructureGeometryInstancesDataKHR--instance ToCStruct AccelerationStructureGeometryInstancesDataKHR-instance Show AccelerationStructureGeometryInstancesDataKHR---data AccelerationStructureGeometryKHR--instance ToCStruct AccelerationStructureGeometryKHR-instance Show AccelerationStructureGeometryKHR---data AccelerationStructureGeometryTrianglesDataKHR--instance ToCStruct AccelerationStructureGeometryTrianglesDataKHR-instance Show AccelerationStructureGeometryTrianglesDataKHR---data AccelerationStructureInstanceKHR--instance ToCStruct AccelerationStructureInstanceKHR-instance Show AccelerationStructureInstanceKHR--instance FromCStruct AccelerationStructureInstanceKHR---data AccelerationStructureMemoryRequirementsInfoKHR--instance ToCStruct AccelerationStructureMemoryRequirementsInfoKHR-instance Show AccelerationStructureMemoryRequirementsInfoKHR--instance FromCStruct AccelerationStructureMemoryRequirementsInfoKHR---data AccelerationStructureVersionKHR--instance ToCStruct AccelerationStructureVersionKHR-instance Show AccelerationStructureVersionKHR--instance FromCStruct AccelerationStructureVersionKHR---data BindAccelerationStructureMemoryInfoKHR--instance ToCStruct BindAccelerationStructureMemoryInfoKHR-instance Show BindAccelerationStructureMemoryInfoKHR--instance FromCStruct BindAccelerationStructureMemoryInfoKHR---type role CopyAccelerationStructureInfoKHR nominal-data CopyAccelerationStructureInfoKHR (es :: [Type])--instance (Extendss CopyAccelerationStructureInfoKHR es, PokeChain es) => ToCStruct (CopyAccelerationStructureInfoKHR es)-instance Show (Chain es) => Show (CopyAccelerationStructureInfoKHR es)--instance (Extendss CopyAccelerationStructureInfoKHR es, PeekChain es) => FromCStruct (CopyAccelerationStructureInfoKHR es)---type role CopyAccelerationStructureToMemoryInfoKHR nominal-data CopyAccelerationStructureToMemoryInfoKHR (es :: [Type])--instance (Extendss CopyAccelerationStructureToMemoryInfoKHR es, PokeChain es) => ToCStruct (CopyAccelerationStructureToMemoryInfoKHR es)-instance Show (Chain es) => Show (CopyAccelerationStructureToMemoryInfoKHR es)---type role CopyMemoryToAccelerationStructureInfoKHR nominal-data CopyMemoryToAccelerationStructureInfoKHR (es :: [Type])--instance (Extendss CopyMemoryToAccelerationStructureInfoKHR es, PokeChain es) => ToCStruct (CopyMemoryToAccelerationStructureInfoKHR es)-instance Show (Chain es) => Show (CopyMemoryToAccelerationStructureInfoKHR es)---data PhysicalDeviceRayTracingFeaturesKHR--instance ToCStruct PhysicalDeviceRayTracingFeaturesKHR-instance Show PhysicalDeviceRayTracingFeaturesKHR--instance FromCStruct PhysicalDeviceRayTracingFeaturesKHR---data PhysicalDeviceRayTracingPropertiesKHR--instance ToCStruct PhysicalDeviceRayTracingPropertiesKHR-instance Show PhysicalDeviceRayTracingPropertiesKHR--instance FromCStruct PhysicalDeviceRayTracingPropertiesKHR---type role RayTracingPipelineCreateInfoKHR nominal-data RayTracingPipelineCreateInfoKHR (es :: [Type])--instance (Extendss RayTracingPipelineCreateInfoKHR es, PokeChain es) => ToCStruct (RayTracingPipelineCreateInfoKHR es)-instance Show (Chain es) => Show (RayTracingPipelineCreateInfoKHR es)--instance (Extendss RayTracingPipelineCreateInfoKHR es, PeekChain es) => FromCStruct (RayTracingPipelineCreateInfoKHR es)---data RayTracingPipelineInterfaceCreateInfoKHR--instance ToCStruct RayTracingPipelineInterfaceCreateInfoKHR-instance Show RayTracingPipelineInterfaceCreateInfoKHR--instance FromCStruct RayTracingPipelineInterfaceCreateInfoKHR---data RayTracingShaderGroupCreateInfoKHR--instance ToCStruct RayTracingShaderGroupCreateInfoKHR-instance Show RayTracingShaderGroupCreateInfoKHR--instance FromCStruct RayTracingShaderGroupCreateInfoKHR---data StridedBufferRegionKHR--instance ToCStruct StridedBufferRegionKHR-instance Show StridedBufferRegionKHR--instance FromCStruct StridedBufferRegionKHR---data TraceRaysIndirectCommandKHR--instance ToCStruct TraceRaysIndirectCommandKHR-instance Show TraceRaysIndirectCommandKHR--instance FromCStruct TraceRaysIndirectCommandKHR---data TransformMatrixKHR--instance ToCStruct TransformMatrixKHR-instance Show TransformMatrixKHR--instance FromCStruct TransformMatrixKHR---data WriteDescriptorSetAccelerationStructureKHR--instance ToCStruct WriteDescriptorSetAccelerationStructureKHR-instance Show WriteDescriptorSetAccelerationStructureKHR--instance FromCStruct WriteDescriptorSetAccelerationStructureKHR---data CopyAccelerationStructureModeKHR---data GeometryFlagBitsKHR--type GeometryFlagsKHR = GeometryFlagBitsKHR---data GeometryInstanceFlagBitsKHR--type GeometryInstanceFlagsKHR = GeometryInstanceFlagBitsKHR---data BuildAccelerationStructureFlagBitsKHR--type BuildAccelerationStructureFlagsKHR = BuildAccelerationStructureFlagBitsKHR---data AccelerationStructureTypeKHR---data GeometryTypeKHR---data RayTracingShaderGroupTypeKHR---data AccelerationStructureMemoryRequirementsTypeKHR-
+ src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs view
@@ -0,0 +1,3579 @@+{-# language CPP #-}+-- | = Name+--+-- VK_KHR_ray_tracing_pipeline - device extension+--+-- == VK_KHR_ray_tracing_pipeline+--+-- [__Name String__]+--     @VK_KHR_ray_tracing_pipeline@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     348+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+--     -   Requires @VK_KHR_spirv_1_4@+--+--     -   Requires @VK_KHR_acceleration_structure@+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_ray_tracing_pipeline:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-11-12+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_ray_tracing.html SPV_KHR_ray_tracing>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_ray_tracing.txt GLSL_EXT_ray_tracing>+--+--     -   This extension interacts with+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#version-1.2 Vulkan 1.2>+--         and+--         <VK_KHR_vulkan_memory_model.html VK_KHR_vulkan_memory_model>,+--         adding the+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-call-related shader-call-related>+--         relation of invocations,+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-call-order shader-call-order>+--         partial order of dynamic instances of instructions, and the+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-scope-shadercall ShaderCallKHR>+--         scope.+--+--     -   This extension interacts with+--         <VK_KHR_pipeline_library.html VK_KHR_pipeline_library>, enabling+--         pipeline libraries to be used with ray tracing pipelines and+--         enabling usage of 'RayTracingPipelineInterfaceCreateInfoKHR'.+--+-- [__Contributors__]+--+--     -   Matthäus Chajdas, AMD+--+--     -   Greg Grebe, AMD+--+--     -   Nicolai Hähnle, AMD+--+--     -   Tobias Hector, AMD+--+--     -   Dave Oldcorn, AMD+--+--     -   Skyler Saleh, AMD+--+--     -   Mathieu Robart, Arm+--+--     -   Marius Bjorge, Arm+--+--     -   Tom Olson, Arm+--+--     -   Sebastian Tafuri, EA+--+--     -   Henrik Rydgard, Embark+--+--     -   Juan Cañada, Epic Games+--+--     -   Patrick Kelly, Epic Games+--+--     -   Yuriy O’Donnell, Epic Games+--+--     -   Michael Doggett, Facebook\/Oculus+--+--     -   Andrew Garrard, Imagination+--+--     -   Don Scorgie, Imagination+--+--     -   Dae Kim, Imagination+--+--     -   Joshua Barczak, Intel+--+--     -   Slawek Grajewski, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Pascal Gautron, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Christoph Kubisch, NVIDIA+--+--     -   Ashwin Lele, NVIDIA+--+--     -   Robert Stepinski, NVIDIA+--+--     -   Martin Stich, NVIDIA+--+--     -   Nuno Subtil, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+--     -   Jon Leech, Khronos+--+--     -   Jeroen van Schijndel, OTOY+--+--     -   Juul Joosten, OTOY+--+--     -   Alex Bourd, Qualcomm+--+--     -   Roman Larionov, Qualcomm+--+--     -   David McAllister, Qualcomm+--+--     -   Spencer Fricke, Samsung+--+--     -   Lewis Gordon, Samsung+--+--     -   Ralph Potter, Samsung+--+--     -   Jasper Bekkers, Traverse Research+--+--     -   Jesse Barker, Unity+--+--     -   Baldur Karlsson, Valve+--+-- == Description+--+-- Rasterization has been the dominant method to produce interactive+-- graphics, but increasing performance of graphics hardware has made ray+-- tracing a viable option for interactive rendering. Being able to+-- integrate ray tracing with traditional rasterization makes it easier for+-- applications to incrementally add ray traced effects to existing+-- applications or to do hybrid approaches with rasterization for primary+-- visibility and ray tracing for secondary queries.+--+-- To enable ray tracing, this extension adds a few different categories of+-- new functionality:+--+-- -   A new ray tracing pipeline type with new shader domains: ray+--     generation, intersection, any-hit, closest hit, miss, and callable+--+-- -   A shader binding indirection table to link shader groups with+--     acceleration structure items+--+-- -   Trace ray commands which initiates the ray pipeline traversal and+--     invocation of the various new shader domains depending on which+--     traversal conditions are met+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   @SPV_KHR_ray_tracing@+--+-- == New Commands+--+-- -   'cmdSetRayTracingPipelineStackSizeKHR'+--+-- -   'cmdTraceRaysIndirectKHR'+--+-- -   'cmdTraceRaysKHR'+--+-- -   'createRayTracingPipelinesKHR'+--+-- -   'getRayTracingCaptureReplayShaderGroupHandlesKHR'+--+-- -   'getRayTracingShaderGroupHandlesKHR'+--+-- -   'getRayTracingShaderGroupStackSizeKHR'+--+-- == New Structures+--+-- -   'RayTracingPipelineCreateInfoKHR'+--+-- -   'RayTracingPipelineInterfaceCreateInfoKHR'+--+-- -   'RayTracingShaderGroupCreateInfoKHR'+--+-- -   'StridedDeviceAddressRegionKHR'+--+-- -   'TraceRaysIndirectCommandKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceRayTracingPipelineFeaturesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceRayTracingPipelinePropertiesKHR'+--+-- == New Enums+--+-- -   'RayTracingShaderGroupTypeKHR'+--+-- -   'ShaderGroupShaderKHR'+--+-- == New Enum Constants+--+-- -   'KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME'+--+-- -   'KHR_RAY_TRACING_PIPELINE_SPEC_VERSION'+--+-- -   'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint':+--+--     -   'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ANY_HIT_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLOSEST_HIT_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_INTERSECTION_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR'+--+-- == New or Modified Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIDKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raygeometryindex RayGeometryIndexKHR>+--+-- -   (modified)@PrimitiveId@+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-khr-raytracing RayTracingKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-khr-raytracing RayTraversalPrimitiveCullingKHR>+--+-- == Issues+--+-- (1) How does this extension differ from VK_NV_ray_tracing?+--+-- __DISCUSSION__:+--+-- The following is a summary of the main functional differences between+-- VK_KHR_ray_tracing_pipeline and VK_NV_ray_tracing:+--+-- -   added support for indirect ray tracing ('cmdTraceRaysIndirectKHR')+--+-- -   uses SPV_KHR_ray_tracing instead of SPV_NV_ray_tracing+--+--     -   refer to KHR SPIR-V enums instead of NV SPIR-V enums (which are+--         functionally equivalent and aliased to the same values).+--+--     -   added @RayGeometryIndexKHR@ built-in+--+-- -   removed vkCompileDeferredNV compilation functionality and replaced+--     with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations deferred host operations>+--     interactions for ray tracing+--+-- -   added 'PhysicalDeviceRayTracingPipelineFeaturesKHR' structure+--+-- -   extended 'PhysicalDeviceRayTracingPipelinePropertiesKHR' structure+--+--     -   renamed @maxRecursionDepth@ to @maxRayRecursionDepth@ and it has+--         a minimum of 1 instead of 31+--+--     -   require @shaderGroupHandleSize@ to be 32 bytes+--+--     -   added @maxRayDispatchInvocationCount@,+--         @shaderGroupHandleAlignment@ and @maxRayHitAttributeSize@+--+-- -   reworked geometry structures so they could be better shared between+--     device, host, and indirect builds+--+-- -   changed SBT parameters to a structure and added size+--     ('StridedDeviceAddressRegionKHR')+--+-- -   add parameter for requesting memory requirements for host and\/or+--     device build+--+-- -   added+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-library pipeline library>+--     support for ray tracing+--+-- -   added+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-traversal-watertight watertightness guarantees>+--+-- -   added no-null-shader pipeline flags+--     (@VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_*_SHADERS_BIT_KHR@)+--+-- -   added+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-shader-call memory model interactions>+--     with ray tracing and define how subgroups work and can be repacked+--+-- (2) Can you give a more detailed comparision of differences and+-- similarities between VK_NV_ray_tracing and VK_KHR_ray_tracing_pipeline?+--+-- __DISCUSSION__:+--+-- The following is a more detailed comparision of which commands,+-- structures, and enums are aliased, changed, or removed.+--+-- -   Aliased functionality — enums, structures, and commands that are+--     considered equivalent:+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupTypeNV'+--         ↔ 'RayTracingShaderGroupTypeKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.getRayTracingShaderGroupHandlesNV'+--         ↔ 'getRayTracingShaderGroupHandlesKHR'+--+-- -   Changed enums, structures, and commands:+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupCreateInfoNV'+--         → 'RayTracingShaderGroupCreateInfoKHR' (added+--         @pShaderGroupCaptureReplayHandle@)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'+--         → 'RayTracingPipelineCreateInfoKHR' (changed type of @pGroups@,+--         added @libraries@, @pLibraryInterface@, and @pDynamicState@)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'+--         → VkPhysicalDeviceRayTracingPropertiesKHR (renamed+--         @maxTriangleCount@ to @maxPrimitiveCount@, added+--         @shaderGroupHandleCaptureReplaySize@)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV' →+--         'cmdTraceRaysKHR' (params to struct)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV'+--         → 'createRayTracingPipelinesKHR' (different struct, changed+--         functionality)+--+-- -   Added enums, structures and commands:+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR',+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'+--         to+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+--+--     -   'PhysicalDeviceRayTracingPipelineFeaturesKHR' structure+--+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR'+--         and+--         'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'+--         unions+--+--     -   'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'+--         struct+--+--     -   'RayTracingPipelineInterfaceCreateInfoKHR' struct+--+--     -   'StridedDeviceAddressRegionKHR' struct+--+--     -   'cmdTraceRaysIndirectKHR' command and+--         'TraceRaysIndirectCommandKHR' struct+--+--     -   'getRayTracingCaptureReplayShaderGroupHandlesKHR' (shader group+--         capture\/replay)+--+--     -   'cmdSetRayTracingPipelineStackSizeKHR' and+--         'getRayTracingShaderGroupStackSizeKHR' commands for stack size+--         control+--+-- -   Functionality removed:+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV' command+--         (replaced with+--         <VK_KHR_deferred_host_operations.html VK_KHR_deferred_host_operations>)+--+-- (3) What are the changes between the public provisional+-- (VK_KHR_ray_tracing v8) release and the internal provisional+-- (VK_KHR_ray_tracing v9) release?+--+-- -   Require Vulkan 1.1 and SPIR-V 1.4+--+-- -   Added interactions with Vulkan 1.2 and+--     <VK_KHR_vulkan_memory_model.html VK_KHR_vulkan_memory_model>+--+-- -   added creation time capture and replay flags+--+--     -   added+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'+--         to+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+--+-- -   replace @VkStridedBufferRegionKHR@ with+--     'StridedDeviceAddressRegionKHR' and change 'cmdTraceRaysKHR',+--     'cmdTraceRaysIndirectKHR', to take these for the shader binding+--     table and use device addresses instead of buffers.+--+-- -   require the shader binding table buffers to have the+--     @VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR@ set+--+-- -   make <VK_KHR_pipeline_library.html VK_KHR_pipeline_library> an+--     interaction instead of required extension+--+-- -   rename the @libraries@ member of 'RayTracingPipelineCreateInfoKHR'+--     to @pLibraryInfo@ and make it a pointer+--+-- -   make+--     <VK_KHR_deferred_host_operations.html VK_KHR_deferred_host_operations>+--     an interaction instead of a required extension (later went back on+--     this)+--+-- -   added explicit stack size management for ray tracing pipelines+--+--     -   removed the @maxCallableSize@ member of+--         'RayTracingPipelineInterfaceCreateInfoKHR'+--+--     -   added the @pDynamicState@ member to+--         'RayTracingPipelineCreateInfoKHR'+--+--     -   added+--         'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'+--         dynamic state for ray tracing pipelines+--+--     -   added 'getRayTracingShaderGroupStackSizeKHR' and+--         'cmdSetRayTracingPipelineStackSizeKHR' commands+--+--     -   added 'ShaderGroupShaderKHR' enum+--+-- -   Added @maxRayDispatchInvocationCount@ limit to+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'+--+-- -   Added @shaderGroupHandleAlignment@ property to+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'+--+-- -   Added @maxRayHitAttributeSize@ property to+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'+--+-- -   Clarify deferred host ops for pipeline creation+--+--     -   'Vulkan.Extensions.Handles.DeferredOperationKHR' is now a+--         top-level parameter for 'createRayTracingPipelinesKHR'+--+--     -   removed @VkDeferredOperationInfoKHR@ structure+--+--     -   change deferred host creation\/return parameter behavior such+--         that the implementation can modify such parameters until the+--         deferred host operation completes+--+--     -   <VK_KHR_deferred_host_operations.html VK_KHR_deferred_host_operations>+--         is required again+--+-- (4) What are the changes between the internal provisional+-- (VK_KHR_ray_tracing v9) release and the final+-- (VK_KHR_acceleration_structure v11 \/ VK_KHR_ray_tracing_pipeline v1)+-- release?+--+-- -   refactor VK_KHR_ray_tracing into 3 extensions, enabling+--     implementation flexibility and decoupling ray query support from ray+--     pipelines:+--+--     -   <VK_KHR_acceleration_structure.html VK_KHR_acceleration_structure>+--         (for acceleration structure operations)+--+--     -   <VK_KHR_ray_tracing_pipeline.html VK_KHR_ray_tracing_pipeline>+--         (for ray tracing pipeline and shader stages)+--+--     -   <VK_KHR_ray_query.html VK_KHR_ray_query> (for ray queries in+--         existing shader stages)+--+-- -   Require @Volatile@ for the following builtins in the ray generation,+--     closest hit, miss, intersection, and callable shader stages:+--+--     -   @SubgroupSize@, @SubgroupLocalInvocationId@, @SubgroupEqMask@,+--         @SubgroupGeMask@, @SubgroupGtMask@, @SubgroupLeMask@,+--         @SubgroupLtMask@+--+--     -   @SMIDNV@, @WarpIDNV@+--+-- -   clarify buffer usage flags for ray tracing+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'+--         is added as an alias of+--         'Vulkan.Extensions.VK_NV_ray_tracing.BUFFER_USAGE_RAY_TRACING_BIT_NV'+--         and is required on shader binding table buffers+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'+--         is used in+--         <VK_KHR_acceleration_structure.html VK_KHR_acceleration_structure>+--         for @scratchData@+--+-- -   rename @maxRecursionDepth@ to @maxRayPipelineRecursionDepth@+--     (pipeline creation) and @maxRayRecursionDepth@ (limit) to reduce+--     confusion+--+-- -   Add queryable @maxRayHitAttributeSize@ limit and rename members of+--     'RayTracingPipelineInterfaceCreateInfoKHR' to+--     @maxPipelineRayPayloadSize@ and @maxPipelineRayHitAttributeSize@ for+--     clarity+--+-- -   Update SPIRV capabilities to use @RayTracingKHR@+--+-- -   extension is no longer provisional+--+-- -   define synchronization requirements for indirect trace rays and+--     indirect buffer+--+-- (5) This extension adds gl_InstanceID for the intersection, any-hit, and+-- closest hit shaders, but in KHR_vulkan_glsl, gl_InstanceID is replaced+-- with gl_InstanceIndex. Which should be used for Vulkan in this+-- extension?+--+-- RESOLVED: This extension uses gl_InstanceID and maps it to @InstanceId@+-- in SPIR-V. It is acknowledged that this is different than other shader+-- stages in Vulkan. There are two main reasons for the difference here:+--+-- -   symmetry with gl_PrimitiveID which is also available in these+--     shaders+--+-- -   there is no \"baseInstance\" relevant for these shaders, and so ID+--     makes it more obvious that this is zero-based.+--+-- == Sample Code+--+-- Example ray generation GLSL shader+--+-- > #version 450 core+-- > #extension GL_EXT_ray_tracing : require+-- > layout(set = 0, binding = 0, rgba8) uniform image2D image;+-- > layout(set = 0, binding = 1) uniform accelerationStructureEXT as;+-- > layout(location = 0) rayPayloadEXT float payload;+-- >+-- > void main()+-- > {+-- >    vec4 col = vec4(0, 0, 0, 1);+-- >+-- >    vec3 origin = vec3(float(gl_LaunchIDEXT.x)/float(gl_LaunchSizeEXT.x), float(gl_LaunchIDEXT.y)/float(gl_LaunchSizeEXT.y), 1.0);+-- >    vec3 dir = vec3(0.0, 0.0, -1.0);+-- >+-- >    traceRayEXT(as, 0, 0xff, 0, 1, 0, origin, 0.0, dir, 1000.0, 0);+-- >+-- >    col.y = payload;+-- >+-- >    imageStore(image, ivec2(gl_LaunchIDEXT.xy), col);+-- > }+--+-- == Version History+--+-- -   Revision 1, 2020-11-12 (Mathieu Robart, Daniel Koch, Eric Werness,+--     Tobias Hector)+--+--     -   Decomposition of the specification, from VK_KHR_ray_tracing to+--         VK_KHR_ray_tracing_pipeline (#1918,!3912)+--+--     -   require certain subgroup and sm_shader_builtin shader builtins+--         to be decorated as volatile in the ray generation, closest hit,+--         miss, intersection, and callable stages (#1924,!3903,!3954)+--+--     -   clarify buffer usage flags for ray tracing (#2181,!3939)+--+--     -   rename maxRecursionDepth to maxRayPipelineRecursionDepth and+--         maxRayRecursionDepth (#2203,!3937)+--+--     -   add queriable maxRayHitAttributeSize and rename members of+--         VkRayTracingPipelineInterfaceCreateInfoKHR (#2102,!3966)+--+--     -   update to use @RayTracingKHR@ SPIR-V capability+--+--     -   add VUs for matching hit group type against geometry type+--         (#2245,!3994)+--+--     -   require @RayTMaxKHR@ be volatile in intersection shaders+--         (#2268,!4030)+--+--     -   add numerical limits for ray parameters (#2235,!3960)+--+--     -   fix SBT indexing rules for device addresses (#2308,!4079)+--+--     -   relax formula for ray intersection candidate determination+--         (#2322,!4080)+--+--     -   add more details on @ShaderRecordBufferKHR@ variables+--         (#2230,!4083)+--+--     -   clarify valid bits for @InstanceCustomIndexKHR@+--         (GLSL\/GLSL#19,!4128)+--+--     -   allow at most one @IncomingRayPayloadKHR@,+--         @IncomingCallableDataKHR@, and @HitAttributeKHR@ (!4129)+--+--     -   add minimum for maxShaderGroupStride (#2353,!4131)+--+--     -   require VK_KHR_pipeline_library extension to be supported+--         (#2348,!4135)+--+--     -   clarify meaning of \'geometry index\' (#2272,!4137)+--+--     -   restrict traces to TLAS (#2239,!4141)+--+--     -   add note about maxPipelineRayPayloadSize (#2383,!4172)+--+--     -   do not require raygen shader in pipeline libraries (!4185)+--+--     -   define sync for indirect trace rays and indirect buffer+--         (#2407,!4208)+--+-- = See Also+--+-- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR',+-- 'PhysicalDeviceRayTracingPipelineFeaturesKHR',+-- 'PhysicalDeviceRayTracingPipelinePropertiesKHR',+-- 'RayTracingPipelineCreateInfoKHR',+-- 'RayTracingPipelineInterfaceCreateInfoKHR',+-- 'RayTracingShaderGroupCreateInfoKHR', 'RayTracingShaderGroupTypeKHR',+-- 'ShaderGroupShaderKHR', 'StridedDeviceAddressRegionKHR',+-- 'TraceRaysIndirectCommandKHR', 'cmdSetRayTracingPipelineStackSizeKHR',+-- 'cmdTraceRaysIndirectKHR', 'cmdTraceRaysKHR',+-- 'createRayTracingPipelinesKHR',+-- 'getRayTracingCaptureReplayShaderGroupHandlesKHR',+-- 'getRayTracingShaderGroupHandlesKHR',+-- 'getRayTracingShaderGroupStackSizeKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_KHR_ray_tracing_pipeline  ( cmdTraceRaysKHR+                                                      , getRayTracingShaderGroupHandlesKHR+                                                      , getRayTracingCaptureReplayShaderGroupHandlesKHR+                                                      , createRayTracingPipelinesKHR+                                                      , withRayTracingPipelinesKHR+                                                      , cmdTraceRaysIndirectKHR+                                                      , getRayTracingShaderGroupStackSizeKHR+                                                      , cmdSetRayTracingPipelineStackSizeKHR+                                                      , RayTracingShaderGroupCreateInfoKHR(..)+                                                      , RayTracingPipelineCreateInfoKHR(..)+                                                      , PhysicalDeviceRayTracingPipelineFeaturesKHR(..)+                                                      , PhysicalDeviceRayTracingPipelinePropertiesKHR(..)+                                                      , StridedDeviceAddressRegionKHR(..)+                                                      , TraceRaysIndirectCommandKHR(..)+                                                      , RayTracingPipelineInterfaceCreateInfoKHR(..)+                                                      , RayTracingShaderGroupTypeKHR( RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR+                                                                                    , RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR+                                                                                    , RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR+                                                                                    , ..+                                                                                    )+                                                      , ShaderGroupShaderKHR( SHADER_GROUP_SHADER_GENERAL_KHR+                                                                            , SHADER_GROUP_SHADER_CLOSEST_HIT_KHR+                                                                            , SHADER_GROUP_SHADER_ANY_HIT_KHR+                                                                            , SHADER_GROUP_SHADER_INTERSECTION_KHR+                                                                            , ..+                                                                            )+                                                      , KHR_RAY_TRACING_PIPELINE_SPEC_VERSION+                                                      , pattern KHR_RAY_TRACING_PIPELINE_SPEC_VERSION+                                                      , KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME+                                                      , pattern KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME+                                                      , DeferredOperationKHR(..)+                                                      , PipelineLibraryCreateInfoKHR(..)+                                                      , SHADER_UNUSED_KHR+                                                      , pattern SHADER_UNUSED_KHR+                                                      ) where++import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec)+import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Control.Monad.IO.Class (liftIO)+import Data.Foldable (traverse_)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (maybePeek)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import GHC.Ptr (nullFunPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Show (showsPrec)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Foreign.C.Types (CSize(..))+import Control.Monad.IO.Class (MonadIO)+import Data.String (IsString)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.Generics (Generic)+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Vulkan.CStruct.Utils (advancePtrBytes)+import Vulkan.Core10.FundamentalTypes (bool32ToBool)+import Vulkan.Core10.FundamentalTypes (boolToBool32)+import Vulkan.Core10.Pipeline (destroyPipeline)+import Vulkan.CStruct.Extends (forgetExtensions)+import Vulkan.CStruct.Extends (peekSomeCStruct)+import Vulkan.CStruct.Extends (pokeSomeCStruct)+import Vulkan.NamedType ((:::))+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Vulkan.Core10.FundamentalTypes (Bool32)+import Vulkan.CStruct.Extends (Chain)+import Vulkan.Core10.Handles (CommandBuffer)+import Vulkan.Core10.Handles (CommandBuffer(..))+import Vulkan.Core10.Handles (CommandBuffer_T)+import Vulkan.Extensions.Handles (DeferredOperationKHR)+import Vulkan.Extensions.Handles (DeferredOperationKHR(..))+import Vulkan.Core10.Handles (Device)+import Vulkan.Core10.Handles (Device(..))+import Vulkan.Core10.FundamentalTypes (DeviceAddress)+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetRayTracingPipelineStackSizeKHR))+import Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysIndirectKHR))+import Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysKHR))+import Vulkan.Dynamic (DeviceCmds(pVkCreateRayTracingPipelinesKHR))+import Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR))+import Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingShaderGroupHandlesKHR))+import Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingShaderGroupStackSizeKHR))+import Vulkan.Core10.FundamentalTypes (DeviceSize)+import Vulkan.Core10.Handles (Device_T)+import Vulkan.CStruct.Extends (Extends)+import Vulkan.CStruct.Extends (Extendss)+import Vulkan.CStruct.Extends (Extensible(..))+import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (FromCStruct(..))+import Vulkan.CStruct.Extends (PeekChain)+import Vulkan.CStruct.Extends (PeekChain(..))+import Vulkan.Core10.Handles (Pipeline)+import Vulkan.Core10.Handles (Pipeline(..))+import Vulkan.Core10.Handles (PipelineCache)+import Vulkan.Core10.Handles (PipelineCache(..))+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfoEXT)+import Vulkan.Core10.Pipeline (PipelineDynamicStateCreateInfo)+import Vulkan.Core10.Handles (PipelineLayout)+import Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR)+import Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)+import Vulkan.CStruct.Extends (PokeChain)+import Vulkan.CStruct.Extends (PokeChain(..))+import Vulkan.Core10.Enums.Result (Result)+import Vulkan.Core10.Enums.Result (Result(..))+import Vulkan.CStruct.Extends (SomeStruct)+import Vulkan.Core10.Enums.StructureType (StructureType)+import Vulkan.CStruct (ToCStruct)+import Vulkan.CStruct (ToCStruct(..))+import Vulkan.Exception (VulkanException(..))+import Vulkan.Zero (Zero)+import Vulkan.Zero (Zero(..))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR))+import Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Vulkan.Extensions.Handles (DeferredOperationKHR(..))+import Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR(..))+import Vulkan.Core10.APIConstants (SHADER_UNUSED_KHR)+import Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdTraceRaysKHR+  :: FunPtr (Ptr CommandBuffer_T -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Word32 -> Word32 -> Word32 -> IO ()++-- | vkCmdTraceRaysKHR - Initialize a ray tracing dispatch+--+-- = Description+--+-- When the command is executed, a ray generation group of @width@ ×+-- @height@ × @depth@ rays is assembled.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdTraceRaysKHR-magFilter-04553# If a+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and+--     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is+--     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of+--     this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- -   #VUID-vkCmdTraceRaysKHR-None-02691# If a+--     'Vulkan.Core10.Handles.ImageView' is accessed using atomic+--     operations as a result of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- -   #VUID-vkCmdTraceRaysKHR-None-02692# If a+--     'Vulkan.Core10.Handles.ImageView' is sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result+--     of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   #VUID-vkCmdTraceRaysKHR-filterCubic-02694# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result+--     of this command /must/ have a+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that+--     supports cubic filtering, as specified by+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+--     returned by+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   #VUID-vkCmdTraceRaysKHR-filterCubicMinmax-02695# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a+--     reduction mode of either+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+--     or+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+--     as a result of this command /must/ have a+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that+--     supports cubic filtering together with minmax filtering, as+--     specified by+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+--     returned by+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   #VUID-vkCmdTraceRaysKHR-flags-02696# Any+--     'Vulkan.Core10.Handles.Image' created with a+--     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+--     sampled as a result of this command /must/ only be sampled using a+--     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'+--+-- -   #VUID-vkCmdTraceRaysKHR-None-02697# For each set /n/ that is+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the+--     pipeline bind point used by this command, a descriptor set /must/+--     have been bound to /n/ at the same pipeline bind point, with a+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set+--     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to create+--     the current 'Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   #VUID-vkCmdTraceRaysKHR-None-02698# For each push constant that is+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the+--     pipeline bind point used by this command, a push constant value+--     /must/ have been set for the same pipeline bind point, with a+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push+--     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to+--     create the current 'Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   #VUID-vkCmdTraceRaysKHR-None-02699# Descriptors in each bound+--     descriptor set, specified via+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/+--     be valid if they are statically used by the+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point+--     used by this command+--+-- -   #VUID-vkCmdTraceRaysKHR-None-02700# A valid pipeline /must/ be bound+--     to the pipeline bind point used by this command+--+-- -   #VUID-vkCmdTraceRaysKHR-commandBuffer-02701# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command requires any dynamic state, that state+--     /must/ have been set for @commandBuffer@, and done so after any+--     previously bound pipeline with the corresponding state not specified+--     as dynamic+--+-- -   #VUID-vkCmdTraceRaysKHR-None-02859# There /must/ not have been any+--     calls to dynamic state setting commands for any state not specified+--     as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object bound to+--     the pipeline bind point used by this command, since that pipeline+--     was bound+--+-- -   #VUID-vkCmdTraceRaysKHR-None-02702# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+--     coordinates, that sampler /must/ not be used to sample from any+--     'Vulkan.Core10.Handles.Image' with a+--     'Vulkan.Core10.Handles.ImageView' of the type+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in+--     any shader stage+--+-- -   #VUID-vkCmdTraceRaysKHR-None-02703# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+--     coordinates, that sampler /must/ not be used with any of the SPIR-V+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with+--     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage+--+-- -   #VUID-vkCmdTraceRaysKHR-None-02704# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+--     coordinates, that sampler /must/ not be used with any of the SPIR-V+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that+--     includes a LOD bias or any offset values, in any shader stage+--+-- -   #VUID-vkCmdTraceRaysKHR-None-02705# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a uniform buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdTraceRaysKHR-None-02706# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a storage buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdTraceRaysKHR-commandBuffer-02707# If @commandBuffer@ is+--     an unprotected command buffer, any resource accessed by the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command /must/ not be a protected resource+--+-- -   #VUID-vkCmdTraceRaysKHR-None-04115# If a+--     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@+--     as a result of this command, then the @Type@ of the @Texel@ operand+--     of that instruction /must/ have at least as many components as the+--     image view’s format.+--+-- -   #VUID-vkCmdTraceRaysKHR-OpImageWrite-04469# If a+--     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@+--     as a result of this command, then the @Type@ of the @Texel@ operand+--     of that instruction /must/ have at least as many components as the+--     image view’s format.+--+-- -   #VUID-vkCmdTraceRaysKHR-SampledType-04470# If a+--     'Vulkan.Core10.Handles.ImageView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width+--     is accessed as a result of this command, the @SampledType@ of the+--     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of+--     64.+--+-- -   #VUID-vkCmdTraceRaysKHR-SampledType-04471# If a+--     'Vulkan.Core10.Handles.ImageView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a channel width less+--     than 64-bit is accessed as a result of this command, the+--     @SampledType@ of the @OpTypeImage@ operand of that instruction+--     /must/ have a @Width@ of 32.+--+-- -   #VUID-vkCmdTraceRaysKHR-SampledType-04472# If a+--     'Vulkan.Core10.Handles.BufferView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width+--     is accessed as a result of this command, the @SampledType@ of the+--     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of+--     64.+--+-- -   #VUID-vkCmdTraceRaysKHR-SampledType-04473# If a+--     'Vulkan.Core10.Handles.BufferView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a channel width less+--     than 64-bit is accessed as a result of this command, the+--     @SampledType@ of the @OpTypeImage@ operand of that instruction+--     /must/ have a @Width@ of 32.+--+-- -   #VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04474# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>+--     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects+--     created with the+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+--     flag /must/ not be accessed by atomic instructions through an+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this+--     command.+--+-- -   #VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04475# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>+--     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects+--     created with the+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'+--     flag /must/ not be accessed by atomic instructions through an+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this+--     command.+--+-- -   #VUID-vkCmdTraceRaysKHR-None-03429# Any shader group handle+--     referenced by this call /must/ have been queried from the currently+--     bound ray tracing shader pipeline+--+-- -   #VUID-vkCmdTraceRaysKHR-maxPipelineRayRecursionDepth-03679# This+--     command /must/ not cause a shader call instruction to be executed+--     from a shader invocation with a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth recursion depth>+--     greater than the value of @maxPipelineRayRecursionDepth@ used to+--     create the bound ray tracing pipeline+--+-- -   #VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03680# If the+--     buffer from which @pRayGenShaderBindingTable->deviceAddress@ was+--     queried is non-sparse then it /must/ be bound completely and+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03681# The buffer+--     from which the @pRayGenShaderBindingTable->deviceAddress@ is queried+--     /must/ have been created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'+--     usage flag+--+-- -   #VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03682#+--     @pRayGenShaderBindingTable->deviceAddress@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   #VUID-vkCmdTraceRaysKHR-size-04023# The @size@ member of+--     @pRayGenShaderBindingTable@ /must/ be equal to its @stride@ member+--+-- -   #VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03683# If the buffer+--     from which @pMissShaderBindingTable->deviceAddress@ was queried is+--     non-sparse then it /must/ be bound completely and contiguously to a+--     single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03684# The buffer+--     from which the @pMissShaderBindingTable->deviceAddress@ is queried+--     /must/ have been created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'+--     usage flag+--+-- -   #VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03685#+--     @pMissShaderBindingTable->deviceAddress@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   #VUID-vkCmdTraceRaysKHR-stride-03686# The @stride@ member of+--     @pMissShaderBindingTable@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@+--+-- -   #VUID-vkCmdTraceRaysKHR-stride-04029# The @stride@ member of+--     @pMissShaderBindingTable@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@+--+-- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03687# If the buffer+--     from which @pHitShaderBindingTable->deviceAddress@ was queried is+--     non-sparse then it /must/ be bound completely and contiguously to a+--     single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03688# The buffer+--     from which the @pHitShaderBindingTable->deviceAddress@ is queried+--     /must/ have been created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'+--     usage flag+--+-- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03689#+--     @pHitShaderBindingTable->deviceAddress@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   #VUID-vkCmdTraceRaysKHR-stride-03690# The @stride@ member of+--     @pHitShaderBindingTable@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@+--+-- -   #VUID-vkCmdTraceRaysKHR-stride-04035# The @stride@ member of+--     @pHitShaderBindingTable@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@+--+-- -   #VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03691# If the+--     buffer from which @pCallableShaderBindingTable->deviceAddress@ was+--     queried is non-sparse then it /must/ be bound completely and+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03692# The+--     buffer from which the @pCallableShaderBindingTable->deviceAddress@+--     is queried /must/ have been created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'+--     usage flag+--+-- -   #VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03693#+--     @pCallableShaderBindingTable->deviceAddress@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   #VUID-vkCmdTraceRaysKHR-stride-03694# The @stride@ member of+--     @pCallableShaderBindingTable@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@+--+-- -   #VUID-vkCmdTraceRaysKHR-stride-04041# The @stride@ member of+--     @pCallableShaderBindingTable@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@+--+-- -   #VUID-vkCmdTraceRaysKHR-flags-03695# If the currently bound ray+--     tracing pipeline was created with @flags@ that included+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',+--     the @deviceAddress@ member of @pHitShaderBindingTable@ /must/ not be+--     zero+--+-- -   #VUID-vkCmdTraceRaysKHR-flags-03696# If the currently bound ray+--     tracing pipeline was created with @flags@ that included+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',+--     the @deviceAddress@ member of @pHitShaderBindingTable@ /must/ not be+--     zero+--+-- -   #VUID-vkCmdTraceRaysKHR-flags-03697# If the currently bound ray+--     tracing pipeline was created with @flags@ that included+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',+--     the @deviceAddress@ member of @pHitShaderBindingTable@ /must/ not be+--     zero+--+-- -   #VUID-vkCmdTraceRaysKHR-flags-03511# If the currently bound ray+--     tracing pipeline was created with @flags@ that included+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',+--     the shader group handle identified by @pMissShaderBindingTable@+--     /must/ contain a valid miss shader+--+-- -   #VUID-vkCmdTraceRaysKHR-flags-03512# If the currently bound ray+--     tracing pipeline was created with @flags@ that included+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',+--     entries in @pHitShaderBindingTable@ accessed as a result of this+--     command in order to execute an any-hit shader /must/ not be set to+--     zero+--+-- -   #VUID-vkCmdTraceRaysKHR-flags-03513# If the currently bound ray+--     tracing pipeline was created with @flags@ that included+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',+--     entries in @pHitShaderBindingTable@ accessed as a result of this+--     command in order to execute a closest hit shader /must/ not be set+--     to zero+--+-- -   #VUID-vkCmdTraceRaysKHR-flags-03514# If the currently bound ray+--     tracing pipeline was created with @flags@ that included+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',+--     entries in @pHitShaderBindingTable@ accessed as a result of this+--     command in order to execute an intersection shader /must/ not be set+--     to zero+--+-- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03720# Any hit group+--     entries in @pHitShaderBindingTable@ accessed by this call from a+--     geometry with a @geometryType@ of+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_TRIANGLES_KHR'+--     /must/ have been created with+--     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR'+--+-- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03721# Any hit group+--     entries in @pHitShaderBindingTable@ accessed by this call from a+--     geometry with a @geometryType@ of+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_AABBS_KHR'+--     /must/ have been created with+--     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR'+--+-- -   #VUID-vkCmdTraceRaysKHR-commandBuffer-02712# If @commandBuffer@ is a+--     protected command buffer, any resource written to by the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command /must/ not be an unprotected resource+--+-- -   #VUID-vkCmdTraceRaysKHR-commandBuffer-02713# If @commandBuffer@ is a+--     protected command buffer, pipeline stages other than the+--     framebuffer-space and compute stages in the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point /must/ not write to any resource+--+-- -   #VUID-vkCmdTraceRaysKHR-width-03626# @width@ /must/ be less than or+--     equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]+--     ×+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[0]+--+-- -   #VUID-vkCmdTraceRaysKHR-height-03627# @height@ /must/ be less than+--     or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]+--     ×+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[1]+--+-- -   #VUID-vkCmdTraceRaysKHR-depth-03628# @depth@ /must/ be less than or+--     equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]+--     ×+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[2]+--+-- -   #VUID-vkCmdTraceRaysKHR-width-03629# @width@ × @height@ × @depth@+--     /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxRayDispatchInvocationCount@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdTraceRaysKHR-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdTraceRaysKHR-pRaygenShaderBindingTable-parameter#+--     @pRaygenShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedDeviceAddressRegionKHR' structure+--+-- -   #VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-parameter#+--     @pMissShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedDeviceAddressRegionKHR' structure+--+-- -   #VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-parameter#+--     @pHitShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedDeviceAddressRegionKHR' structure+--+-- -   #VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-parameter#+--     @pCallableShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedDeviceAddressRegionKHR' structure+--+-- -   #VUID-vkCmdTraceRaysKHR-commandBuffer-recording# @commandBuffer@+--     /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   #VUID-vkCmdTraceRaysKHR-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdTraceRaysKHR-renderpass# This command /must/ only be+--     called outside of a render pass instance+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Vulkan.Core10.Handles.CommandBuffer', 'StridedDeviceAddressRegionKHR'+cmdTraceRaysKHR :: forall io+                 . (MonadIO io)+                => -- | @commandBuffer@ is the command buffer into which the command will be+                   -- recorded.+                   CommandBuffer+                -> -- | @pRaygenShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that+                   -- holds the shader binding table data for the ray generation shader stage.+                   ("raygenShaderBindingTable" ::: StridedDeviceAddressRegionKHR)+                -> -- | @pMissShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that+                   -- holds the shader binding table data for the miss shader stage.+                   ("missShaderBindingTable" ::: StridedDeviceAddressRegionKHR)+                -> -- | @pHitShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that holds+                   -- the shader binding table data for the hit shader stage.+                   ("hitShaderBindingTable" ::: StridedDeviceAddressRegionKHR)+                -> -- | @pCallableShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that+                   -- holds the shader binding table data for the callable shader stage.+                   ("callableShaderBindingTable" ::: StridedDeviceAddressRegionKHR)+                -> -- | @width@ is the width of the ray trace query dimensions.+                   ("width" ::: Word32)+                -> -- | @height@ is height of the ray trace query dimensions.+                   ("height" ::: Word32)+                -> -- | @depth@ is depth of the ray trace query dimensions.+                   ("depth" ::: Word32)+                -> io ()+cmdTraceRaysKHR commandBuffer raygenShaderBindingTable missShaderBindingTable hitShaderBindingTable callableShaderBindingTable width height depth = liftIO . evalContT $ do+  let vkCmdTraceRaysKHRPtr = pVkCmdTraceRaysKHR (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdTraceRaysKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdTraceRaysKHR is null" Nothing Nothing+  let vkCmdTraceRaysKHR' = mkVkCmdTraceRaysKHR vkCmdTraceRaysKHRPtr+  pRaygenShaderBindingTable <- ContT $ withCStruct (raygenShaderBindingTable)+  pMissShaderBindingTable <- ContT $ withCStruct (missShaderBindingTable)+  pHitShaderBindingTable <- ContT $ withCStruct (hitShaderBindingTable)+  pCallableShaderBindingTable <- ContT $ withCStruct (callableShaderBindingTable)+  lift $ vkCmdTraceRaysKHR' (commandBufferHandle (commandBuffer)) pRaygenShaderBindingTable pMissShaderBindingTable pHitShaderBindingTable pCallableShaderBindingTable (width) (height) (depth)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetRayTracingShaderGroupHandlesKHR+  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result++-- | vkGetRayTracingShaderGroupHandlesKHR - Query ray tracing pipeline shader+-- group handles+--+-- == Valid Usage+--+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-04050#+--     @firstGroup@ /must/ be less than the number of shader groups in+--     @pipeline@+--+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-02419# The sum+--     of @firstGroup@ and @groupCount@ /must/ be less than or equal to the+--     number of shader groups in @pipeline@+--+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-02420#+--     @dataSize@ /must/ be at least+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleSize@+--     × @groupCount@+--+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-03482#+--     @pipeline@ /must/ have not been created with+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-device-parameter#+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parameter#+--     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle+--+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pData-parameter# @pData@+--     /must/ be a valid pointer to an array of @dataSize@ bytes+--+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-arraylength#+--     @dataSize@ /must/ be greater than @0@+--+-- -   #VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parent#+--     @pipeline@ /must/ have been created, allocated, or retrieved from+--     @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'+getRayTracingShaderGroupHandlesKHR :: forall io+                                    . (MonadIO io)+                                   => -- | @device@ is the logical device containing the ray tracing pipeline.+                                      Device+                                   -> -- | @pipeline@ is the ray tracing pipeline object containing the shaders.+                                      Pipeline+                                   -> -- | @firstGroup@ is the index of the first group to retrieve a handle for+                                      -- from the 'RayTracingPipelineCreateInfoKHR'::@pGroups@ or+                                      -- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@pGroups@+                                      -- array.+                                      ("firstGroup" ::: Word32)+                                   -> -- | @groupCount@ is the number of shader handles to retrieve.+                                      ("groupCount" ::: Word32)+                                   -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.+                                      ("dataSize" ::: Word64)+                                   -> -- | @pData@ is a pointer to a user-allocated buffer where the results will+                                      -- be written.+                                      ("data" ::: Ptr ())+                                   -> io ()+getRayTracingShaderGroupHandlesKHR device pipeline firstGroup groupCount dataSize data' = liftIO $ do+  let vkGetRayTracingShaderGroupHandlesKHRPtr = pVkGetRayTracingShaderGroupHandlesKHR (deviceCmds (device :: Device))+  unless (vkGetRayTracingShaderGroupHandlesKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetRayTracingShaderGroupHandlesKHR is null" Nothing Nothing+  let vkGetRayTracingShaderGroupHandlesKHR' = mkVkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHRPtr+  r <- vkGetRayTracingShaderGroupHandlesKHR' (deviceHandle (device)) (pipeline) (firstGroup) (groupCount) (CSize (dataSize)) (data')+  when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetRayTracingCaptureReplayShaderGroupHandlesKHR+  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result++-- | vkGetRayTracingCaptureReplayShaderGroupHandlesKHR - Query ray tracing+-- capture replay pipeline shader group handles+--+-- == Valid Usage+--+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-04051#+--     @firstGroup@ /must/ be less than the number of shader groups in+--     @pipeline@+--+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-03483#+--     The sum of @firstGroup@ and @groupCount@ /must/ be less than or+--     equal to the number of shader groups in @pipeline@+--+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-03484#+--     @dataSize@ /must/ be at least+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleCaptureReplaySize@+--     × @groupCount@+--+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03606#+--     'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplay@+--     /must/ be enabled to call this function+--+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-03607#+--     @pipeline@ /must/ have been created with a @flags@ that included+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-device-parameter#+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parameter#+--     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle+--+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pData-parameter#+--     @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes+--+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-arraylength#+--     @dataSize@ /must/ be greater than @0@+--+-- -   #VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parent#+--     @pipeline@ /must/ have been created, allocated, or retrieved from+--     @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'+getRayTracingCaptureReplayShaderGroupHandlesKHR :: forall io+                                                 . (MonadIO io)+                                                => -- | @device@ is the logical device containing the ray tracing pipeline.+                                                   Device+                                                -> -- | @pipeline@ is the ray tracing pipeline object containing the shaders.+                                                   Pipeline+                                                -> -- | @firstGroup@ is the index of the first group to retrieve a handle for+                                                   -- from the 'RayTracingPipelineCreateInfoKHR'::@pGroups@ array.+                                                   ("firstGroup" ::: Word32)+                                                -> -- | @groupCount@ is the number of shader handles to retrieve.+                                                   ("groupCount" ::: Word32)+                                                -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.+                                                   ("dataSize" ::: Word64)+                                                -> -- | @pData@ is a pointer to a user-allocated buffer where the results will+                                                   -- be written.+                                                   ("data" ::: Ptr ())+                                                -> io ()+getRayTracingCaptureReplayShaderGroupHandlesKHR device pipeline firstGroup groupCount dataSize data' = liftIO $ do+  let vkGetRayTracingCaptureReplayShaderGroupHandlesKHRPtr = pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR (deviceCmds (device :: Device))+  unless (vkGetRayTracingCaptureReplayShaderGroupHandlesKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetRayTracingCaptureReplayShaderGroupHandlesKHR is null" Nothing Nothing+  let vkGetRayTracingCaptureReplayShaderGroupHandlesKHR' = mkVkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHRPtr+  r <- vkGetRayTracingCaptureReplayShaderGroupHandlesKHR' (deviceHandle (device)) (pipeline) (firstGroup) (groupCount) (CSize (dataSize)) (data')+  when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCreateRayTracingPipelinesKHR+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result++-- | vkCreateRayTracingPipelinesKHR - Creates a new ray tracing pipeline+-- object+--+-- = Description+--+-- The 'Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS'+-- error is returned if the implementation is unable to re-use the shader+-- group handles provided in+-- 'RayTracingShaderGroupCreateInfoKHR'::@pShaderGroupCaptureReplayHandle@+-- when+-- 'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplay@+-- is enabled.+--+-- == Valid Usage+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-flags-03415# If the @flags@+--     member of any element of @pCreateInfos@ contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and the @basePipelineIndex@ member of that same element is not+--     @-1@, @basePipelineIndex@ /must/ be less than the index into+--     @pCreateInfos@ that corresponds to that element+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-flags-03416# If the @flags@+--     member of any element of @pCreateInfos@ contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, the base pipeline /must/ have been created with the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'+--     flag set+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-flags-03816# @flags@ /must/ not+--     contain the+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.PIPELINE_CREATE_DISPATCH_BASE'+--     flag+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903# If+--     @pipelineCache@ was created with+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT',+--     host access to @pipelineCache@ /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03677# If+--     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     it /must/ be a valid+--     'Vulkan.Extensions.Handles.DeferredOperationKHR' object+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03678# Any+--     previous deferred operation that was associated with+--     @deferredOperation@ /must/ be complete+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-rayTracingPipeline-03586# The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>+--     feature /must/ be enabled+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03587# If+--     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     the @flags@ member of elements of @pCreateInfos@ /must/ not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-device-parameter# @device@+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parameter# If+--     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @deferredOperation@ /must/ be a valid+--     'Vulkan.Extensions.Handles.DeferredOperationKHR' handle+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parameter# If+--     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @pipelineCache@ /must/ be a valid+--     'Vulkan.Core10.Handles.PipelineCache' handle+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pCreateInfos-parameter#+--     @pCreateInfos@ /must/ be a valid pointer to an array of+--     @createInfoCount@ valid 'RayTracingPipelineCreateInfoKHR' structures+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pAllocator-parameter# If+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pPipelines-parameter#+--     @pPipelines@ /must/ be a valid pointer to an array of+--     @createInfoCount@ 'Vulkan.Core10.Handles.Pipeline' handles+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-createInfoCount-arraylength#+--     @createInfoCount@ /must/ be greater than @0@+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parent# If+--     @deferredOperation@ is a valid handle, it /must/ have been created,+--     allocated, or retrieved from @device@+--+-- -   #VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parent# If+--     @pipelineCache@ is a valid handle, it /must/ have been created,+--     allocated, or retrieved from @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS'+--+-- = See Also+--+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Vulkan.Extensions.Handles.DeferredOperationKHR',+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline',+-- 'Vulkan.Core10.Handles.PipelineCache', 'RayTracingPipelineCreateInfoKHR'+createRayTracingPipelinesKHR :: forall io+                              . (MonadIO io)+                             => -- | @device@ is the logical device that creates the ray tracing pipelines.+                                Device+                             -> -- | @deferredOperation@ is an optional+                                -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to+                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>+                                -- for this command.+                                DeferredOperationKHR+                             -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',+                                -- indicating that pipeline caching is disabled, or the handle of a valid+                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache pipeline cache>+                                -- object, in which case use of that cache is enabled for the duration of+                                -- the command.+                                PipelineCache+                             -> -- | @pCreateInfos@ is a pointer to an array of+                                -- 'RayTracingPipelineCreateInfoKHR' structures.+                                ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoKHR))+                             -> -- | @pAllocator@ controls host memory allocation as described in the+                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+                                -- chapter.+                                ("allocator" ::: Maybe AllocationCallbacks)+                             -> io (Result, ("pipelines" ::: Vector Pipeline))+createRayTracingPipelinesKHR device deferredOperation pipelineCache createInfos allocator = liftIO . evalContT $ do+  let vkCreateRayTracingPipelinesKHRPtr = pVkCreateRayTracingPipelinesKHR (deviceCmds (device :: Device))+  lift $ unless (vkCreateRayTracingPipelinesKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateRayTracingPipelinesKHR is null" Nothing Nothing+  let vkCreateRayTracingPipelinesKHR' = mkVkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHRPtr+  pPCreateInfos <- ContT $ allocaBytesAligned @(RayTracingPipelineCreateInfoKHR _) ((Data.Vector.length (createInfos)) * 104) 8+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (104 * (i)) :: Ptr (RayTracingPipelineCreateInfoKHR _))) (e) . ($ ())) (createInfos)+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free+  r <- lift $ vkCreateRayTracingPipelinesKHR' (deviceHandle (device)) (deferredOperation) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (forgetExtensions (pPCreateInfos)) pAllocator (pPPipelines)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))+  pure $ (r, pPipelines)++-- | A convenience wrapper to make a compatible pair of calls to+-- 'createRayTracingPipelinesKHR' and 'destroyPipeline'+--+-- To ensure that 'destroyPipeline' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument.+--+withRayTracingPipelinesKHR :: forall io r . MonadIO io => Device -> DeferredOperationKHR -> PipelineCache -> Vector (SomeStruct RayTracingPipelineCreateInfoKHR) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r+withRayTracingPipelinesKHR device deferredOperation pipelineCache pCreateInfos pAllocator b =+  b (createRayTracingPipelinesKHR device deferredOperation pipelineCache pCreateInfos pAllocator)+    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device o1Elem pAllocator) o1)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdTraceRaysIndirectKHR+  :: FunPtr (Ptr CommandBuffer_T -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> DeviceAddress -> IO ()) -> Ptr CommandBuffer_T -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> Ptr StridedDeviceAddressRegionKHR -> DeviceAddress -> IO ()++-- | vkCmdTraceRaysIndirectKHR - Initialize an indirect ray tracing dispatch+--+-- = Description+--+-- 'cmdTraceRaysIndirectKHR' behaves similarly to 'cmdTraceRaysKHR' except+-- that the ray trace query dimensions are read by the device from+-- @indirectDeviceAddress@ during execution.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-magFilter-04553# If a+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and+--     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is+--     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of+--     this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02691# If a+--     'Vulkan.Core10.Handles.ImageView' is accessed using atomic+--     operations as a result of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02692# If a+--     'Vulkan.Core10.Handles.ImageView' is sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result+--     of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-filterCubic-02694# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result+--     of this command /must/ have a+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that+--     supports cubic filtering, as specified by+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+--     returned by+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-filterCubicMinmax-02695# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a+--     reduction mode of either+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+--     or+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+--     as a result of this command /must/ have a+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that+--     supports cubic filtering together with minmax filtering, as+--     specified by+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+--     returned by+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-02696# Any+--     'Vulkan.Core10.Handles.Image' created with a+--     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+--     sampled as a result of this command /must/ only be sampled using a+--     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02697# For each set /n/ that is+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the+--     pipeline bind point used by this command, a descriptor set /must/+--     have been bound to /n/ at the same pipeline bind point, with a+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set+--     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to create+--     the current 'Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02698# For each push constant+--     that is statically used by the 'Vulkan.Core10.Handles.Pipeline'+--     bound to the pipeline bind point used by this command, a push+--     constant value /must/ have been set for the same pipeline bind+--     point, with a 'Vulkan.Core10.Handles.PipelineLayout' that is+--     compatible for push constants, with the+--     'Vulkan.Core10.Handles.PipelineLayout' used to create the current+--     'Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02699# Descriptors in each+--     bound descriptor set, specified via+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/+--     be valid if they are statically used by the+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point+--     used by this command+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02700# A valid pipeline /must/+--     be bound to the pipeline bind point used by this command+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02701# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command requires any dynamic state, that state+--     /must/ have been set for @commandBuffer@, and done so after any+--     previously bound pipeline with the corresponding state not specified+--     as dynamic+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02859# There /must/ not have+--     been any calls to dynamic state setting commands for any state not+--     specified as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object+--     bound to the pipeline bind point used by this command, since that+--     pipeline was bound+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02702# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+--     coordinates, that sampler /must/ not be used to sample from any+--     'Vulkan.Core10.Handles.Image' with a+--     'Vulkan.Core10.Handles.ImageView' of the type+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in+--     any shader stage+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02703# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+--     coordinates, that sampler /must/ not be used with any of the SPIR-V+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with+--     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02704# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+--     coordinates, that sampler /must/ not be used with any of the SPIR-V+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that+--     includes a LOD bias or any offset values, in any shader stage+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02705# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a uniform buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02706# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a storage buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02707# If+--     @commandBuffer@ is an unprotected command buffer, any resource+--     accessed by the 'Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command /must/ not be a protected+--     resource+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-04115# If a+--     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@+--     as a result of this command, then the @Type@ of the @Texel@ operand+--     of that instruction /must/ have at least as many components as the+--     image view’s format.+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-OpImageWrite-04469# If a+--     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@+--     as a result of this command, then the @Type@ of the @Texel@ operand+--     of that instruction /must/ have at least as many components as the+--     image view’s format.+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-SampledType-04470# If a+--     'Vulkan.Core10.Handles.ImageView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width+--     is accessed as a result of this command, the @SampledType@ of the+--     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of+--     64.+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-SampledType-04471# If a+--     'Vulkan.Core10.Handles.ImageView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a channel width less+--     than 64-bit is accessed as a result of this command, the+--     @SampledType@ of the @OpTypeImage@ operand of that instruction+--     /must/ have a @Width@ of 32.+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-SampledType-04472# If a+--     'Vulkan.Core10.Handles.BufferView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width+--     is accessed as a result of this command, the @SampledType@ of the+--     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of+--     64.+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-SampledType-04473# If a+--     'Vulkan.Core10.Handles.BufferView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a channel width less+--     than 64-bit is accessed as a result of this command, the+--     @SampledType@ of the @OpTypeImage@ operand of that instruction+--     /must/ have a @Width@ of 32.+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-sparseImageInt64Atomics-04474# If+--     the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>+--     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects+--     created with the+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+--     flag /must/ not be accessed by atomic instructions through an+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this+--     command.+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-sparseImageInt64Atomics-04475# If+--     the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>+--     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects+--     created with the+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'+--     flag /must/ not be accessed by atomic instructions through an+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this+--     command.+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-03429# Any shader group handle+--     referenced by this call /must/ have been queried from the currently+--     bound ray tracing shader pipeline+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-maxPipelineRayRecursionDepth-03679#+--     This command /must/ not cause a shader call instruction to be+--     executed from a shader invocation with a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth recursion depth>+--     greater than the value of @maxPipelineRayRecursionDepth@ used to+--     create the bound ray tracing pipeline+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03680# If+--     the buffer from which @pRayGenShaderBindingTable->deviceAddress@ was+--     queried is non-sparse then it /must/ be bound completely and+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03681# The+--     buffer from which the @pRayGenShaderBindingTable->deviceAddress@ is+--     queried /must/ have been created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'+--     usage flag+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03682#+--     @pRayGenShaderBindingTable->deviceAddress@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-size-04023# The @size@ member of+--     @pRayGenShaderBindingTable@ /must/ be equal to its @stride@ member+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03683# If+--     the buffer from which @pMissShaderBindingTable->deviceAddress@ was+--     queried is non-sparse then it /must/ be bound completely and+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03684# The+--     buffer from which the @pMissShaderBindingTable->deviceAddress@ is+--     queried /must/ have been created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'+--     usage flag+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03685#+--     @pMissShaderBindingTable->deviceAddress@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-03686# The @stride@ member of+--     @pMissShaderBindingTable@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-04029# The @stride@ member of+--     @pMissShaderBindingTable@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03687# If the+--     buffer from which @pHitShaderBindingTable->deviceAddress@ was+--     queried is non-sparse then it /must/ be bound completely and+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03688# The+--     buffer from which the @pHitShaderBindingTable->deviceAddress@ is+--     queried /must/ have been created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'+--     usage flag+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03689#+--     @pHitShaderBindingTable->deviceAddress@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-03690# The @stride@ member of+--     @pHitShaderBindingTable@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-04035# The @stride@ member of+--     @pHitShaderBindingTable@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03691#+--     If the buffer from which+--     @pCallableShaderBindingTable->deviceAddress@ was queried is+--     non-sparse then it /must/ be bound completely and contiguously to a+--     single 'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03692#+--     The buffer from which the+--     @pCallableShaderBindingTable->deviceAddress@ is queried /must/ have+--     been created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'+--     usage flag+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03693#+--     @pCallableShaderBindingTable->deviceAddress@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-03694# The @stride@ member of+--     @pCallableShaderBindingTable@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@shaderGroupHandleAlignment@+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-stride-04041# The @stride@ member of+--     @pCallableShaderBindingTable@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxShaderGroupStride@+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03695# If the currently bound+--     ray tracing pipeline was created with @flags@ that included+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',+--     the @deviceAddress@ member of @pHitShaderBindingTable@ /must/ not be+--     zero+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03696# If the currently bound+--     ray tracing pipeline was created with @flags@ that included+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',+--     the @deviceAddress@ member of @pHitShaderBindingTable@ /must/ not be+--     zero+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03697# If the currently bound+--     ray tracing pipeline was created with @flags@ that included+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',+--     the @deviceAddress@ member of @pHitShaderBindingTable@ /must/ not be+--     zero+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03511# If the currently bound+--     ray tracing pipeline was created with @flags@ that included+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',+--     the shader group handle identified by @pMissShaderBindingTable@+--     /must/ contain a valid miss shader+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03512# If the currently bound+--     ray tracing pipeline was created with @flags@ that included+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',+--     entries in @pHitShaderBindingTable@ accessed as a result of this+--     command in order to execute an any-hit shader /must/ not be set to+--     zero+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03513# If the currently bound+--     ray tracing pipeline was created with @flags@ that included+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',+--     entries in @pHitShaderBindingTable@ accessed as a result of this+--     command in order to execute a closest hit shader /must/ not be set+--     to zero+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-flags-03514# If the currently bound+--     ray tracing pipeline was created with @flags@ that included+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',+--     entries in @pHitShaderBindingTable@ accessed as a result of this+--     command in order to execute an intersection shader /must/ not be set+--     to zero+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03720# Any+--     hit group entries in @pHitShaderBindingTable@ accessed by this call+--     from a geometry with a @geometryType@ of+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_TRIANGLES_KHR'+--     /must/ have been created with+--     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR'+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03721# Any+--     hit group entries in @pHitShaderBindingTable@ accessed by this call+--     from a geometry with a @geometryType@ of+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GEOMETRY_TYPE_AABBS_KHR'+--     /must/ have been created with+--     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR'+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03632# If the+--     buffer from which @indirectDeviceAddress@ was queried is non-sparse+--     then it /must/ be bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03633# The+--     buffer from which @indirectDeviceAddress@ was queried /must/ have+--     been created with the+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+--     bit set+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03634#+--     @indirectDeviceAddress@ /must/ be a multiple of @4@+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-03635# @commandBuffer@+--     /must/ not be a protected command buffer+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03636# All+--     device addresses between @indirectDeviceAddress@ and+--     @indirectDeviceAddress@ + @sizeof@('TraceRaysIndirectCommandKHR') -+--     1 /must/ be in the buffer device address range of the same buffer+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-rayTracingPipelineTraceRaysIndirect-03637#+--     the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipelineTraceRaysIndirect ::rayTracingPipelineTraceRaysIndirect>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pRaygenShaderBindingTable-parameter#+--     @pRaygenShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedDeviceAddressRegionKHR' structure+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-parameter#+--     @pMissShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedDeviceAddressRegionKHR' structure+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-parameter#+--     @pHitShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedDeviceAddressRegionKHR' structure+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-parameter#+--     @pCallableShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedDeviceAddressRegionKHR' structure+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-recording#+--     @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdTraceRaysIndirectKHR-renderpass# This command /must/ only+--     be called outside of a render pass instance+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',+-- 'StridedDeviceAddressRegionKHR'+cmdTraceRaysIndirectKHR :: forall io+                         . (MonadIO io)+                        => -- | @commandBuffer@ is the command buffer into which the command will be+                           -- recorded.+                           CommandBuffer+                        -> -- | @pRaygenShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that+                           -- holds the shader binding table data for the ray generation shader stage.+                           ("raygenShaderBindingTable" ::: StridedDeviceAddressRegionKHR)+                        -> -- | @pMissShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that+                           -- holds the shader binding table data for the miss shader stage.+                           ("missShaderBindingTable" ::: StridedDeviceAddressRegionKHR)+                        -> -- | @pHitShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that holds+                           -- the shader binding table data for the hit shader stage.+                           ("hitShaderBindingTable" ::: StridedDeviceAddressRegionKHR)+                        -> -- | @pCallableShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that+                           -- holds the shader binding table data for the callable shader stage.+                           ("callableShaderBindingTable" ::: StridedDeviceAddressRegionKHR)+                        -> -- | @indirectDeviceAddress@ is a buffer device address which points to a+                           -- 'TraceRaysIndirectCommandKHR' structure which contains the trace ray+                           -- parameters.+                           ("indirectDeviceAddress" ::: DeviceAddress)+                        -> io ()+cmdTraceRaysIndirectKHR commandBuffer raygenShaderBindingTable missShaderBindingTable hitShaderBindingTable callableShaderBindingTable indirectDeviceAddress = liftIO . evalContT $ do+  let vkCmdTraceRaysIndirectKHRPtr = pVkCmdTraceRaysIndirectKHR (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdTraceRaysIndirectKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdTraceRaysIndirectKHR is null" Nothing Nothing+  let vkCmdTraceRaysIndirectKHR' = mkVkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHRPtr+  pRaygenShaderBindingTable <- ContT $ withCStruct (raygenShaderBindingTable)+  pMissShaderBindingTable <- ContT $ withCStruct (missShaderBindingTable)+  pHitShaderBindingTable <- ContT $ withCStruct (hitShaderBindingTable)+  pCallableShaderBindingTable <- ContT $ withCStruct (callableShaderBindingTable)+  lift $ vkCmdTraceRaysIndirectKHR' (commandBufferHandle (commandBuffer)) pRaygenShaderBindingTable pMissShaderBindingTable pHitShaderBindingTable pCallableShaderBindingTable (indirectDeviceAddress)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetRayTracingShaderGroupStackSizeKHR+  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> ShaderGroupShaderKHR -> IO DeviceSize) -> Ptr Device_T -> Pipeline -> Word32 -> ShaderGroupShaderKHR -> IO DeviceSize++-- | vkGetRayTracingShaderGroupStackSizeKHR - Query ray tracing pipeline+-- shader group shader stack size+--+-- = Description+--+-- The return value is the ray tracing pipeline stack size in bytes for the+-- specified shader as called from the specified shader group.+--+-- == Valid Usage+--+-- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-group-03608# The value+--     of @group@ must be less than the number of shader groups in+--     @pipeline@+--+-- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-groupShader-03609# The+--     shader identified by @groupShader@ in @group@ /must/ not be+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-device-parameter#+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-parameter#+--     @pipeline@ /must/ be a valid 'Vulkan.Core10.Handles.Pipeline' handle+--+-- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-groupShader-parameter#+--     @groupShader@ /must/ be a valid 'ShaderGroupShaderKHR' value+--+-- -   #VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-parent#+--     @pipeline@ /must/ have been created, allocated, or retrieved from+--     @device@+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline',+-- 'ShaderGroupShaderKHR'+getRayTracingShaderGroupStackSizeKHR :: forall io+                                      . (MonadIO io)+                                     => -- | @device@ is the logical device containing the ray tracing pipeline.+                                        Device+                                     -> -- | @pipeline@ is the ray tracing pipeline object containing the shaders+                                        -- groups.+                                        Pipeline+                                     -> -- | @group@ is the index of the shader group to query.+                                        ("group" ::: Word32)+                                     -> -- | @groupShader@ is the type of shader from the group to query.+                                        ShaderGroupShaderKHR+                                     -> io (DeviceSize)+getRayTracingShaderGroupStackSizeKHR device pipeline group groupShader = liftIO $ do+  let vkGetRayTracingShaderGroupStackSizeKHRPtr = pVkGetRayTracingShaderGroupStackSizeKHR (deviceCmds (device :: Device))+  unless (vkGetRayTracingShaderGroupStackSizeKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetRayTracingShaderGroupStackSizeKHR is null" Nothing Nothing+  let vkGetRayTracingShaderGroupStackSizeKHR' = mkVkGetRayTracingShaderGroupStackSizeKHR vkGetRayTracingShaderGroupStackSizeKHRPtr+  r <- vkGetRayTracingShaderGroupStackSizeKHR' (deviceHandle (device)) (pipeline) (group) (groupShader)+  pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdSetRayTracingPipelineStackSizeKHR+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> IO ()++-- | vkCmdSetRayTracingPipelineStackSizeKHR - Set the dynamic stack size for+-- a ray tracing pipeline+--+-- = Description+--+-- See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-pipeline-stack Ray Tracing Pipeline Stack>+-- for more on computing @pipelineStackSize@.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdSetRayTracingPipelineStackSizeKHR-pipelineStackSize-03610#+--     @pipelineStackSize@ /must/ be large enough for any dynamic execution+--     through the shaders in the ray tracing pipeline used by a subsequent+--     trace call+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-recording#+--     @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   #VUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-cmdpool#+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdSetRayTracingPipelineStackSizeKHR-renderpass# This+--     command /must/ only be called outside of a render pass instance+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Vulkan.Core10.Handles.CommandBuffer'+cmdSetRayTracingPipelineStackSizeKHR :: forall io+                                      . (MonadIO io)+                                     => -- | @commandBuffer@ is the command buffer into which the command will be+                                        -- recorded.+                                        CommandBuffer+                                     -> -- | @pipelineStackSize@ is the stack size to use for subsequent ray tracing+                                        -- trace commands.+                                        ("pipelineStackSize" ::: Word32)+                                     -> io ()+cmdSetRayTracingPipelineStackSizeKHR commandBuffer pipelineStackSize = liftIO $ do+  let vkCmdSetRayTracingPipelineStackSizeKHRPtr = pVkCmdSetRayTracingPipelineStackSizeKHR (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdSetRayTracingPipelineStackSizeKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetRayTracingPipelineStackSizeKHR is null" Nothing Nothing+  let vkCmdSetRayTracingPipelineStackSizeKHR' = mkVkCmdSetRayTracingPipelineStackSizeKHR vkCmdSetRayTracingPipelineStackSizeKHRPtr+  vkCmdSetRayTracingPipelineStackSizeKHR' (commandBufferHandle (commandBuffer)) (pipelineStackSize)+  pure $ ()+++-- | VkRayTracingShaderGroupCreateInfoKHR - Structure specifying shaders in a+-- shader group+--+-- == Valid Usage+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03474# If @type@ is+--     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR' then @generalShader@+--     /must/ be a valid index into+--     'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to a shader+--     of+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR',+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR',+--     or+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03475# If @type@ is+--     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR' then @closestHitShader@,+--     @anyHitShader@, and @intersectionShader@ /must/ be+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03476# If @type@ is+--     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR' then+--     @intersectionShader@ /must/ be a valid index into+--     'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to a shader+--     of+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_INTERSECTION_BIT_KHR'+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03477# If @type@ is+--     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' then+--     @intersectionShader@ /must/ be+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-closestHitShader-03478#+--     @closestHitShader@ /must/ be either+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' or a valid index into+--     'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to a shader+--     of+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLOSEST_HIT_BIT_KHR'+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-anyHitShader-03479#+--     @anyHitShader@ /must/ be either+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' or a valid index into+--     'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to a shader+--     of+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ANY_HIT_BIT_KHR'+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03603#+--     If+--     'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplayMixed@+--     is 'Vulkan.Core10.FundamentalTypes.FALSE' then+--     @pShaderGroupCaptureReplayHandle@ /must/ not be provided if it has+--     not been provided on a previous call to ray tracing pipeline+--     creation+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03604#+--     If+--     'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplayMixed@+--     is 'Vulkan.Core10.FundamentalTypes.FALSE' then the caller /must/+--     guarantee that no ray tracing pipeline creation commands with+--     @pShaderGroupCaptureReplayHandle@ provided execute simultaneously+--     with ray tracing pipeline creation commands without+--     @pShaderGroupCaptureReplayHandle@ provided+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR'+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-pNext-pNext# @pNext@+--     /must/ be @NULL@+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoKHR-type-parameter# @type@+--     /must/ be a valid 'RayTracingShaderGroupTypeKHR' value+--+-- = See Also+--+-- 'RayTracingPipelineCreateInfoKHR', 'RayTracingShaderGroupTypeKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data RayTracingShaderGroupCreateInfoKHR = RayTracingShaderGroupCreateInfoKHR+  { -- | @type@ is the type of hit group specified in this structure.+    type' :: RayTracingShaderGroupTypeKHR+  , -- | @generalShader@ is the index of the ray generation, miss, or callable+    -- shader from 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if+    -- the shader group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR', and+    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.+    generalShader :: Word32+  , -- | @closestHitShader@ is the optional index of the closest hit shader from+    -- 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if the shader+    -- group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', and+    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.+    closestHitShader :: Word32+  , -- | @anyHitShader@ is the optional index of the any-hit shader from+    -- 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if the shader+    -- group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', and+    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.+    anyHitShader :: Word32+  , -- | @intersectionShader@ is the index of the intersection shader from+    -- 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if the shader+    -- group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', and+    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.+    intersectionShader :: Word32+  , -- | @pShaderGroupCaptureReplayHandle@ is an optional pointer to replay+    -- information for this shader group. Ignored if+    -- 'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplay@+    -- is 'Vulkan.Core10.FundamentalTypes.FALSE'.+    shaderGroupCaptureReplayHandle :: Ptr ()+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (RayTracingShaderGroupCreateInfoKHR)+#endif+deriving instance Show RayTracingShaderGroupCreateInfoKHR++instance ToCStruct RayTracingShaderGroupCreateInfoKHR where+  withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p RayTracingShaderGroupCreateInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (type')+    poke ((p `plusPtr` 20 :: Ptr Word32)) (generalShader)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (closestHitShader)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (anyHitShader)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (intersectionShader)+    poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (shaderGroupCaptureReplayHandle)+    f+  cStructSize = 48+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+    f++instance FromCStruct RayTracingShaderGroupCreateInfoKHR where+  peekCStruct p = do+    type' <- peek @RayTracingShaderGroupTypeKHR ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR))+    generalShader <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    closestHitShader <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    anyHitShader <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    intersectionShader <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    pShaderGroupCaptureReplayHandle <- peek @(Ptr ()) ((p `plusPtr` 40 :: Ptr (Ptr ())))+    pure $ RayTracingShaderGroupCreateInfoKHR+             type' generalShader closestHitShader anyHitShader intersectionShader pShaderGroupCaptureReplayHandle++instance Storable RayTracingShaderGroupCreateInfoKHR where+  sizeOf ~_ = 48+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero RayTracingShaderGroupCreateInfoKHR where+  zero = RayTracingShaderGroupCreateInfoKHR+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkRayTracingPipelineCreateInfoKHR - Structure specifying parameters of a+-- newly created ray tracing pipeline+--+-- = Description+--+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are+-- described in more detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.+--+-- When+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+-- is specified, this pipeline defines a /pipeline library/ which /cannot/+-- be bound as a ray tracing pipeline directly. Instead, pipeline libraries+-- define common shaders and shader groups which /can/ be included in+-- future pipeline creation.+--+-- If pipeline libraries are included in @pLibraryInfo@, shaders defined in+-- those libraries are treated as if they were defined as additional+-- entries in @pStages@, appended in the order they appear in the+-- @pLibraries@ array and in the @pStages@ array when those libraries were+-- defined.+--+-- When referencing shader groups in order to obtain a shader group handle,+-- groups defined in those libraries are treated as if they were defined as+-- additional entries in @pGroups@, appended in the order they appear in+-- the @pLibraries@ array and in the @pGroups@ array when those libraries+-- were defined. The shaders these groups reference are set when the+-- pipeline library is created, referencing those specified in the pipeline+-- library, not in the pipeline that includes it.+--+-- The default stack size for a pipeline if+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'+-- is not provided is computed as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-pipeline-stack Ray Tracing Pipeline Stack>.+--+-- == Valid Usage+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03421# If @flags@+--     contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineIndex@ is @-1@, @basePipelineHandle@ /must/+--     be a valid handle to a ray tracing 'Vulkan.Core10.Handles.Pipeline'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03422# If @flags@+--     contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineHandle@ is+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/+--     be a valid index into the calling command’s @pCreateInfos@ parameter+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03423# If @flags@+--     contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineIndex@ is not @-1@, @basePipelineHandle@+--     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03424# If @flags@+--     contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineHandle@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/+--     be @-1@+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pStages-03426# The shader+--     code for the entry points identified by @pStages@, and the rest of+--     the state identified by this structure /must/ adhere to the pipeline+--     linking rules described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>+--     chapter+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-03427# @layout@+--     /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>+--     with all shaders specified in @pStages@+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-03428# The number of+--     resources in @layout@ accessible to each shader stage that is used+--     by the pipeline /must/ be less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-02904# @flags@ /must/+--     not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pipelineCreationCacheControl-02905#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>+--     feature is not enabled, @flags@ /must/ not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'+--     or+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-stage-03425# If @flags@ does+--     not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',+--     the @stage@ member of at least one element of @pStages@, including+--     those implicitly added by @pLibraryInfo@, /must/ be+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-maxPipelineRayRecursionDepth-03589#+--     @maxPipelineRayRecursionDepth@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxRayRecursionDepth@+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03465# If @flags@+--     includes+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',+--     @pLibraryInterface@ /must/ not be @NULL@+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03590# If+--     @pLibraryInfo@ is not @NULL@ and its @libraryCount@ member is+--     greater than @0@, its @pLibraryInterface@ member /must/ not be+--     @NULL@+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03591# Each+--     element of the @pLibraries@ member of @pLibraryInfo@ /must/ have+--     been created with the value of @maxPipelineRayRecursionDepth@ equal+--     to that in this pipeline+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03592# If+--     @pLibraryInfo@ is not @NULL@, each element of its @pLibraries@+--     member /must/ have been created with a @layout@ that is compatible+--     with the @layout@ in this pipeline+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03593# If+--     @pLibraryInfo@ is not @NULL@, each element of its @pLibraries@+--     member /must/ have been created with values of the+--     @maxPipelineRayPayloadSize@ and @maxPipelineRayHitAttributeSize@+--     members of @pLibraryInterface@ equal to those in this pipeline+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03594# If @flags@+--     includes+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR',+--     each element of the @pLibraries@ member of @libraries@ /must/ have+--     been created with the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'+--     bit set+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03595# If the+--     <VK_KHR_pipeline_library.html VK_KHR_pipeline_library> extension is+--     not enabled, @pLibraryInfo@ and @pLibraryInterface@ /must/ be+--     @NULL@.+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03470# If @flags@+--     includes+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',+--     for any element of @pGroups@ with a @type@ of+--     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or+--     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', the+--     @anyHitShader@ of that element /must/ not be+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03471# If @flags@+--     includes+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',+--     for any element of @pGroups@ with a @type@ of+--     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or+--     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', the+--     @closestHitShader@ of that element /must/ not be+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03596#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTraversalPrimitiveCulling rayTraversalPrimitiveCulling>+--     feature is not enabled, @flags@ /must/ not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03597#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTraversalPrimitiveCulling rayTraversalPrimitiveCulling>+--     feature is not enabled, @flags@ /must/ not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03598# If @flags@+--     includes+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR',+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipelineShaderGroupHandleCaptureReplay rayTracingPipelineShaderGroupHandleCaptureReplay>+--     /must/ be enabled+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03599#+--     If+--     'PhysicalDeviceRayTracingPipelineFeaturesKHR'::@rayTracingPipelineShaderGroupHandleCaptureReplay@+--     is 'Vulkan.Core10.FundamentalTypes.TRUE' and the+--     @pShaderGroupCaptureReplayHandle@ member of any element of @pGroups@+--     is not @NULL@, @flags@ /must/ include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03600# If+--     @pLibraryInfo@ is not @NULL@ and its @libraryCount@ is @0@,+--     @stageCount@ /must/ not be @0@+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03601# If+--     @pLibraryInfo@ is not @NULL@ and its @libraryCount@ is @0@,+--     @groupCount@ /must/ not be @0@+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicStates-03602# Any+--     element of the @pDynamicStates@ member of @pDynamicState@ /must/ be+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-sType-sType# @sType@ /must/+--     be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pNext-pNext# @pNext@ /must/+--     be @NULL@ or a pointer to a valid instance of+--     'Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-sType-unique# The @sType@+--     value of each struct in the @pNext@ chain /must/ be unique+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-parameter# @flags@+--     /must/ be a valid combination of+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+--     values+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pStages-parameter# If+--     @stageCount@ is not @0@, @pStages@ /must/ be a valid pointer to an+--     array of @stageCount@ valid+--     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pGroups-parameter# If+--     @groupCount@ is not @0@, @pGroups@ /must/ be a valid pointer to an+--     array of @groupCount@ valid 'RayTracingShaderGroupCreateInfoKHR'+--     structures+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-parameter# If+--     @pLibraryInfo@ is not @NULL@, @pLibraryInfo@ /must/ be a valid+--     pointer to a valid+--     'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'+--     structure+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInterface-parameter#+--     If @pLibraryInterface@ is not @NULL@, @pLibraryInterface@ /must/ be+--     a valid pointer to a valid+--     'RayTracingPipelineInterfaceCreateInfoKHR' structure+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicState-parameter# If+--     @pDynamicState@ is not @NULL@, @pDynamicState@ /must/ be a valid+--     pointer to a valid+--     'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo' structure+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-layout-parameter# @layout@+--     /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle+--+-- -   #VUID-VkRayTracingPipelineCreateInfoKHR-commonparent# Both of+--     @basePipelineHandle@, and @layout@ that are valid handles of+--     non-ignored parameters /must/ have been created, allocated, or+--     retrieved from the same 'Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.Pipeline',+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo',+-- 'Vulkan.Core10.Handles.PipelineLayout',+-- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR',+-- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',+-- 'RayTracingPipelineInterfaceCreateInfoKHR',+-- 'RayTracingShaderGroupCreateInfoKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createRayTracingPipelinesKHR'+data RayTracingPipelineCreateInfoKHR (es :: [Type]) = RayTracingPipelineCreateInfoKHR+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @flags@ is a bitmask of+    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+    -- specifying how the pipeline will be generated.+    flags :: PipelineCreateFlags+  , -- | @pStages@ is a pointer to an array of @stageCount@+    -- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures+    -- describing the set of the shader stages to be included in the ray+    -- tracing pipeline.+    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)+  , -- | @pGroups@ is a pointer to an array of @groupCount@+    -- 'RayTracingShaderGroupCreateInfoKHR' structures describing the set of+    -- the shader stages to be included in each shader group in the ray tracing+    -- pipeline.+    groups :: Vector RayTracingShaderGroupCreateInfoKHR+  , -- | @maxPipelineRayRecursionDepth@ is the+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth maximum recursion depth>+    -- of shaders executed by this pipeline.+    maxPipelineRayRecursionDepth :: Word32+  , -- | @pLibraryInfo@ is a pointer to a+    -- 'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'+    -- structure defining pipeline libraries to include.+    libraryInfo :: Maybe PipelineLibraryCreateInfoKHR+  , -- | @pLibraryInterface@ is a pointer to a+    -- 'RayTracingPipelineInterfaceCreateInfoKHR' structure defining additional+    -- information when using pipeline libraries.+    libraryInterface :: Maybe RayTracingPipelineInterfaceCreateInfoKHR+  , -- | @pDynamicState@ is a pointer to a+    -- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo' structure, and+    -- is used to indicate which properties of the pipeline state object are+    -- dynamic and /can/ be changed independently of the pipeline state. This+    -- /can/ be @NULL@, which means no state in the pipeline is considered+    -- dynamic.+    dynamicState :: Maybe PipelineDynamicStateCreateInfo+  , -- | @layout@ is the description of binding locations used by both the+    -- pipeline and descriptor sets used with the pipeline.+    layout :: PipelineLayout+  , -- | @basePipelineHandle@ is a pipeline to derive from.+    basePipelineHandle :: Pipeline+  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use+    -- as a pipeline to derive from.+    basePipelineIndex :: Int32+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (RayTracingPipelineCreateInfoKHR (es :: [Type]))+#endif+deriving instance Show (Chain es) => Show (RayTracingPipelineCreateInfoKHR es)++instance Extensible RayTracingPipelineCreateInfoKHR where+  extensibleType = STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR+  setNext x next = x{next = next}+  getNext RayTracingPipelineCreateInfoKHR{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoKHR e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfoEXT = Just f+    | otherwise = Nothing++instance (Extendss RayTracingPipelineCreateInfoKHR es, PokeChain es) => ToCStruct (RayTracingPipelineCreateInfoKHR es) where+  withCStruct x f = allocaBytesAligned 104 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p RayTracingPipelineCreateInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))+    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (groups)) :: Word32))+    pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoKHR ((Data.Vector.length (groups)) * 48) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPGroups' `plusPtr` (48 * (i)) :: Ptr RayTracingShaderGroupCreateInfoKHR) (e)) (groups)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoKHR))) (pPGroups')+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxPipelineRayRecursionDepth)+    pLibraryInfo'' <- case (libraryInfo) of+      Nothing -> pure nullPtr+      Just j -> ContT $ withCStruct (j)+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr PipelineLibraryCreateInfoKHR))) pLibraryInfo''+    pLibraryInterface'' <- case (libraryInterface) of+      Nothing -> pure nullPtr+      Just j -> ContT $ withCStruct (j)+    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr RayTracingPipelineInterfaceCreateInfoKHR))) pLibraryInterface''+    pDynamicState'' <- case (dynamicState) of+      Nothing -> pure nullPtr+      Just j -> ContT $ withCStruct (j)+    lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr PipelineDynamicStateCreateInfo))) pDynamicState''+    lift $ poke ((p `plusPtr` 80 :: Ptr PipelineLayout)) (layout)+    lift $ poke ((p `plusPtr` 88 :: Ptr Pipeline)) (basePipelineHandle)+    lift $ poke ((p `plusPtr` 96 :: Ptr Int32)) (basePipelineIndex)+    lift $ f+  cStructSize = 104+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (mempty)) * 48) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (mempty)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')+    pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoKHR ((Data.Vector.length (mempty)) * 48) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPGroups' `plusPtr` (48 * (i)) :: Ptr RayTracingShaderGroupCreateInfoKHR) (e)) (mempty)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoKHR))) (pPGroups')+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+    lift $ poke ((p `plusPtr` 80 :: Ptr PipelineLayout)) (zero)+    lift $ poke ((p `plusPtr` 96 :: Ptr Int32)) (zero)+    lift $ f++instance (Extendss RayTracingPipelineCreateInfoKHR es, PeekChain es) => FromCStruct (RayTracingPipelineCreateInfoKHR es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))+    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo a))))+    pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))+    groupCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    pGroups <- peek @(Ptr RayTracingShaderGroupCreateInfoKHR) ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoKHR)))+    pGroups' <- generateM (fromIntegral groupCount) (\i -> peekCStruct @RayTracingShaderGroupCreateInfoKHR ((pGroups `advancePtrBytes` (48 * (i)) :: Ptr RayTracingShaderGroupCreateInfoKHR)))+    maxPipelineRayRecursionDepth <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+    pLibraryInfo <- peek @(Ptr PipelineLibraryCreateInfoKHR) ((p `plusPtr` 56 :: Ptr (Ptr PipelineLibraryCreateInfoKHR)))+    pLibraryInfo' <- maybePeek (\j -> peekCStruct @PipelineLibraryCreateInfoKHR (j)) pLibraryInfo+    pLibraryInterface <- peek @(Ptr RayTracingPipelineInterfaceCreateInfoKHR) ((p `plusPtr` 64 :: Ptr (Ptr RayTracingPipelineInterfaceCreateInfoKHR)))+    pLibraryInterface' <- maybePeek (\j -> peekCStruct @RayTracingPipelineInterfaceCreateInfoKHR (j)) pLibraryInterface+    pDynamicState <- peek @(Ptr PipelineDynamicStateCreateInfo) ((p `plusPtr` 72 :: Ptr (Ptr PipelineDynamicStateCreateInfo)))+    pDynamicState' <- maybePeek (\j -> peekCStruct @PipelineDynamicStateCreateInfo (j)) pDynamicState+    layout <- peek @PipelineLayout ((p `plusPtr` 80 :: Ptr PipelineLayout))+    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 88 :: Ptr Pipeline))+    basePipelineIndex <- peek @Int32 ((p `plusPtr` 96 :: Ptr Int32))+    pure $ RayTracingPipelineCreateInfoKHR+             next flags pStages' pGroups' maxPipelineRayRecursionDepth pLibraryInfo' pLibraryInterface' pDynamicState' layout basePipelineHandle basePipelineIndex++instance es ~ '[] => Zero (RayTracingPipelineCreateInfoKHR es) where+  zero = RayTracingPipelineCreateInfoKHR+           ()+           zero+           mempty+           mempty+           zero+           Nothing+           Nothing+           Nothing+           zero+           zero+           zero+++-- | VkPhysicalDeviceRayTracingPipelineFeaturesKHR - Structure describing the+-- ray tracing features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceRayTracingPipelineFeaturesKHR'+-- structure describe the following features:+--+-- = Description+--+-- -   #features-rayTracingPipeline# @rayTracingPipeline@ indicates whether+--     the implementation supports the ray tracing pipeline functionality.+--     See+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing Ray Tracing>.+--+-- -   #features-rayTracingPipelineShaderGroupHandleCaptureReplay#+--     @rayTracingPipelineShaderGroupHandleCaptureReplay@ indicates whether+--     the implementation supports saving and reusing shader group handles,+--     e.g. for trace capture and replay.+--+-- -   #features-rayTracingPipelineShaderGroupHandleCaptureReplayMixed#+--     @rayTracingPipelineShaderGroupHandleCaptureReplayMixed@ indicates+--     whether the implementation supports reuse of shader group handles+--     being arbitrarily mixed with creation of non-reused shader group+--     handles. If this is 'Vulkan.Core10.FundamentalTypes.FALSE', all+--     reused shader group handles /must/ be specified before any+--     non-reused handles /may/ be created.+--+-- -   #features-rayTracingPipelineTraceRaysIndirect#+--     @rayTracingPipelineTraceRaysIndirect@ indicates whether the+--     implementation supports indirect trace ray commands, e.g.+--     'cmdTraceRaysIndirectKHR'.+--+-- -   #features-rayTraversalPrimitiveCulling#+--     @rayTraversalPrimitiveCulling@ indicates whether the implementation+--     supports+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-traversal-culling-primitive primitive culling during ray traversal>.+--+-- If the 'PhysicalDeviceRayTracingPipelineFeaturesKHR' structure is+-- included in the @pNext@ chain of+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceRayTracingPipelineFeaturesKHR' /can/ also be used in the+-- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the+-- features.+--+-- == Valid Usage+--+-- -   #VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03575#+--     If @rayTracingPipelineShaderGroupHandleCaptureReplayMixed@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE',+--     @rayTracingPipelineShaderGroupHandleCaptureReplay@ /must/ also be+--     'Vulkan.Core10.FundamentalTypes.TRUE'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-sType-sType#+--     @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR'+--+-- = See Also+--+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceRayTracingPipelineFeaturesKHR = PhysicalDeviceRayTracingPipelineFeaturesKHR+  { -- No documentation found for Nested "VkPhysicalDeviceRayTracingPipelineFeaturesKHR" "rayTracingPipeline"+    rayTracingPipeline :: Bool+  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingPipelineFeaturesKHR" "rayTracingPipelineShaderGroupHandleCaptureReplay"+    rayTracingPipelineShaderGroupHandleCaptureReplay :: Bool+  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingPipelineFeaturesKHR" "rayTracingPipelineShaderGroupHandleCaptureReplayMixed"+    rayTracingPipelineShaderGroupHandleCaptureReplayMixed :: Bool+  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingPipelineFeaturesKHR" "rayTracingPipelineTraceRaysIndirect"+    rayTracingPipelineTraceRaysIndirect :: Bool+  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingPipelineFeaturesKHR" "rayTraversalPrimitiveCulling"+    rayTraversalPrimitiveCulling :: Bool+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceRayTracingPipelineFeaturesKHR)+#endif+deriving instance Show PhysicalDeviceRayTracingPipelineFeaturesKHR++instance ToCStruct PhysicalDeviceRayTracingPipelineFeaturesKHR where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceRayTracingPipelineFeaturesKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (rayTracingPipeline))+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (rayTracingPipelineShaderGroupHandleCaptureReplay))+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (rayTracingPipelineShaderGroupHandleCaptureReplayMixed))+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (rayTracingPipelineTraceRaysIndirect))+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (rayTraversalPrimitiveCulling))+    f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PhysicalDeviceRayTracingPipelineFeaturesKHR where+  peekCStruct p = do+    rayTracingPipeline <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    rayTracingPipelineShaderGroupHandleCaptureReplay <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+    rayTracingPipelineShaderGroupHandleCaptureReplayMixed <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+    rayTracingPipelineTraceRaysIndirect <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))+    rayTraversalPrimitiveCulling <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+    pure $ PhysicalDeviceRayTracingPipelineFeaturesKHR+             (bool32ToBool rayTracingPipeline) (bool32ToBool rayTracingPipelineShaderGroupHandleCaptureReplay) (bool32ToBool rayTracingPipelineShaderGroupHandleCaptureReplayMixed) (bool32ToBool rayTracingPipelineTraceRaysIndirect) (bool32ToBool rayTraversalPrimitiveCulling)++instance Storable PhysicalDeviceRayTracingPipelineFeaturesKHR where+  sizeOf ~_ = 40+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceRayTracingPipelineFeaturesKHR where+  zero = PhysicalDeviceRayTracingPipelineFeaturesKHR+           zero+           zero+           zero+           zero+           zero+++-- | VkPhysicalDeviceRayTracingPipelinePropertiesKHR - Properties of the+-- physical device for ray tracing+--+-- = Description+--+-- If the 'PhysicalDeviceRayTracingPipelinePropertiesKHR' structure is+-- included in the @pNext@ chain of+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- Limits specified by this structure /must/ match those specified with the+-- same name in+-- 'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceRayTracingPipelinePropertiesKHR = PhysicalDeviceRayTracingPipelinePropertiesKHR+  { -- | @shaderGroupHandleSize@ size in bytes of the shader header.+    shaderGroupHandleSize :: Word32+  , -- | #limits-maxRayRecursionDepth# @maxRayRecursionDepth@ is the maximum+    -- number of levels of ray recursion allowed in a trace command.+    maxRayRecursionDepth :: Word32+  , -- | @maxShaderGroupStride@ is the maximum stride in bytes allowed between+    -- shader groups in the shader binding table.+    maxShaderGroupStride :: Word32+  , -- | @shaderGroupBaseAlignment@ is the /required/ alignment in bytes for the+    -- base of the shader binding table.+    shaderGroupBaseAlignment :: Word32+  , -- | @shaderGroupHandleCaptureReplaySize@ is the number of bytes for the+    -- information required to do capture and replay for shader group handles.+    shaderGroupHandleCaptureReplaySize :: Word32+  , -- | @maxRayDispatchInvocationCount@ is the maximum number of ray generation+    -- shader invocations which /may/ be produced by a single+    -- 'cmdTraceRaysIndirectKHR' or 'cmdTraceRaysKHR' command.+    maxRayDispatchInvocationCount :: Word32+  , -- | @shaderGroupHandleAlignment@ is the /required/ alignment in bytes for+    -- each shader binding table entry.+    shaderGroupHandleAlignment :: Word32+  , -- | @maxRayHitAttributeSize@ is the maximum size in bytes for a ray+    -- attribute structure+    maxRayHitAttributeSize :: Word32+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceRayTracingPipelinePropertiesKHR)+#endif+deriving instance Show PhysicalDeviceRayTracingPipelinePropertiesKHR++instance ToCStruct PhysicalDeviceRayTracingPipelinePropertiesKHR where+  withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceRayTracingPipelinePropertiesKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (shaderGroupHandleSize)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxRayRecursionDepth)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxShaderGroupStride)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (shaderGroupBaseAlignment)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (shaderGroupHandleCaptureReplaySize)+    poke ((p `plusPtr` 36 :: Ptr Word32)) (maxRayDispatchInvocationCount)+    poke ((p `plusPtr` 40 :: Ptr Word32)) (shaderGroupHandleAlignment)+    poke ((p `plusPtr` 44 :: Ptr Word32)) (maxRayHitAttributeSize)+    f+  cStructSize = 48+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)+    f++instance FromCStruct PhysicalDeviceRayTracingPipelinePropertiesKHR where+  peekCStruct p = do+    shaderGroupHandleSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    maxRayRecursionDepth <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    maxShaderGroupStride <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    shaderGroupBaseAlignment <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    shaderGroupHandleCaptureReplaySize <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    maxRayDispatchInvocationCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))+    shaderGroupHandleAlignment <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+    maxRayHitAttributeSize <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))+    pure $ PhysicalDeviceRayTracingPipelinePropertiesKHR+             shaderGroupHandleSize maxRayRecursionDepth maxShaderGroupStride shaderGroupBaseAlignment shaderGroupHandleCaptureReplaySize maxRayDispatchInvocationCount shaderGroupHandleAlignment maxRayHitAttributeSize++instance Storable PhysicalDeviceRayTracingPipelinePropertiesKHR where+  sizeOf ~_ = 48+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceRayTracingPipelinePropertiesKHR where+  zero = PhysicalDeviceRayTracingPipelinePropertiesKHR+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkStridedDeviceAddressRegionKHR - Structure specifying a region of+-- device addresses with a stride+--+-- == Valid Usage+--+-- -   #VUID-VkStridedDeviceAddressRegionKHR-deviceAddress-03630# If+--     @deviceAddress@ is not zero, all addresses between @deviceAddress@+--     and @deviceAddress@ + @size@ - 1 /must/ be in the buffer device+--     address range of the same buffer+--+-- -   #VUID-VkStridedDeviceAddressRegionKHR-deviceAddress-03631# If+--     @deviceAddress@ is not zero, @stride@ /must/ be less than the size+--     of the buffer from which @deviceAddress@ was queried+--+-- = See Also+--+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'cmdTraceRaysIndirectKHR',+-- 'cmdTraceRaysKHR'+data StridedDeviceAddressRegionKHR = StridedDeviceAddressRegionKHR+  { -- | @deviceAddress@ is the device address (as returned by the+    -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'+    -- command) at which the region starts.+    deviceAddress :: DeviceAddress+  , -- | @stride@ is the byte stride between consecutive elements.+    stride :: DeviceSize+  , -- | @size@ is the size in bytes of the region starting at @deviceAddress@.+    size :: DeviceSize+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (StridedDeviceAddressRegionKHR)+#endif+deriving instance Show StridedDeviceAddressRegionKHR++instance ToCStruct StridedDeviceAddressRegionKHR where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p StridedDeviceAddressRegionKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (deviceAddress)+    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (stride)+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (size)+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+    f++instance FromCStruct StridedDeviceAddressRegionKHR where+  peekCStruct p = do+    deviceAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))+    stride <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize))+    size <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+    pure $ StridedDeviceAddressRegionKHR+             deviceAddress stride size++instance Storable StridedDeviceAddressRegionKHR where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero StridedDeviceAddressRegionKHR where+  zero = StridedDeviceAddressRegionKHR+           zero+           zero+           zero+++-- | VkTraceRaysIndirectCommandKHR - Structure specifying the parameters of+-- an indirect trace ray command+--+-- = Description+--+-- The members of 'TraceRaysIndirectCommandKHR' have the same meaning as+-- the similarly named parameters of 'cmdTraceRaysKHR'.+--+-- == Valid Usage+--+-- = See Also+--+-- No cross-references are available+data TraceRaysIndirectCommandKHR = TraceRaysIndirectCommandKHR+  { -- | @width@ is the width of the ray trace query dimensions.+    --+    -- #VUID-VkTraceRaysIndirectCommandKHR-width-03638# @width@ /must/ be less+    -- than or equal to+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]+    -- ×+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[0]+    --+    -- #VUID-VkTraceRaysIndirectCommandKHR-width-03641# @width@ × @height@ ×+    -- @depth@ /must/ be less than or equal to+    -- 'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxRayDispatchInvocationCount@+    width :: Word32+  , -- | @height@ is height of the ray trace query dimensions.+    --+    -- #VUID-VkTraceRaysIndirectCommandKHR-height-03639# @height@ /must/ be+    -- less than or equal to+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]+    -- ×+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[1]+    height :: Word32+  , -- | @depth@ is depth of the ray trace query dimensions.+    --+    -- #VUID-VkTraceRaysIndirectCommandKHR-depth-03640# @depth@ /must/ be less+    -- than or equal to+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]+    -- ×+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupSize@[2]+    depth :: Word32+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (TraceRaysIndirectCommandKHR)+#endif+deriving instance Show TraceRaysIndirectCommandKHR++instance ToCStruct TraceRaysIndirectCommandKHR where+  withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p TraceRaysIndirectCommandKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (width)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (height)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (depth)+    f+  cStructSize = 12+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+    f++instance FromCStruct TraceRaysIndirectCommandKHR where+  peekCStruct p = do+    width <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+    height <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+    depth <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+    pure $ TraceRaysIndirectCommandKHR+             width height depth++instance Storable TraceRaysIndirectCommandKHR where+  sizeOf ~_ = 12+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero TraceRaysIndirectCommandKHR where+  zero = TraceRaysIndirectCommandKHR+           zero+           zero+           zero+++-- | VkRayTracingPipelineInterfaceCreateInfoKHR - Structure specifying+-- additional interface information when using libraries+--+-- = Description+--+-- @maxPipelineRayPayloadSize@ is calculated as the maximum number of bytes+-- used by any block declared in the @RayPayloadKHR@ or+-- @IncomingRayPayloadKHR@ storage classes.+-- @maxPipelineRayHitAttributeSize@ is calculated as the maximum number of+-- bytes used by any block declared in the @HitAttributeKHR@ storage class.+-- As variables in these storage classes do not have explicit offsets, the+-- size should be calculated as if each variable has a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirements scalar alignment>+-- equal to the largest scalar alignment of any of the block’s members.+--+-- Note+--+-- There is no explicit upper limit for @maxPipelineRayPayloadSize@, but in+-- practice it should be kept as small as possible. Similar to invocation+-- local memory, it must be allocated for each shader invocation and for+-- devices which support many simultaneous invocations, this storage can+-- rapidly be exhausted, resulting in failure.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'RayTracingPipelineCreateInfoKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data RayTracingPipelineInterfaceCreateInfoKHR = RayTracingPipelineInterfaceCreateInfoKHR+  { -- | @maxPipelineRayPayloadSize@ is the maximum payload size in bytes used by+    -- any shader in the pipeline.+    maxPipelineRayPayloadSize :: Word32+  , -- | @maxPipelineRayHitAttributeSize@ is the maximum attribute structure size+    -- in bytes used by any shader in the pipeline.+    --+    -- #VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-maxPipelineRayHitAttributeSize-03605#+    -- @maxPipelineRayHitAttributeSize@ /must/ be less than or equal to+    -- 'PhysicalDeviceRayTracingPipelinePropertiesKHR'::@maxRayHitAttributeSize@+    maxPipelineRayHitAttributeSize :: Word32+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (RayTracingPipelineInterfaceCreateInfoKHR)+#endif+deriving instance Show RayTracingPipelineInterfaceCreateInfoKHR++instance ToCStruct RayTracingPipelineInterfaceCreateInfoKHR where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p RayTracingPipelineInterfaceCreateInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxPipelineRayPayloadSize)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxPipelineRayHitAttributeSize)+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    f++instance FromCStruct RayTracingPipelineInterfaceCreateInfoKHR where+  peekCStruct p = do+    maxPipelineRayPayloadSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    maxPipelineRayHitAttributeSize <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    pure $ RayTracingPipelineInterfaceCreateInfoKHR+             maxPipelineRayPayloadSize maxPipelineRayHitAttributeSize++instance Storable RayTracingPipelineInterfaceCreateInfoKHR where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero RayTracingPipelineInterfaceCreateInfoKHR where+  zero = RayTracingPipelineInterfaceCreateInfoKHR+           zero+           zero+++-- | VkRayTracingShaderGroupTypeKHR - Shader group types+--+-- = Description+--+-- Note+--+-- For current group types, the hit group type could be inferred from the+-- presence or absence of the intersection shader, but we provide the type+-- explicitly for future hit groups that do not have that property.+--+-- = See Also+--+-- 'RayTracingShaderGroupCreateInfoKHR',+-- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupCreateInfoNV'+newtype RayTracingShaderGroupTypeKHR = RayTracingShaderGroupTypeKHR Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR' indicates a shader group+-- with a single+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR',+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR', or+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'+-- shader in it.+pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR              = RayTracingShaderGroupTypeKHR 0+-- | 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' specifies a+-- shader group that only hits triangles and /must/ not contain an+-- intersection shader, only closest hit and any-hit shaders.+pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR  = RayTracingShaderGroupTypeKHR 1+-- | 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR' specifies a+-- shader group that only intersects with custom geometry and /must/+-- contain an intersection shader and /may/ contain closest hit and any-hit+-- shaders.+pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = RayTracingShaderGroupTypeKHR 2+{-# complete RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR,+             RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR,+             RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR :: RayTracingShaderGroupTypeKHR #-}++conNameRayTracingShaderGroupTypeKHR :: String+conNameRayTracingShaderGroupTypeKHR = "RayTracingShaderGroupTypeKHR"++enumPrefixRayTracingShaderGroupTypeKHR :: String+enumPrefixRayTracingShaderGroupTypeKHR = "RAY_TRACING_SHADER_GROUP_TYPE_"++showTableRayTracingShaderGroupTypeKHR :: [(RayTracingShaderGroupTypeKHR, String)]+showTableRayTracingShaderGroupTypeKHR =+  [ (RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR             , "GENERAL_KHR")+  , (RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR , "TRIANGLES_HIT_GROUP_KHR")+  , (RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR, "PROCEDURAL_HIT_GROUP_KHR")+  ]++instance Show RayTracingShaderGroupTypeKHR where+  showsPrec = enumShowsPrec enumPrefixRayTracingShaderGroupTypeKHR+                            showTableRayTracingShaderGroupTypeKHR+                            conNameRayTracingShaderGroupTypeKHR+                            (\(RayTracingShaderGroupTypeKHR x) -> x)+                            (showsPrec 11)++instance Read RayTracingShaderGroupTypeKHR where+  readPrec = enumReadPrec enumPrefixRayTracingShaderGroupTypeKHR+                          showTableRayTracingShaderGroupTypeKHR+                          conNameRayTracingShaderGroupTypeKHR+                          RayTracingShaderGroupTypeKHR+++-- | VkShaderGroupShaderKHR - Shader group shaders+--+-- = See Also+--+-- 'getRayTracingShaderGroupStackSizeKHR'+newtype ShaderGroupShaderKHR = ShaderGroupShaderKHR Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'SHADER_GROUP_SHADER_GENERAL_KHR' uses the shader specified in the group+-- with 'RayTracingShaderGroupCreateInfoKHR'::@generalShader@+pattern SHADER_GROUP_SHADER_GENERAL_KHR      = ShaderGroupShaderKHR 0+-- | 'SHADER_GROUP_SHADER_CLOSEST_HIT_KHR' uses the shader specified in the+-- group with 'RayTracingShaderGroupCreateInfoKHR'::@closestHitShader@+pattern SHADER_GROUP_SHADER_CLOSEST_HIT_KHR  = ShaderGroupShaderKHR 1+-- | 'SHADER_GROUP_SHADER_ANY_HIT_KHR' uses the shader specified in the group+-- with 'RayTracingShaderGroupCreateInfoKHR'::@anyHitShader@+pattern SHADER_GROUP_SHADER_ANY_HIT_KHR      = ShaderGroupShaderKHR 2+-- | 'SHADER_GROUP_SHADER_INTERSECTION_KHR' uses the shader specified in the+-- group with 'RayTracingShaderGroupCreateInfoKHR'::@intersectionShader@+pattern SHADER_GROUP_SHADER_INTERSECTION_KHR = ShaderGroupShaderKHR 3+{-# complete SHADER_GROUP_SHADER_GENERAL_KHR,+             SHADER_GROUP_SHADER_CLOSEST_HIT_KHR,+             SHADER_GROUP_SHADER_ANY_HIT_KHR,+             SHADER_GROUP_SHADER_INTERSECTION_KHR :: ShaderGroupShaderKHR #-}++conNameShaderGroupShaderKHR :: String+conNameShaderGroupShaderKHR = "ShaderGroupShaderKHR"++enumPrefixShaderGroupShaderKHR :: String+enumPrefixShaderGroupShaderKHR = "SHADER_GROUP_SHADER_"++showTableShaderGroupShaderKHR :: [(ShaderGroupShaderKHR, String)]+showTableShaderGroupShaderKHR =+  [ (SHADER_GROUP_SHADER_GENERAL_KHR     , "GENERAL_KHR")+  , (SHADER_GROUP_SHADER_CLOSEST_HIT_KHR , "CLOSEST_HIT_KHR")+  , (SHADER_GROUP_SHADER_ANY_HIT_KHR     , "ANY_HIT_KHR")+  , (SHADER_GROUP_SHADER_INTERSECTION_KHR, "INTERSECTION_KHR")+  ]++instance Show ShaderGroupShaderKHR where+  showsPrec = enumShowsPrec enumPrefixShaderGroupShaderKHR+                            showTableShaderGroupShaderKHR+                            conNameShaderGroupShaderKHR+                            (\(ShaderGroupShaderKHR x) -> x)+                            (showsPrec 11)++instance Read ShaderGroupShaderKHR where+  readPrec = enumReadPrec enumPrefixShaderGroupShaderKHR+                          showTableShaderGroupShaderKHR+                          conNameShaderGroupShaderKHR+                          ShaderGroupShaderKHR+++type KHR_RAY_TRACING_PIPELINE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION"+pattern KHR_RAY_TRACING_PIPELINE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_RAY_TRACING_PIPELINE_SPEC_VERSION = 1+++type KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME = "VK_KHR_ray_tracing_pipeline"++-- No documentation found for TopLevel "VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME"+pattern KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME = "VK_KHR_ray_tracing_pipeline"+
+ src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs-boot view
@@ -0,0 +1,801 @@+{-# language CPP #-}+-- | = Name+--+-- VK_KHR_ray_tracing_pipeline - device extension+--+-- == VK_KHR_ray_tracing_pipeline+--+-- [__Name String__]+--     @VK_KHR_ray_tracing_pipeline@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     348+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+--     -   Requires @VK_KHR_spirv_1_4@+--+--     -   Requires @VK_KHR_acceleration_structure@+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_ray_tracing_pipeline:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-11-12+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_ray_tracing.html SPV_KHR_ray_tracing>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_ray_tracing.txt GLSL_EXT_ray_tracing>+--+--     -   This extension interacts with+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#version-1.2 Vulkan 1.2>+--         and+--         <VK_KHR_vulkan_memory_model.html VK_KHR_vulkan_memory_model>,+--         adding the+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-call-related shader-call-related>+--         relation of invocations,+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-call-order shader-call-order>+--         partial order of dynamic instances of instructions, and the+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-scope-shadercall ShaderCallKHR>+--         scope.+--+--     -   This extension interacts with+--         <VK_KHR_pipeline_library.html VK_KHR_pipeline_library>, enabling+--         pipeline libraries to be used with ray tracing pipelines and+--         enabling usage of 'RayTracingPipelineInterfaceCreateInfoKHR'.+--+-- [__Contributors__]+--+--     -   Matthäus Chajdas, AMD+--+--     -   Greg Grebe, AMD+--+--     -   Nicolai Hähnle, AMD+--+--     -   Tobias Hector, AMD+--+--     -   Dave Oldcorn, AMD+--+--     -   Skyler Saleh, AMD+--+--     -   Mathieu Robart, Arm+--+--     -   Marius Bjorge, Arm+--+--     -   Tom Olson, Arm+--+--     -   Sebastian Tafuri, EA+--+--     -   Henrik Rydgard, Embark+--+--     -   Juan Cañada, Epic Games+--+--     -   Patrick Kelly, Epic Games+--+--     -   Yuriy O’Donnell, Epic Games+--+--     -   Michael Doggett, Facebook\/Oculus+--+--     -   Andrew Garrard, Imagination+--+--     -   Don Scorgie, Imagination+--+--     -   Dae Kim, Imagination+--+--     -   Joshua Barczak, Intel+--+--     -   Slawek Grajewski, Intel+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Pascal Gautron, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Christoph Kubisch, NVIDIA+--+--     -   Ashwin Lele, NVIDIA+--+--     -   Robert Stepinski, NVIDIA+--+--     -   Martin Stich, NVIDIA+--+--     -   Nuno Subtil, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+--     -   Jon Leech, Khronos+--+--     -   Jeroen van Schijndel, OTOY+--+--     -   Juul Joosten, OTOY+--+--     -   Alex Bourd, Qualcomm+--+--     -   Roman Larionov, Qualcomm+--+--     -   David McAllister, Qualcomm+--+--     -   Spencer Fricke, Samsung+--+--     -   Lewis Gordon, Samsung+--+--     -   Ralph Potter, Samsung+--+--     -   Jasper Bekkers, Traverse Research+--+--     -   Jesse Barker, Unity+--+--     -   Baldur Karlsson, Valve+--+-- == Description+--+-- Rasterization has been the dominant method to produce interactive+-- graphics, but increasing performance of graphics hardware has made ray+-- tracing a viable option for interactive rendering. Being able to+-- integrate ray tracing with traditional rasterization makes it easier for+-- applications to incrementally add ray traced effects to existing+-- applications or to do hybrid approaches with rasterization for primary+-- visibility and ray tracing for secondary queries.+--+-- To enable ray tracing, this extension adds a few different categories of+-- new functionality:+--+-- -   A new ray tracing pipeline type with new shader domains: ray+--     generation, intersection, any-hit, closest hit, miss, and callable+--+-- -   A shader binding indirection table to link shader groups with+--     acceleration structure items+--+-- -   Trace ray commands which initiates the ray pipeline traversal and+--     invocation of the various new shader domains depending on which+--     traversal conditions are met+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   @SPV_KHR_ray_tracing@+--+-- == New Commands+--+-- -   'cmdSetRayTracingPipelineStackSizeKHR'+--+-- -   'cmdTraceRaysIndirectKHR'+--+-- -   'cmdTraceRaysKHR'+--+-- -   'createRayTracingPipelinesKHR'+--+-- -   'getRayTracingCaptureReplayShaderGroupHandlesKHR'+--+-- -   'getRayTracingShaderGroupHandlesKHR'+--+-- -   'getRayTracingShaderGroupStackSizeKHR'+--+-- == New Structures+--+-- -   'RayTracingPipelineCreateInfoKHR'+--+-- -   'RayTracingPipelineInterfaceCreateInfoKHR'+--+-- -   'RayTracingShaderGroupCreateInfoKHR'+--+-- -   'StridedDeviceAddressRegionKHR'+--+-- -   'TraceRaysIndirectCommandKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceRayTracingPipelineFeaturesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceRayTracingPipelinePropertiesKHR'+--+-- == New Enums+--+-- -   'RayTracingShaderGroupTypeKHR'+--+-- -   'ShaderGroupShaderKHR'+--+-- == New Enum Constants+--+-- -   'KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME'+--+-- -   'KHR_RAY_TRACING_PIPELINE_SPEC_VERSION'+--+-- -   'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint':+--+--     -   'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ANY_HIT_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLOSEST_HIT_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_INTERSECTION_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR'+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR'+--+-- == New or Modified Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIDKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raygeometryindex RayGeometryIndexKHR>+--+-- -   (modified)@PrimitiveId@+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-khr-raytracing RayTracingKHR>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-khr-raytracing RayTraversalPrimitiveCullingKHR>+--+-- == Issues+--+-- (1) How does this extension differ from VK_NV_ray_tracing?+--+-- __DISCUSSION__:+--+-- The following is a summary of the main functional differences between+-- VK_KHR_ray_tracing_pipeline and VK_NV_ray_tracing:+--+-- -   added support for indirect ray tracing ('cmdTraceRaysIndirectKHR')+--+-- -   uses SPV_KHR_ray_tracing instead of SPV_NV_ray_tracing+--+--     -   refer to KHR SPIR-V enums instead of NV SPIR-V enums (which are+--         functionally equivalent and aliased to the same values).+--+--     -   added @RayGeometryIndexKHR@ built-in+--+-- -   removed vkCompileDeferredNV compilation functionality and replaced+--     with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations deferred host operations>+--     interactions for ray tracing+--+-- -   added 'PhysicalDeviceRayTracingPipelineFeaturesKHR' structure+--+-- -   extended 'PhysicalDeviceRayTracingPipelinePropertiesKHR' structure+--+--     -   renamed @maxRecursionDepth@ to @maxRayRecursionDepth@ and it has+--         a minimum of 1 instead of 31+--+--     -   require @shaderGroupHandleSize@ to be 32 bytes+--+--     -   added @maxRayDispatchInvocationCount@,+--         @shaderGroupHandleAlignment@ and @maxRayHitAttributeSize@+--+-- -   reworked geometry structures so they could be better shared between+--     device, host, and indirect builds+--+-- -   changed SBT parameters to a structure and added size+--     ('StridedDeviceAddressRegionKHR')+--+-- -   add parameter for requesting memory requirements for host and\/or+--     device build+--+-- -   added+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-library pipeline library>+--     support for ray tracing+--+-- -   added+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-traversal-watertight watertightness guarantees>+--+-- -   added no-null-shader pipeline flags+--     (@VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_*_SHADERS_BIT_KHR@)+--+-- -   added+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-shader-call memory model interactions>+--     with ray tracing and define how subgroups work and can be repacked+--+-- (2) Can you give a more detailed comparision of differences and+-- similarities between VK_NV_ray_tracing and VK_KHR_ray_tracing_pipeline?+--+-- __DISCUSSION__:+--+-- The following is a more detailed comparision of which commands,+-- structures, and enums are aliased, changed, or removed.+--+-- -   Aliased functionality — enums, structures, and commands that are+--     considered equivalent:+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupTypeNV'+--         ↔ 'RayTracingShaderGroupTypeKHR'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.getRayTracingShaderGroupHandlesNV'+--         ↔ 'getRayTracingShaderGroupHandlesKHR'+--+-- -   Changed enums, structures, and commands:+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupCreateInfoNV'+--         → 'RayTracingShaderGroupCreateInfoKHR' (added+--         @pShaderGroupCaptureReplayHandle@)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'+--         → 'RayTracingPipelineCreateInfoKHR' (changed type of @pGroups@,+--         added @libraries@, @pLibraryInterface@, and @pDynamicState@)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'+--         → VkPhysicalDeviceRayTracingPropertiesKHR (renamed+--         @maxTriangleCount@ to @maxPrimitiveCount@, added+--         @shaderGroupHandleCaptureReplaySize@)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV' →+--         'cmdTraceRaysKHR' (params to struct)+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV'+--         → 'createRayTracingPipelinesKHR' (different struct, changed+--         functionality)+--+-- -   Added enums, structures and commands:+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR',+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'+--         to+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+--+--     -   'PhysicalDeviceRayTracingPipelineFeaturesKHR' structure+--+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressKHR'+--         and+--         'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR'+--         unions+--+--     -   'Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'+--         struct+--+--     -   'RayTracingPipelineInterfaceCreateInfoKHR' struct+--+--     -   'StridedDeviceAddressRegionKHR' struct+--+--     -   'cmdTraceRaysIndirectKHR' command and+--         'TraceRaysIndirectCommandKHR' struct+--+--     -   'getRayTracingCaptureReplayShaderGroupHandlesKHR' (shader group+--         capture\/replay)+--+--     -   'cmdSetRayTracingPipelineStackSizeKHR' and+--         'getRayTracingShaderGroupStackSizeKHR' commands for stack size+--         control+--+-- -   Functionality removed:+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'+--+--     -   'Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV' command+--         (replaced with+--         <VK_KHR_deferred_host_operations.html VK_KHR_deferred_host_operations>)+--+-- (3) What are the changes between the public provisional+-- (VK_KHR_ray_tracing v8) release and the internal provisional+-- (VK_KHR_ray_tracing v9) release?+--+-- -   Require Vulkan 1.1 and SPIR-V 1.4+--+-- -   Added interactions with Vulkan 1.2 and+--     <VK_KHR_vulkan_memory_model.html VK_KHR_vulkan_memory_model>+--+-- -   added creation time capture and replay flags+--+--     -   added+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'+--         to+--         'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+--+-- -   replace @VkStridedBufferRegionKHR@ with+--     'StridedDeviceAddressRegionKHR' and change 'cmdTraceRaysKHR',+--     'cmdTraceRaysIndirectKHR', to take these for the shader binding+--     table and use device addresses instead of buffers.+--+-- -   require the shader binding table buffers to have the+--     @VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR@ set+--+-- -   make <VK_KHR_pipeline_library.html VK_KHR_pipeline_library> an+--     interaction instead of required extension+--+-- -   rename the @libraries@ member of 'RayTracingPipelineCreateInfoKHR'+--     to @pLibraryInfo@ and make it a pointer+--+-- -   make+--     <VK_KHR_deferred_host_operations.html VK_KHR_deferred_host_operations>+--     an interaction instead of a required extension (later went back on+--     this)+--+-- -   added explicit stack size management for ray tracing pipelines+--+--     -   removed the @maxCallableSize@ member of+--         'RayTracingPipelineInterfaceCreateInfoKHR'+--+--     -   added the @pDynamicState@ member to+--         'RayTracingPipelineCreateInfoKHR'+--+--     -   added+--         'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'+--         dynamic state for ray tracing pipelines+--+--     -   added 'getRayTracingShaderGroupStackSizeKHR' and+--         'cmdSetRayTracingPipelineStackSizeKHR' commands+--+--     -   added 'ShaderGroupShaderKHR' enum+--+-- -   Added @maxRayDispatchInvocationCount@ limit to+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'+--+-- -   Added @shaderGroupHandleAlignment@ property to+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'+--+-- -   Added @maxRayHitAttributeSize@ property to+--     'PhysicalDeviceRayTracingPipelinePropertiesKHR'+--+-- -   Clarify deferred host ops for pipeline creation+--+--     -   'Vulkan.Extensions.Handles.DeferredOperationKHR' is now a+--         top-level parameter for 'createRayTracingPipelinesKHR'+--+--     -   removed @VkDeferredOperationInfoKHR@ structure+--+--     -   change deferred host creation\/return parameter behavior such+--         that the implementation can modify such parameters until the+--         deferred host operation completes+--+--     -   <VK_KHR_deferred_host_operations.html VK_KHR_deferred_host_operations>+--         is required again+--+-- (4) What are the changes between the internal provisional+-- (VK_KHR_ray_tracing v9) release and the final+-- (VK_KHR_acceleration_structure v11 \/ VK_KHR_ray_tracing_pipeline v1)+-- release?+--+-- -   refactor VK_KHR_ray_tracing into 3 extensions, enabling+--     implementation flexibility and decoupling ray query support from ray+--     pipelines:+--+--     -   <VK_KHR_acceleration_structure.html VK_KHR_acceleration_structure>+--         (for acceleration structure operations)+--+--     -   <VK_KHR_ray_tracing_pipeline.html VK_KHR_ray_tracing_pipeline>+--         (for ray tracing pipeline and shader stages)+--+--     -   <VK_KHR_ray_query.html VK_KHR_ray_query> (for ray queries in+--         existing shader stages)+--+-- -   Require @Volatile@ for the following builtins in the ray generation,+--     closest hit, miss, intersection, and callable shader stages:+--+--     -   @SubgroupSize@, @SubgroupLocalInvocationId@, @SubgroupEqMask@,+--         @SubgroupGeMask@, @SubgroupGtMask@, @SubgroupLeMask@,+--         @SubgroupLtMask@+--+--     -   @SMIDNV@, @WarpIDNV@+--+-- -   clarify buffer usage flags for ray tracing+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR'+--         is added as an alias of+--         'Vulkan.Extensions.VK_NV_ray_tracing.BUFFER_USAGE_RAY_TRACING_BIT_NV'+--         and is required on shader binding table buffers+--+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'+--         is used in+--         <VK_KHR_acceleration_structure.html VK_KHR_acceleration_structure>+--         for @scratchData@+--+-- -   rename @maxRecursionDepth@ to @maxRayPipelineRecursionDepth@+--     (pipeline creation) and @maxRayRecursionDepth@ (limit) to reduce+--     confusion+--+-- -   Add queryable @maxRayHitAttributeSize@ limit and rename members of+--     'RayTracingPipelineInterfaceCreateInfoKHR' to+--     @maxPipelineRayPayloadSize@ and @maxPipelineRayHitAttributeSize@ for+--     clarity+--+-- -   Update SPIRV capabilities to use @RayTracingKHR@+--+-- -   extension is no longer provisional+--+-- -   define synchronization requirements for indirect trace rays and+--     indirect buffer+--+-- (5) This extension adds gl_InstanceID for the intersection, any-hit, and+-- closest hit shaders, but in KHR_vulkan_glsl, gl_InstanceID is replaced+-- with gl_InstanceIndex. Which should be used for Vulkan in this+-- extension?+--+-- RESOLVED: This extension uses gl_InstanceID and maps it to @InstanceId@+-- in SPIR-V. It is acknowledged that this is different than other shader+-- stages in Vulkan. There are two main reasons for the difference here:+--+-- -   symmetry with gl_PrimitiveID which is also available in these+--     shaders+--+-- -   there is no \"baseInstance\" relevant for these shaders, and so ID+--     makes it more obvious that this is zero-based.+--+-- == Sample Code+--+-- Example ray generation GLSL shader+--+-- > #version 450 core+-- > #extension GL_EXT_ray_tracing : require+-- > layout(set = 0, binding = 0, rgba8) uniform image2D image;+-- > layout(set = 0, binding = 1) uniform accelerationStructureEXT as;+-- > layout(location = 0) rayPayloadEXT float payload;+-- >+-- > void main()+-- > {+-- >    vec4 col = vec4(0, 0, 0, 1);+-- >+-- >    vec3 origin = vec3(float(gl_LaunchIDEXT.x)/float(gl_LaunchSizeEXT.x), float(gl_LaunchIDEXT.y)/float(gl_LaunchSizeEXT.y), 1.0);+-- >    vec3 dir = vec3(0.0, 0.0, -1.0);+-- >+-- >    traceRayEXT(as, 0, 0xff, 0, 1, 0, origin, 0.0, dir, 1000.0, 0);+-- >+-- >    col.y = payload;+-- >+-- >    imageStore(image, ivec2(gl_LaunchIDEXT.xy), col);+-- > }+--+-- == Version History+--+-- -   Revision 1, 2020-11-12 (Mathieu Robart, Daniel Koch, Eric Werness,+--     Tobias Hector)+--+--     -   Decomposition of the specification, from VK_KHR_ray_tracing to+--         VK_KHR_ray_tracing_pipeline (#1918,!3912)+--+--     -   require certain subgroup and sm_shader_builtin shader builtins+--         to be decorated as volatile in the ray generation, closest hit,+--         miss, intersection, and callable stages (#1924,!3903,!3954)+--+--     -   clarify buffer usage flags for ray tracing (#2181,!3939)+--+--     -   rename maxRecursionDepth to maxRayPipelineRecursionDepth and+--         maxRayRecursionDepth (#2203,!3937)+--+--     -   add queriable maxRayHitAttributeSize and rename members of+--         VkRayTracingPipelineInterfaceCreateInfoKHR (#2102,!3966)+--+--     -   update to use @RayTracingKHR@ SPIR-V capability+--+--     -   add VUs for matching hit group type against geometry type+--         (#2245,!3994)+--+--     -   require @RayTMaxKHR@ be volatile in intersection shaders+--         (#2268,!4030)+--+--     -   add numerical limits for ray parameters (#2235,!3960)+--+--     -   fix SBT indexing rules for device addresses (#2308,!4079)+--+--     -   relax formula for ray intersection candidate determination+--         (#2322,!4080)+--+--     -   add more details on @ShaderRecordBufferKHR@ variables+--         (#2230,!4083)+--+--     -   clarify valid bits for @InstanceCustomIndexKHR@+--         (GLSL\/GLSL#19,!4128)+--+--     -   allow at most one @IncomingRayPayloadKHR@,+--         @IncomingCallableDataKHR@, and @HitAttributeKHR@ (!4129)+--+--     -   add minimum for maxShaderGroupStride (#2353,!4131)+--+--     -   require VK_KHR_pipeline_library extension to be supported+--         (#2348,!4135)+--+--     -   clarify meaning of \'geometry index\' (#2272,!4137)+--+--     -   restrict traces to TLAS (#2239,!4141)+--+--     -   add note about maxPipelineRayPayloadSize (#2383,!4172)+--+--     -   do not require raygen shader in pipeline libraries (!4185)+--+--     -   define sync for indirect trace rays and indirect buffer+--         (#2407,!4208)+--+-- = See Also+--+-- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR',+-- 'PhysicalDeviceRayTracingPipelineFeaturesKHR',+-- 'PhysicalDeviceRayTracingPipelinePropertiesKHR',+-- 'RayTracingPipelineCreateInfoKHR',+-- 'RayTracingPipelineInterfaceCreateInfoKHR',+-- 'RayTracingShaderGroupCreateInfoKHR', 'RayTracingShaderGroupTypeKHR',+-- 'ShaderGroupShaderKHR', 'StridedDeviceAddressRegionKHR',+-- 'TraceRaysIndirectCommandKHR', 'cmdSetRayTracingPipelineStackSizeKHR',+-- 'cmdTraceRaysIndirectKHR', 'cmdTraceRaysKHR',+-- 'createRayTracingPipelinesKHR',+-- 'getRayTracingCaptureReplayShaderGroupHandlesKHR',+-- 'getRayTracingShaderGroupHandlesKHR',+-- 'getRayTracingShaderGroupStackSizeKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_KHR_ray_tracing_pipeline  ( PhysicalDeviceRayTracingPipelineFeaturesKHR+                                                      , PhysicalDeviceRayTracingPipelinePropertiesKHR+                                                      , RayTracingPipelineCreateInfoKHR+                                                      , RayTracingPipelineInterfaceCreateInfoKHR+                                                      , RayTracingShaderGroupCreateInfoKHR+                                                      , StridedDeviceAddressRegionKHR+                                                      , TraceRaysIndirectCommandKHR+                                                      , ShaderGroupShaderKHR+                                                      , RayTracingShaderGroupTypeKHR+                                                      ) where++import Data.Kind (Type)+import {-# SOURCE #-} Vulkan.CStruct.Extends (Chain)+import {-# SOURCE #-} Vulkan.CStruct.Extends (Extendss)+import Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Vulkan.CStruct.Extends (PokeChain)+import Vulkan.CStruct (ToCStruct)+data PhysicalDeviceRayTracingPipelineFeaturesKHR++instance ToCStruct PhysicalDeviceRayTracingPipelineFeaturesKHR+instance Show PhysicalDeviceRayTracingPipelineFeaturesKHR++instance FromCStruct PhysicalDeviceRayTracingPipelineFeaturesKHR+++data PhysicalDeviceRayTracingPipelinePropertiesKHR++instance ToCStruct PhysicalDeviceRayTracingPipelinePropertiesKHR+instance Show PhysicalDeviceRayTracingPipelinePropertiesKHR++instance FromCStruct PhysicalDeviceRayTracingPipelinePropertiesKHR+++type role RayTracingPipelineCreateInfoKHR nominal+data RayTracingPipelineCreateInfoKHR (es :: [Type])++instance (Extendss RayTracingPipelineCreateInfoKHR es, PokeChain es) => ToCStruct (RayTracingPipelineCreateInfoKHR es)+instance Show (Chain es) => Show (RayTracingPipelineCreateInfoKHR es)++instance (Extendss RayTracingPipelineCreateInfoKHR es, PeekChain es) => FromCStruct (RayTracingPipelineCreateInfoKHR es)+++data RayTracingPipelineInterfaceCreateInfoKHR++instance ToCStruct RayTracingPipelineInterfaceCreateInfoKHR+instance Show RayTracingPipelineInterfaceCreateInfoKHR++instance FromCStruct RayTracingPipelineInterfaceCreateInfoKHR+++data RayTracingShaderGroupCreateInfoKHR++instance ToCStruct RayTracingShaderGroupCreateInfoKHR+instance Show RayTracingShaderGroupCreateInfoKHR++instance FromCStruct RayTracingShaderGroupCreateInfoKHR+++data StridedDeviceAddressRegionKHR++instance ToCStruct StridedDeviceAddressRegionKHR+instance Show StridedDeviceAddressRegionKHR++instance FromCStruct StridedDeviceAddressRegionKHR+++data TraceRaysIndirectCommandKHR++instance ToCStruct TraceRaysIndirectCommandKHR+instance Show TraceRaysIndirectCommandKHR++instance FromCStruct TraceRaysIndirectCommandKHR+++data ShaderGroupShaderKHR+++data RayTracingShaderGroupTypeKHR+
src/Vulkan/Extensions/VK_KHR_relaxed_block_layout.hs view
@@ -1,4 +1,89 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_relaxed_block_layout - device extension+--+-- == VK_KHR_relaxed_block_layout+--+-- [__Name String__]+--     @VK_KHR_relaxed_block_layout@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     145+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   John Kessenich+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_relaxed_block_layout:%20&body=@johnkslang%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-03-26+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   John Kessenich, Google+--+-- == Description+--+-- The @VK_KHR_relaxed_block_layout@ extension allows implementations to+-- indicate they can support more variation in block @Offset@ decorations.+-- For example, placing a vector of three floats at an offset of 16×N + 4.+--+-- See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-layout Offset and Stride Assignment>+-- for details.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Enum Constants+--+-- -   'KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME'+--+-- -   'KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 1, 2017-03-26 (JohnK)+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_relaxed_block_layout Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_relaxed_block_layout  ( KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION                                                       , pattern KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION                                                       , KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME
src/Vulkan/Extensions/VK_KHR_sampler_mirror_clamp_to_edge.hs view
@@ -1,4 +1,151 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_sampler_mirror_clamp_to_edge - device extension+--+-- == VK_KHR_sampler_mirror_clamp_to_edge+--+-- [__Name String__]+--     @VK_KHR_sampler_mirror_clamp_to_edge@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     15+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Tobias Hector+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_sampler_mirror_clamp_to_edge:%20&body=@tobski%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-08-17+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [__Contributors__]+--+--     -   Tobias Hector, Imagination Technologies+--+--     -   Jon Leech, Khronos+--+-- == Description+--+-- @VK_KHR_sampler_mirror_clamp_to_edge@ extends the set of sampler address+-- modes to include an additional mode+-- ('Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE')+-- that effectively uses a texture map twice as large as the original image+-- in which the additional half of the new image is a mirror image of the+-- original image.+--+-- This new mode relaxes the need to generate images whose opposite edges+-- match by using the original image to generate a matching “mirror image”.+-- This mode allows the texture to be mirrored only once in the negative s,+-- t, and r directions.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2.+-- However, if Vulkan 1.2 is supported and this extension is not, the+-- 'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- 'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE'+-- is optional. Since the original extension did not use an author suffix+-- on the enum+-- 'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE',+-- it is used by both core and extension implementations.+--+-- == New Enum Constants+--+-- -   'KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME'+--+-- -   'KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode':+--+--     -   'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE'+--+-- == Example+--+-- Creating a sampler with the new address mode in each dimension+--+-- >     VkSamplerCreateInfo createInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO // sType+-- >         // Other members set to application-desired values+-- >     };+-- >+-- >     createInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE;+-- >     createInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE;+-- >     createInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE;+-- >+-- >     VkSampler sampler;+-- >     VkResult result = vkCreateSampler(+-- >         device,+-- >         &createInfo,+-- >         &sampler);+--+-- == Issues+--+-- 1) Why are both KHR and core versions of the+-- 'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE'+-- token present?+--+-- __RESOLVED__: This functionality was intended to be required in Vulkan+-- 1.0. We realized shortly before public release that not all+-- implementations could support it, and moved the functionality into an+-- optional extension, but did not apply the KHR extension suffix. Adding a+-- KHR-suffixed alias of the non-suffixed enum has been done to comply with+-- our own naming rules.+--+-- In a related change, before spec revision 1.1.121 this extension was+-- hardwiring into the spec Makefile so it was always included with the+-- Specification, even in the core-only versions. This has now been+-- reverted, and it is treated as any other extension.+--+-- == Version History+--+-- -   Revision 1, 2016-02-16 (Tobias Hector)+--+--     -   Initial draft+--+-- -   Revision 2, 2019-08-14 (Jon Leech)+--+--     -   Add KHR-suffixed alias of non-suffixed enum.+--+-- -   Revision 3, 2019-08-17 (Jon Leech)+--+--     -   Add an issue explaining the reason for the extension API not+--         being suffixed with KHR.+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_mirror_clamp_to_edge Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge  ( pattern SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR                                                               , KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION                                                               , pattern KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION
src/Vulkan/Extensions/VK_KHR_sampler_ycbcr_conversion.hs view
@@ -1,4 +1,401 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_sampler_ycbcr_conversion - device extension+--+-- == VK_KHR_sampler_ycbcr_conversion+--+-- [__Name String__]+--     @VK_KHR_sampler_ycbcr_conversion@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     157+--+-- [__Revision__]+--     14+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_maintenance1@+--+--     -   Requires @VK_KHR_bind_memory2@+--+--     -   Requires @VK_KHR_get_memory_requirements2@+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Andrew Garrard+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_sampler_ycbcr_conversion:%20&body=@fluppeteer%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-08-11+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Andrew Garrard, Samsung Electronics+--+--     -   Tobias Hector, Imagination Technologies+--+--     -   James Jones, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Romain Guy, Google+--+--     -   Jesse Hall, Google+--+--     -   Tom Cooksey, ARM Ltd+--+--     -   Jeff Leger, Qualcomm Technologies, Inc+--+--     -   Jan-Harald Fredriksen, ARM Ltd+--+--     -   Jan Outters, Samsung Electronics+--+--     -   Alon Or-bach, Samsung Electronics+--+--     -   Michael Worcester, Imagination Technologies+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Tony Zlatinski, NVIDIA+--+--     -   Matthew Netsch, Qualcomm Technologies, Inc+--+-- == Description+--+-- The use of Y′CBCR sampler conversion is an area in 3D graphics not used+-- by most Vulkan developers. It’s mainly used for processing inputs from+-- video decoders and cameras. The use of the extension assumes basic+-- knowledge of Y′CBCR concepts.+--+-- This extension provides the ability to perform specified color space+-- conversions during texture sampling operations for the Y′CBCR color+-- space natively. It also adds a selection of multi-planar formats, image+-- aspect plane, and the ability to bind memory to the planes of an image+-- collectively or separately.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted. However, if Vulkan 1.1 is supported and this+-- extension is not, the @samplerYcbcrConversion@ capability is optional.+-- The original type, enum and command names are still available as aliases+-- of the core functionality.+--+-- == New Object Types+--+-- -   'SamplerYcbcrConversionKHR'+--+-- == New Commands+--+-- -   'createSamplerYcbcrConversionKHR'+--+-- -   'destroySamplerYcbcrConversionKHR'+--+-- == New Structures+--+-- -   'SamplerYcbcrConversionCreateInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo':+--+--     -   'BindImagePlaneMemoryInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2':+--+--     -   'SamplerYcbcrConversionImageFormatPropertiesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageMemoryRequirementsInfo2':+--+--     -   'ImagePlaneMemoryRequirementsInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceSamplerYcbcrConversionFeaturesKHR'+--+-- -   Extending 'Vulkan.Core10.Sampler.SamplerCreateInfo',+--     'Vulkan.Core10.ImageView.ImageViewCreateInfo':+--+--     -   'SamplerYcbcrConversionInfoKHR'+--+-- == New Enums+--+-- -   'ChromaLocationKHR'+--+-- -   'SamplerYcbcrModelConversionKHR'+--+-- -   'SamplerYcbcrRangeKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME'+--+-- -   'KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core11.Enums.ChromaLocation.ChromaLocation':+--+--     -   'CHROMA_LOCATION_COSITED_EVEN_KHR'+--+--     -   'CHROMA_LOCATION_MIDPOINT_KHR'+--+-- -   Extending+--     'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT':+--+--     -   'DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':+--+--     -   'FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR'+--+--     -   'FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR'+--+--     -   'FORMAT_B16G16R16G16_422_UNORM_KHR'+--+--     -   'FORMAT_B8G8R8G8_422_UNORM_KHR'+--+--     -   'FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR'+--+--     -   'FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR'+--+--     -   'FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR'+--+--     -   'FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR'+--+--     -   'FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR'+--+--     -   'FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR'+--+--     -   'FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR'+--+--     -   'FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR'+--+--     -   'FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR'+--+--     -   'FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR'+--+--     -   'FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR'+--+--     -   'FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR'+--+--     -   'FORMAT_G16B16G16R16_422_UNORM_KHR'+--+--     -   'FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR'+--+--     -   'FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR'+--+--     -   'FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR'+--+--     -   'FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR'+--+--     -   'FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR'+--+--     -   'FORMAT_G8B8G8R8_422_UNORM_KHR'+--+--     -   'FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR'+--+--     -   'FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR'+--+--     -   'FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR'+--+--     -   'FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR'+--+--     -   'FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR'+--+--     -   'FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR'+--+--     -   'FORMAT_R10X6G10X6_UNORM_2PACK16_KHR'+--+--     -   'FORMAT_R10X6_UNORM_PACK16_KHR'+--+--     -   'FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR'+--+--     -   'FORMAT_R12X4G12X4_UNORM_2PACK16_KHR'+--+--     -   'FORMAT_R12X4_UNORM_PACK16_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':+--+--     -   'FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR'+--+--     -   'FORMAT_FEATURE_DISJOINT_BIT_KHR'+--+--     -   'FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR'+--+--     -   'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR'+--+--     -   'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR'+--+--     -   'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR'+--+--     -   'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits':+--+--     -   'IMAGE_ASPECT_PLANE_0_BIT_KHR'+--+--     -   'IMAGE_ASPECT_PLANE_1_BIT_KHR'+--+--     -   'IMAGE_ASPECT_PLANE_2_BIT_KHR'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':+--+--     -   'IMAGE_CREATE_DISJOINT_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR'+--+-- -   Extending+--     'Vulkan.Core11.Enums.SamplerYcbcrModelConversion.SamplerYcbcrModelConversion':+--+--     -   'SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR'+--+--     -   'SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR'+--+--     -   'SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR'+--+--     -   'SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR'+--+--     -   'SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR'+--+-- -   Extending 'Vulkan.Core11.Enums.SamplerYcbcrRange.SamplerYcbcrRange':+--+--     -   'SAMPLER_YCBCR_RANGE_ITU_FULL_KHR'+--+--     -   'SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR'+--+--     -   'STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR'+--+--     -   'STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_report VK_EXT_debug_report>+-- is supported:+--+-- -   Extending+--     'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT':+--+--     -   'Vulkan.Extensions.VK_EXT_debug_report.DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT'+--+-- == Version History+--+-- -   Revision 1, 2017-01-24 (Andrew Garrard)+--+--     -   Initial draft+--+-- -   Revision 2, 2017-01-25 (Andrew Garrard)+--+--     -   After initial feedback+--+-- -   Revision 3, 2017-01-27 (Andrew Garrard)+--+--     -   Higher bit depth formats, renaming, swizzle+--+-- -   Revision 4, 2017-02-22 (Andrew Garrard)+--+--     -   Added query function, formats as RGB, clarifications+--+-- -   Revision 5, 2017-04 (Andrew Garrard)+--+--     -   Simplified query and removed output conversions+--+-- -   Revision 6, 2017-4-24 (Andrew Garrard)+--+--     -   Tidying, incorporated new image query, restored transfer+--         functions+--+-- -   Revision 7, 2017-04-25 (Andrew Garrard)+--+--     -   Added cosited option\/midpoint requirement for formats,+--         \"bypassConversion\"+--+-- -   Revision 8, 2017-04-25 (Andrew Garrard)+--+--     -   Simplified further+--+-- -   Revision 9, 2017-04-27 (Andrew Garrard)+--+--     -   Disjoint no more+--+-- -   Revision 10, 2017-04-28 (Andrew Garrard)+--+--     -   Restored disjoint+--+-- -   Revision 11, 2017-04-29 (Andrew Garrard)+--+--     -   Now Ycbcr conversion, and KHR+--+-- -   Revision 12, 2017-06-06 (Andrew Garrard)+--+--     -   Added conversion to image view creation+--+-- -   Revision 13, 2017-07-13 (Andrew Garrard)+--+--     -   Allowed cosited-only chroma samples for formats+--+-- -   Revision 14, 2017-08-11 (Andrew Garrard)+--+--     -   Reflected quantization changes in BT.2100-1+--+-- = See Also+--+-- 'BindImagePlaneMemoryInfoKHR', 'ChromaLocationKHR',+-- 'ImagePlaneMemoryRequirementsInfoKHR',+-- 'PhysicalDeviceSamplerYcbcrConversionFeaturesKHR',+-- 'SamplerYcbcrConversionCreateInfoKHR',+-- 'SamplerYcbcrConversionImageFormatPropertiesKHR',+-- 'SamplerYcbcrConversionInfoKHR', 'SamplerYcbcrConversionKHR',+-- 'SamplerYcbcrModelConversionKHR', 'SamplerYcbcrRangeKHR',+-- 'createSamplerYcbcrConversionKHR', 'destroySamplerYcbcrConversionKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion  ( pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR                                                           , pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR                                                           , pattern STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR
src/Vulkan/Extensions/VK_KHR_separate_depth_stencil_layouts.hs view
@@ -1,4 +1,137 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_separate_depth_stencil_layouts - device extension+--+-- == VK_KHR_separate_depth_stencil_layouts+--+-- [__Name String__]+--     @VK_KHR_separate_depth_stencil_layouts@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     242+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_create_renderpass2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_separate_depth_stencil_layouts:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-06-25+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [__Contributors__]+--+--     -   Daniel Koch, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jesse Barker, Unity+--+--     -   Tobias Hector, AMD+--+-- == Description+--+-- This extension allows image memory barriers for depth\/stencil images to+-- have just one of the+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+-- aspect bits set, rather than require both. This allows their layouts to+-- be set independently. To support depth\/stencil images with different+-- layouts for the depth and stencil aspects, the depth\/stencil attachment+-- interface has been updated to support a separate layout for stencil.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2':+--+--     -   'AttachmentDescriptionStencilLayoutKHR'+--+-- -   Extending+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2':+--+--     -   'AttachmentReferenceStencilLayoutKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME'+--+-- -   'KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':+--+--     -   'IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR'+--+--     -   'IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR'+--+--     -   'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR'+--+--     -   'IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR'+--+--     -   'STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR'+--+-- == Version History+--+-- -   Revision 1, 2019-06-25 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'AttachmentDescriptionStencilLayoutKHR',+-- 'AttachmentReferenceStencilLayoutKHR',+-- 'PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_separate_depth_stencil_layouts Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR                                                                 , pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR                                                                 , pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR
src/Vulkan/Extensions/VK_KHR_shader_atomic_int64.hs view
@@ -1,4 +1,118 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_shader_atomic_int64 - device extension+--+-- == VK_KHR_shader_atomic_int64+--+-- [__Name String__]+--     @VK_KHR_shader_atomic_int64@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     181+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Aaron Hagan+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_shader_atomic_int64:%20&body=@ahagan%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-07-05+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+--     -   This extension enables+--         <https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader_int64.txt GL_ARB_gpu_shader_int64>+--         and+--         <https://raw.githubusercontent.com/KhronosGroup/GLSL/master/extensions/ext/GL_EXT_shader_atomic_int64.txt GL_EXT_shader_atomic_int64>+--         for GLSL source languages.+--+-- [__Contributors__]+--+--     -   Aaron Hagan, AMD+--+--     -   Daniel Rakos, AMD+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Neil Henning, Codeplay+--+-- == Description+--+-- This extension advertises the SPIR-V __Int64Atomics__ capability for+-- Vulkan, which allows a shader to contain 64-bit atomic operations on+-- signed and unsigned integers. The supported operations include+-- OpAtomicMin, OpAtomicMax, OpAtomicAnd, OpAtomicOr, OpAtomicXor,+-- OpAtomicAdd, OpAtomicExchange, and OpAtomicCompareExchange.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. However, if Vulkan 1.2 is supported and this+-- extension is not, the @shaderBufferInt64Atomics@ capability is optional.+-- The original type, enum and command names are still available as aliases+-- of the core functionality.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderAtomicInt64FeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME'+--+-- -   'KHR_SHADER_ATOMIC_INT64_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-int64atomics Int64Atomics>+--+-- == Version History+--+-- -   Revision 1, 2018-07-05 (Aaron Hagan)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceShaderAtomicInt64FeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_atomic_int64 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_shader_atomic_int64  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR                                                      , PhysicalDeviceShaderAtomicInt64FeaturesKHR                                                      , KHR_SHADER_ATOMIC_INT64_SPEC_VERSION
src/Vulkan/Extensions/VK_KHR_shader_clock.hs view
@@ -1,4 +1,110 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_shader_clock - device extension+--+-- == VK_KHR_shader_clock+--+-- [__Name String__]+--     @VK_KHR_shader_clock@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     182+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Aaron Hagan+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_shader_clock:%20&body=@ahagan%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-4-25+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_shader_clock.html SPV_KHR_shader_clock>.+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_clock.txt ARB_shader_clock>+--         and+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GL_EXT_shader_realtime_clock.txt EXT_shader_realtime_clock>+--+-- [__Contributors__]+--+--     -   Aaron Hagan, AMD+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension advertises the SPIR-V @ShaderClockKHR@ capability for+-- Vulkan, which allows a shader to query a real-time or monotonically+-- incrementing counter at the subgroup level or across the device level.+-- The two valid SPIR-V scopes for @OpReadClockKHR@ are @Subgroup@ and+-- 'Vulkan.Core10.Handles.Device'.+--+-- When using GLSL source-based shading languages, the+-- @clockRealtime@*@EXT@() timing functions map to the @OpReadClockKHR@+-- instruction with a scope of 'Vulkan.Core10.Handles.Device', and the+-- @clock@*@ARB@() timing functions map to the @OpReadClockKHR@ instruction+-- with a scope of @Subgroup@.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderClockFeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SHADER_CLOCK_EXTENSION_NAME'+--+-- -   'KHR_SHADER_CLOCK_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-shaderclock ShaderClockKHR>+--+-- == Version History+--+-- -   Revision 1, 2019-4-25 (Aaron Hagan)+--+--     -   Initial revision+--+-- = See Also+--+-- 'PhysicalDeviceShaderClockFeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_clock Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_shader_clock  ( PhysicalDeviceShaderClockFeaturesKHR(..)                                               , KHR_SHADER_CLOCK_SPEC_VERSION                                               , pattern KHR_SHADER_CLOCK_SPEC_VERSION
src/Vulkan/Extensions/VK_KHR_shader_clock.hs-boot view
@@ -1,4 +1,110 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_shader_clock - device extension+--+-- == VK_KHR_shader_clock+--+-- [__Name String__]+--     @VK_KHR_shader_clock@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     182+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Aaron Hagan+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_shader_clock:%20&body=@ahagan%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-4-25+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_shader_clock.html SPV_KHR_shader_clock>.+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_clock.txt ARB_shader_clock>+--         and+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GL_EXT_shader_realtime_clock.txt EXT_shader_realtime_clock>+--+-- [__Contributors__]+--+--     -   Aaron Hagan, AMD+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension advertises the SPIR-V @ShaderClockKHR@ capability for+-- Vulkan, which allows a shader to query a real-time or monotonically+-- incrementing counter at the subgroup level or across the device level.+-- The two valid SPIR-V scopes for @OpReadClockKHR@ are @Subgroup@ and+-- 'Vulkan.Core10.Handles.Device'.+--+-- When using GLSL source-based shading languages, the+-- @clockRealtime@*@EXT@() timing functions map to the @OpReadClockKHR@+-- instruction with a scope of 'Vulkan.Core10.Handles.Device', and the+-- @clock@*@ARB@() timing functions map to the @OpReadClockKHR@ instruction+-- with a scope of @Subgroup@.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderClockFeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SHADER_CLOCK_EXTENSION_NAME'+--+-- -   'KHR_SHADER_CLOCK_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-shaderclock ShaderClockKHR>+--+-- == Version History+--+-- -   Revision 1, 2019-4-25 (Aaron Hagan)+--+--     -   Initial revision+--+-- = See Also+--+-- 'PhysicalDeviceShaderClockFeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_clock Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_shader_clock  (PhysicalDeviceShaderClockFeaturesKHR) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_KHR_shader_draw_parameters.hs view
@@ -1,4 +1,158 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_shader_draw_parameters - device extension+--+-- == VK_KHR_shader_draw_parameters+--+-- [__Name String__]+--     @VK_KHR_shader_draw_parameters@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     64+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_shader_draw_parameters:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-05+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_shader_draw_parameters.html SPV_KHR_shader_draw_parameters>+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_draw_parameters.txt GL_ARB_shader_draw_parameters>+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Daniel Koch, NVIDIA Corporation+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   John Kessenich, Google+--+--     -   Stuart Smith, IMG+--+-- == Description+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   @SPV_KHR_shader_draw_parameters@+--+-- The extension provides access to three additional built-in shader+-- variables in Vulkan:+--+-- -   @BaseInstance@, which contains the @firstInstance@ parameter passed+--     to draw commands,+--+-- -   @BaseVertex@, which contains the @firstVertex@ or @vertexOffset@+--     parameter passed to draw commands, and+--+-- -   @DrawIndex@, which contains the index of the draw call currently+--     being processed from an indirect draw call.+--+-- When using GLSL source-based shader languages, the following variables+-- from @GL_ARB_shader_draw_parameters@ can map to these SPIR-V built-in+-- decorations:+--+-- -   @in int gl_BaseInstanceARB;@ → @BaseInstance@,+--+-- -   @in int gl_BaseVertexARB;@ → @BaseVertex@, and+--+-- -   @in int gl_DrawIDARB;@ → @DrawIndex@.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1,+-- however a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderDrawParameters feature bit was added>+-- to distinguish whether it is actually available or not.+--+-- == New Enum Constants+--+-- -   'KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME'+--+-- -   'KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION'+--+-- == New Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-baseinstance BaseInstance>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-basevertex BaseVertex>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-drawindex DrawIndex>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-drawparameters DrawParameters>+--+-- == Issues+--+-- 1) Is this the same functionality as @GL_ARB_shader_draw_parameters@?+--+-- __RESOLVED__: It’s actually a superset as it also adds in support for+-- arrayed drawing commands.+--+-- In GL for @GL_ARB_shader_draw_parameters@, @gl_BaseVertexARB@ holds the+-- integer value passed to the parameter to the command that resulted in+-- the current shader invocation. In the case where the command has no+-- @baseVertex@ parameter, the value of @gl_BaseVertexARB@ is zero. This+-- means that @gl_BaseVertexARB@ = @baseVertex@ (for @glDrawElements@+-- commands with @baseVertex@) or 0. In particular there are no+-- @glDrawArrays@ commands that take a @baseVertex@ parameter.+--+-- Now in Vulkan, we have @BaseVertex@ = @vertexOffset@ (for indexed+-- drawing commands) or @firstVertex@ (for arrayed drawing commands), and+-- so Vulkan’s version is really a superset of GL functionality.+--+-- == Version History+--+-- -   Revision 1, 2016-10-05 (Daniel Koch)+--+--     -   Internal revisions+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_draw_parameters Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_shader_draw_parameters  ( KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION                                                         , pattern KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION                                                         , KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME
src/Vulkan/Extensions/VK_KHR_shader_float16_int8.hs view
@@ -1,4 +1,135 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_shader_float16_int8 - device extension+--+-- == VK_KHR_shader_float16_int8+--+-- [__Name String__]+--     @VK_KHR_shader_float16_int8@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     83+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Alexander Galazin+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_shader_float16_int8:%20&body=@alegal-arm%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-03-07+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+--     -   This extension interacts with @VK_KHR_8bit_storage@+--+--     -   This extension interacts with @VK_KHR_16bit_storage@+--+--     -   This extension interacts with @VK_KHR_shader_float_controls@+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GL_EXT_shader_explicit_arithmetic_types.txt GL_EXT_shader_explicit_arithmetic_types>+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Alexander Galazin, Arm+--+--     -   Jan-Harald Fredriksen, Arm+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Graeme Leese, Broadcom+--+--     -   Daniel Rakos, AMD+--+-- == Description+--+-- The @VK_KHR_shader_float16_int8@ extension allows use of 16-bit+-- floating-point types and 8-bit integer types in shaders for arithmetic+-- operations.+--+-- It introduces two new optional features @shaderFloat16@ and @shaderInt8@+-- which directly map to the @Float16@ and the @Int8@ SPIR-V capabilities.+-- The @VK_KHR_shader_float16_int8@ extension also specifies precision+-- requirements for half-precision floating-point SPIR-V operations. This+-- extension does not enable use of 8-bit integer types or 16-bit+-- floating-point types in any+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-iointerfaces shader input and output interfaces>+-- and therefore does not supersede the @VK_KHR_8bit_storage@ or+-- @VK_KHR_16bit_storage@ extensions.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. However, if Vulkan 1.2 is supported and this+-- extension is not, both the @shaderFloat16@ and @shaderInt8@ capabilities+-- are optional. The original type, enum and command names are still+-- available as aliases of the core functionality.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceFloat16Int8FeaturesKHR'+--+--     -   'PhysicalDeviceShaderFloat16Int8FeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME'+--+-- -   'KHR_SHADER_FLOAT16_INT8_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR'+--+-- == Version History+--+-- -   Revision 1, 2018-03-07 (Alexander Galazin)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceFloat16Int8FeaturesKHR',+-- 'PhysicalDeviceShaderFloat16Int8FeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_float16_int8 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_shader_float16_int8  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR                                                      , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR                                                      , PhysicalDeviceShaderFloat16Int8FeaturesKHR
src/Vulkan/Extensions/VK_KHR_shader_float_controls.hs view
@@ -1,4 +1,217 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_shader_float_controls - device extension+--+-- == VK_KHR_shader_float_controls+--+-- [__Name String__]+--     @VK_KHR_shader_float_controls@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     198+--+-- [__Revision__]+--     4+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Alexander Galazin+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_shader_float_controls:%20&body=@alegal-arm%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-09-11+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_float_controls.html SPV_KHR_float_controls>+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Alexander Galazin, Arm+--+--     -   Jan-Harald Fredriksen, Arm+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Graeme Leese, Broadcom+--+--     -   Daniel Rakos, AMD+--+-- == Description+--+-- The @VK_KHR_shader_float_controls@ extension enables efficient use of+-- floating-point computations through the ability to query and override+-- the implementation’s default behavior for rounding modes, denormals,+-- signed zero, and infinity.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceFloatControlsPropertiesKHR'+--+-- == New Enums+--+-- -   'ShaderFloatControlsIndependenceKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME'+--+-- -   'KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core12.Enums.ShaderFloatControlsIndependence.ShaderFloatControlsIndependence':+--+--     -   'SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR'+--+--     -   'SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR'+--+--     -   'SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-shaderfloatcontrols DenormPreserve>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-shaderfloatcontrols DenormFlushToZero>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-shaderfloatcontrols SignedZeroInfNanPreserve>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-shaderfloatcontrols RoundingModeRTE>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-shaderfloatcontrols RoundingModeRTZ>+--+-- == Issues+--+-- 1) Which instructions must flush denorms?+--+-- __RESOLVED__: Only floating-point conversion, floating-point arithmetic,+-- floating-point relational (except @OpIsNaN@, @OpIsInf@), and+-- floating-point GLSL.std.450 extended instructions must flush denormals.+--+-- 2) What is the denorm behavior for intermediate results?+--+-- __RESOLVED__: When a SPIR-V instruction is implemented as a sequence of+-- other instructions: - in the @DenormFlushToZero@ execution mode the+-- intermediate instructions may flush denormals, the final result of the+-- sequence /must/ not be denormal. - in the @DenormPreserve@ execution+-- mode denormals must be preserved throughout the whole sequence.+--+-- 3) Do denorm and rounding mode controls apply to @OpSpecConstantOp@?+--+-- __RESOLVED__: Yes, except when the opcode is @OpQuantizeToF16@.+--+-- 4) The SPIR-V specification says that @OpConvertFToU@ and+-- @OpConvertFToS@ unconditionally round towards zero. Do the rounding mode+-- controls specified through the execution modes apply to them?+--+-- __RESOLVED__: No, these instructions unconditionally round towards zero.+--+-- 5) Do any of the \"Pack\" GLSL.std.450 instructions count as conversion+-- instructions and have the rounding mode apply?+--+-- __RESOLVED__: No, only instructions listed in the section \"3.32.11.+-- Conversion Instructions\" of the SPIR-V specification count as+-- conversion instructions.+--+-- 6) When using inf\/nan-ignore mode, what is expected of @OpIsNan@ and+-- @OpIsInf@?+--+-- __RESOLVED__: These instructions must always accurately detect inf\/nan+-- if it is passed to them.+--+-- == Version 4 API incompatibility+--+-- The original versions of @VK_KHR_shader_float_controls@ shipped with+-- booleans named “separateDenormSettings” and+-- “separateRoundingModeSettings”, which at first glance could have+-- indicated “they can all independently set, or not”. However the spec+-- language as written indicated that the 32-bit value could always be set+-- independently, and only the 16- and 64-bit controls needed to be the+-- same if these values were 'Vulkan.Core10.FundamentalTypes.FALSE'.+--+-- As a result of this slight disparity, and lack of test coverage for this+-- facet of the extension, we ended up with two different behaviors in the+-- wild, where some implementations worked as written, and others worked+-- based on the naming. As these are hard limits in hardware with reasons+-- for exposure as written, it was not possible to standardise on a single+-- way to make this work within the existing API.+--+-- No known users of this part of the extension exist in the wild, and as+-- such the Vulkan WG took the unusual step of retroactively changing the+-- once boolean value into a tri-state enum, breaking source compatibility.+-- This was however done in such a way as to retain ABI compatibility, in+-- case any code using this did exist; with the numerical values 0 and 1+-- retaining their original specified meaning, and a new value signifying+-- the additional “all need to be set together” state. If any applications+-- exist today, compiled binaries will continue to work as written in most+-- cases, but will need changes before the code can be recompiled.+--+-- == Version History+--+-- -   Revision 4, 2019-06-18 (Tobias Hector)+--+--     -   Modified settings restrictions, see+--         <VK_KHR_shader_controls_v4_incompatibility.html VK_KHR_shader_controls_v4_incompatibility>+--+-- -   Revision 3, 2018-09-11 (Alexander Galazin)+--+--     -   Minor restructuring+--+-- -   Revision 2, 2018-04-17 (Alexander Galazin)+--+--     -   Added issues and resolutions+--+-- -   Revision 1, 2018-04-11 (Alexander Galazin)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceFloatControlsPropertiesKHR',+-- 'ShaderFloatControlsIndependenceKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_float_controls Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_shader_float_controls  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR                                                        , pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR                                                        , pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR
src/Vulkan/Extensions/VK_KHR_shader_non_semantic_info.hs view
@@ -1,4 +1,76 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_shader_non_semantic_info - device extension+--+-- == VK_KHR_shader_non_semantic_info+--+-- [__Name String__]+--     @VK_KHR_shader_non_semantic_info@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     294+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Baldur Karlsson+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_shader_non_semantic_info:%20&body=@baldurk%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-10-16+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_non_semantic_info.html SPV_KHR_non_semantic_info>+--+-- [__Contributors__]+--+--     -   Baldur Karlsson, Valve+--+-- == Description+--+-- This extension allows the use of the @SPV_KHR_non_semantic_info@+-- extension in SPIR-V shader modules.+--+-- == New Enum Constants+--+-- -   'KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME'+--+-- -   'KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 1, 2019-10-16 (Baldur Karlsson)+--+--     -   Initial revision+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_non_semantic_info Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_shader_non_semantic_info  ( KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION                                                           , pattern KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION                                                           , KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME
src/Vulkan/Extensions/VK_KHR_shader_subgroup_extended_types.hs view
@@ -1,4 +1,116 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_shader_subgroup_extended_types - device extension+--+-- == VK_KHR_shader_subgroup_extended_types+--+-- [__Name String__]+--     @VK_KHR_shader_subgroup_extended_types@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     176+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Neil Henning+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_shader_subgroup_extended_types:%20&body=@sheredom%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-01-08+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_shader_subgroup_extended_types.txt GLSL_EXT_shader_subgroup_extended_types>+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jan-Harald Fredriksen, Arm+--+--     -   Neil Henning, AMD+--+--     -   Daniel Koch, NVIDIA+--+--     -   Jeff Leger, Qualcomm+--+--     -   Graeme Leese, Broadcom+--+--     -   David Neto, Google+--+--     -   Daniel Rakos, AMD+--+-- == Description+--+-- This extension enables the Non Uniform Group Operations in SPIR-V to+-- support 8-bit integer, 16-bit integer, 64-bit integer, 16-bit+-- floating-point, and vectors of these types.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME'+--+-- -   'KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR'+--+-- == Version History+--+-- -   Revision 1, 2019-01-08 (Neil Henning)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_subgroup_extended_types Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_shader_subgroup_extended_types  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR                                                                 , PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR                                                                 , KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION
src/Vulkan/Extensions/VK_KHR_shader_terminate_invocation.hs view
@@ -1,4 +1,107 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_shader_terminate_invocation - device extension+--+-- == VK_KHR_shader_terminate_invocation+--+-- [__Name String__]+--     @VK_KHR_shader_terminate_invocation@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     216+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_shader_terminate_invocation:%20&body=@critsec%20 >+--+-- [__Last Modified Date__]+--     2020-08-11+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Requires the+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_terminate_invocation.html SPV_KHR_terminate_invocation>+--         SPIR-V extension.+--+-- [__Contributors__]+--+--     -   Alan Baker, Google+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jesse Hall, Google+--+--     -   Ralph Potter, Samsung+--+--     -   Tom Olson, Arm+--+-- == Description+--+-- This extension adds Vulkan support for the+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_terminate_invocation.html SPV_KHR_terminate_invocation>+-- SPIR-V extension. That SPIR-V extension provides a new instruction,+-- @OpTerminateInvocation@, which causes a shader invocation to immediately+-- terminate and sets the coverage of shaded samples to @0@; only+-- previously executed instructions will have observable effects. The+-- @OpTerminateInvocation@ instruction, along with the+-- @OpDemoteToHelperInvocation@ instruction from the+-- <VK_EXT_shader_demote_to_helper_invocation.html VK_EXT_shader_demote_to_helper_invocation>+-- extension, together replace the @OpKill@ instruction, which could behave+-- like either of these instructions. @OpTerminateInvocation@ provides the+-- behavior required by the GLSL @discard@ statement, and should be used+-- when available by GLSL compilers and applications that need the GLSL+-- @discard@ behavior.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderTerminateInvocationFeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME'+--+-- -   'KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR'+--+-- == Version History+--+-- -   Revision 1, 2020-08-11 (Jesse Hall)+--+-- = See Also+--+-- 'PhysicalDeviceShaderTerminateInvocationFeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_terminate_invocation Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_shader_terminate_invocation  ( PhysicalDeviceShaderTerminateInvocationFeaturesKHR(..)                                                              , KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION                                                              , pattern KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION
src/Vulkan/Extensions/VK_KHR_shader_terminate_invocation.hs-boot view
@@ -1,4 +1,107 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_shader_terminate_invocation - device extension+--+-- == VK_KHR_shader_terminate_invocation+--+-- [__Name String__]+--     @VK_KHR_shader_terminate_invocation@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     216+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_shader_terminate_invocation:%20&body=@critsec%20 >+--+-- [__Last Modified Date__]+--     2020-08-11+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Requires the+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_terminate_invocation.html SPV_KHR_terminate_invocation>+--         SPIR-V extension.+--+-- [__Contributors__]+--+--     -   Alan Baker, Google+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Jesse Hall, Google+--+--     -   Ralph Potter, Samsung+--+--     -   Tom Olson, Arm+--+-- == Description+--+-- This extension adds Vulkan support for the+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_terminate_invocation.html SPV_KHR_terminate_invocation>+-- SPIR-V extension. That SPIR-V extension provides a new instruction,+-- @OpTerminateInvocation@, which causes a shader invocation to immediately+-- terminate and sets the coverage of shaded samples to @0@; only+-- previously executed instructions will have observable effects. The+-- @OpTerminateInvocation@ instruction, along with the+-- @OpDemoteToHelperInvocation@ instruction from the+-- <VK_EXT_shader_demote_to_helper_invocation.html VK_EXT_shader_demote_to_helper_invocation>+-- extension, together replace the @OpKill@ instruction, which could behave+-- like either of these instructions. @OpTerminateInvocation@ provides the+-- behavior required by the GLSL @discard@ statement, and should be used+-- when available by GLSL compilers and applications that need the GLSL+-- @discard@ behavior.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderTerminateInvocationFeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME'+--+-- -   'KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR'+--+-- == Version History+--+-- -   Revision 1, 2020-08-11 (Jesse Hall)+--+-- = See Also+--+-- 'PhysicalDeviceShaderTerminateInvocationFeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_terminate_invocation Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_shader_terminate_invocation  (PhysicalDeviceShaderTerminateInvocationFeaturesKHR) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs view
@@ -1,4 +1,221 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_shared_presentable_image - device extension+--+-- == VK_KHR_shared_presentable_image+--+-- [__Name String__]+--     @VK_KHR_shared_presentable_image@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     112+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_get_surface_capabilities2@+--+-- [__Contact__]+--+--     -   Alon Or-bach+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_shared_presentable_image:%20&body=@alonorbach%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-03-20+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Alon Or-bach, Samsung Electronics+--+--     -   Ian Elliott, Google+--+--     -   Jesse Hall, Google+--+--     -   Pablo Ceballos, Google+--+--     -   Chris Forbes, Google+--+--     -   Jeff Juliano, NVIDIA+--+--     -   James Jones, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Tobias Hector, Imagination Technologies+--+--     -   Graham Connor, Imagination Technologies+--+--     -   Michael Worcester, Imagination Technologies+--+--     -   Cass Everitt, Oculus+--+--     -   Johannes Van Waveren, Oculus+--+-- == Description+--+-- This extension extends @VK_KHR_swapchain@ to enable creation of a shared+-- presentable image. This allows the application to use the image while+-- the presention engine is accessing it, in order to reduce the latency+-- between rendering and presentation.+--+-- == New Commands+--+-- -   'getSwapchainStatusKHR'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':+--+--     -   'SharedPresentSurfaceCapabilitiesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME'+--+-- -   'KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':+--+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+--+-- -   Extending 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR':+--+--     -   'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'+--+--     -   'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR'+--+-- == Issues+--+-- 1) Should we allow a Vulkan WSI swapchain to toggle between normal usage+-- and shared presentation usage?+--+-- __RESOLVED__: No. WSI swapchains are typically recreated with new+-- properties instead of having their properties changed. This can also+-- save resources, assuming that fewer images are needed for shared+-- presentation, and assuming that most VR applications do not need to+-- switch between normal and shared usage.+--+-- 2) Should we have a query for determining how the presentation engine+-- refresh is triggered?+--+-- __RESOLVED__: Yes. This is done via which presentation modes a surface+-- supports.+--+-- 3) Should the object representing a shared presentable image be an+-- extension of a 'Vulkan.Extensions.Handles.SwapchainKHR' or a separate+-- object?+--+-- __RESOLVED__: Extension of a swapchain due to overlap in creation+-- properties and to allow common functionality between shared and normal+-- presentable images and swapchains.+--+-- 4) What should we call the extension and the new structures it creates?+--+-- __RESOLVED__: Shared presentable image \/ shared present.+--+-- 5) Should the @minImageCount@ and @presentMode@ values of the+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR' be ignored,+-- or required to be compatible values?+--+-- __RESOLVED__: @minImageCount@ must be set to 1, and @presentMode@ should+-- be set to either+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'+-- or+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'.+--+-- 6) What should the layout of the shared presentable image be?+--+-- __RESOLVED__: After acquiring the shared presentable image, the+-- application must transition it to the+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR' layout+-- prior to it being used. After this initial transition, any image usage+-- that was requested during swapchain creation /can/ be performed on the+-- image without layout transitions being performed.+--+-- 7) Do we need a new API for the trigger to refresh new content?+--+-- __RESOLVED__: 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' to+-- act as API to trigger a refresh, as will allow combination with other+-- compatible extensions to+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR'.+--+-- 8) How should an application detect a+-- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' error on a swapchain+-- using the+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'+-- present mode?+--+-- __RESOLVED__: Introduce 'getSwapchainStatusKHR' to allow applications to+-- query the status of a swapchain using a shared presentation mode.+--+-- 9) What should subsequent calls to+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' for+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'+-- swapchains be defined to do?+--+-- __RESOLVED__: State that implementations may use it as a hint for+-- updated content.+--+-- 10) Can the ownership of a shared presentable image be transferred to a+-- different queue?+--+-- __RESOLVED__: No. It is not possible to transfer ownership of a shared+-- presentable image obtained from a swapchain created using+-- 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE' after it has+-- been presented.+--+-- 11) How should 'Vulkan.Core10.Queue.queueSubmit' behave if a command+-- buffer uses an image from a+-- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' swapchain?+--+-- __RESOLVED__: 'Vulkan.Core10.Queue.queueSubmit' is expected to return+-- the 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' error.+--+-- 12) Can Vulkan provide any guarantee on the order of rendering, to+-- enable beam chasing?+--+-- __RESOLVED__: This could be achieved via use of render passes to ensure+-- strip rendering.+--+-- == Version History+--+-- -   Revision 1, 2017-03-20 (Alon Or-bach)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'SharedPresentSurfaceCapabilitiesKHR', 'getSwapchainStatusKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shared_presentable_image Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_shared_presentable_image  ( getSwapchainStatusKHR                                                           , SharedPresentSurfaceCapabilitiesKHR(..)                                                           , KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION
src/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs-boot view
@@ -1,4 +1,221 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_shared_presentable_image - device extension+--+-- == VK_KHR_shared_presentable_image+--+-- [__Name String__]+--     @VK_KHR_shared_presentable_image@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     112+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_get_surface_capabilities2@+--+-- [__Contact__]+--+--     -   Alon Or-bach+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_shared_presentable_image:%20&body=@alonorbach%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-03-20+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Alon Or-bach, Samsung Electronics+--+--     -   Ian Elliott, Google+--+--     -   Jesse Hall, Google+--+--     -   Pablo Ceballos, Google+--+--     -   Chris Forbes, Google+--+--     -   Jeff Juliano, NVIDIA+--+--     -   James Jones, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Tobias Hector, Imagination Technologies+--+--     -   Graham Connor, Imagination Technologies+--+--     -   Michael Worcester, Imagination Technologies+--+--     -   Cass Everitt, Oculus+--+--     -   Johannes Van Waveren, Oculus+--+-- == Description+--+-- This extension extends @VK_KHR_swapchain@ to enable creation of a shared+-- presentable image. This allows the application to use the image while+-- the presention engine is accessing it, in order to reduce the latency+-- between rendering and presentation.+--+-- == New Commands+--+-- -   'getSwapchainStatusKHR'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':+--+--     -   'SharedPresentSurfaceCapabilitiesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME'+--+-- -   'KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':+--+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+--+-- -   Extending 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR':+--+--     -   'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'+--+--     -   'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR'+--+-- == Issues+--+-- 1) Should we allow a Vulkan WSI swapchain to toggle between normal usage+-- and shared presentation usage?+--+-- __RESOLVED__: No. WSI swapchains are typically recreated with new+-- properties instead of having their properties changed. This can also+-- save resources, assuming that fewer images are needed for shared+-- presentation, and assuming that most VR applications do not need to+-- switch between normal and shared usage.+--+-- 2) Should we have a query for determining how the presentation engine+-- refresh is triggered?+--+-- __RESOLVED__: Yes. This is done via which presentation modes a surface+-- supports.+--+-- 3) Should the object representing a shared presentable image be an+-- extension of a 'Vulkan.Extensions.Handles.SwapchainKHR' or a separate+-- object?+--+-- __RESOLVED__: Extension of a swapchain due to overlap in creation+-- properties and to allow common functionality between shared and normal+-- presentable images and swapchains.+--+-- 4) What should we call the extension and the new structures it creates?+--+-- __RESOLVED__: Shared presentable image \/ shared present.+--+-- 5) Should the @minImageCount@ and @presentMode@ values of the+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR' be ignored,+-- or required to be compatible values?+--+-- __RESOLVED__: @minImageCount@ must be set to 1, and @presentMode@ should+-- be set to either+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'+-- or+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'.+--+-- 6) What should the layout of the shared presentable image be?+--+-- __RESOLVED__: After acquiring the shared presentable image, the+-- application must transition it to the+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR' layout+-- prior to it being used. After this initial transition, any image usage+-- that was requested during swapchain creation /can/ be performed on the+-- image without layout transitions being performed.+--+-- 7) Do we need a new API for the trigger to refresh new content?+--+-- __RESOLVED__: 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' to+-- act as API to trigger a refresh, as will allow combination with other+-- compatible extensions to+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR'.+--+-- 8) How should an application detect a+-- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' error on a swapchain+-- using the+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'+-- present mode?+--+-- __RESOLVED__: Introduce 'getSwapchainStatusKHR' to allow applications to+-- query the status of a swapchain using a shared presentation mode.+--+-- 9) What should subsequent calls to+-- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' for+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'+-- swapchains be defined to do?+--+-- __RESOLVED__: State that implementations may use it as a hint for+-- updated content.+--+-- 10) Can the ownership of a shared presentable image be transferred to a+-- different queue?+--+-- __RESOLVED__: No. It is not possible to transfer ownership of a shared+-- presentable image obtained from a swapchain created using+-- 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE' after it has+-- been presented.+--+-- 11) How should 'Vulkan.Core10.Queue.queueSubmit' behave if a command+-- buffer uses an image from a+-- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' swapchain?+--+-- __RESOLVED__: 'Vulkan.Core10.Queue.queueSubmit' is expected to return+-- the 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' error.+--+-- 12) Can Vulkan provide any guarantee on the order of rendering, to+-- enable beam chasing?+--+-- __RESOLVED__: This could be achieved via use of render passes to ensure+-- strip rendering.+--+-- == Version History+--+-- -   Revision 1, 2017-03-20 (Alon Or-bach)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'SharedPresentSurfaceCapabilitiesKHR', 'getSwapchainStatusKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shared_presentable_image Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_shared_presentable_image  (SharedPresentSurfaceCapabilitiesKHR) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_KHR_spirv_1_4.hs view
@@ -1,4 +1,175 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_spirv_1_4 - device extension+--+-- == VK_KHR_spirv_1_4+--+-- [__Name String__]+--     @VK_KHR_spirv_1_4@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     237+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+--     -   Requires @VK_KHR_shader_float_controls@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_spirv_1_4:%20&body=@critsec%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-04-01+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Requires SPIR-V 1.4.+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [__Contributors__]+--+--     -   Alexander Galazin, Arm+--+--     -   David Neto, Google+--+--     -   Jesse Hall, Google+--+--     -   John Kessenich, Google+--+--     -   Neil Henning, AMD+--+--     -   Tom Olson, Arm+--+-- == Description+--+-- This extension allows the use of SPIR-V 1.4 shader modules. SPIR-V 1.4’s+-- new features primarily make it an easier target for compilers from+-- high-level languages, rather than exposing new hardware functionality.+--+-- SPIR-V 1.4 incorporates features that are also available separately as+-- extensions. SPIR-V 1.4 shader modules do not need to enable those+-- extensions with the @OpExtension@ opcode, since they are integral parts+-- of SPIR-V 1.4.+--+-- SPIR-V 1.4 introduces new floating point execution mode capabilities,+-- also available via @SPV_KHR_float_controls@. Implementations are not+-- required to support all of these new capabilities; support can be+-- queried using+-- 'Vulkan.Extensions.VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsPropertiesKHR'+-- from the @VK_KHR_shader_float_controls@ extension.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Enum Constants+--+-- -   'KHR_SPIRV_1_4_EXTENSION_NAME'+--+-- -   'KHR_SPIRV_1_4_SPEC_VERSION'+--+-- == Issues+--+-- 1. Should we have an extension specific to this SPIR-V version, or add a+-- version-generic query for SPIR-V version? SPIR-V 1.4 doesn’t need any+-- other API changes.+--+-- RESOLVED: Just expose SPIR-V 1.4.+--+-- Most new SPIR-V versions introduce optionally-required capabilities or+-- have implementation-defined limits, and would need more API and+-- specification changes specific to that version to make them available in+-- Vulkan. For example, to support the subgroup capabilities added in+-- SPIR-V 1.3 required introducing+-- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties'+-- to allow querying the supported group operation categories, maximum+-- supported subgroup size, etc. While we could expose the parts of a new+-- SPIR-V version that don’t need accompanying changes generically, we’ll+-- still end up writing extensions specific to each version for the+-- remaining parts. Thus the generic mechanism won’t reduce future+-- spec-writing effort. In addition, making it clear which parts of a+-- future version are supported by the generic mechanism and which can’t be+-- used without specific support would be difficult to get right ahead of+-- time.+--+-- 2. Can different stages of the same pipeline use shaders with different+-- SPIR-V versions?+--+-- RESOLVED: Yes.+--+-- Mixing SPIR-V versions 1.0-1.3 in the same pipeline has not been+-- disallowed, so it would be inconsistent to disallow mixing 1.4 with+-- previous versions.. SPIR-V 1.4 does not introduce anything that should+-- cause new difficulties here.+--+-- 3. Must Vulkan extensions corresponding to SPIR-V extensions that were+-- promoted to core in 1.4 be enabled in order to use that functionality in+-- a SPIR-V 1.4 module?+--+-- RESOLVED: No, with caveats.+--+-- The SPIR-V 1.4 module does not need to declare the SPIR-V extensions,+-- since the functionality is now part of core, so there is no need to+-- enable the Vulkan extension that allows SPIR-V modules to declare the+-- SPIR-V extension. However, when the functionality that is now core in+-- SPIR-V 1.4 is optionally supported, the query for support is provided by+-- a Vulkan extension, and that query can only be used if the extension is+-- enabled.+--+-- This applies to any SPIR-V version; specifically for SPIR-V 1.4 this+-- only applies to the functionality from @SPV_KHR_float_controls@, which+-- was made available in Vulkan by @VK_KHR_shader_float_controls@. Even+-- though the extension was promoted in SPIR-V 1.4, the capabilities are+-- still optional in implementations that support @VK_KHR_spirv_1_4@.+--+-- A SPIR-V 1.4 module doesn’t need to enable @SPV_KHR_float_controls@ in+-- order to use the capabilities, so if the application has /a priori/+-- knowledge that the implementation supports the capabilities, it doesn’t+-- need to enable @VK_KHR_shader_float_controls@. However, if it doesn’t+-- have this knowledge and has to query for support at runtime, it must+-- enable @VK_KHR_shader_float_controls@ in order to use+-- 'Vulkan.Extensions.VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsPropertiesKHR'.+--+-- == Version History+--+-- -   Revision 1, 2019-04-01 (Jesse Hall)+--+--     -   Internal draft versions+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_spirv_1_4 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_spirv_1_4  ( KHR_SPIRV_1_4_SPEC_VERSION                                            , pattern KHR_SPIRV_1_4_SPEC_VERSION                                            , KHR_SPIRV_1_4_EXTENSION_NAME
src/Vulkan/Extensions/VK_KHR_storage_buffer_storage_class.hs view
@@ -1,4 +1,95 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_storage_buffer_storage_class - device extension+--+-- == VK_KHR_storage_buffer_storage_class+--+-- [__Name String__]+--     @VK_KHR_storage_buffer_storage_class@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     132+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Alexander Galazin+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_storage_buffer_storage_class:%20&body=@alegal-arm%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-05+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_storage_buffer_storage_class.html SPV_KHR_storage_buffer_storage_class>+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   Alexander Galazin, ARM+--+--     -   David Neto, Google+--+-- == Description+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   @SPV_KHR_storage_buffer_storage_class@+--+-- This extension provides a new SPIR-V @StorageBuffer@ storage class. A+-- @Block@-decorated object in this class is equivalent to a+-- @BufferBlock@-decorated object in the @Uniform@ storage class.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1.+--+-- == New Enum Constants+--+-- -   'KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME'+--+-- -   'KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION'+--+-- == Version History+--+-- -   Revision 1, 2017-03-23 (Alexander Galazin)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_storage_buffer_storage_class Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_storage_buffer_storage_class  ( KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION                                                               , pattern KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION                                                               , KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
src/Vulkan/Extensions/VK_KHR_surface.hs view
@@ -1,4 +1,376 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_surface - instance extension+--+-- == VK_KHR_surface+--+-- [__Name String__]+--     @VK_KHR_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     1+--+-- [__Revision__]+--     25+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_surface:%20&body=@cubanismo%20 >+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_surface:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-08-25+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Patrick Doane, Blizzard+--+--     -   Ian Elliott, LunarG+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   David Mao, AMD+--+--     -   Norbert Nopper, Freescale+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Chia-I Wu, LunarG+--+--     -   Jason Ekstrand, Intel+--+-- == Description+--+-- The @VK_KHR_surface@ extension is an instance extension. It introduces+-- 'Vulkan.Extensions.Handles.SurfaceKHR' objects, which abstract native+-- platform surface or window objects for use with Vulkan. It also provides+-- a way to determine whether a queue family in a physical device supports+-- presenting to particular surface.+--+-- Separate extensions for each platform provide the mechanisms for+-- creating 'Vulkan.Extensions.Handles.SurfaceKHR' objects, but once+-- created they may be used in this and other platform-independent+-- extensions, in particular the @VK_KHR_swapchain@ extension.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.SurfaceKHR'+--+-- == New Commands+--+-- -   'destroySurfaceKHR'+--+-- -   'getPhysicalDeviceSurfaceCapabilitiesKHR'+--+-- -   'getPhysicalDeviceSurfaceFormatsKHR'+--+-- -   'getPhysicalDeviceSurfacePresentModesKHR'+--+-- -   'getPhysicalDeviceSurfaceSupportKHR'+--+-- == New Structures+--+-- -   'SurfaceCapabilitiesKHR'+--+-- -   'SurfaceFormatKHR'+--+-- == New Enums+--+-- -   'ColorSpaceKHR'+--+-- -   'CompositeAlphaFlagBitsKHR'+--+-- -   'PresentModeKHR'+--+-- -   'SurfaceTransformFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'CompositeAlphaFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SURFACE_EXTENSION_NAME'+--+-- -   'KHR_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_SURFACE_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- == Examples+--+-- Note+--+-- The example code for the @VK_KHR_surface@ and @VK_KHR_swapchain@+-- extensions was removed from the appendix after revision 1.0.29. This WSI+-- example code was ported to the cube demo that is shipped with the+-- official Khronos SDK, and is being kept up-to-date in that location+-- (see:+-- <https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c>).+--+-- == Issues+--+-- 1) Should this extension include a method to query whether a physical+-- device supports presenting to a specific window or native surface on a+-- given platform?+--+-- __RESOLVED__: Yes. Without this, applications would need to create a+-- device instance to determine whether a particular window can be+-- presented to. Knowing that a device supports presentation to a platform+-- in general is not sufficient, as a single machine might support multiple+-- seats, or instances of the platform that each use different underlying+-- physical devices. Additionally, on some platforms, such as the X Window+-- System, different drivers and devices might be used for different+-- windows depending on which section of the desktop they exist on.+--+-- 2) Should the 'getPhysicalDeviceSurfaceCapabilitiesKHR',+-- 'getPhysicalDeviceSurfaceFormatsKHR', and+-- 'getPhysicalDeviceSurfacePresentModesKHR' functions be in this extension+-- and operate on physical devices, rather than being in @VK_KHR_swapchain@+-- (i.e. device extension) and being dependent on+-- 'Vulkan.Core10.Handles.Device'?+--+-- __RESOLVED__: Yes. While it might be useful to depend on+-- 'Vulkan.Core10.Handles.Device' (and therefore on enabled extensions and+-- features) for the queries, Vulkan was released only with the+-- 'Vulkan.Core10.Handles.PhysicalDevice' versions. Many cases can be+-- resolved by a Valid Usage. And\\or by a separate @pNext@ chain version+-- of the query struct specific to a given extension or parameters, via+-- extensible versions of the queries:+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR',+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceFormats2KHR',+-- and+-- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT'.+--+-- 3) Should Vulkan include support Xlib or XCB as the API for accessing+-- the X Window System platform?+--+-- __RESOLVED__: Both. XCB is a more modern and efficient API, but Xlib+-- usage is deeply ingrained in many applications and likely will remain in+-- use for the foreseeable future. Not all drivers necessarily need to+-- support both, but including both as options in the core specification+-- will probably encourage support, which should in turn ease adoption of+-- the Vulkan API in older codebases. Additionally, the performance+-- improvements possible with XCB likely will not have a measurable impact+-- on the performance of Vulkan presentation and other minimal window+-- system interactions defined here.+--+-- 4) Should the GBM platform be included in the list of platform enums?+--+-- __RESOLVED__: Deferred, and will be addressed with a platform-specific+-- extension to be written in the future.+--+-- == Version History+--+-- -   Revision 1, 2015-05-20 (James Jones)+--+--     -   Initial draft, based on LunarG KHR spec, other KHR specs,+--         patches attached to bugs.+--+-- -   Revision 2, 2015-05-22 (Ian Elliott)+--+--     -   Created initial Description section.+--+--     -   Removed query for whether a platform requires the use of a queue+--         for presentation, since it was decided that presentation will+--         always be modeled as being part of the queue.+--+--     -   Fixed typos and other minor mistakes.+--+-- -   Revision 3, 2015-05-26 (Ian Elliott)+--+--     -   Improved the Description section.+--+-- -   Revision 4, 2015-05-27 (James Jones)+--+--     -   Fixed compilation errors in example code.+--+-- -   Revision 5, 2015-06-01 (James Jones)+--+--     -   Added issues 1 and 2 and made related spec updates.+--+-- -   Revision 6, 2015-06-01 (James Jones)+--+--     -   Merged the platform type mappings table previously removed from+--         VK_KHR_swapchain with the platform description table in this+--         spec.+--+--     -   Added issues 3 and 4 documenting choices made when building the+--         initial list of native platforms supported.+--+-- -   Revision 7, 2015-06-11 (Ian Elliott)+--+--     -   Updated table 1 per input from the KHR TSG.+--+--     -   Updated issue 4 (GBM) per discussion with Daniel Stone. He will+--         create a platform-specific extension sometime in the future.+--+-- -   Revision 8, 2015-06-17 (James Jones)+--+--     -   Updated enum-extending values using new convention.+--+--     -   Fixed the value of VK_SURFACE_PLATFORM_INFO_TYPE_SUPPORTED_KHR.+--+-- -   Revision 9, 2015-06-17 (James Jones)+--+--     -   Rebased on Vulkan API version 126.+--+-- -   Revision 10, 2015-06-18 (James Jones)+--+--     -   Marked issues 2 and 3 resolved.+--+-- -   Revision 11, 2015-06-23 (Ian Elliott)+--+--     -   Examples now show use of function pointers for extension+--         functions.+--+--     -   Eliminated extraneous whitespace.+--+-- -   Revision 12, 2015-07-07 (Daniel Rakos)+--+--     -   Added error section describing when each error is expected to be+--         reported.+--+--     -   Replaced the term \"queue node index\" with \"queue family+--         index\" in the spec as that is the agreed term to be used in the+--         latest version of the core header and spec.+--+--     -   Replaced bool32_t with VkBool32.+--+-- -   Revision 13, 2015-08-06 (Daniel Rakos)+--+--     -   Updated spec against latest core API header version.+--+-- -   Revision 14, 2015-08-20 (Ian Elliott)+--+--     -   Renamed this extension and all of its enumerations, types,+--         functions, etc. This makes it compliant with the proposed+--         standard for Vulkan extensions.+--+--     -   Switched from \"revision\" to \"version\", including use of the+--         VK_MAKE_VERSION macro in the header file.+--+--     -   Did miscellaneous cleanup, etc.+--+-- -   Revision 15, 2015-08-20 (Ian Elliott—​porting a 2015-07-29 change+--     from James Jones)+--+--     -   Moved the surface transform enums here from VK_WSI_swapchain so+--         they could be re-used by VK_WSI_display.+--+-- -   Revision 16, 2015-09-01 (James Jones)+--+--     -   Restore single-field revision number.+--+-- -   Revision 17, 2015-09-01 (James Jones)+--+--     -   Fix example code compilation errors.+--+-- -   Revision 18, 2015-09-26 (Jesse Hall)+--+--     -   Replaced VkSurfaceDescriptionKHR with the VkSurfaceKHR object,+--         which is created via layered extensions. Added+--         VkDestroySurfaceKHR.+--+-- -   Revision 19, 2015-09-28 (Jesse Hall)+--+--     -   Renamed from VK_EXT_KHR_swapchain to VK_EXT_KHR_surface.+--+-- -   Revision 20, 2015-09-30 (Jeff Vigil)+--+--     -   Add error result VK_ERROR_SURFACE_LOST_KHR.+--+-- -   Revision 21, 2015-10-15 (Daniel Rakos)+--+--     -   Updated the resolution of issue #2 and include the surface+--         capability queries in this extension.+--+--     -   Renamed SurfaceProperties to SurfaceCapabilities as it better+--         reflects that the values returned are the capabilities of the+--         surface on a particular device.+--+--     -   Other minor cleanup and consistency changes.+--+-- -   Revision 22, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_surface to VK_KHR_surface.+--+-- -   Revision 23, 2015-11-03 (Daniel Rakos)+--+--     -   Added allocation callbacks to vkDestroySurfaceKHR.+--+-- -   Revision 24, 2015-11-10 (Jesse Hall)+--+--     -   Removed VkSurfaceTransformKHR. Use VkSurfaceTransformFlagBitsKHR+--         instead.+--+--     -   Rename VkSurfaceCapabilitiesKHR member maxImageArraySize to+--         maxImageArrayLayers.+--+-- -   Revision 25, 2016-01-14 (James Jones)+--+--     -   Moved VK_ERROR_NATIVE_WINDOW_IN_USE_KHR from the+--         VK_KHR_android_surface to the VK_KHR_surface extension.+--+-- -   2016-08-23 (Ian Elliott)+--+--     -   Update the example code, to not have so many characters per+--         line, and to split out a new example to show how to obtain+--         function pointers.+--+-- -   2016-08-25 (Ian Elliott)+--+--     -   A note was added at the beginning of the example code, stating+--         that it will be removed from future versions of the appendix.+--+-- = See Also+--+-- 'ColorSpaceKHR', 'CompositeAlphaFlagBitsKHR', 'CompositeAlphaFlagsKHR',+-- 'PresentModeKHR', 'SurfaceCapabilitiesKHR', 'SurfaceFormatKHR',+-- 'Vulkan.Extensions.Handles.SurfaceKHR', 'SurfaceTransformFlagBitsKHR',+-- 'destroySurfaceKHR', 'getPhysicalDeviceSurfaceCapabilitiesKHR',+-- 'getPhysicalDeviceSurfaceFormatsKHR',+-- 'getPhysicalDeviceSurfacePresentModesKHR',+-- 'getPhysicalDeviceSurfaceSupportKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_surface  ( destroySurfaceKHR                                          , getPhysicalDeviceSurfaceSupportKHR                                          , getPhysicalDeviceSurfaceCapabilitiesKHR@@ -33,13 +405,14 @@                                                         , COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT                                                         , ..                                                         )+                                         , CompositeAlphaFlagsKHR                                          , CompositeAlphaFlagBitsKHR( COMPOSITE_ALPHA_OPAQUE_BIT_KHR                                                                     , COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR                                                                     , COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR                                                                     , COMPOSITE_ALPHA_INHERIT_BIT_KHR                                                                     , ..                                                                     )-                                         , CompositeAlphaFlagsKHR+                                         , SurfaceTransformFlagsKHR                                          , SurfaceTransformFlagBitsKHR( SURFACE_TRANSFORM_IDENTITY_BIT_KHR                                                                       , SURFACE_TRANSFORM_ROTATE_90_BIT_KHR                                                                       , SURFACE_TRANSFORM_ROTATE_180_BIT_KHR@@ -51,7 +424,6 @@                                                                       , SURFACE_TRANSFORM_INHERIT_BIT_KHR                                                                       , ..                                                                       )-                                         , SurfaceTransformFlagsKHR                                          , KHR_SURFACE_SPEC_VERSION                                          , pattern KHR_SURFACE_SPEC_VERSION                                          , KHR_SURFACE_EXTENSION_NAME@@ -59,6 +431,8 @@                                          , SurfaceKHR(..)                                          ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -70,16 +444,9 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import GHC.Show (showsPrec) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Data.Vector (generateM)@@ -99,8 +466,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)@@ -669,29 +1036,29 @@  instance ToCStruct SurfaceCapabilitiesKHR where   withCStruct x f = allocaBytesAligned 52 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p SurfaceCapabilitiesKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (minImageCount)-    lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (maxImageCount)-    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (currentExtent) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (minImageExtent) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (maxImageExtent) . ($ ())-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (maxImageArrayLayers)-    lift $ poke ((p `plusPtr` 36 :: Ptr SurfaceTransformFlagsKHR)) (supportedTransforms)-    lift $ poke ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR)) (currentTransform)-    lift $ poke ((p `plusPtr` 44 :: Ptr CompositeAlphaFlagsKHR)) (supportedCompositeAlpha)-    lift $ poke ((p `plusPtr` 48 :: Ptr ImageUsageFlags)) (supportedUsageFlags)-    lift $ f+  pokeCStruct p SurfaceCapabilitiesKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (minImageCount)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (maxImageCount)+    poke ((p `plusPtr` 8 :: Ptr Extent2D)) (currentExtent)+    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (minImageExtent)+    poke ((p `plusPtr` 24 :: Ptr Extent2D)) (maxImageExtent)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (maxImageArrayLayers)+    poke ((p `plusPtr` 36 :: Ptr SurfaceTransformFlagsKHR)) (supportedTransforms)+    poke ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR)) (currentTransform)+    poke ((p `plusPtr` 44 :: Ptr CompositeAlphaFlagsKHR)) (supportedCompositeAlpha)+    poke ((p `plusPtr` 48 :: Ptr ImageUsageFlags)) (supportedUsageFlags)+    f   cStructSize = 52   cStructAlignment = 4-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 8 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)+    f  instance FromCStruct SurfaceCapabilitiesKHR where   peekCStruct p = do@@ -708,6 +1075,12 @@     pure $ SurfaceCapabilitiesKHR              minImageCount maxImageCount currentExtent minImageExtent maxImageExtent maxImageArrayLayers supportedTransforms currentTransform supportedCompositeAlpha supportedUsageFlags +instance Storable SurfaceCapabilitiesKHR where+  sizeOf ~_ = 52+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero SurfaceCapabilitiesKHR where   zero = SurfaceCapabilitiesKHR            zero@@ -826,7 +1199,7 @@ -- meaning this mode /may/ result in visible tearing. No internal queuing -- of presentation requests is needed, as the requests are applied -- immediately.-pattern PRESENT_MODE_IMMEDIATE_KHR = PresentModeKHR 0+pattern PRESENT_MODE_IMMEDIATE_KHR                 = PresentModeKHR 0 -- | 'PRESENT_MODE_MAILBOX_KHR' specifies that the presentation engine waits -- for the next vertical blanking period to update the current image. -- Tearing /cannot/ be observed. An internal single-entry queue is used to@@ -836,7 +1209,7 @@ -- for re-use by the application. One request is removed from the queue and -- processed during each vertical blanking period in which the queue is -- non-empty.-pattern PRESENT_MODE_MAILBOX_KHR = PresentModeKHR 1+pattern PRESENT_MODE_MAILBOX_KHR                   = PresentModeKHR 1 -- | 'PRESENT_MODE_FIFO_KHR' specifies that the presentation engine waits for -- the next vertical blanking period to update the current image. Tearing -- /cannot/ be observed. An internal queue is used to hold pending@@ -845,7 +1218,7 @@ -- processed during each vertical blanking period in which the queue is -- non-empty. This is the only value of @presentMode@ that is /required/ to -- be supported.-pattern PRESENT_MODE_FIFO_KHR = PresentModeKHR 2+pattern PRESENT_MODE_FIFO_KHR                      = PresentModeKHR 2 -- | 'PRESENT_MODE_FIFO_RELAXED_KHR' specifies that the presentation engine -- generally waits for the next vertical blanking period to update the -- current image. If a vertical blanking period has already passed since@@ -860,7 +1233,7 @@ -- queue, and one request is removed from the beginning of the queue and -- processed during or after each vertical blanking period in which the -- queue is non-empty.-pattern PRESENT_MODE_FIFO_RELAXED_KHR = PresentModeKHR 3+pattern PRESENT_MODE_FIFO_RELAXED_KHR              = PresentModeKHR 3 -- | 'PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR' specifies that the -- presentation engine and application have concurrent access to a single -- image, which is referred to as a /shared presentable image/. The@@ -881,7 +1254,7 @@ -- presentation request whenever an update is required. However, the -- presentation engine /may/ update the current image at any point, meaning -- this mode /may/ result in visible tearing.-pattern PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = PresentModeKHR 1000111000+pattern PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR     = PresentModeKHR 1000111000 {-# complete PRESENT_MODE_IMMEDIATE_KHR,              PRESENT_MODE_MAILBOX_KHR,              PRESENT_MODE_FIFO_KHR,@@ -889,28 +1262,31 @@              PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR,              PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR :: PresentModeKHR #-} +conNamePresentModeKHR :: String+conNamePresentModeKHR = "PresentModeKHR"++enumPrefixPresentModeKHR :: String+enumPrefixPresentModeKHR = "PRESENT_MODE_"++showTablePresentModeKHR :: [(PresentModeKHR, String)]+showTablePresentModeKHR =+  [ (PRESENT_MODE_IMMEDIATE_KHR                , "IMMEDIATE_KHR")+  , (PRESENT_MODE_MAILBOX_KHR                  , "MAILBOX_KHR")+  , (PRESENT_MODE_FIFO_KHR                     , "FIFO_KHR")+  , (PRESENT_MODE_FIFO_RELAXED_KHR             , "FIFO_RELAXED_KHR")+  , (PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR, "SHARED_CONTINUOUS_REFRESH_KHR")+  , (PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR    , "SHARED_DEMAND_REFRESH_KHR")+  ]+ instance Show PresentModeKHR where-  showsPrec p = \case-    PRESENT_MODE_IMMEDIATE_KHR -> showString "PRESENT_MODE_IMMEDIATE_KHR"-    PRESENT_MODE_MAILBOX_KHR -> showString "PRESENT_MODE_MAILBOX_KHR"-    PRESENT_MODE_FIFO_KHR -> showString "PRESENT_MODE_FIFO_KHR"-    PRESENT_MODE_FIFO_RELAXED_KHR -> showString "PRESENT_MODE_FIFO_RELAXED_KHR"-    PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR -> showString "PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR"-    PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR -> showString "PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR"-    PresentModeKHR x -> showParen (p >= 11) (showString "PresentModeKHR " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixPresentModeKHR+                            showTablePresentModeKHR+                            conNamePresentModeKHR+                            (\(PresentModeKHR x) -> x)+                            (showsPrec 11)  instance Read PresentModeKHR where-  readPrec = parens (choose [("PRESENT_MODE_IMMEDIATE_KHR", pure PRESENT_MODE_IMMEDIATE_KHR)-                            , ("PRESENT_MODE_MAILBOX_KHR", pure PRESENT_MODE_MAILBOX_KHR)-                            , ("PRESENT_MODE_FIFO_KHR", pure PRESENT_MODE_FIFO_KHR)-                            , ("PRESENT_MODE_FIFO_RELAXED_KHR", pure PRESENT_MODE_FIFO_RELAXED_KHR)-                            , ("PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR", pure PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR)-                            , ("PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR", pure PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "PresentModeKHR")-                       v <- step readPrec-                       pure (PresentModeKHR v)))+  readPrec = enumReadPrec enumPrefixPresentModeKHR showTablePresentModeKHR conNamePresentModeKHR PresentModeKHR   -- | VkColorSpaceKHR - supported color space of the presentation engine@@ -1016,59 +1392,59 @@  -- | 'COLOR_SPACE_SRGB_NONLINEAR_KHR' specifies support for the sRGB color -- space.-pattern COLOR_SPACE_SRGB_NONLINEAR_KHR = ColorSpaceKHR 0+pattern COLOR_SPACE_SRGB_NONLINEAR_KHR          = ColorSpaceKHR 0 -- | 'COLOR_SPACE_DISPLAY_NATIVE_AMD' specifies support for the display’s -- native color space. This matches the color space expectations of AMD’s -- FreeSync2 standard, for displays supporting it.-pattern COLOR_SPACE_DISPLAY_NATIVE_AMD = ColorSpaceKHR 1000213000+pattern COLOR_SPACE_DISPLAY_NATIVE_AMD          = ColorSpaceKHR 1000213000 -- | 'COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT' specifies support for the -- extended sRGB color space to be displayed using an sRGB EOTF. pattern COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = ColorSpaceKHR 1000104014 -- | 'COLOR_SPACE_PASS_THROUGH_EXT' specifies that color components are used -- “as is”. This is intended to allow applications to supply data for color -- spaces not described here.-pattern COLOR_SPACE_PASS_THROUGH_EXT = ColorSpaceKHR 1000104013+pattern COLOR_SPACE_PASS_THROUGH_EXT            = ColorSpaceKHR 1000104013 -- | 'COLOR_SPACE_ADOBERGB_NONLINEAR_EXT' specifies support for the AdobeRGB -- color space to be displayed using the Gamma 2.2 EOTF.-pattern COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = ColorSpaceKHR 1000104012+pattern COLOR_SPACE_ADOBERGB_NONLINEAR_EXT      = ColorSpaceKHR 1000104012 -- | 'COLOR_SPACE_ADOBERGB_LINEAR_EXT' specifies support for the AdobeRGB -- color space to be displayed using a linear EOTF.-pattern COLOR_SPACE_ADOBERGB_LINEAR_EXT = ColorSpaceKHR 1000104011+pattern COLOR_SPACE_ADOBERGB_LINEAR_EXT         = ColorSpaceKHR 1000104011 -- | 'COLOR_SPACE_HDR10_HLG_EXT' specifies support for the HDR10 (BT2020 -- color space) to be displayed using the Hybrid Log Gamma (HLG) EOTF.-pattern COLOR_SPACE_HDR10_HLG_EXT = ColorSpaceKHR 1000104010+pattern COLOR_SPACE_HDR10_HLG_EXT               = ColorSpaceKHR 1000104010 -- | 'COLOR_SPACE_DOLBYVISION_EXT' specifies support for the Dolby Vision -- (BT2020 color space), proprietary encoding, to be displayed using the -- SMPTE ST2084 EOTF.-pattern COLOR_SPACE_DOLBYVISION_EXT = ColorSpaceKHR 1000104009+pattern COLOR_SPACE_DOLBYVISION_EXT             = ColorSpaceKHR 1000104009 -- | 'COLOR_SPACE_HDR10_ST2084_EXT' specifies support for the HDR10 (BT2020 -- color) space to be displayed using the SMPTE ST2084 Perceptual Quantizer -- (PQ) EOTF.-pattern COLOR_SPACE_HDR10_ST2084_EXT = ColorSpaceKHR 1000104008+pattern COLOR_SPACE_HDR10_ST2084_EXT            = ColorSpaceKHR 1000104008 -- | 'COLOR_SPACE_BT2020_LINEAR_EXT' specifies support for the BT2020 color -- space to be displayed using a linear EOTF.-pattern COLOR_SPACE_BT2020_LINEAR_EXT = ColorSpaceKHR 1000104007+pattern COLOR_SPACE_BT2020_LINEAR_EXT           = ColorSpaceKHR 1000104007 -- | 'COLOR_SPACE_BT709_NONLINEAR_EXT' specifies support for the BT709 color -- space to be displayed using the SMPTE 170M EOTF.-pattern COLOR_SPACE_BT709_NONLINEAR_EXT = ColorSpaceKHR 1000104006+pattern COLOR_SPACE_BT709_NONLINEAR_EXT         = ColorSpaceKHR 1000104006 -- | 'COLOR_SPACE_BT709_LINEAR_EXT' specifies support for the BT709 color -- space to be displayed using a linear EOTF.-pattern COLOR_SPACE_BT709_LINEAR_EXT = ColorSpaceKHR 1000104005+pattern COLOR_SPACE_BT709_LINEAR_EXT            = ColorSpaceKHR 1000104005 -- | 'COLOR_SPACE_DCI_P3_NONLINEAR_EXT' specifies support for the DCI-P3 -- color space to be displayed using the DCI-P3 EOTF. Note that values in -- such an image are interpreted as XYZ encoded color data by the -- presentation engine.-pattern COLOR_SPACE_DCI_P3_NONLINEAR_EXT = ColorSpaceKHR 1000104004+pattern COLOR_SPACE_DCI_P3_NONLINEAR_EXT        = ColorSpaceKHR 1000104004 -- | 'COLOR_SPACE_DISPLAY_P3_LINEAR_EXT' specifies support for the Display-P3 -- color space to be displayed using a linear EOTF.-pattern COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = ColorSpaceKHR 1000104003+pattern COLOR_SPACE_DISPLAY_P3_LINEAR_EXT       = ColorSpaceKHR 1000104003 -- | 'COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT' specifies support for the -- extended sRGB color space to be displayed using a linear EOTF.-pattern COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = ColorSpaceKHR 1000104002+pattern COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT    = ColorSpaceKHR 1000104002 -- | 'COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT' specifies support for the -- Display-P3 color space to be displayed using an sRGB-like EOTF (defined -- below).-pattern COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = ColorSpaceKHR 1000104001+pattern COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT    = ColorSpaceKHR 1000104001 {-# complete COLOR_SPACE_SRGB_NONLINEAR_KHR,              COLOR_SPACE_DISPLAY_NATIVE_AMD,              COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT,@@ -1086,50 +1462,45 @@              COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,              COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT :: ColorSpaceKHR #-} +conNameColorSpaceKHR :: String+conNameColorSpaceKHR = "ColorSpaceKHR"++enumPrefixColorSpaceKHR :: String+enumPrefixColorSpaceKHR = "COLOR_SPACE_"++showTableColorSpaceKHR :: [(ColorSpaceKHR, String)]+showTableColorSpaceKHR =+  [ (COLOR_SPACE_SRGB_NONLINEAR_KHR         , "SRGB_NONLINEAR_KHR")+  , (COLOR_SPACE_DISPLAY_NATIVE_AMD         , "DISPLAY_NATIVE_AMD")+  , (COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT, "EXTENDED_SRGB_NONLINEAR_EXT")+  , (COLOR_SPACE_PASS_THROUGH_EXT           , "PASS_THROUGH_EXT")+  , (COLOR_SPACE_ADOBERGB_NONLINEAR_EXT     , "ADOBERGB_NONLINEAR_EXT")+  , (COLOR_SPACE_ADOBERGB_LINEAR_EXT        , "ADOBERGB_LINEAR_EXT")+  , (COLOR_SPACE_HDR10_HLG_EXT              , "HDR10_HLG_EXT")+  , (COLOR_SPACE_DOLBYVISION_EXT            , "DOLBYVISION_EXT")+  , (COLOR_SPACE_HDR10_ST2084_EXT           , "HDR10_ST2084_EXT")+  , (COLOR_SPACE_BT2020_LINEAR_EXT          , "BT2020_LINEAR_EXT")+  , (COLOR_SPACE_BT709_NONLINEAR_EXT        , "BT709_NONLINEAR_EXT")+  , (COLOR_SPACE_BT709_LINEAR_EXT           , "BT709_LINEAR_EXT")+  , (COLOR_SPACE_DCI_P3_NONLINEAR_EXT       , "DCI_P3_NONLINEAR_EXT")+  , (COLOR_SPACE_DISPLAY_P3_LINEAR_EXT      , "DISPLAY_P3_LINEAR_EXT")+  , (COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT   , "EXTENDED_SRGB_LINEAR_EXT")+  , (COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT   , "DISPLAY_P3_NONLINEAR_EXT")+  ]+ instance Show ColorSpaceKHR where-  showsPrec p = \case-    COLOR_SPACE_SRGB_NONLINEAR_KHR -> showString "COLOR_SPACE_SRGB_NONLINEAR_KHR"-    COLOR_SPACE_DISPLAY_NATIVE_AMD -> showString "COLOR_SPACE_DISPLAY_NATIVE_AMD"-    COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT -> showString "COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT"-    COLOR_SPACE_PASS_THROUGH_EXT -> showString "COLOR_SPACE_PASS_THROUGH_EXT"-    COLOR_SPACE_ADOBERGB_NONLINEAR_EXT -> showString "COLOR_SPACE_ADOBERGB_NONLINEAR_EXT"-    COLOR_SPACE_ADOBERGB_LINEAR_EXT -> showString "COLOR_SPACE_ADOBERGB_LINEAR_EXT"-    COLOR_SPACE_HDR10_HLG_EXT -> showString "COLOR_SPACE_HDR10_HLG_EXT"-    COLOR_SPACE_DOLBYVISION_EXT -> showString "COLOR_SPACE_DOLBYVISION_EXT"-    COLOR_SPACE_HDR10_ST2084_EXT -> showString "COLOR_SPACE_HDR10_ST2084_EXT"-    COLOR_SPACE_BT2020_LINEAR_EXT -> showString "COLOR_SPACE_BT2020_LINEAR_EXT"-    COLOR_SPACE_BT709_NONLINEAR_EXT -> showString "COLOR_SPACE_BT709_NONLINEAR_EXT"-    COLOR_SPACE_BT709_LINEAR_EXT -> showString "COLOR_SPACE_BT709_LINEAR_EXT"-    COLOR_SPACE_DCI_P3_NONLINEAR_EXT -> showString "COLOR_SPACE_DCI_P3_NONLINEAR_EXT"-    COLOR_SPACE_DISPLAY_P3_LINEAR_EXT -> showString "COLOR_SPACE_DISPLAY_P3_LINEAR_EXT"-    COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT -> showString "COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT"-    COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT -> showString "COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT"-    ColorSpaceKHR x -> showParen (p >= 11) (showString "ColorSpaceKHR " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixColorSpaceKHR+                            showTableColorSpaceKHR+                            conNameColorSpaceKHR+                            (\(ColorSpaceKHR x) -> x)+                            (showsPrec 11)  instance Read ColorSpaceKHR where-  readPrec = parens (choose [("COLOR_SPACE_SRGB_NONLINEAR_KHR", pure COLOR_SPACE_SRGB_NONLINEAR_KHR)-                            , ("COLOR_SPACE_DISPLAY_NATIVE_AMD", pure COLOR_SPACE_DISPLAY_NATIVE_AMD)-                            , ("COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT", pure COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT)-                            , ("COLOR_SPACE_PASS_THROUGH_EXT", pure COLOR_SPACE_PASS_THROUGH_EXT)-                            , ("COLOR_SPACE_ADOBERGB_NONLINEAR_EXT", pure COLOR_SPACE_ADOBERGB_NONLINEAR_EXT)-                            , ("COLOR_SPACE_ADOBERGB_LINEAR_EXT", pure COLOR_SPACE_ADOBERGB_LINEAR_EXT)-                            , ("COLOR_SPACE_HDR10_HLG_EXT", pure COLOR_SPACE_HDR10_HLG_EXT)-                            , ("COLOR_SPACE_DOLBYVISION_EXT", pure COLOR_SPACE_DOLBYVISION_EXT)-                            , ("COLOR_SPACE_HDR10_ST2084_EXT", pure COLOR_SPACE_HDR10_ST2084_EXT)-                            , ("COLOR_SPACE_BT2020_LINEAR_EXT", pure COLOR_SPACE_BT2020_LINEAR_EXT)-                            , ("COLOR_SPACE_BT709_NONLINEAR_EXT", pure COLOR_SPACE_BT709_NONLINEAR_EXT)-                            , ("COLOR_SPACE_BT709_LINEAR_EXT", pure COLOR_SPACE_BT709_LINEAR_EXT)-                            , ("COLOR_SPACE_DCI_P3_NONLINEAR_EXT", pure COLOR_SPACE_DCI_P3_NONLINEAR_EXT)-                            , ("COLOR_SPACE_DISPLAY_P3_LINEAR_EXT", pure COLOR_SPACE_DISPLAY_P3_LINEAR_EXT)-                            , ("COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT", pure COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT)-                            , ("COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT", pure COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT)]-                     +++-                     prec 10 (do-                       expectP (Ident "ColorSpaceKHR")-                       v <- step readPrec-                       pure (ColorSpaceKHR v)))+  readPrec = enumReadPrec enumPrefixColorSpaceKHR showTableColorSpaceKHR conNameColorSpaceKHR ColorSpaceKHR  +type CompositeAlphaFlagsKHR = CompositeAlphaFlagBitsKHR+ -- | VkCompositeAlphaFlagBitsKHR - alpha compositing modes supported on a -- device --@@ -1147,12 +1518,12 @@ -- | 'COMPOSITE_ALPHA_OPAQUE_BIT_KHR': The alpha channel, if it exists, of -- the images is ignored in the compositing process. Instead, the image is -- treated as if it has a constant alpha of 1.0.-pattern COMPOSITE_ALPHA_OPAQUE_BIT_KHR = CompositeAlphaFlagBitsKHR 0x00000001+pattern COMPOSITE_ALPHA_OPAQUE_BIT_KHR          = CompositeAlphaFlagBitsKHR 0x00000001 -- | 'COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR': The alpha channel, if it -- exists, of the images is respected in the compositing process. The -- non-alpha channels of the image are expected to already be multiplied by -- the alpha channel by the application.-pattern COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = CompositeAlphaFlagBitsKHR 0x00000002+pattern COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR  = CompositeAlphaFlagBitsKHR 0x00000002 -- | 'COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR': The alpha channel, if it -- exists, of the images is respected in the compositing process. The -- non-alpha channels of the image are not expected to already be@@ -1166,30 +1537,38 @@ -- alpha blending mode using native window system commands. If the -- application does not set the blending mode using native window system -- commands, then a platform-specific default will be used.-pattern COMPOSITE_ALPHA_INHERIT_BIT_KHR = CompositeAlphaFlagBitsKHR 0x00000008+pattern COMPOSITE_ALPHA_INHERIT_BIT_KHR         = CompositeAlphaFlagBitsKHR 0x00000008 -type CompositeAlphaFlagsKHR = CompositeAlphaFlagBitsKHR+conNameCompositeAlphaFlagBitsKHR :: String+conNameCompositeAlphaFlagBitsKHR = "CompositeAlphaFlagBitsKHR" +enumPrefixCompositeAlphaFlagBitsKHR :: String+enumPrefixCompositeAlphaFlagBitsKHR = "COMPOSITE_ALPHA_"++showTableCompositeAlphaFlagBitsKHR :: [(CompositeAlphaFlagBitsKHR, String)]+showTableCompositeAlphaFlagBitsKHR =+  [ (COMPOSITE_ALPHA_OPAQUE_BIT_KHR         , "OPAQUE_BIT_KHR")+  , (COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR , "PRE_MULTIPLIED_BIT_KHR")+  , (COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR, "POST_MULTIPLIED_BIT_KHR")+  , (COMPOSITE_ALPHA_INHERIT_BIT_KHR        , "INHERIT_BIT_KHR")+  ]+ instance Show CompositeAlphaFlagBitsKHR where-  showsPrec p = \case-    COMPOSITE_ALPHA_OPAQUE_BIT_KHR -> showString "COMPOSITE_ALPHA_OPAQUE_BIT_KHR"-    COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR -> showString "COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"-    COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR -> showString "COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"-    COMPOSITE_ALPHA_INHERIT_BIT_KHR -> showString "COMPOSITE_ALPHA_INHERIT_BIT_KHR"-    CompositeAlphaFlagBitsKHR x -> showParen (p >= 11) (showString "CompositeAlphaFlagBitsKHR 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixCompositeAlphaFlagBitsKHR+                            showTableCompositeAlphaFlagBitsKHR+                            conNameCompositeAlphaFlagBitsKHR+                            (\(CompositeAlphaFlagBitsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read CompositeAlphaFlagBitsKHR where-  readPrec = parens (choose [("COMPOSITE_ALPHA_OPAQUE_BIT_KHR", pure COMPOSITE_ALPHA_OPAQUE_BIT_KHR)-                            , ("COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR", pure COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR)-                            , ("COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR", pure COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR)-                            , ("COMPOSITE_ALPHA_INHERIT_BIT_KHR", pure COMPOSITE_ALPHA_INHERIT_BIT_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "CompositeAlphaFlagBitsKHR")-                       v <- step readPrec-                       pure (CompositeAlphaFlagBitsKHR v)))+  readPrec = enumReadPrec enumPrefixCompositeAlphaFlagBitsKHR+                          showTableCompositeAlphaFlagBitsKHR+                          conNameCompositeAlphaFlagBitsKHR+                          CompositeAlphaFlagBitsKHR  +type SurfaceTransformFlagsKHR = SurfaceTransformFlagBitsKHR+ -- | VkSurfaceTransformFlagBitsKHR - presentation transforms supported on a -- device --@@ -1207,23 +1586,23 @@  -- | 'SURFACE_TRANSFORM_IDENTITY_BIT_KHR' specifies that image content is -- presented without being transformed.-pattern SURFACE_TRANSFORM_IDENTITY_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000001+pattern SURFACE_TRANSFORM_IDENTITY_BIT_KHR                     = SurfaceTransformFlagBitsKHR 0x00000001 -- | 'SURFACE_TRANSFORM_ROTATE_90_BIT_KHR' specifies that image content is -- rotated 90 degrees clockwise.-pattern SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000002+pattern SURFACE_TRANSFORM_ROTATE_90_BIT_KHR                    = SurfaceTransformFlagBitsKHR 0x00000002 -- | 'SURFACE_TRANSFORM_ROTATE_180_BIT_KHR' specifies that image content is -- rotated 180 degrees clockwise.-pattern SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000004+pattern SURFACE_TRANSFORM_ROTATE_180_BIT_KHR                   = SurfaceTransformFlagBitsKHR 0x00000004 -- | 'SURFACE_TRANSFORM_ROTATE_270_BIT_KHR' specifies that image content is -- rotated 270 degrees clockwise.-pattern SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000008+pattern SURFACE_TRANSFORM_ROTATE_270_BIT_KHR                   = SurfaceTransformFlagBitsKHR 0x00000008 -- | 'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR' specifies that image -- content is mirrored horizontally.-pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000010+pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR            = SurfaceTransformFlagBitsKHR 0x00000010 -- | 'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR' specifies that -- image content is mirrored horizontally, then rotated 90 degrees -- clockwise.-pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000020+pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR  = SurfaceTransformFlagBitsKHR 0x00000020 -- | 'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR' specifies that -- image content is mirrored horizontally, then rotated 180 degrees -- clockwise.@@ -1235,38 +1614,39 @@ -- | 'SURFACE_TRANSFORM_INHERIT_BIT_KHR' specifies that the presentation -- transform is not specified, and is instead determined by -- platform-specific considerations and mechanisms outside Vulkan.-pattern SURFACE_TRANSFORM_INHERIT_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000100+pattern SURFACE_TRANSFORM_INHERIT_BIT_KHR                      = SurfaceTransformFlagBitsKHR 0x00000100 -type SurfaceTransformFlagsKHR = SurfaceTransformFlagBitsKHR+conNameSurfaceTransformFlagBitsKHR :: String+conNameSurfaceTransformFlagBitsKHR = "SurfaceTransformFlagBitsKHR" +enumPrefixSurfaceTransformFlagBitsKHR :: String+enumPrefixSurfaceTransformFlagBitsKHR = "SURFACE_TRANSFORM_"++showTableSurfaceTransformFlagBitsKHR :: [(SurfaceTransformFlagBitsKHR, String)]+showTableSurfaceTransformFlagBitsKHR =+  [ (SURFACE_TRANSFORM_IDENTITY_BIT_KHR                    , "IDENTITY_BIT_KHR")+  , (SURFACE_TRANSFORM_ROTATE_90_BIT_KHR                   , "ROTATE_90_BIT_KHR")+  , (SURFACE_TRANSFORM_ROTATE_180_BIT_KHR                  , "ROTATE_180_BIT_KHR")+  , (SURFACE_TRANSFORM_ROTATE_270_BIT_KHR                  , "ROTATE_270_BIT_KHR")+  , (SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR           , "HORIZONTAL_MIRROR_BIT_KHR")+  , (SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR , "HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR")+  , (SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR, "HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR")+  , (SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR, "HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR")+  , (SURFACE_TRANSFORM_INHERIT_BIT_KHR                     , "INHERIT_BIT_KHR")+  ]+ instance Show SurfaceTransformFlagBitsKHR where-  showsPrec p = \case-    SURFACE_TRANSFORM_IDENTITY_BIT_KHR -> showString "SURFACE_TRANSFORM_IDENTITY_BIT_KHR"-    SURFACE_TRANSFORM_ROTATE_90_BIT_KHR -> showString "SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"-    SURFACE_TRANSFORM_ROTATE_180_BIT_KHR -> showString "SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"-    SURFACE_TRANSFORM_ROTATE_270_BIT_KHR -> showString "SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"-    SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR -> showString "SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"-    SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR -> showString "SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"-    SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR -> showString "SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"-    SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR -> showString "SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"-    SURFACE_TRANSFORM_INHERIT_BIT_KHR -> showString "SURFACE_TRANSFORM_INHERIT_BIT_KHR"-    SurfaceTransformFlagBitsKHR x -> showParen (p >= 11) (showString "SurfaceTransformFlagBitsKHR 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixSurfaceTransformFlagBitsKHR+                            showTableSurfaceTransformFlagBitsKHR+                            conNameSurfaceTransformFlagBitsKHR+                            (\(SurfaceTransformFlagBitsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read SurfaceTransformFlagBitsKHR where-  readPrec = parens (choose [("SURFACE_TRANSFORM_IDENTITY_BIT_KHR", pure SURFACE_TRANSFORM_IDENTITY_BIT_KHR)-                            , ("SURFACE_TRANSFORM_ROTATE_90_BIT_KHR", pure SURFACE_TRANSFORM_ROTATE_90_BIT_KHR)-                            , ("SURFACE_TRANSFORM_ROTATE_180_BIT_KHR", pure SURFACE_TRANSFORM_ROTATE_180_BIT_KHR)-                            , ("SURFACE_TRANSFORM_ROTATE_270_BIT_KHR", pure SURFACE_TRANSFORM_ROTATE_270_BIT_KHR)-                            , ("SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR", pure SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR)-                            , ("SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR", pure SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR)-                            , ("SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR", pure SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR)-                            , ("SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR", pure SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR)-                            , ("SURFACE_TRANSFORM_INHERIT_BIT_KHR", pure SURFACE_TRANSFORM_INHERIT_BIT_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "SurfaceTransformFlagBitsKHR")-                       v <- step readPrec-                       pure (SurfaceTransformFlagBitsKHR v)))+  readPrec = enumReadPrec enumPrefixSurfaceTransformFlagBitsKHR+                          showTableSurfaceTransformFlagBitsKHR+                          conNameSurfaceTransformFlagBitsKHR+                          SurfaceTransformFlagBitsKHR   type KHR_SURFACE_SPEC_VERSION = 25
src/Vulkan/Extensions/VK_KHR_surface.hs-boot view
@@ -1,4 +1,376 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_surface - instance extension+--+-- == VK_KHR_surface+--+-- [__Name String__]+--     @VK_KHR_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     1+--+-- [__Revision__]+--     25+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_surface:%20&body=@cubanismo%20 >+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_surface:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-08-25+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Patrick Doane, Blizzard+--+--     -   Ian Elliott, LunarG+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   David Mao, AMD+--+--     -   Norbert Nopper, Freescale+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Chia-I Wu, LunarG+--+--     -   Jason Ekstrand, Intel+--+-- == Description+--+-- The @VK_KHR_surface@ extension is an instance extension. It introduces+-- 'Vulkan.Extensions.Handles.SurfaceKHR' objects, which abstract native+-- platform surface or window objects for use with Vulkan. It also provides+-- a way to determine whether a queue family in a physical device supports+-- presenting to particular surface.+--+-- Separate extensions for each platform provide the mechanisms for+-- creating 'Vulkan.Extensions.Handles.SurfaceKHR' objects, but once+-- created they may be used in this and other platform-independent+-- extensions, in particular the @VK_KHR_swapchain@ extension.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.SurfaceKHR'+--+-- == New Commands+--+-- -   'destroySurfaceKHR'+--+-- -   'getPhysicalDeviceSurfaceCapabilitiesKHR'+--+-- -   'getPhysicalDeviceSurfaceFormatsKHR'+--+-- -   'getPhysicalDeviceSurfacePresentModesKHR'+--+-- -   'getPhysicalDeviceSurfaceSupportKHR'+--+-- == New Structures+--+-- -   'SurfaceCapabilitiesKHR'+--+-- -   'SurfaceFormatKHR'+--+-- == New Enums+--+-- -   'ColorSpaceKHR'+--+-- -   'CompositeAlphaFlagBitsKHR'+--+-- -   'PresentModeKHR'+--+-- -   'SurfaceTransformFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'CompositeAlphaFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SURFACE_EXTENSION_NAME'+--+-- -   'KHR_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_SURFACE_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- == Examples+--+-- Note+--+-- The example code for the @VK_KHR_surface@ and @VK_KHR_swapchain@+-- extensions was removed from the appendix after revision 1.0.29. This WSI+-- example code was ported to the cube demo that is shipped with the+-- official Khronos SDK, and is being kept up-to-date in that location+-- (see:+-- <https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c>).+--+-- == Issues+--+-- 1) Should this extension include a method to query whether a physical+-- device supports presenting to a specific window or native surface on a+-- given platform?+--+-- __RESOLVED__: Yes. Without this, applications would need to create a+-- device instance to determine whether a particular window can be+-- presented to. Knowing that a device supports presentation to a platform+-- in general is not sufficient, as a single machine might support multiple+-- seats, or instances of the platform that each use different underlying+-- physical devices. Additionally, on some platforms, such as the X Window+-- System, different drivers and devices might be used for different+-- windows depending on which section of the desktop they exist on.+--+-- 2) Should the 'getPhysicalDeviceSurfaceCapabilitiesKHR',+-- 'getPhysicalDeviceSurfaceFormatsKHR', and+-- 'getPhysicalDeviceSurfacePresentModesKHR' functions be in this extension+-- and operate on physical devices, rather than being in @VK_KHR_swapchain@+-- (i.e. device extension) and being dependent on+-- 'Vulkan.Core10.Handles.Device'?+--+-- __RESOLVED__: Yes. While it might be useful to depend on+-- 'Vulkan.Core10.Handles.Device' (and therefore on enabled extensions and+-- features) for the queries, Vulkan was released only with the+-- 'Vulkan.Core10.Handles.PhysicalDevice' versions. Many cases can be+-- resolved by a Valid Usage. And\\or by a separate @pNext@ chain version+-- of the query struct specific to a given extension or parameters, via+-- extensible versions of the queries:+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR',+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceFormats2KHR',+-- and+-- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT'.+--+-- 3) Should Vulkan include support Xlib or XCB as the API for accessing+-- the X Window System platform?+--+-- __RESOLVED__: Both. XCB is a more modern and efficient API, but Xlib+-- usage is deeply ingrained in many applications and likely will remain in+-- use for the foreseeable future. Not all drivers necessarily need to+-- support both, but including both as options in the core specification+-- will probably encourage support, which should in turn ease adoption of+-- the Vulkan API in older codebases. Additionally, the performance+-- improvements possible with XCB likely will not have a measurable impact+-- on the performance of Vulkan presentation and other minimal window+-- system interactions defined here.+--+-- 4) Should the GBM platform be included in the list of platform enums?+--+-- __RESOLVED__: Deferred, and will be addressed with a platform-specific+-- extension to be written in the future.+--+-- == Version History+--+-- -   Revision 1, 2015-05-20 (James Jones)+--+--     -   Initial draft, based on LunarG KHR spec, other KHR specs,+--         patches attached to bugs.+--+-- -   Revision 2, 2015-05-22 (Ian Elliott)+--+--     -   Created initial Description section.+--+--     -   Removed query for whether a platform requires the use of a queue+--         for presentation, since it was decided that presentation will+--         always be modeled as being part of the queue.+--+--     -   Fixed typos and other minor mistakes.+--+-- -   Revision 3, 2015-05-26 (Ian Elliott)+--+--     -   Improved the Description section.+--+-- -   Revision 4, 2015-05-27 (James Jones)+--+--     -   Fixed compilation errors in example code.+--+-- -   Revision 5, 2015-06-01 (James Jones)+--+--     -   Added issues 1 and 2 and made related spec updates.+--+-- -   Revision 6, 2015-06-01 (James Jones)+--+--     -   Merged the platform type mappings table previously removed from+--         VK_KHR_swapchain with the platform description table in this+--         spec.+--+--     -   Added issues 3 and 4 documenting choices made when building the+--         initial list of native platforms supported.+--+-- -   Revision 7, 2015-06-11 (Ian Elliott)+--+--     -   Updated table 1 per input from the KHR TSG.+--+--     -   Updated issue 4 (GBM) per discussion with Daniel Stone. He will+--         create a platform-specific extension sometime in the future.+--+-- -   Revision 8, 2015-06-17 (James Jones)+--+--     -   Updated enum-extending values using new convention.+--+--     -   Fixed the value of VK_SURFACE_PLATFORM_INFO_TYPE_SUPPORTED_KHR.+--+-- -   Revision 9, 2015-06-17 (James Jones)+--+--     -   Rebased on Vulkan API version 126.+--+-- -   Revision 10, 2015-06-18 (James Jones)+--+--     -   Marked issues 2 and 3 resolved.+--+-- -   Revision 11, 2015-06-23 (Ian Elliott)+--+--     -   Examples now show use of function pointers for extension+--         functions.+--+--     -   Eliminated extraneous whitespace.+--+-- -   Revision 12, 2015-07-07 (Daniel Rakos)+--+--     -   Added error section describing when each error is expected to be+--         reported.+--+--     -   Replaced the term \"queue node index\" with \"queue family+--         index\" in the spec as that is the agreed term to be used in the+--         latest version of the core header and spec.+--+--     -   Replaced bool32_t with VkBool32.+--+-- -   Revision 13, 2015-08-06 (Daniel Rakos)+--+--     -   Updated spec against latest core API header version.+--+-- -   Revision 14, 2015-08-20 (Ian Elliott)+--+--     -   Renamed this extension and all of its enumerations, types,+--         functions, etc. This makes it compliant with the proposed+--         standard for Vulkan extensions.+--+--     -   Switched from \"revision\" to \"version\", including use of the+--         VK_MAKE_VERSION macro in the header file.+--+--     -   Did miscellaneous cleanup, etc.+--+-- -   Revision 15, 2015-08-20 (Ian Elliott—​porting a 2015-07-29 change+--     from James Jones)+--+--     -   Moved the surface transform enums here from VK_WSI_swapchain so+--         they could be re-used by VK_WSI_display.+--+-- -   Revision 16, 2015-09-01 (James Jones)+--+--     -   Restore single-field revision number.+--+-- -   Revision 17, 2015-09-01 (James Jones)+--+--     -   Fix example code compilation errors.+--+-- -   Revision 18, 2015-09-26 (Jesse Hall)+--+--     -   Replaced VkSurfaceDescriptionKHR with the VkSurfaceKHR object,+--         which is created via layered extensions. Added+--         VkDestroySurfaceKHR.+--+-- -   Revision 19, 2015-09-28 (Jesse Hall)+--+--     -   Renamed from VK_EXT_KHR_swapchain to VK_EXT_KHR_surface.+--+-- -   Revision 20, 2015-09-30 (Jeff Vigil)+--+--     -   Add error result VK_ERROR_SURFACE_LOST_KHR.+--+-- -   Revision 21, 2015-10-15 (Daniel Rakos)+--+--     -   Updated the resolution of issue #2 and include the surface+--         capability queries in this extension.+--+--     -   Renamed SurfaceProperties to SurfaceCapabilities as it better+--         reflects that the values returned are the capabilities of the+--         surface on a particular device.+--+--     -   Other minor cleanup and consistency changes.+--+-- -   Revision 22, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_surface to VK_KHR_surface.+--+-- -   Revision 23, 2015-11-03 (Daniel Rakos)+--+--     -   Added allocation callbacks to vkDestroySurfaceKHR.+--+-- -   Revision 24, 2015-11-10 (Jesse Hall)+--+--     -   Removed VkSurfaceTransformKHR. Use VkSurfaceTransformFlagBitsKHR+--         instead.+--+--     -   Rename VkSurfaceCapabilitiesKHR member maxImageArraySize to+--         maxImageArrayLayers.+--+-- -   Revision 25, 2016-01-14 (James Jones)+--+--     -   Moved VK_ERROR_NATIVE_WINDOW_IN_USE_KHR from the+--         VK_KHR_android_surface to the VK_KHR_surface extension.+--+-- -   2016-08-23 (Ian Elliott)+--+--     -   Update the example code, to not have so many characters per+--         line, and to split out a new example to show how to obtain+--         function pointers.+--+-- -   2016-08-25 (Ian Elliott)+--+--     -   A note was added at the beginning of the example code, stating+--         that it will be removed from future versions of the appendix.+--+-- = See Also+--+-- 'ColorSpaceKHR', 'CompositeAlphaFlagBitsKHR', 'CompositeAlphaFlagsKHR',+-- 'PresentModeKHR', 'SurfaceCapabilitiesKHR', 'SurfaceFormatKHR',+-- 'Vulkan.Extensions.Handles.SurfaceKHR', 'SurfaceTransformFlagBitsKHR',+-- 'destroySurfaceKHR', 'getPhysicalDeviceSurfaceCapabilitiesKHR',+-- 'getPhysicalDeviceSurfaceFormatsKHR',+-- 'getPhysicalDeviceSurfacePresentModesKHR',+-- 'getPhysicalDeviceSurfaceSupportKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_surface  ( SurfaceCapabilitiesKHR                                          , SurfaceFormatKHR                                          , PresentModeKHR
src/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs view
@@ -1,4 +1,112 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_surface_protected_capabilities - instance extension+--+-- == VK_KHR_surface_protected_capabilities+--+-- [__Name String__]+--     @VK_KHR_surface_protected_capabilities@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     240+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+--     -   Requires @VK_KHR_get_surface_capabilities2@+--+-- [__Contact__]+--+--     -   Sandeep Shinde+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_surface_protected_capabilities:%20&body=@sashinde%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-12-18+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Sandeep Shinde, NVIDIA+--+--     -   James Jones, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension extends+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR',+-- providing applications a way to query whether swapchains /can/ be+-- created with the+-- 'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PROTECTED_BIT_KHR'+-- flag set.+--+-- Vulkan 1.1 added (optional) support for protect memory and protected+-- resources including buffers+-- ('Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'),+-- images+-- ('Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT'),+-- and swapchains+-- ('Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PROTECTED_BIT_KHR').+-- However, on implementations which support multiple windowing systems,+-- not all window systems /may/ be able to provide a protected display+-- path.+--+-- This extension provides a way to query if a protected swapchain created+-- for a surface (and thus a specific windowing system) /can/ be displayed+-- on screen. It extends the existing+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'+-- structure with a new 'SurfaceProtectedCapabilitiesKHR' structure from+-- which the application /can/ obtain information about support for+-- protected swapchain creation through+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':+--+--     -   'SurfaceProtectedCapabilitiesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME'+--+-- -   'KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR'+--+-- == Version History+--+-- -   Revision 1, 2018-12-18 (Sandeep Shinde, Daniel Koch)+--+--     -   Internal revisions.+--+-- = See Also+--+-- 'SurfaceProtectedCapabilitiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_protected_capabilities Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_surface_protected_capabilities  ( SurfaceProtectedCapabilitiesKHR(..)                                                                 , KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION                                                                 , pattern KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION
src/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs-boot view
@@ -1,4 +1,112 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_surface_protected_capabilities - instance extension+--+-- == VK_KHR_surface_protected_capabilities+--+-- [__Name String__]+--     @VK_KHR_surface_protected_capabilities@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     240+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+--     -   Requires @VK_KHR_get_surface_capabilities2@+--+-- [__Contact__]+--+--     -   Sandeep Shinde+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_surface_protected_capabilities:%20&body=@sashinde%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-12-18+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Sandeep Shinde, NVIDIA+--+--     -   James Jones, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension extends+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR',+-- providing applications a way to query whether swapchains /can/ be+-- created with the+-- 'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PROTECTED_BIT_KHR'+-- flag set.+--+-- Vulkan 1.1 added (optional) support for protect memory and protected+-- resources including buffers+-- ('Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'),+-- images+-- ('Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT'),+-- and swapchains+-- ('Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PROTECTED_BIT_KHR').+-- However, on implementations which support multiple windowing systems,+-- not all window systems /may/ be able to provide a protected display+-- path.+--+-- This extension provides a way to query if a protected swapchain created+-- for a surface (and thus a specific windowing system) /can/ be displayed+-- on screen. It extends the existing+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'+-- structure with a new 'SurfaceProtectedCapabilitiesKHR' structure from+-- which the application /can/ obtain information about support for+-- protected swapchain creation through+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':+--+--     -   'SurfaceProtectedCapabilitiesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME'+--+-- -   'KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR'+--+-- == Version History+--+-- -   Revision 1, 2018-12-18 (Sandeep Shinde, Daniel Koch)+--+--     -   Internal revisions.+--+-- = See Also+--+-- 'SurfaceProtectedCapabilitiesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_protected_capabilities Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_surface_protected_capabilities  (SurfaceProtectedCapabilitiesKHR) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_KHR_swapchain.hs view
@@ -1,2627 +1,3714 @@ {-# language CPP #-}-module Vulkan.Extensions.VK_KHR_swapchain  ( createSwapchainKHR-                                           , withSwapchainKHR-                                           , destroySwapchainKHR-                                           , getSwapchainImagesKHR-                                           , acquireNextImageKHR-                                           , acquireNextImageKHRSafe-                                           , queuePresentKHR-                                           , getDeviceGroupPresentCapabilitiesKHR-                                           , getDeviceGroupSurfacePresentModesKHR-                                           , acquireNextImage2KHR-                                           , acquireNextImage2KHRSafe-                                           , getPhysicalDevicePresentRectanglesKHR-                                           , SwapchainCreateInfoKHR(..)-                                           , PresentInfoKHR(..)-                                           , DeviceGroupPresentCapabilitiesKHR(..)-                                           , ImageSwapchainCreateInfoKHR(..)-                                           , BindImageMemorySwapchainInfoKHR(..)-                                           , AcquireNextImageInfoKHR(..)-                                           , DeviceGroupPresentInfoKHR(..)-                                           , DeviceGroupSwapchainCreateInfoKHR(..)-                                           , DeviceGroupPresentModeFlagBitsKHR( DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR-                                                                              , DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR-                                                                              , DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR-                                                                              , DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR-                                                                              , ..-                                                                              )-                                           , DeviceGroupPresentModeFlagsKHR-                                           , SwapchainCreateFlagBitsKHR( SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR-                                                                       , SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR-                                                                       , SWAPCHAIN_CREATE_PROTECTED_BIT_KHR-                                                                       , ..-                                                                       )-                                           , SwapchainCreateFlagsKHR-                                           , KHR_SWAPCHAIN_SPEC_VERSION-                                           , pattern KHR_SWAPCHAIN_SPEC_VERSION-                                           , KHR_SWAPCHAIN_EXTENSION_NAME-                                           , pattern KHR_SWAPCHAIN_EXTENSION_NAME-                                           , SurfaceKHR(..)-                                           , SwapchainKHR(..)-                                           , PresentModeKHR(..)-                                           , ColorSpaceKHR(..)-                                           , CompositeAlphaFlagBitsKHR(..)-                                           , CompositeAlphaFlagsKHR-                                           , SurfaceTransformFlagBitsKHR(..)-                                           , SurfaceTransformFlagsKHR-                                           ) where--import Vulkan.CStruct.Utils (FixedArray)-import Control.Exception.Base (bracket)-import Control.Monad (unless)-import Control.Monad.IO.Class (liftIO)-import Data.Typeable (eqT)-import Foreign.Marshal.Alloc (allocaBytesAligned)-import Foreign.Marshal.Alloc (callocBytes)-import Foreign.Marshal.Alloc (free)-import GHC.Base (when)-import GHC.IO (throwIO)-import GHC.Ptr (castPtr)-import GHC.Ptr (nullFunPtr)-import Foreign.Ptr (nullPtr)-import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)-import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step)-import Control.Monad.Trans.Class (lift)-import Control.Monad.Trans.Cont (evalContT)-import Data.Vector (generateM)-import qualified Data.Vector (imapM_)-import qualified Data.Vector (length)-import Control.Monad.IO.Class (MonadIO)-import Data.Bits (Bits)-import Data.Bits (FiniteBits)-import Data.String (IsString)-import Data.Type.Equality ((:~:)(Refl))-import Data.Typeable (Typeable)-import Foreign.Storable (Storable)-import Foreign.Storable (Storable(peek))-import Foreign.Storable (Storable(poke))-import qualified Foreign.Storable (Storable(..))-import GHC.Generics (Generic)-import GHC.IO.Exception (IOErrorType(..))-import GHC.IO.Exception (IOException(..))-import Foreign.Ptr (FunPtr)-import Foreign.Ptr (Ptr)-import GHC.Read (Read(readPrec))-import Data.Word (Word32)-import Data.Word (Word64)-import Text.Read.Lex (Lexeme(Ident))-import Data.Kind (Type)-import Control.Monad.Trans.Cont (ContT(..))-import Data.Vector (Vector)-import Vulkan.CStruct.Utils (advancePtrBytes)-import Vulkan.Core10.FundamentalTypes (bool32ToBool)-import Vulkan.Core10.FundamentalTypes (boolToBool32)-import Vulkan.CStruct.Extends (forgetExtensions)-import Vulkan.CStruct.Utils (lowerArrayPtr)-import Vulkan.NamedType ((:::))-import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)-import Vulkan.Core10.FundamentalTypes (Bool32)-import Vulkan.CStruct.Extends (Chain)-import Vulkan.Extensions.VK_KHR_surface (ColorSpaceKHR)-import Vulkan.Extensions.VK_KHR_surface (CompositeAlphaFlagBitsKHR)-import Vulkan.Core10.Handles (Device)-import Vulkan.Core10.Handles (Device(..))-import Vulkan.Dynamic (DeviceCmds(pVkAcquireNextImage2KHR))-import Vulkan.Dynamic (DeviceCmds(pVkAcquireNextImageKHR))-import Vulkan.Dynamic (DeviceCmds(pVkCreateSwapchainKHR))-import Vulkan.Dynamic (DeviceCmds(pVkDestroySwapchainKHR))-import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceGroupPresentCapabilitiesKHR))-import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceGroupSurfacePresentModesKHR))-import Vulkan.Dynamic (DeviceCmds(pVkGetSwapchainImagesKHR))-import Vulkan.Dynamic (DeviceCmds(pVkQueuePresentKHR))-import Vulkan.Core10.Handles (Device_T)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display_swapchain (DisplayPresentInfoKHR)-import Vulkan.CStruct.Extends (Extends)-import Vulkan.CStruct.Extends (Extendss)-import Vulkan.CStruct.Extends (Extensible(..))-import Vulkan.Core10.FundamentalTypes (Extent2D)-import Vulkan.Core10.Handles (Fence)-import Vulkan.Core10.Handles (Fence(..))-import Vulkan.Core10.FundamentalTypes (Flags)-import Vulkan.Core10.Enums.Format (Format)-import Vulkan.CStruct (FromCStruct)-import Vulkan.CStruct (FromCStruct(..))-import Vulkan.Core10.Handles (Image)-import Vulkan.Core10.Handles (Image(..))-import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_image_format_list (ImageFormatListCreateInfo)-import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)-import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDevicePresentRectanglesKHR))-import Vulkan.Core10.APIConstants (MAX_DEVICE_GROUP_SIZE)-import Vulkan.CStruct.Extends (PeekChain)-import Vulkan.CStruct.Extends (PeekChain(..))-import Vulkan.Core10.Handles (PhysicalDevice)-import Vulkan.Core10.Handles (PhysicalDevice(..))-import Vulkan.Core10.Handles (PhysicalDevice_T)-import Vulkan.CStruct.Extends (PokeChain)-import Vulkan.CStruct.Extends (PokeChain(..))-import {-# SOURCE #-} Vulkan.Extensions.VK_GGP_frame_token (PresentFrameTokenGGP)-import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_incremental_present (PresentRegionsKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (PresentTimesInfoGOOGLE)-import Vulkan.Core10.Handles (Queue)-import Vulkan.Core10.Handles (Queue(..))-import Vulkan.Core10.Handles (Queue_T)-import Vulkan.Core10.FundamentalTypes (Rect2D)-import Vulkan.Core10.Enums.Result (Result)-import Vulkan.Core10.Enums.Result (Result(..))-import Vulkan.Core10.Handles (Semaphore)-import Vulkan.Core10.Handles (Semaphore(..))-import Vulkan.Core10.Enums.SharingMode (SharingMode)-import Vulkan.CStruct.Extends (SomeStruct)-import Vulkan.Core10.Enums.StructureType (StructureType)-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveInfoEXT)-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveWin32InfoEXT)-import Vulkan.Extensions.Handles (SurfaceKHR)-import Vulkan.Extensions.Handles (SurfaceKHR(..))-import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagBitsKHR)-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_control (SwapchainCounterCreateInfoEXT)-import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_display_native_hdr (SwapchainDisplayNativeHdrCreateInfoAMD)-import Vulkan.Extensions.Handles (SwapchainKHR)-import Vulkan.Extensions.Handles (SwapchainKHR(..))-import Vulkan.CStruct (ToCStruct)-import Vulkan.CStruct (ToCStruct(..))-import Vulkan.Exception (VulkanException(..))-import Vulkan.Zero (Zero)-import Vulkan.Zero (Zero(..))-import Vulkan.Core10.APIConstants (pattern MAX_DEVICE_GROUP_SIZE)-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRESENT_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR))-import Vulkan.Core10.Enums.Result (Result(SUCCESS))-import Vulkan.Extensions.VK_KHR_surface (ColorSpaceKHR(..))-import Vulkan.Extensions.VK_KHR_surface (CompositeAlphaFlagBitsKHR(..))-import Vulkan.Extensions.VK_KHR_surface (CompositeAlphaFlagsKHR)-import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR(..))-import Vulkan.Extensions.Handles (SurfaceKHR(..))-import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagBitsKHR(..))-import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagsKHR)-import Vulkan.Extensions.Handles (SwapchainKHR(..))-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCreateSwapchainKHR-  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct SwapchainCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr SwapchainKHR -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct SwapchainCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr SwapchainKHR -> IO Result---- | vkCreateSwapchainKHR - Create a swapchain------ = Description------ If the @oldSwapchain@ parameter of @pCreateInfo@ is a valid swapchain,--- which has exclusive full-screen access, that access is released from--- @oldSwapchain@. If the command succeeds in this case, the newly created--- swapchain will automatically acquire exclusive full-screen access from--- @oldSwapchain@.------ Note------ This implicit transfer is intended to avoid exiting and entering--- full-screen exclusive mode, which may otherwise cause unwanted visual--- updates to the display.------ In some cases, swapchain creation /may/ fail if exclusive full-screen--- mode is requested for application control, but for some--- implementation-specific reason exclusive full-screen access is--- unavailable for the particular combination of parameters provided. If--- this occurs, 'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'--- will be returned.------ Note------ In particular, it will fail if the @imageExtent@ member of @pCreateInfo@--- does not match the extents of the monitor. Other reasons for failure may--- include the app not being set as high-dpi aware, or if the physical--- device and monitor are not compatible in this mode.------ == Valid Usage (Implicit)------ -   #VUID-vkCreateSwapchainKHR-device-parameter# @device@ /must/ be a---     valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkCreateSwapchainKHR-pCreateInfo-parameter# @pCreateInfo@---     /must/ be a valid pointer to a valid 'SwapchainCreateInfoKHR'---     structure------ -   #VUID-vkCreateSwapchainKHR-pAllocator-parameter# If @pAllocator@ is---     not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure------ -   #VUID-vkCreateSwapchainKHR-pSwapchain-parameter# @pSwapchain@ /must/---     be a valid pointer to a 'Vulkan.Extensions.Handles.SwapchainKHR'---     handle------ == Host Synchronization------ -   Host access to @pCreateInfo->surface@ /must/ be externally---     synchronized------ -   Host access to @pCreateInfo->oldSwapchain@ /must/ be externally---     synchronized------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'------     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'------     -   'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'------     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'------ = See Also------ 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Vulkan.Core10.Handles.Device', 'SwapchainCreateInfoKHR',--- 'Vulkan.Extensions.Handles.SwapchainKHR'-createSwapchainKHR :: forall a io-                    . (Extendss SwapchainCreateInfoKHR a, PokeChain a, MonadIO io)-                   => -- | @device@ is the device to create the swapchain for.-                      Device-                   -> -- | @pCreateInfo@ is a pointer to a 'SwapchainCreateInfoKHR' structure-                      -- specifying the parameters of the created swapchain.-                      (SwapchainCreateInfoKHR a)-                   -> -- | @pAllocator@ is the allocator used for host memory allocated for the-                      -- swapchain object when there is no more specific allocator available (see-                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).-                      ("allocator" ::: Maybe AllocationCallbacks)-                   -> io (SwapchainKHR)-createSwapchainKHR device createInfo allocator = liftIO . evalContT $ do-  let vkCreateSwapchainKHRPtr = pVkCreateSwapchainKHR (deviceCmds (device :: Device))-  lift $ unless (vkCreateSwapchainKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateSwapchainKHR is null" Nothing Nothing-  let vkCreateSwapchainKHR' = mkVkCreateSwapchainKHR vkCreateSwapchainKHRPtr-  pCreateInfo <- ContT $ withCStruct (createInfo)-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  pPSwapchain <- ContT $ bracket (callocBytes @SwapchainKHR 8) free-  r <- lift $ vkCreateSwapchainKHR' (deviceHandle (device)) (forgetExtensions pCreateInfo) pAllocator (pPSwapchain)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pSwapchain <- lift $ peek @SwapchainKHR pPSwapchain-  pure $ (pSwapchain)---- | A convenience wrapper to make a compatible pair of calls to--- 'createSwapchainKHR' and 'destroySwapchainKHR'------ To ensure that 'destroySwapchainKHR' is always called: pass--- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.----withSwapchainKHR :: forall a io r . (Extendss SwapchainCreateInfoKHR a, PokeChain a, MonadIO io) => Device -> SwapchainCreateInfoKHR a -> Maybe AllocationCallbacks -> (io (SwapchainKHR) -> ((SwapchainKHR) -> io ()) -> r) -> r-withSwapchainKHR device pCreateInfo pAllocator b =-  b (createSwapchainKHR device pCreateInfo pAllocator)-    (\(o0) -> destroySwapchainKHR device o0 pAllocator)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkDestroySwapchainKHR-  :: FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> SwapchainKHR -> Ptr AllocationCallbacks -> IO ()---- | vkDestroySwapchainKHR - Destroy a swapchain object------ = Description------ The application /must/ not destroy a swapchain until after completion of--- all outstanding operations on images that were acquired from the--- swapchain. @swapchain@ and all associated 'Vulkan.Core10.Handles.Image'--- handles are destroyed, and /must/ not be acquired or used any more by--- the application. The memory of each 'Vulkan.Core10.Handles.Image' will--- only be freed after that image is no longer used by the presentation--- engine. For example, if one image of the swapchain is being displayed in--- a window, the memory for that image /may/ not be freed until the window--- is destroyed, or another swapchain is created for the window. Destroying--- the swapchain does not invalidate the parent--- 'Vulkan.Extensions.Handles.SurfaceKHR', and a new swapchain /can/ be--- created with it.------ When a swapchain associated with a display surface is destroyed, if the--- image most recently presented to the display surface is from the--- swapchain being destroyed, then either any display resources modified by--- presenting images from any swapchain associated with the display surface--- /must/ be reverted by the implementation to their state prior to the--- first present performed on one of these swapchains, or such resources--- /must/ be left in their current state.------ If @swapchain@ has exclusive full-screen access, it is released before--- the swapchain is destroyed.------ == Valid Usage------ -   #VUID-vkDestroySwapchainKHR-swapchain-01282# All uses of presentable---     images acquired from @swapchain@ /must/ have completed execution------ -   #VUID-vkDestroySwapchainKHR-swapchain-01283# If---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were---     provided when @swapchain@ was created, a compatible set of callbacks---     /must/ be provided here------ -   #VUID-vkDestroySwapchainKHR-swapchain-01284# If no---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were---     provided when @swapchain@ was created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ -   #VUID-vkDestroySwapchainKHR-device-parameter# @device@ /must/ be a---     valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkDestroySwapchainKHR-swapchain-parameter# If @swapchain@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @swapchain@ /must/ be---     a valid 'Vulkan.Extensions.Handles.SwapchainKHR' handle------ -   #VUID-vkDestroySwapchainKHR-pAllocator-parameter# If @pAllocator@ is---     not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure------ -   #VUID-vkDestroySwapchainKHR-commonparent# Both of @device@, and---     @swapchain@ that are valid handles of non-ignored parameters /must/---     have been created, allocated, or retrieved from the same---     'Vulkan.Core10.Handles.Instance'------ == Host Synchronization------ -   Host access to @swapchain@ /must/ be externally synchronized------ = See Also------ 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Extensions.Handles.SwapchainKHR'-destroySwapchainKHR :: forall io-                     . (MonadIO io)-                    => -- | @device@ is the 'Vulkan.Core10.Handles.Device' associated with-                       -- @swapchain@.-                       Device-                    -> -- | @swapchain@ is the swapchain to destroy.-                       SwapchainKHR-                    -> -- | @pAllocator@ is the allocator used for host memory allocated for the-                       -- swapchain object when there is no more specific allocator available (see-                       -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).-                       ("allocator" ::: Maybe AllocationCallbacks)-                    -> io ()-destroySwapchainKHR device swapchain allocator = liftIO . evalContT $ do-  let vkDestroySwapchainKHRPtr = pVkDestroySwapchainKHR (deviceCmds (device :: Device))-  lift $ unless (vkDestroySwapchainKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroySwapchainKHR is null" Nothing Nothing-  let vkDestroySwapchainKHR' = mkVkDestroySwapchainKHR vkDestroySwapchainKHRPtr-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  lift $ vkDestroySwapchainKHR' (deviceHandle (device)) (swapchain) pAllocator-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkGetSwapchainImagesKHR-  :: FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr Word32 -> Ptr Image -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Ptr Word32 -> Ptr Image -> IO Result---- | vkGetSwapchainImagesKHR - Obtain the array of presentable images--- associated with a swapchain------ = Description------ If @pSwapchainImages@ is @NULL@, then the number of presentable images--- for @swapchain@ is returned in @pSwapchainImageCount@. Otherwise,--- @pSwapchainImageCount@ /must/ point to a variable set by the user to the--- number of elements in the @pSwapchainImages@ array, and on return the--- variable is overwritten with the number of structures actually written--- to @pSwapchainImages@. If the value of @pSwapchainImageCount@ is less--- than the number of presentable images for @swapchain@, at most--- @pSwapchainImageCount@ structures will be written. If--- @pSwapchainImageCount@ is smaller than the number of presentable images--- for @swapchain@, 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be--- returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate--- that not all the available values were returned.------ == Valid Usage (Implicit)------ -   #VUID-vkGetSwapchainImagesKHR-device-parameter# @device@ /must/ be a---     valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkGetSwapchainImagesKHR-swapchain-parameter# @swapchain@---     /must/ be a valid 'Vulkan.Extensions.Handles.SwapchainKHR' handle------ -   #VUID-vkGetSwapchainImagesKHR-pSwapchainImageCount-parameter#---     @pSwapchainImageCount@ /must/ be a valid pointer to a @uint32_t@---     value------ -   #VUID-vkGetSwapchainImagesKHR-pSwapchainImages-parameter# If the---     value referenced by @pSwapchainImageCount@ is not @0@, and---     @pSwapchainImages@ is not @NULL@, @pSwapchainImages@ /must/ be a---     valid pointer to an array of @pSwapchainImageCount@---     'Vulkan.Core10.Handles.Image' handles------ -   #VUID-vkGetSwapchainImagesKHR-commonparent# Both of @device@, and---     @swapchain@ /must/ have been created, allocated, or retrieved from---     the same 'Vulkan.Core10.Handles.Instance'------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Image',--- 'Vulkan.Extensions.Handles.SwapchainKHR'-getSwapchainImagesKHR :: forall io-                       . (MonadIO io)-                      => -- | @device@ is the device associated with @swapchain@.-                         Device-                      -> -- | @swapchain@ is the swapchain to query.-                         SwapchainKHR-                      -> io (Result, ("swapchainImages" ::: Vector Image))-getSwapchainImagesKHR device swapchain = liftIO . evalContT $ do-  let vkGetSwapchainImagesKHRPtr = pVkGetSwapchainImagesKHR (deviceCmds (device :: Device))-  lift $ unless (vkGetSwapchainImagesKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetSwapchainImagesKHR is null" Nothing Nothing-  let vkGetSwapchainImagesKHR' = mkVkGetSwapchainImagesKHR vkGetSwapchainImagesKHRPtr-  let device' = deviceHandle (device)-  pPSwapchainImageCount <- ContT $ bracket (callocBytes @Word32 4) free-  r <- lift $ vkGetSwapchainImagesKHR' device' (swapchain) (pPSwapchainImageCount) (nullPtr)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pSwapchainImageCount <- lift $ peek @Word32 pPSwapchainImageCount-  pPSwapchainImages <- ContT $ bracket (callocBytes @Image ((fromIntegral (pSwapchainImageCount)) * 8)) free-  r' <- lift $ vkGetSwapchainImagesKHR' device' (swapchain) (pPSwapchainImageCount) (pPSwapchainImages)-  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))-  pSwapchainImageCount' <- lift $ peek @Word32 pPSwapchainImageCount-  pSwapchainImages' <- lift $ generateM (fromIntegral (pSwapchainImageCount')) (\i -> peek @Image ((pPSwapchainImages `advancePtrBytes` (8 * (i)) :: Ptr Image)))-  pure $ ((r'), pSwapchainImages')---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkAcquireNextImageKHRUnsafe-  :: FunPtr (Ptr Device_T -> SwapchainKHR -> Word64 -> Semaphore -> Fence -> Ptr Word32 -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Word64 -> Semaphore -> Fence -> Ptr Word32 -> IO Result--foreign import ccall-  "dynamic" mkVkAcquireNextImageKHRSafe-  :: FunPtr (Ptr Device_T -> SwapchainKHR -> Word64 -> Semaphore -> Fence -> Ptr Word32 -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Word64 -> Semaphore -> Fence -> Ptr Word32 -> IO Result---- | acquireNextImageKHR with selectable safeness-acquireNextImageKHRSafeOrUnsafe :: forall io-                                 . (MonadIO io)-                                => -- No documentation found for TopLevel ""-                                   (FunPtr (Ptr Device_T -> SwapchainKHR -> Word64 -> Semaphore -> Fence -> Ptr Word32 -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Word64 -> Semaphore -> Fence -> Ptr Word32 -> IO Result)-                                -> -- | @device@ is the device associated with @swapchain@.-                                   Device-                                -> -- | @swapchain@ is the non-retired swapchain from which an image is being-                                   -- acquired.-                                   SwapchainKHR-                                -> -- | @timeout@ specifies how long the function waits, in nanoseconds, if no-                                   -- image is available.-                                   ("timeout" ::: Word64)-                                -> -- | @semaphore@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a semaphore-                                   -- to signal.-                                   Semaphore-                                -> -- | @fence@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a fence to-                                   -- signal.-                                   Fence-                                -> io (Result, ("imageIndex" ::: Word32))-acquireNextImageKHRSafeOrUnsafe mkVkAcquireNextImageKHR device swapchain timeout semaphore fence = liftIO . evalContT $ do-  let vkAcquireNextImageKHRPtr = pVkAcquireNextImageKHR (deviceCmds (device :: Device))-  lift $ unless (vkAcquireNextImageKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkAcquireNextImageKHR is null" Nothing Nothing-  let vkAcquireNextImageKHR' = mkVkAcquireNextImageKHR vkAcquireNextImageKHRPtr-  pPImageIndex <- ContT $ bracket (callocBytes @Word32 4) free-  r <- lift $ vkAcquireNextImageKHR' (deviceHandle (device)) (swapchain) (timeout) (semaphore) (fence) (pPImageIndex)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pImageIndex <- lift $ peek @Word32 pPImageIndex-  pure $ (r, pImageIndex)---- | vkAcquireNextImageKHR - Retrieve the index of the next available--- presentable image------ == Valid Usage------ -   #VUID-vkAcquireNextImageKHR-swapchain-01285# @swapchain@ /must/ not---     be in the retired state------ -   #VUID-vkAcquireNextImageKHR-semaphore-01286# If @semaphore@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ be unsignaled------ -   #VUID-vkAcquireNextImageKHR-semaphore-01779# If @semaphore@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ not have any---     uncompleted signal or wait operations pending------ -   #VUID-vkAcquireNextImageKHR-fence-01287# If @fence@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ be unsignaled and---     /must/ not be associated with any other queue command that has not---     yet completed execution on that queue------ -   #VUID-vkAcquireNextImageKHR-semaphore-01780# @semaphore@ and @fence@---     /must/ not both be equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-vkAcquireNextImageKHR-swapchain-01802# If the number of---     currently acquired images is greater than the difference between the---     number of images in @swapchain@ and the value of---     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@minImageCount@---     as returned by a call to---     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'---     with the @surface@ used to create @swapchain@, @timeout@ /must/ not---     be @UINT64_MAX@------ -   #VUID-vkAcquireNextImageKHR-semaphore-03265# @semaphore@ /must/ have---     a 'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of---     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'------ == Valid Usage (Implicit)------ -   #VUID-vkAcquireNextImageKHR-device-parameter# @device@ /must/ be a---     valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkAcquireNextImageKHR-swapchain-parameter# @swapchain@ /must/---     be a valid 'Vulkan.Extensions.Handles.SwapchainKHR' handle------ -   #VUID-vkAcquireNextImageKHR-semaphore-parameter# If @semaphore@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @semaphore@ /must/ be---     a valid 'Vulkan.Core10.Handles.Semaphore' handle------ -   #VUID-vkAcquireNextImageKHR-fence-parameter# If @fence@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @fence@ /must/ be a valid---     'Vulkan.Core10.Handles.Fence' handle------ -   #VUID-vkAcquireNextImageKHR-pImageIndex-parameter# @pImageIndex@---     /must/ be a valid pointer to a @uint32_t@ value------ -   #VUID-vkAcquireNextImageKHR-semaphore-parent# If @semaphore@ is a---     valid handle, it /must/ have been created, allocated, or retrieved---     from @device@------ -   #VUID-vkAcquireNextImageKHR-fence-parent# If @fence@ is a valid---     handle, it /must/ have been created, allocated, or retrieved from---     @device@------ -   #VUID-vkAcquireNextImageKHR-commonparent# Both of @device@, and---     @swapchain@ that are valid handles of non-ignored parameters /must/---     have been created, allocated, or retrieved from the same---     'Vulkan.Core10.Handles.Instance'------ == Host Synchronization------ -   Host access to @swapchain@ /must/ be externally synchronized------ -   Host access to @semaphore@ /must/ be externally synchronized------ -   Host access to @fence@ /must/ be externally synchronized------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------     -   'Vulkan.Core10.Enums.Result.TIMEOUT'------     -   'Vulkan.Core10.Enums.Result.NOT_READY'------     -   'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'------     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'------     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'------ = See Also------ 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Fence',--- 'Vulkan.Core10.Handles.Semaphore',--- 'Vulkan.Extensions.Handles.SwapchainKHR'-acquireNextImageKHR :: forall io-                     . (MonadIO io)-                    => -- | @device@ is the device associated with @swapchain@.-                       Device-                    -> -- | @swapchain@ is the non-retired swapchain from which an image is being-                       -- acquired.-                       SwapchainKHR-                    -> -- | @timeout@ specifies how long the function waits, in nanoseconds, if no-                       -- image is available.-                       ("timeout" ::: Word64)-                    -> -- | @semaphore@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a semaphore-                       -- to signal.-                       Semaphore-                    -> -- | @fence@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a fence to-                       -- signal.-                       Fence-                    -> io (Result, ("imageIndex" ::: Word32))-acquireNextImageKHR = acquireNextImageKHRSafeOrUnsafe mkVkAcquireNextImageKHRUnsafe---- | A variant of 'acquireNextImageKHR' which makes a *safe* FFI call-acquireNextImageKHRSafe :: forall io-                         . (MonadIO io)-                        => -- | @device@ is the device associated with @swapchain@.-                           Device-                        -> -- | @swapchain@ is the non-retired swapchain from which an image is being-                           -- acquired.-                           SwapchainKHR-                        -> -- | @timeout@ specifies how long the function waits, in nanoseconds, if no-                           -- image is available.-                           ("timeout" ::: Word64)-                        -> -- | @semaphore@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a semaphore-                           -- to signal.-                           Semaphore-                        -> -- | @fence@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a fence to-                           -- signal.-                           Fence-                        -> io (Result, ("imageIndex" ::: Word32))-acquireNextImageKHRSafe = acquireNextImageKHRSafeOrUnsafe mkVkAcquireNextImageKHRSafe---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkQueuePresentKHR-  :: FunPtr (Ptr Queue_T -> Ptr (SomeStruct PresentInfoKHR) -> IO Result) -> Ptr Queue_T -> Ptr (SomeStruct PresentInfoKHR) -> IO Result---- | vkQueuePresentKHR - Queue an image for presentation------ = Description------ Note------ There is no requirement for an application to present images in the same--- order that they were acquired - applications can arbitrarily present any--- image that is currently acquired.------ == Valid Usage------ -   #VUID-vkQueuePresentKHR-pSwapchains-01292# Each element of---     @pSwapchains@ member of @pPresentInfo@ /must/ be a swapchain that is---     created for a surface for which presentation is supported from---     @queue@ as determined using a call to---     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR'------ -   #VUID-vkQueuePresentKHR-pSwapchains-01293# If more than one member---     of @pSwapchains@ was created from a display surface, all display---     surfaces referenced that refer to the same display /must/ use the---     same display mode------ -   #VUID-vkQueuePresentKHR-pWaitSemaphores-01294# When a semaphore wait---     operation referring to a binary semaphore defined by the elements of---     the @pWaitSemaphores@ member of @pPresentInfo@ executes on @queue@,---     there /must/ be no other queues waiting on the same semaphore------ -   #VUID-vkQueuePresentKHR-pWaitSemaphores-01295# All elements of the---     @pWaitSemaphores@ member of @pPresentInfo@ /must/ be semaphores that---     are signaled, or have---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>---     previously submitted for execution------ -   #VUID-vkQueuePresentKHR-pWaitSemaphores-03267# All elements of the---     @pWaitSemaphores@ member of @pPresentInfo@ /must/ be created with a---     'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of---     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'------ -   #VUID-vkQueuePresentKHR-pWaitSemaphores-03268# All elements of the---     @pWaitSemaphores@ member of @pPresentInfo@ /must/ reference a---     semaphore signal operation that has been submitted for execution and---     any semaphore signal operations on which it depends (if any) /must/---     have also been submitted for execution------ Any writes to memory backing the images referenced by the--- @pImageIndices@ and @pSwapchains@ members of @pPresentInfo@, that are--- available before 'queuePresentKHR' is executed, are automatically made--- visible to the read access performed by the presentation engine. This--- automatic visibility operation for an image happens-after the semaphore--- signal operation, and happens-before the presentation engine accesses--- the image.------ Queueing an image for presentation defines a set of /queue operations/,--- including waiting on the semaphores and submitting a presentation--- request to the presentation engine. However, the scope of this set of--- queue operations does not include the actual processing of the image by--- the presentation engine.------ Note------ The origin of the native orientation of the surface coordinate system is--- not specified in the Vulkan specification; it depends on the platform.--- For most platforms the origin is by default upper-left, meaning the--- pixel of the presented 'Vulkan.Core10.Handles.Image' at coordinates--- (0,0) would appear at the upper left pixel of the platform surface--- (assuming--- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',--- and the display standing the right way up).------ If 'queuePresentKHR' fails to enqueue the corresponding set of queue--- operations, it /may/ return--- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' or--- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'. If it does, the--- implementation /must/ ensure that the state and contents of any--- resources or synchronization primitives referenced is unaffected by the--- call or its failure.------ If 'queuePresentKHR' fails in such a way that the implementation is--- unable to make that guarantee, the implementation /must/ return--- 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'.------ However, if the presentation request is rejected by the presentation--- engine with an error 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR',--- 'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT',--- or 'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR', the set of queue--- operations are still considered to be enqueued and thus any semaphore--- wait operation specified in 'PresentInfoKHR' will execute when the--- corresponding queue operation is complete.------ If any @swapchain@ member of @pPresentInfo@ was created with--- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT',--- 'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'--- will be returned if that swapchain does not have exclusive full-screen--- access, possibly for implementation-specific reasons outside of the--- application’s control.------ == Valid Usage (Implicit)------ -   #VUID-vkQueuePresentKHR-queue-parameter# @queue@ /must/ be a valid---     'Vulkan.Core10.Handles.Queue' handle------ -   #VUID-vkQueuePresentKHR-pPresentInfo-parameter# @pPresentInfo@---     /must/ be a valid pointer to a valid 'PresentInfoKHR' structure------ == Host Synchronization------ -   Host access to @queue@ /must/ be externally synchronized------ -   Host access to @pPresentInfo->pWaitSemaphores@[] /must/ be---     externally synchronized------ -   Host access to @pPresentInfo->pSwapchains@[] /must/ be externally---     synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | -                                                                                                                          | -                                                                                                                      | Any                                                                                                                   | -                                                                                                                                   |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------     -   'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'------     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'------     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'------ = See Also------ 'PresentInfoKHR', 'Vulkan.Core10.Handles.Queue'-queuePresentKHR :: forall a io-                 . (Extendss PresentInfoKHR a, PokeChain a, MonadIO io)-                => -- | @queue@ is a queue that is capable of presentation to the target-                   -- surface’s platform on the same device as the image’s swapchain.-                   Queue-                -> -- | @pPresentInfo@ is a pointer to a 'PresentInfoKHR' structure specifying-                   -- parameters of the presentation.-                   (PresentInfoKHR a)-                -> io (Result)-queuePresentKHR queue presentInfo = liftIO . evalContT $ do-  let vkQueuePresentKHRPtr = pVkQueuePresentKHR (deviceCmds (queue :: Queue))-  lift $ unless (vkQueuePresentKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkQueuePresentKHR is null" Nothing Nothing-  let vkQueuePresentKHR' = mkVkQueuePresentKHR vkQueuePresentKHRPtr-  pPresentInfo <- ContT $ withCStruct (presentInfo)-  r <- lift $ vkQueuePresentKHR' (queueHandle (queue)) (forgetExtensions pPresentInfo)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pure $ (r)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkGetDeviceGroupPresentCapabilitiesKHR-  :: FunPtr (Ptr Device_T -> Ptr DeviceGroupPresentCapabilitiesKHR -> IO Result) -> Ptr Device_T -> Ptr DeviceGroupPresentCapabilitiesKHR -> IO Result---- | vkGetDeviceGroupPresentCapabilitiesKHR - Query present capabilities from--- other physical devices------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'Vulkan.Core10.Handles.Device', 'DeviceGroupPresentCapabilitiesKHR'-getDeviceGroupPresentCapabilitiesKHR :: forall io-                                      . (MonadIO io)-                                     => -- | @device@ is the logical device.-                                        ---                                        -- #VUID-vkGetDeviceGroupPresentCapabilitiesKHR-device-parameter# @device@-                                        -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle-                                        Device-                                     -> io (DeviceGroupPresentCapabilitiesKHR)-getDeviceGroupPresentCapabilitiesKHR device = liftIO . evalContT $ do-  let vkGetDeviceGroupPresentCapabilitiesKHRPtr = pVkGetDeviceGroupPresentCapabilitiesKHR (deviceCmds (device :: Device))-  lift $ unless (vkGetDeviceGroupPresentCapabilitiesKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceGroupPresentCapabilitiesKHR is null" Nothing Nothing-  let vkGetDeviceGroupPresentCapabilitiesKHR' = mkVkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHRPtr-  pPDeviceGroupPresentCapabilities <- ContT (withZeroCStruct @DeviceGroupPresentCapabilitiesKHR)-  r <- lift $ vkGetDeviceGroupPresentCapabilitiesKHR' (deviceHandle (device)) (pPDeviceGroupPresentCapabilities)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pDeviceGroupPresentCapabilities <- lift $ peekCStruct @DeviceGroupPresentCapabilitiesKHR pPDeviceGroupPresentCapabilities-  pure $ (pDeviceGroupPresentCapabilities)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkGetDeviceGroupSurfacePresentModesKHR-  :: FunPtr (Ptr Device_T -> SurfaceKHR -> Ptr DeviceGroupPresentModeFlagsKHR -> IO Result) -> Ptr Device_T -> SurfaceKHR -> Ptr DeviceGroupPresentModeFlagsKHR -> IO Result---- | vkGetDeviceGroupSurfacePresentModesKHR - Query present capabilities for--- a surface------ = Description------ The modes returned by this command are not invariant, and /may/ change--- in response to the surface being moved, resized, or occluded. These--- modes /must/ be a subset of the modes returned by--- 'getDeviceGroupPresentCapabilitiesKHR'.------ == Valid Usage (Implicit)------ -   #VUID-vkGetDeviceGroupSurfacePresentModesKHR-device-parameter#---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-parameter#---     @surface@ /must/ be a valid 'Vulkan.Extensions.Handles.SurfaceKHR'---     handle------ -   #VUID-vkGetDeviceGroupSurfacePresentModesKHR-pModes-parameter#---     @pModes@ /must/ be a valid pointer to a---     'DeviceGroupPresentModeFlagsKHR' value------ -   #VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent# Both of---     @device@, and @surface@ /must/ have been created, allocated, or---     retrieved from the same 'Vulkan.Core10.Handles.Instance'------ == Host Synchronization------ -   Host access to @surface@ /must/ be externally synchronized------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'------ = See Also------ 'Vulkan.Core10.Handles.Device', 'DeviceGroupPresentModeFlagsKHR',--- 'Vulkan.Extensions.Handles.SurfaceKHR'-getDeviceGroupSurfacePresentModesKHR :: forall io-                                      . (MonadIO io)-                                     => -- | @device@ is the logical device.-                                        Device-                                     -> -- | @surface@ is the surface.-                                        SurfaceKHR-                                     -> io (("modes" ::: DeviceGroupPresentModeFlagsKHR))-getDeviceGroupSurfacePresentModesKHR device surface = liftIO . evalContT $ do-  let vkGetDeviceGroupSurfacePresentModesKHRPtr = pVkGetDeviceGroupSurfacePresentModesKHR (deviceCmds (device :: Device))-  lift $ unless (vkGetDeviceGroupSurfacePresentModesKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceGroupSurfacePresentModesKHR is null" Nothing Nothing-  let vkGetDeviceGroupSurfacePresentModesKHR' = mkVkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHRPtr-  pPModes <- ContT $ bracket (callocBytes @DeviceGroupPresentModeFlagsKHR 4) free-  r <- lift $ vkGetDeviceGroupSurfacePresentModesKHR' (deviceHandle (device)) (surface) (pPModes)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pModes <- lift $ peek @DeviceGroupPresentModeFlagsKHR pPModes-  pure $ (pModes)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkAcquireNextImage2KHRUnsafe-  :: FunPtr (Ptr Device_T -> Ptr AcquireNextImageInfoKHR -> Ptr Word32 -> IO Result) -> Ptr Device_T -> Ptr AcquireNextImageInfoKHR -> Ptr Word32 -> IO Result--foreign import ccall-  "dynamic" mkVkAcquireNextImage2KHRSafe-  :: FunPtr (Ptr Device_T -> Ptr AcquireNextImageInfoKHR -> Ptr Word32 -> IO Result) -> Ptr Device_T -> Ptr AcquireNextImageInfoKHR -> Ptr Word32 -> IO Result---- | acquireNextImage2KHR with selectable safeness-acquireNextImage2KHRSafeOrUnsafe :: forall io-                                  . (MonadIO io)-                                 => -- No documentation found for TopLevel ""-                                    (FunPtr (Ptr Device_T -> Ptr AcquireNextImageInfoKHR -> Ptr Word32 -> IO Result) -> Ptr Device_T -> Ptr AcquireNextImageInfoKHR -> Ptr Word32 -> IO Result)-                                 -> -- | @device@ is the device associated with @swapchain@.-                                    Device-                                 -> -- | @pAcquireInfo@ is a pointer to a 'AcquireNextImageInfoKHR' structure-                                    -- containing parameters of the acquire.-                                    ("acquireInfo" ::: AcquireNextImageInfoKHR)-                                 -> io (Result, ("imageIndex" ::: Word32))-acquireNextImage2KHRSafeOrUnsafe mkVkAcquireNextImage2KHR device acquireInfo = liftIO . evalContT $ do-  let vkAcquireNextImage2KHRPtr = pVkAcquireNextImage2KHR (deviceCmds (device :: Device))-  lift $ unless (vkAcquireNextImage2KHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkAcquireNextImage2KHR is null" Nothing Nothing-  let vkAcquireNextImage2KHR' = mkVkAcquireNextImage2KHR vkAcquireNextImage2KHRPtr-  pAcquireInfo <- ContT $ withCStruct (acquireInfo)-  pPImageIndex <- ContT $ bracket (callocBytes @Word32 4) free-  r <- lift $ vkAcquireNextImage2KHR' (deviceHandle (device)) pAcquireInfo (pPImageIndex)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pImageIndex <- lift $ peek @Word32 pPImageIndex-  pure $ (r, pImageIndex)---- | vkAcquireNextImage2KHR - Retrieve the index of the next available--- presentable image------ == Valid Usage------ -   #VUID-vkAcquireNextImage2KHR-swapchain-01803# If the number of---     currently acquired images is greater than the difference between the---     number of images in the @swapchain@ member of @pAcquireInfo@ and the---     value of---     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@minImageCount@---     as returned by a call to---     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'---     with the @surface@ used to create @swapchain@, the @timeout@ member---     of @pAcquireInfo@ /must/ not be @UINT64_MAX@------ == Valid Usage (Implicit)------ -   #VUID-vkAcquireNextImage2KHR-device-parameter# @device@ /must/ be a---     valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkAcquireNextImage2KHR-pAcquireInfo-parameter# @pAcquireInfo@---     /must/ be a valid pointer to a valid 'AcquireNextImageInfoKHR'---     structure------ -   #VUID-vkAcquireNextImage2KHR-pImageIndex-parameter# @pImageIndex@---     /must/ be a valid pointer to a @uint32_t@ value------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------     -   'Vulkan.Core10.Enums.Result.TIMEOUT'------     -   'Vulkan.Core10.Enums.Result.NOT_READY'------     -   'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'------     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'------     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'------ = See Also------ 'AcquireNextImageInfoKHR', 'Vulkan.Core10.Handles.Device'-acquireNextImage2KHR :: forall io-                      . (MonadIO io)-                     => -- | @device@ is the device associated with @swapchain@.-                        Device-                     -> -- | @pAcquireInfo@ is a pointer to a 'AcquireNextImageInfoKHR' structure-                        -- containing parameters of the acquire.-                        ("acquireInfo" ::: AcquireNextImageInfoKHR)-                     -> io (Result, ("imageIndex" ::: Word32))-acquireNextImage2KHR = acquireNextImage2KHRSafeOrUnsafe mkVkAcquireNextImage2KHRUnsafe---- | A variant of 'acquireNextImage2KHR' which makes a *safe* FFI call-acquireNextImage2KHRSafe :: forall io-                          . (MonadIO io)-                         => -- | @device@ is the device associated with @swapchain@.-                            Device-                         -> -- | @pAcquireInfo@ is a pointer to a 'AcquireNextImageInfoKHR' structure-                            -- containing parameters of the acquire.-                            ("acquireInfo" ::: AcquireNextImageInfoKHR)-                         -> io (Result, ("imageIndex" ::: Word32))-acquireNextImage2KHRSafe = acquireNextImage2KHRSafeOrUnsafe mkVkAcquireNextImage2KHRSafe---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkGetPhysicalDevicePresentRectanglesKHR-  :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr Word32 -> Ptr Rect2D -> IO Result) -> Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr Word32 -> Ptr Rect2D -> IO Result---- | vkGetPhysicalDevicePresentRectanglesKHR - Query present rectangles for a--- surface on a physical device------ = Description------ If @pRects@ is @NULL@, then the number of rectangles used when--- presenting the given @surface@ is returned in @pRectCount@. Otherwise,--- @pRectCount@ /must/ point to a variable set by the user to the number of--- elements in the @pRects@ array, and on return the variable is--- overwritten with the number of structures actually written to @pRects@.--- If the value of @pRectCount@ is less than the number of rectangles, at--- most @pRectCount@ structures will be written. If @pRectCount@ is smaller--- than the number of rectangles used for the given @surface@,--- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of--- 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate that not all the--- available values were returned.------ The values returned by this command are not invariant, and /may/ change--- in response to the surface being moved, resized, or occluded.------ The rectangles returned by this command /must/ not overlap.------ == Valid Usage (Implicit)------ -   #VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter#---     @physicalDevice@ /must/ be a valid---     'Vulkan.Core10.Handles.PhysicalDevice' handle------ -   #VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter#---     @surface@ /must/ be a valid 'Vulkan.Extensions.Handles.SurfaceKHR'---     handle------ -   #VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRectCount-parameter#---     @pRectCount@ /must/ be a valid pointer to a @uint32_t@ value------ -   #VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter# If---     the value referenced by @pRectCount@ is not @0@, and @pRects@ is not---     @NULL@, @pRects@ /must/ be a valid pointer to an array of---     @pRectCount@ 'Vulkan.Core10.FundamentalTypes.Rect2D' structures------ -   #VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent# Both of---     @physicalDevice@, and @surface@ /must/ have been created, allocated,---     or retrieved from the same 'Vulkan.Core10.Handles.Instance'------ == Host Synchronization------ -   Host access to @surface@ /must/ be externally synchronized------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'Vulkan.Core10.Handles.PhysicalDevice',--- 'Vulkan.Core10.FundamentalTypes.Rect2D',--- 'Vulkan.Extensions.Handles.SurfaceKHR'-getPhysicalDevicePresentRectanglesKHR :: forall io-                                       . (MonadIO io)-                                      => -- | @physicalDevice@ is the physical device.-                                         PhysicalDevice-                                      -> -- | @surface@ is the surface.-                                         SurfaceKHR-                                      -> io (Result, ("rects" ::: Vector Rect2D))-getPhysicalDevicePresentRectanglesKHR physicalDevice surface = liftIO . evalContT $ do-  let vkGetPhysicalDevicePresentRectanglesKHRPtr = pVkGetPhysicalDevicePresentRectanglesKHR (instanceCmds (physicalDevice :: PhysicalDevice))-  lift $ unless (vkGetPhysicalDevicePresentRectanglesKHRPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDevicePresentRectanglesKHR is null" Nothing Nothing-  let vkGetPhysicalDevicePresentRectanglesKHR' = mkVkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHRPtr-  let physicalDevice' = physicalDeviceHandle (physicalDevice)-  pPRectCount <- ContT $ bracket (callocBytes @Word32 4) free-  r <- lift $ vkGetPhysicalDevicePresentRectanglesKHR' physicalDevice' (surface) (pPRectCount) (nullPtr)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pRectCount <- lift $ peek @Word32 pPRectCount-  pPRects <- ContT $ bracket (callocBytes @Rect2D ((fromIntegral (pRectCount)) * 16)) free-  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPRects `advancePtrBytes` (i * 16) :: Ptr Rect2D) . ($ ())) [0..(fromIntegral (pRectCount)) - 1]-  r' <- lift $ vkGetPhysicalDevicePresentRectanglesKHR' physicalDevice' (surface) (pPRectCount) ((pPRects))-  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))-  pRectCount' <- lift $ peek @Word32 pPRectCount-  pRects' <- lift $ generateM (fromIntegral (pRectCount')) (\i -> peekCStruct @Rect2D (((pPRects) `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))-  pure $ ((r'), pRects')----- | VkSwapchainCreateInfoKHR - Structure specifying parameters of a newly--- created swapchain object------ = Description------ Note------ On some platforms, it is normal that @maxImageExtent@ /may/ become @(0,--- 0)@, for example when the window is minimized. In such a case, it is not--- possible to create a swapchain due to the Valid Usage requirements.------ -   @imageArrayLayers@ is the number of views in a multiview\/stereo---     surface. For non-stereoscopic-3D applications, this value is 1.------ -   @imageUsage@ is a bitmask of---     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'---     describing the intended usage of the (acquired) swapchain images.------ -   @imageSharingMode@ is the sharing mode used for the image(s) of the---     swapchain.------ -   @queueFamilyIndexCount@ is the number of queue families having---     access to the image(s) of the swapchain when @imageSharingMode@ is---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT'.------ -   @pQueueFamilyIndices@ is a pointer to an array of queue family---     indices having access to the images(s) of the swapchain when---     @imageSharingMode@ is---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT'.------ -   @preTransform@ is a---     'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagBitsKHR' value---     describing the transform, relative to the presentation engine’s---     natural orientation, applied to the image content prior to---     presentation. If it does not match the @currentTransform@ value---     returned by---     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR',---     the presentation engine will transform the image content as part of---     the presentation operation.------ -   @compositeAlpha@ is a---     'Vulkan.Extensions.VK_KHR_surface.CompositeAlphaFlagBitsKHR' value---     indicating the alpha compositing mode to use when this surface is---     composited together with other surfaces on certain window systems.------ -   @presentMode@ is the presentation mode the swapchain will use. A---     swapchain’s present mode determines how incoming present requests---     will be processed and queued internally.------ -   @clipped@ specifies whether the Vulkan implementation is allowed to---     discard rendering operations that affect regions of the surface that---     are not visible.------     -   If set to 'Vulkan.Core10.FundamentalTypes.TRUE', the presentable---         images associated with the swapchain /may/ not own all of their---         pixels. Pixels in the presentable images that correspond to---         regions of the target surface obscured by another window on the---         desktop, or subject to some other clipping mechanism will have---         undefined content when read back. Fragment shaders /may/ not---         execute for these pixels, and thus any side effects they would---         have had will not occur. 'Vulkan.Core10.FundamentalTypes.TRUE'---         value does not guarantee any clipping will occur, but allows---         more optimal presentation methods to be used on some platforms.------     -   If set to 'Vulkan.Core10.FundamentalTypes.FALSE', presentable---         images associated with the swapchain will own all of the pixels---         they contain.------ Note------ Applications /should/ set this value to--- 'Vulkan.Core10.FundamentalTypes.TRUE' if they do not expect to read back--- the content of presentable images before presenting them or after--- reacquiring them, and if their fragment shaders do not have any side--- effects that require them to run for all pixels in the presentable--- image.------ -   @oldSwapchain@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', or the---     existing non-retired swapchain currently associated with @surface@.---     Providing a valid @oldSwapchain@ /may/ aid in the resource reuse,---     and also allows the application to still present any images that are---     already acquired from it.------ Upon calling 'createSwapchainKHR' with an @oldSwapchain@ that is not--- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @oldSwapchain@ is--- retired — even if creation of the new swapchain fails. The new swapchain--- is created in the non-retired state whether or not @oldSwapchain@ is--- 'Vulkan.Core10.APIConstants.NULL_HANDLE'.------ Upon calling 'createSwapchainKHR' with an @oldSwapchain@ that is not--- 'Vulkan.Core10.APIConstants.NULL_HANDLE', any images from @oldSwapchain@--- that are not acquired by the application /may/ be freed by the--- implementation, which /may/ occur even if creation of the new swapchain--- fails. The application /can/ destroy @oldSwapchain@ to free all memory--- associated with @oldSwapchain@.------ Note------ Multiple retired swapchains /can/ be associated with the same--- 'Vulkan.Extensions.Handles.SurfaceKHR' through multiple uses of--- @oldSwapchain@ that outnumber calls to 'destroySwapchainKHR'.------ After @oldSwapchain@ is retired, the application /can/ pass to--- 'queuePresentKHR' any images it had already acquired from--- @oldSwapchain@. E.g., an application may present an image from the old--- swapchain before an image from the new swapchain is ready to be--- presented. As usual, 'queuePresentKHR' /may/ fail if @oldSwapchain@ has--- entered a state that causes--- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' to be returned.------ The application /can/ continue to use a shared presentable image--- obtained from @oldSwapchain@ until a presentable image is acquired from--- the new swapchain, as long as it has not entered a state that causes it--- to return 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'.------ == Valid Usage------ -   #VUID-VkSwapchainCreateInfoKHR-surface-01270# @surface@ /must/ be a---     surface that is supported by the device as determined using---     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR'------ -   #VUID-VkSwapchainCreateInfoKHR-minImageCount-01272# @minImageCount@---     /must/ be less than or equal to the value returned in the---     @maxImageCount@ member of the---     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' structure---     returned by---     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'---     for the surface if the returned @maxImageCount@ is not zero------ -   #VUID-VkSwapchainCreateInfoKHR-presentMode-02839# If @presentMode@---     is not---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'---     nor---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR',---     then @minImageCount@ /must/ be greater than or equal to the value---     returned in the @minImageCount@ member of the---     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' structure---     returned by---     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'---     for the surface------ -   #VUID-VkSwapchainCreateInfoKHR-minImageCount-01383# @minImageCount@---     /must/ be @1@ if @presentMode@ is either---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'---     or---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'------ -   #VUID-VkSwapchainCreateInfoKHR-imageFormat-01273# @imageFormat@ and---     @imageColorSpace@ /must/ match the @format@ and @colorSpace@---     members, respectively, of one of the---     'Vulkan.Extensions.VK_KHR_surface.SurfaceFormatKHR' structures---     returned by---     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceFormatsKHR'---     for the surface------ -   #VUID-VkSwapchainCreateInfoKHR-imageExtent-01274# @imageExtent@---     /must/ be between @minImageExtent@ and @maxImageExtent@, inclusive,---     where @minImageExtent@ and @maxImageExtent@ are members of the---     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' structure---     returned by---     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'---     for the surface------ -   #VUID-VkSwapchainCreateInfoKHR-imageExtent-01689# @imageExtent@---     members @width@ and @height@ /must/ both be non-zero------ -   #VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275#---     @imageArrayLayers@ /must/ be greater than @0@ and less than or equal---     to the @maxImageArrayLayers@ member of the---     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' structure---     returned by---     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'---     for the surface------ -   #VUID-VkSwapchainCreateInfoKHR-presentMode-01427# If @presentMode@---     is 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_IMMEDIATE_KHR',---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR',---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' or---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_RELAXED_KHR',---     @imageUsage@ /must/ be a subset of the supported usage flags present---     in the @supportedUsageFlags@ member of the---     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' structure---     returned by---     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'---     for @surface@------ -   #VUID-VkSwapchainCreateInfoKHR-imageUsage-01384# If @presentMode@ is---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'---     or---     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR',---     @imageUsage@ /must/ be a subset of the supported usage flags present---     in the @sharedPresentSupportedUsageFlags@ member of the---     'Vulkan.Extensions.VK_KHR_shared_presentable_image.SharedPresentSurfaceCapabilitiesKHR'---     structure returned by---     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'---     for @surface@------ -   #VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277# If---     @imageSharingMode@ is---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',---     @pQueueFamilyIndices@ /must/ be a valid pointer to an array of---     @queueFamilyIndexCount@ @uint32_t@ values------ -   #VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278# If---     @imageSharingMode@ is---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',---     @queueFamilyIndexCount@ /must/ be greater than @1@------ -   #VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428# If---     @imageSharingMode@ is---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', each---     element of @pQueueFamilyIndices@ /must/ be unique and /must/ be less---     than @pQueueFamilyPropertyCount@ returned by either---     'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties'---     or---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2'---     for the @physicalDevice@ that was used to create @device@------ -   #VUID-VkSwapchainCreateInfoKHR-preTransform-01279# @preTransform@---     /must/ be one of the bits present in the @supportedTransforms@---     member of the---     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' structure---     returned by---     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'---     for the surface------ -   #VUID-VkSwapchainCreateInfoKHR-compositeAlpha-01280#---     @compositeAlpha@ /must/ be one of the bits present in the---     @supportedCompositeAlpha@ member of the---     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' structure---     returned by---     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'---     for the surface------ -   #VUID-VkSwapchainCreateInfoKHR-presentMode-01281# @presentMode@---     /must/ be one of the---     'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR' values returned by---     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR'---     for the surface------ -   #VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429# If the---     logical device was created with---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo'::@physicalDeviceCount@---     equal to 1, @flags@ /must/ not contain---     'SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR'------ -   #VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933# If @oldSwapchain@---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @oldSwapchain@---     /must/ be a non-retired swapchain associated with native window---     referred to by @surface@------ -   #VUID-VkSwapchainCreateInfoKHR-imageFormat-01778# The---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#swapchain-wsi-image-create-info implied image creation parameters>---     of the swapchain /must/ be supported as reported by---     'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties'------ -   #VUID-VkSwapchainCreateInfoKHR-flags-03168# If @flags@ contains---     'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR' then the @pNext@ chain---     /must/ include a---     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'---     structure with a @viewFormatCount@ greater than zero and---     @pViewFormats@ /must/ have an element equal to @imageFormat@------ -   #VUID-VkSwapchainCreateInfoKHR-pNext-04099# If a---     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'---     structure was included in the @pNext@ chain and---     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@---     is not zero then all of the formats in---     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@---     /must/ be compatible with the @format@ as described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility compatibility table>------ -   #VUID-VkSwapchainCreateInfoKHR-flags-04100# If @flags@ does not---     contain 'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR' and the @pNext@---     chain include a---     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'---     structure then---     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@---     /must/ be @0@ or @1@------ -   #VUID-VkSwapchainCreateInfoKHR-flags-03187# If @flags@ contains---     'SWAPCHAIN_CREATE_PROTECTED_BIT_KHR', then---     'Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR'::@supportsProtected@---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE' in the---     'Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR'---     structure returned by---     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'---     for @surface@------ -   #VUID-VkSwapchainCreateInfoKHR-pNext-02679# If the @pNext@ chain---     includes a---     'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveInfoEXT'---     structure with its @fullScreenExclusive@ member set to---     'Vulkan.Extensions.VK_EXT_full_screen_exclusive.FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT',---     and @surface@ was created using---     'Vulkan.Extensions.VK_KHR_win32_surface.createWin32SurfaceKHR', a---     'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT'---     structure /must/ be included in the @pNext@ chain------ == Valid Usage (Implicit)------ -   #VUID-VkSwapchainCreateInfoKHR-sType-sType# @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR'------ -   #VUID-VkSwapchainCreateInfoKHR-pNext-pNext# Each @pNext@ member of---     any structure (including this one) in the @pNext@ chain /must/ be---     either @NULL@ or a pointer to a valid instance of---     'DeviceGroupSwapchainCreateInfoKHR',---     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',---     'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveInfoEXT',---     'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT',---     'Vulkan.Extensions.VK_EXT_display_control.SwapchainCounterCreateInfoEXT',---     or---     'Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD'------ -   #VUID-VkSwapchainCreateInfoKHR-sType-unique# The @sType@ value of---     each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkSwapchainCreateInfoKHR-flags-parameter# @flags@ /must/ be a---     valid combination of 'SwapchainCreateFlagBitsKHR' values------ -   #VUID-VkSwapchainCreateInfoKHR-surface-parameter# @surface@ /must/---     be a valid 'Vulkan.Extensions.Handles.SurfaceKHR' handle------ -   #VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter# @imageFormat@---     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value------ -   #VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter#---     @imageColorSpace@ /must/ be a valid---     'Vulkan.Extensions.VK_KHR_surface.ColorSpaceKHR' value------ -   #VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter# @imageUsage@---     /must/ be a valid combination of---     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' values------ -   #VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask#---     @imageUsage@ /must/ not be @0@------ -   #VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter#---     @imageSharingMode@ /must/ be a valid---     'Vulkan.Core10.Enums.SharingMode.SharingMode' value------ -   #VUID-VkSwapchainCreateInfoKHR-preTransform-parameter#---     @preTransform@ /must/ be a valid---     'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagBitsKHR' value------ -   #VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter#---     @compositeAlpha@ /must/ be a valid---     'Vulkan.Extensions.VK_KHR_surface.CompositeAlphaFlagBitsKHR' value------ -   #VUID-VkSwapchainCreateInfoKHR-presentMode-parameter# @presentMode@---     /must/ be a valid 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR'---     value------ -   #VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parameter# If---     @oldSwapchain@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',---     @oldSwapchain@ /must/ be a valid---     'Vulkan.Extensions.Handles.SwapchainKHR' handle------ -   #VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parent# If---     @oldSwapchain@ is a valid handle, it /must/ have been created,---     allocated, or retrieved from @surface@------ -   #VUID-VkSwapchainCreateInfoKHR-commonparent# Both of @oldSwapchain@,---     and @surface@ that are valid handles of non-ignored parameters---     /must/ have been created, allocated, or retrieved from the same---     'Vulkan.Core10.Handles.Instance'------ = See Also------ 'Vulkan.Core10.FundamentalTypes.Bool32',--- 'Vulkan.Extensions.VK_KHR_surface.ColorSpaceKHR',--- 'Vulkan.Extensions.VK_KHR_surface.CompositeAlphaFlagBitsKHR',--- 'Vulkan.Core10.FundamentalTypes.Extent2D',--- 'Vulkan.Core10.Enums.Format.Format',--- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',--- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR',--- 'Vulkan.Core10.Enums.SharingMode.SharingMode',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'Vulkan.Extensions.Handles.SurfaceKHR',--- 'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagBitsKHR',--- 'SwapchainCreateFlagsKHR', 'Vulkan.Extensions.Handles.SwapchainKHR',--- 'Vulkan.Extensions.VK_KHR_display_swapchain.createSharedSwapchainsKHR',--- 'createSwapchainKHR'-data SwapchainCreateInfoKHR (es :: [Type]) = SwapchainCreateInfoKHR-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.-    next :: Chain es-  , -- | @flags@ is a bitmask of 'SwapchainCreateFlagBitsKHR' indicating-    -- parameters of the swapchain creation.-    flags :: SwapchainCreateFlagsKHR-  , -- | @surface@ is the surface onto which the swapchain will present images.-    -- If the creation succeeds, the swapchain becomes associated with-    -- @surface@.-    surface :: SurfaceKHR-  , -- | @minImageCount@ is the minimum number of presentable images that the-    -- application needs. The implementation will either create the swapchain-    -- with at least that many images, or it will fail to create the swapchain.-    minImageCount :: Word32-  , -- | @imageFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value specifying-    -- the format the swapchain image(s) will be created with.-    imageFormat :: Format-  , -- | @imageColorSpace@ is a 'Vulkan.Extensions.VK_KHR_surface.ColorSpaceKHR'-    -- value specifying the way the swapchain interprets image data.-    imageColorSpace :: ColorSpaceKHR-  , -- | @imageExtent@ is the size (in pixels) of the swapchain image(s). The-    -- behavior is platform-dependent if the image extent does not match the-    -- surface’s @currentExtent@ as returned by-    -- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'.-    imageExtent :: Extent2D-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageArrayLayers"-    imageArrayLayers :: Word32-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageUsage"-    imageUsage :: ImageUsageFlags-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageSharingMode"-    imageSharingMode :: SharingMode-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "pQueueFamilyIndices"-    queueFamilyIndices :: Vector Word32-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "preTransform"-    preTransform :: SurfaceTransformFlagBitsKHR-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "compositeAlpha"-    compositeAlpha :: CompositeAlphaFlagBitsKHR-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "presentMode"-    presentMode :: PresentModeKHR-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "clipped"-    clipped :: Bool-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "oldSwapchain"-    oldSwapchain :: SwapchainKHR-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (SwapchainCreateInfoKHR (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (SwapchainCreateInfoKHR es)--instance Extensible SwapchainCreateInfoKHR where-  extensibleType = STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR-  setNext x next = x{next = next}-  getNext SwapchainCreateInfoKHR{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends SwapchainCreateInfoKHR e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @SurfaceFullScreenExclusiveWin32InfoEXT = Just f-    | Just Refl <- eqT @e @SurfaceFullScreenExclusiveInfoEXT = Just f-    | Just Refl <- eqT @e @ImageFormatListCreateInfo = Just f-    | Just Refl <- eqT @e @SwapchainDisplayNativeHdrCreateInfoAMD = Just f-    | Just Refl <- eqT @e @DeviceGroupSwapchainCreateInfoKHR = Just f-    | Just Refl <- eqT @e @SwapchainCounterCreateInfoEXT = Just f-    | otherwise = Nothing--instance (Extendss SwapchainCreateInfoKHR es, PokeChain es) => ToCStruct (SwapchainCreateInfoKHR es) where-  withCStruct x f = allocaBytesAligned 104 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p SwapchainCreateInfoKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr SwapchainCreateFlagsKHR)) (flags)-    lift $ poke ((p `plusPtr` 24 :: Ptr SurfaceKHR)) (surface)-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (minImageCount)-    lift $ poke ((p `plusPtr` 36 :: Ptr Format)) (imageFormat)-    lift $ poke ((p `plusPtr` 40 :: Ptr ColorSpaceKHR)) (imageColorSpace)-    ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Extent2D)) (imageExtent) . ($ ())-    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (imageArrayLayers)-    lift $ poke ((p `plusPtr` 56 :: Ptr ImageUsageFlags)) (imageUsage)-    lift $ poke ((p `plusPtr` 60 :: Ptr SharingMode)) (imageSharingMode)-    lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (queueFamilyIndices)) :: Word32))-    pPQueueFamilyIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (queueFamilyIndices)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPQueueFamilyIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (queueFamilyIndices)-    lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr Word32))) (pPQueueFamilyIndices')-    lift $ poke ((p `plusPtr` 80 :: Ptr SurfaceTransformFlagBitsKHR)) (preTransform)-    lift $ poke ((p `plusPtr` 84 :: Ptr CompositeAlphaFlagBitsKHR)) (compositeAlpha)-    lift $ poke ((p `plusPtr` 88 :: Ptr PresentModeKHR)) (presentMode)-    lift $ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (clipped))-    lift $ poke ((p `plusPtr` 96 :: Ptr SwapchainKHR)) (oldSwapchain)-    lift $ f-  cStructSize = 104-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    lift $ poke ((p `plusPtr` 24 :: Ptr SurfaceKHR)) (zero)-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 36 :: Ptr Format)) (zero)-    lift $ poke ((p `plusPtr` 40 :: Ptr ColorSpaceKHR)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Extent2D)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 56 :: Ptr ImageUsageFlags)) (zero)-    lift $ poke ((p `plusPtr` 60 :: Ptr SharingMode)) (zero)-    pPQueueFamilyIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPQueueFamilyIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)-    lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr Word32))) (pPQueueFamilyIndices')-    lift $ poke ((p `plusPtr` 80 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)-    lift $ poke ((p `plusPtr` 84 :: Ptr CompositeAlphaFlagBitsKHR)) (zero)-    lift $ poke ((p `plusPtr` 88 :: Ptr PresentModeKHR)) (zero)-    lift $ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (zero))-    lift $ f--instance (Extendss SwapchainCreateInfoKHR es, PeekChain es) => FromCStruct (SwapchainCreateInfoKHR es) where-  peekCStruct p = do-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))-    next <- peekChain (castPtr pNext)-    flags <- peek @SwapchainCreateFlagsKHR ((p `plusPtr` 16 :: Ptr SwapchainCreateFlagsKHR))-    surface <- peek @SurfaceKHR ((p `plusPtr` 24 :: Ptr SurfaceKHR))-    minImageCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    imageFormat <- peek @Format ((p `plusPtr` 36 :: Ptr Format))-    imageColorSpace <- peek @ColorSpaceKHR ((p `plusPtr` 40 :: Ptr ColorSpaceKHR))-    imageExtent <- peekCStruct @Extent2D ((p `plusPtr` 44 :: Ptr Extent2D))-    imageArrayLayers <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))-    imageUsage <- peek @ImageUsageFlags ((p `plusPtr` 56 :: Ptr ImageUsageFlags))-    imageSharingMode <- peek @SharingMode ((p `plusPtr` 60 :: Ptr SharingMode))-    queueFamilyIndexCount <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))-    pQueueFamilyIndices <- peek @(Ptr Word32) ((p `plusPtr` 72 :: Ptr (Ptr Word32)))-    pQueueFamilyIndices' <- generateM (fromIntegral queueFamilyIndexCount) (\i -> peek @Word32 ((pQueueFamilyIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))-    preTransform <- peek @SurfaceTransformFlagBitsKHR ((p `plusPtr` 80 :: Ptr SurfaceTransformFlagBitsKHR))-    compositeAlpha <- peek @CompositeAlphaFlagBitsKHR ((p `plusPtr` 84 :: Ptr CompositeAlphaFlagBitsKHR))-    presentMode <- peek @PresentModeKHR ((p `plusPtr` 88 :: Ptr PresentModeKHR))-    clipped <- peek @Bool32 ((p `plusPtr` 92 :: Ptr Bool32))-    oldSwapchain <- peek @SwapchainKHR ((p `plusPtr` 96 :: Ptr SwapchainKHR))-    pure $ SwapchainCreateInfoKHR-             next flags surface minImageCount imageFormat imageColorSpace imageExtent imageArrayLayers imageUsage imageSharingMode pQueueFamilyIndices' preTransform compositeAlpha presentMode (bool32ToBool clipped) oldSwapchain--instance es ~ '[] => Zero (SwapchainCreateInfoKHR es) where-  zero = SwapchainCreateInfoKHR-           ()-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           mempty-           zero-           zero-           zero-           zero-           zero----- | VkPresentInfoKHR - Structure describing parameters of a queue--- presentation------ = Description------ Before an application /can/ present an image, the image’s layout /must/--- be transitioned to the--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR' layout,--- or for a shared presentable image the--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'--- layout.------ Note------ When transitioning the image to--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR' or--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR', there is--- no need to delay subsequent processing, or perform any visibility--- operations (as 'queuePresentKHR' performs automatic visibility--- operations). To achieve this, the @dstAccessMask@ member of the--- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' /should/ be set to @0@,--- and the @dstStageMask@ parameter /should/ be set to--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT'.------ == Valid Usage------ -   #VUID-VkPresentInfoKHR-pImageIndices-01430# Each element of---     @pImageIndices@ /must/ be the index of a presentable image acquired---     from the swapchain specified by the corresponding element of the---     @pSwapchains@ array, and the presented image subresource /must/ be---     in the---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR' or---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'---     layout at the time the operation is executed on a---     'Vulkan.Core10.Handles.Device'------ == Valid Usage (Implicit)------ -   #VUID-VkPresentInfoKHR-sType-sType# @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_INFO_KHR'------ -   #VUID-VkPresentInfoKHR-pNext-pNext# Each @pNext@ member of any---     structure (including this one) in the @pNext@ chain /must/ be either---     @NULL@ or a pointer to a valid instance of---     'DeviceGroupPresentInfoKHR',---     'Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR',---     'Vulkan.Extensions.VK_GGP_frame_token.PresentFrameTokenGGP',---     'Vulkan.Extensions.VK_KHR_incremental_present.PresentRegionsKHR', or---     'Vulkan.Extensions.VK_GOOGLE_display_timing.PresentTimesInfoGOOGLE'------ -   #VUID-VkPresentInfoKHR-sType-unique# The @sType@ value of each---     struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkPresentInfoKHR-pWaitSemaphores-parameter# If---     @waitSemaphoreCount@ is not @0@, @pWaitSemaphores@ /must/ be a valid---     pointer to an array of @waitSemaphoreCount@ valid---     'Vulkan.Core10.Handles.Semaphore' handles------ -   #VUID-VkPresentInfoKHR-pSwapchains-parameter# @pSwapchains@ /must/---     be a valid pointer to an array of @swapchainCount@ valid---     'Vulkan.Extensions.Handles.SwapchainKHR' handles------ -   #VUID-VkPresentInfoKHR-pImageIndices-parameter# @pImageIndices@---     /must/ be a valid pointer to an array of @swapchainCount@ @uint32_t@---     values------ -   #VUID-VkPresentInfoKHR-pResults-parameter# If @pResults@ is not---     @NULL@, @pResults@ /must/ be a valid pointer to an array of---     @swapchainCount@ 'Vulkan.Core10.Enums.Result.Result' values------ -   #VUID-VkPresentInfoKHR-swapchainCount-arraylength# @swapchainCount@---     /must/ be greater than @0@------ -   #VUID-VkPresentInfoKHR-commonparent# Both of the elements of---     @pSwapchains@, and the elements of @pWaitSemaphores@ that are valid---     handles of non-ignored parameters /must/ have been created,---     allocated, or retrieved from the same---     'Vulkan.Core10.Handles.Instance'------ = See Also------ 'Vulkan.Core10.Enums.Result.Result', 'Vulkan.Core10.Handles.Semaphore',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'Vulkan.Extensions.Handles.SwapchainKHR', 'queuePresentKHR'-data PresentInfoKHR (es :: [Type]) = PresentInfoKHR-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.-    next :: Chain es-  , -- | @pWaitSemaphores@ is @NULL@ or a pointer to an array of-    -- 'Vulkan.Core10.Handles.Semaphore' objects with @waitSemaphoreCount@-    -- entries, and specifies the semaphores to wait for before issuing the-    -- present request.-    waitSemaphores :: Vector Semaphore-  , -- | @pSwapchains@ is a pointer to an array of-    -- 'Vulkan.Extensions.Handles.SwapchainKHR' objects with @swapchainCount@-    -- entries. A given swapchain /must/ not appear in this list more than-    -- once.-    swapchains :: Vector SwapchainKHR-  , -- | @pImageIndices@ is a pointer to an array of indices into the array of-    -- each swapchain’s presentable images, with @swapchainCount@ entries. Each-    -- entry in this array identifies the image to present on the corresponding-    -- entry in the @pSwapchains@ array.-    imageIndices :: Vector Word32-  , -- | @pResults@ is a pointer to an array of-    -- 'Vulkan.Core10.Enums.Result.Result' typed elements with @swapchainCount@-    -- entries. Applications that do not need per-swapchain results /can/ use-    -- @NULL@ for @pResults@. If non-@NULL@, each entry in @pResults@ will be-    -- set to the 'Vulkan.Core10.Enums.Result.Result' for presenting the-    -- swapchain corresponding to the same index in @pSwapchains@.-    results :: Ptr Result-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (PresentInfoKHR (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (PresentInfoKHR es)--instance Extensible PresentInfoKHR where-  extensibleType = STRUCTURE_TYPE_PRESENT_INFO_KHR-  setNext x next = x{next = next}-  getNext PresentInfoKHR{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PresentInfoKHR e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @PresentFrameTokenGGP = Just f-    | Just Refl <- eqT @e @PresentTimesInfoGOOGLE = Just f-    | Just Refl <- eqT @e @DeviceGroupPresentInfoKHR = Just f-    | Just Refl <- eqT @e @PresentRegionsKHR = Just f-    | Just Refl <- eqT @e @DisplayPresentInfoKHR = Just f-    | otherwise = Nothing--instance (Extendss PresentInfoKHR es, PokeChain es) => ToCStruct (PresentInfoKHR es) where-  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PresentInfoKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_INFO_KHR)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (waitSemaphores)) :: Word32))-    pPWaitSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (waitSemaphores)) * 8) 8-    lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (waitSemaphores)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Semaphore))) (pPWaitSemaphores')-    let pSwapchainsLength = Data.Vector.length $ (swapchains)-    lift $ unless ((Data.Vector.length $ (imageIndices)) == pSwapchainsLength) $-      throwIO $ IOError Nothing InvalidArgument "" "pImageIndices and pSwapchains must have the same length" Nothing Nothing-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral pSwapchainsLength :: Word32))-    pPSwapchains' <- ContT $ allocaBytesAligned @SwapchainKHR ((Data.Vector.length (swapchains)) * 8) 8-    lift $ Data.Vector.imapM_ (\i e -> poke (pPSwapchains' `plusPtr` (8 * (i)) :: Ptr SwapchainKHR) (e)) (swapchains)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SwapchainKHR))) (pPSwapchains')-    pPImageIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (imageIndices)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPImageIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (imageIndices)-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPImageIndices')-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr Result))) (results)-    lift $ f-  cStructSize = 64-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_INFO_KHR)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    pPWaitSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (mempty)) * 8) 8-    lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (mempty)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Semaphore))) (pPWaitSemaphores')-    pPSwapchains' <- ContT $ allocaBytesAligned @SwapchainKHR ((Data.Vector.length (mempty)) * 8) 8-    lift $ Data.Vector.imapM_ (\i e -> poke (pPSwapchains' `plusPtr` (8 * (i)) :: Ptr SwapchainKHR) (e)) (mempty)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SwapchainKHR))) (pPSwapchains')-    pPImageIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPImageIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPImageIndices')-    lift $ f--instance (Extendss PresentInfoKHR es, PeekChain es) => FromCStruct (PresentInfoKHR es) where-  peekCStruct p = do-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))-    next <- peekChain (castPtr pNext)-    waitSemaphoreCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))-    pWaitSemaphores <- peek @(Ptr Semaphore) ((p `plusPtr` 24 :: Ptr (Ptr Semaphore)))-    pWaitSemaphores' <- generateM (fromIntegral waitSemaphoreCount) (\i -> peek @Semaphore ((pWaitSemaphores `advancePtrBytes` (8 * (i)) :: Ptr Semaphore)))-    swapchainCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    pSwapchains <- peek @(Ptr SwapchainKHR) ((p `plusPtr` 40 :: Ptr (Ptr SwapchainKHR)))-    pSwapchains' <- generateM (fromIntegral swapchainCount) (\i -> peek @SwapchainKHR ((pSwapchains `advancePtrBytes` (8 * (i)) :: Ptr SwapchainKHR)))-    pImageIndices <- peek @(Ptr Word32) ((p `plusPtr` 48 :: Ptr (Ptr Word32)))-    pImageIndices' <- generateM (fromIntegral swapchainCount) (\i -> peek @Word32 ((pImageIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))-    pResults <- peek @(Ptr Result) ((p `plusPtr` 56 :: Ptr (Ptr Result)))-    pure $ PresentInfoKHR-             next pWaitSemaphores' pSwapchains' pImageIndices' pResults--instance es ~ '[] => Zero (PresentInfoKHR es) where-  zero = PresentInfoKHR-           ()-           mempty-           mempty-           mempty-           zero----- | VkDeviceGroupPresentCapabilitiesKHR - Present capabilities from other--- physical devices------ = Description------ @modes@ always has 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR' set.------ The present mode flags are also used when presenting an image, in--- 'DeviceGroupPresentInfoKHR'::@mode@.------ If a device group only includes a single physical device, then @modes@--- /must/ equal 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR'.------ == Valid Usage (Implicit)------ = See Also------ 'DeviceGroupPresentModeFlagsKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'getDeviceGroupPresentCapabilitiesKHR'-data DeviceGroupPresentCapabilitiesKHR = DeviceGroupPresentCapabilitiesKHR-  { -- | @presentMask@ is an array of-    -- 'Vulkan.Core10.APIConstants.MAX_DEVICE_GROUP_SIZE' @uint32_t@ masks,-    -- where the mask at element i is non-zero if physical device i has a-    -- presentation engine, and where bit j is set in element i if physical-    -- device i /can/ present swapchain images from physical device j. If-    -- element i is non-zero, then bit i /must/ be set.-    presentMask :: Vector Word32-  , -- | @modes@ is a bitmask of 'DeviceGroupPresentModeFlagBitsKHR' indicating-    -- which device group presentation modes are supported.-    modes :: DeviceGroupPresentModeFlagsKHR-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (DeviceGroupPresentCapabilitiesKHR)-#endif-deriving instance Show DeviceGroupPresentCapabilitiesKHR--instance ToCStruct DeviceGroupPresentCapabilitiesKHR where-  withCStruct x f = allocaBytesAligned 152 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p DeviceGroupPresentCapabilitiesKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    unless ((Data.Vector.length $ (presentMask)) <= MAX_DEVICE_GROUP_SIZE) $-      throwIO $ IOError Nothing InvalidArgument "" "presentMask is too long, a maximum of MAX_DEVICE_GROUP_SIZE elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DEVICE_GROUP_SIZE Word32)))) `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (presentMask)-    poke ((p `plusPtr` 144 :: Ptr DeviceGroupPresentModeFlagsKHR)) (modes)-    f-  cStructSize = 152-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    unless ((Data.Vector.length $ (mempty)) <= MAX_DEVICE_GROUP_SIZE) $-      throwIO $ IOError Nothing InvalidArgument "" "presentMask is too long, a maximum of MAX_DEVICE_GROUP_SIZE elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DEVICE_GROUP_SIZE Word32)))) `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)-    poke ((p `plusPtr` 144 :: Ptr DeviceGroupPresentModeFlagsKHR)) (zero)-    f--instance FromCStruct DeviceGroupPresentCapabilitiesKHR where-  peekCStruct p = do-    presentMask <- generateM (MAX_DEVICE_GROUP_SIZE) (\i -> peek @Word32 (((lowerArrayPtr @Word32 ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DEVICE_GROUP_SIZE Word32)))) `advancePtrBytes` (4 * (i)) :: Ptr Word32)))-    modes <- peek @DeviceGroupPresentModeFlagsKHR ((p `plusPtr` 144 :: Ptr DeviceGroupPresentModeFlagsKHR))-    pure $ DeviceGroupPresentCapabilitiesKHR-             presentMask modes--instance Storable DeviceGroupPresentCapabilitiesKHR where-  sizeOf ~_ = 152-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero DeviceGroupPresentCapabilitiesKHR where-  zero = DeviceGroupPresentCapabilitiesKHR-           mempty-           zero----- | VkImageSwapchainCreateInfoKHR - Specify that an image will be bound to--- swapchain memory------ == Valid Usage------ -   #VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995# If @swapchain@---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the fields of---     'Vulkan.Core10.Image.ImageCreateInfo' /must/ match the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#swapchain-wsi-image-create-info implied image creation parameters>---     of the swapchain------ == Valid Usage (Implicit)------ -   #VUID-VkImageSwapchainCreateInfoKHR-sType-sType# @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR'------ -   #VUID-VkImageSwapchainCreateInfoKHR-swapchain-parameter# If---     @swapchain@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',---     @swapchain@ /must/ be a valid---     'Vulkan.Extensions.Handles.SwapchainKHR' handle------ = See Also------ 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'Vulkan.Extensions.Handles.SwapchainKHR'-data ImageSwapchainCreateInfoKHR = ImageSwapchainCreateInfoKHR-  { -- | @swapchain@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a handle of a-    -- swapchain that the image will be bound to.-    swapchain :: SwapchainKHR }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (ImageSwapchainCreateInfoKHR)-#endif-deriving instance Show ImageSwapchainCreateInfoKHR--instance ToCStruct ImageSwapchainCreateInfoKHR where-  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ImageSwapchainCreateInfoKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (swapchain)-    f-  cStructSize = 24-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    f--instance FromCStruct ImageSwapchainCreateInfoKHR where-  peekCStruct p = do-    swapchain <- peek @SwapchainKHR ((p `plusPtr` 16 :: Ptr SwapchainKHR))-    pure $ ImageSwapchainCreateInfoKHR-             swapchain--instance Storable ImageSwapchainCreateInfoKHR where-  sizeOf ~_ = 24-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero ImageSwapchainCreateInfoKHR where-  zero = ImageSwapchainCreateInfoKHR-           zero----- | VkBindImageMemorySwapchainInfoKHR - Structure specifying swapchain image--- memory to bind to------ = Description------ If @swapchain@ is not @NULL@, the @swapchain@ and @imageIndex@ are used--- to determine the memory that the image is bound to, instead of @memory@--- and @memoryOffset@.------ Memory /can/ be bound to a swapchain and use the @pDeviceIndices@ or--- @pSplitInstanceBindRegions@ members of--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'.------ == Valid Usage------ -   #VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644#---     @imageIndex@ /must/ be less than the number of images in @swapchain@------ == Valid Usage (Implicit)------ -   #VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType# @sType@ /must/---     be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR'------ -   #VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter#---     @swapchain@ /must/ be a valid---     'Vulkan.Extensions.Handles.SwapchainKHR' handle------ == Host Synchronization------ -   Host access to @swapchain@ /must/ be externally synchronized------ = See Also------ 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'Vulkan.Extensions.Handles.SwapchainKHR'-data BindImageMemorySwapchainInfoKHR = BindImageMemorySwapchainInfoKHR-  { -- | @swapchain@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a swapchain-    -- handle.-    swapchain :: SwapchainKHR-  , -- | @imageIndex@ is an image index within @swapchain@.-    imageIndex :: Word32-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (BindImageMemorySwapchainInfoKHR)-#endif-deriving instance Show BindImageMemorySwapchainInfoKHR--instance ToCStruct BindImageMemorySwapchainInfoKHR where-  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p BindImageMemorySwapchainInfoKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (swapchain)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (imageIndex)-    f-  cStructSize = 32-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (zero)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)-    f--instance FromCStruct BindImageMemorySwapchainInfoKHR where-  peekCStruct p = do-    swapchain <- peek @SwapchainKHR ((p `plusPtr` 16 :: Ptr SwapchainKHR))-    imageIndex <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))-    pure $ BindImageMemorySwapchainInfoKHR-             swapchain imageIndex--instance Storable BindImageMemorySwapchainInfoKHR where-  sizeOf ~_ = 32-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero BindImageMemorySwapchainInfoKHR where-  zero = BindImageMemorySwapchainInfoKHR-           zero-           zero----- | VkAcquireNextImageInfoKHR - Structure specifying parameters of the--- acquire------ = Description------ If 'acquireNextImageKHR' is used, the device mask is considered to--- include all physical devices in the logical device.------ Note------ 'acquireNextImage2KHR' signals at most one semaphore, even if the--- application requests waiting for multiple physical devices to be ready--- via the @deviceMask@. However, only a single physical device /can/ wait--- on that semaphore, since the semaphore becomes unsignaled when the wait--- succeeds. For other physical devices to wait for the image to be ready,--- it is necessary for the application to submit semaphore signal--- operation(s) to that first physical device to signal additional--- semaphore(s) after the wait succeeds, which the other physical device(s)--- /can/ wait upon.------ == Valid Usage------ -   #VUID-VkAcquireNextImageInfoKHR-swapchain-01675# @swapchain@ /must/---     not be in the retired state------ -   #VUID-VkAcquireNextImageInfoKHR-semaphore-01288# If @semaphore@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ be unsignaled------ -   #VUID-VkAcquireNextImageInfoKHR-semaphore-01781# If @semaphore@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ not have any---     uncompleted signal or wait operations pending------ -   #VUID-VkAcquireNextImageInfoKHR-fence-01289# If @fence@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ be unsignaled and---     /must/ not be associated with any other queue command that has not---     yet completed execution on that queue------ -   #VUID-VkAcquireNextImageInfoKHR-semaphore-01782# @semaphore@ and---     @fence@ /must/ not both be equal to---     'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-VkAcquireNextImageInfoKHR-deviceMask-01290# @deviceMask@---     /must/ be a valid device mask------ -   #VUID-VkAcquireNextImageInfoKHR-deviceMask-01291# @deviceMask@---     /must/ not be zero------ -   #VUID-VkAcquireNextImageInfoKHR-semaphore-03266# @semaphore@ /must/---     have a 'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of---     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'------ == Valid Usage (Implicit)------ -   #VUID-VkAcquireNextImageInfoKHR-sType-sType# @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR'------ -   #VUID-VkAcquireNextImageInfoKHR-pNext-pNext# @pNext@ /must/ be---     @NULL@------ -   #VUID-VkAcquireNextImageInfoKHR-swapchain-parameter# @swapchain@---     /must/ be a valid 'Vulkan.Extensions.Handles.SwapchainKHR' handle------ -   #VUID-VkAcquireNextImageInfoKHR-semaphore-parameter# If @semaphore@---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @semaphore@ /must/---     be a valid 'Vulkan.Core10.Handles.Semaphore' handle------ -   #VUID-VkAcquireNextImageInfoKHR-fence-parameter# If @fence@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @fence@ /must/ be a valid---     'Vulkan.Core10.Handles.Fence' handle------ -   #VUID-VkAcquireNextImageInfoKHR-commonparent# Each of @fence@,---     @semaphore@, and @swapchain@ that are valid handles of non-ignored---     parameters /must/ have been created, allocated, or retrieved from---     the same 'Vulkan.Core10.Handles.Instance'------ == Host Synchronization------ -   Host access to @swapchain@ /must/ be externally synchronized------ -   Host access to @semaphore@ /must/ be externally synchronized------ -   Host access to @fence@ /must/ be externally synchronized------ = See Also------ 'Vulkan.Core10.Handles.Fence', 'Vulkan.Core10.Handles.Semaphore',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'Vulkan.Extensions.Handles.SwapchainKHR', 'acquireNextImage2KHR'-data AcquireNextImageInfoKHR = AcquireNextImageInfoKHR-  { -- | @swapchain@ is a non-retired swapchain from which an image is acquired.-    swapchain :: SwapchainKHR-  , -- | @timeout@ specifies how long the function waits, in nanoseconds, if no-    -- image is available.-    timeout :: Word64-  , -- | @semaphore@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a semaphore-    -- to signal.-    semaphore :: Semaphore-  , -- | @fence@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a fence to-    -- signal.-    fence :: Fence-  , -- | @deviceMask@ is a mask of physical devices for which the swapchain image-    -- will be ready to use when the semaphore or fence is signaled.-    deviceMask :: Word32-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AcquireNextImageInfoKHR)-#endif-deriving instance Show AcquireNextImageInfoKHR--instance ToCStruct AcquireNextImageInfoKHR where-  withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AcquireNextImageInfoKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (swapchain)-    poke ((p `plusPtr` 24 :: Ptr Word64)) (timeout)-    poke ((p `plusPtr` 32 :: Ptr Semaphore)) (semaphore)-    poke ((p `plusPtr` 40 :: Ptr Fence)) (fence)-    poke ((p `plusPtr` 48 :: Ptr Word32)) (deviceMask)-    f-  cStructSize = 56-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (zero)-    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)-    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)-    f--instance FromCStruct AcquireNextImageInfoKHR where-  peekCStruct p = do-    swapchain <- peek @SwapchainKHR ((p `plusPtr` 16 :: Ptr SwapchainKHR))-    timeout <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))-    semaphore <- peek @Semaphore ((p `plusPtr` 32 :: Ptr Semaphore))-    fence <- peek @Fence ((p `plusPtr` 40 :: Ptr Fence))-    deviceMask <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))-    pure $ AcquireNextImageInfoKHR-             swapchain timeout semaphore fence deviceMask--instance Storable AcquireNextImageInfoKHR where-  sizeOf ~_ = 56-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero AcquireNextImageInfoKHR where-  zero = AcquireNextImageInfoKHR-           zero-           zero-           zero-           zero-           zero----- | VkDeviceGroupPresentInfoKHR - Mode and mask controlling which physical--- devices\' images are presented------ = Description------ If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR', then each--- element of @pDeviceMasks@ selects which instance of the swapchain image--- is presented. Each element of @pDeviceMasks@ /must/ have exactly one bit--- set, and the corresponding physical device /must/ have a presentation--- engine as reported by 'DeviceGroupPresentCapabilitiesKHR'.------ If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR', then each--- element of @pDeviceMasks@ selects which instance of the swapchain image--- is presented. Each element of @pDeviceMasks@ /must/ have exactly one bit--- set, and some physical device in the logical device /must/ include that--- bit in its 'DeviceGroupPresentCapabilitiesKHR'::@presentMask@.------ If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR', then each element--- of @pDeviceMasks@ selects which instances of the swapchain image are--- component-wise summed and the sum of those images is presented. If the--- sum in any component is outside the representable range, the value of--- that component is undefined. Each element of @pDeviceMasks@ /must/ have--- a value for which all set bits are set in one of the elements of--- 'DeviceGroupPresentCapabilitiesKHR'::@presentMask@.------ If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR',--- then each element of @pDeviceMasks@ selects which instance(s) of the--- swapchain images are presented. For each bit set in each element of--- @pDeviceMasks@, the corresponding physical device /must/ have a--- presentation engine as reported by 'DeviceGroupPresentCapabilitiesKHR'.------ If 'DeviceGroupPresentInfoKHR' is not provided or @swapchainCount@ is--- zero then the masks are considered to be @1@. If--- 'DeviceGroupPresentInfoKHR' is not provided, @mode@ is considered to be--- 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR'.------ == Valid Usage------ -   #VUID-VkDeviceGroupPresentInfoKHR-swapchainCount-01297#---     @swapchainCount@ /must/ equal @0@ or---     'PresentInfoKHR'::@swapchainCount@------ -   #VUID-VkDeviceGroupPresentInfoKHR-mode-01298# If @mode@ is---     'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR', then each element of---     @pDeviceMasks@ /must/ have exactly one bit set, and the---     corresponding element of---     'DeviceGroupPresentCapabilitiesKHR'::@presentMask@ /must/ be---     non-zero------ -   #VUID-VkDeviceGroupPresentInfoKHR-mode-01299# If @mode@ is---     'DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR', then each element of---     @pDeviceMasks@ /must/ have exactly one bit set, and some physical---     device in the logical device /must/ include that bit in its---     'DeviceGroupPresentCapabilitiesKHR'::@presentMask@------ -   #VUID-VkDeviceGroupPresentInfoKHR-mode-01300# If @mode@ is---     'DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR', then each element of---     @pDeviceMasks@ /must/ have a value for which all set bits are set in---     one of the elements of---     'DeviceGroupPresentCapabilitiesKHR'::@presentMask@------ -   #VUID-VkDeviceGroupPresentInfoKHR-mode-01301# If @mode@ is---     'DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR', then for---     each bit set in each element of @pDeviceMasks@, the corresponding---     element of 'DeviceGroupPresentCapabilitiesKHR'::@presentMask@ /must/---     be non-zero------ -   #VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-01302# The value of---     each element of @pDeviceMasks@ /must/ be equal to the device mask---     passed in 'AcquireNextImageInfoKHR'::@deviceMask@ when the image---     index was last acquired------ -   #VUID-VkDeviceGroupPresentInfoKHR-mode-01303# @mode@ /must/ have---     exactly one bit set, and that bit /must/ have been included in---     'DeviceGroupSwapchainCreateInfoKHR'::@modes@------ == Valid Usage (Implicit)------ -   #VUID-VkDeviceGroupPresentInfoKHR-sType-sType# @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR'------ -   #VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter# If---     @swapchainCount@ is not @0@, @pDeviceMasks@ /must/ be a valid---     pointer to an array of @swapchainCount@ @uint32_t@ values------ -   #VUID-VkDeviceGroupPresentInfoKHR-mode-parameter# @mode@ /must/ be a---     valid 'DeviceGroupPresentModeFlagBitsKHR' value------ = See Also------ 'DeviceGroupPresentModeFlagBitsKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data DeviceGroupPresentInfoKHR = DeviceGroupPresentInfoKHR-  { -- | @pDeviceMasks@ is a pointer to an array of device masks, one for each-    -- element of 'PresentInfoKHR'::pSwapchains.-    deviceMasks :: Vector Word32-  , -- | @mode@ is the device group present mode that will be used for this-    -- present.-    mode :: DeviceGroupPresentModeFlagBitsKHR-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (DeviceGroupPresentInfoKHR)-#endif-deriving instance Show DeviceGroupPresentInfoKHR--instance ToCStruct DeviceGroupPresentInfoKHR where-  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p DeviceGroupPresentInfoKHR{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (deviceMasks)) :: Word32))-    pPDeviceMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (deviceMasks)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceMasks' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (deviceMasks)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPDeviceMasks')-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceGroupPresentModeFlagBitsKHR)) (mode)-    lift $ f-  cStructSize = 40-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    pPDeviceMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceMasks' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPDeviceMasks')-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceGroupPresentModeFlagBitsKHR)) (zero)-    lift $ f--instance FromCStruct DeviceGroupPresentInfoKHR where-  peekCStruct p = do-    swapchainCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))-    pDeviceMasks <- peek @(Ptr Word32) ((p `plusPtr` 24 :: Ptr (Ptr Word32)))-    pDeviceMasks' <- generateM (fromIntegral swapchainCount) (\i -> peek @Word32 ((pDeviceMasks `advancePtrBytes` (4 * (i)) :: Ptr Word32)))-    mode <- peek @DeviceGroupPresentModeFlagBitsKHR ((p `plusPtr` 32 :: Ptr DeviceGroupPresentModeFlagBitsKHR))-    pure $ DeviceGroupPresentInfoKHR-             pDeviceMasks' mode--instance Zero DeviceGroupPresentInfoKHR where-  zero = DeviceGroupPresentInfoKHR-           mempty-           zero----- | VkDeviceGroupSwapchainCreateInfoKHR - Structure specifying parameters of--- a newly created swapchain object------ = Description------ If this structure is not present, @modes@ is considered to be--- 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR'.------ == Valid Usage (Implicit)------ = See Also------ 'DeviceGroupPresentModeFlagsKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data DeviceGroupSwapchainCreateInfoKHR = DeviceGroupSwapchainCreateInfoKHR-  { -- | @modes@ is a bitfield of modes that the swapchain /can/ be used with.-    ---    -- #VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter# @modes@-    -- /must/ be a valid combination of 'DeviceGroupPresentModeFlagBitsKHR'-    -- values-    ---    -- #VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask# @modes@-    -- /must/ not be @0@-    modes :: DeviceGroupPresentModeFlagsKHR }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (DeviceGroupSwapchainCreateInfoKHR)-#endif-deriving instance Show DeviceGroupSwapchainCreateInfoKHR--instance ToCStruct DeviceGroupSwapchainCreateInfoKHR where-  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p DeviceGroupSwapchainCreateInfoKHR{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr DeviceGroupPresentModeFlagsKHR)) (modes)-    f-  cStructSize = 24-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr DeviceGroupPresentModeFlagsKHR)) (zero)-    f--instance FromCStruct DeviceGroupSwapchainCreateInfoKHR where-  peekCStruct p = do-    modes <- peek @DeviceGroupPresentModeFlagsKHR ((p `plusPtr` 16 :: Ptr DeviceGroupPresentModeFlagsKHR))-    pure $ DeviceGroupSwapchainCreateInfoKHR-             modes--instance Storable DeviceGroupSwapchainCreateInfoKHR where-  sizeOf ~_ = 24-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero DeviceGroupSwapchainCreateInfoKHR where-  zero = DeviceGroupSwapchainCreateInfoKHR-           zero----- | VkDeviceGroupPresentModeFlagBitsKHR - Bitmask specifying supported--- device group present modes------ = See Also------ 'DeviceGroupPresentInfoKHR', 'DeviceGroupPresentModeFlagsKHR'-newtype DeviceGroupPresentModeFlagBitsKHR = DeviceGroupPresentModeFlagBitsKHR Flags-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)---- | 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR' specifies that any physical--- device with a presentation engine /can/ present its own swapchain--- images.-pattern DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = DeviceGroupPresentModeFlagBitsKHR 0x00000001--- | 'DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR' specifies that any physical--- device with a presentation engine /can/ present swapchain images from--- any physical device in its @presentMask@.-pattern DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = DeviceGroupPresentModeFlagBitsKHR 0x00000002--- | 'DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR' specifies that any physical--- device with a presentation engine /can/ present the sum of swapchain--- images from any physical devices in its @presentMask@.-pattern DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = DeviceGroupPresentModeFlagBitsKHR 0x00000004--- | 'DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR' specifies that--- multiple physical devices with a presentation engine /can/ each present--- their own swapchain images.-pattern DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = DeviceGroupPresentModeFlagBitsKHR 0x00000008--type DeviceGroupPresentModeFlagsKHR = DeviceGroupPresentModeFlagBitsKHR--instance Show DeviceGroupPresentModeFlagBitsKHR where-  showsPrec p = \case-    DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR -> showString "DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"-    DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR -> showString "DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"-    DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR -> showString "DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"-    DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR -> showString "DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"-    DeviceGroupPresentModeFlagBitsKHR x -> showParen (p >= 11) (showString "DeviceGroupPresentModeFlagBitsKHR 0x" . showHex x)--instance Read DeviceGroupPresentModeFlagBitsKHR where-  readPrec = parens (choose [("DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR", pure DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR)-                            , ("DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR", pure DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR)-                            , ("DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR", pure DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR)-                            , ("DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR", pure DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "DeviceGroupPresentModeFlagBitsKHR")-                       v <- step readPrec-                       pure (DeviceGroupPresentModeFlagBitsKHR v)))----- | VkSwapchainCreateFlagBitsKHR - Bitmask controlling swapchain creation------ = See Also------ 'SwapchainCreateFlagsKHR'-newtype SwapchainCreateFlagBitsKHR = SwapchainCreateFlagBitsKHR Flags-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)---- | 'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR' specifies that the images of--- the swapchain /can/ be used to create a--- 'Vulkan.Core10.Handles.ImageView' with a different format than what the--- swapchain was created with. The list of allowed image view formats are--- specified by adding a--- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'--- structure to the @pNext@ chain of 'SwapchainCreateInfoKHR'. In addition,--- this flag also specifies that the swapchain /can/ be created with usage--- flags that are not supported for the format the swapchain is created--- with but are supported for at least one of the allowed image view--- formats.-pattern SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = SwapchainCreateFlagBitsKHR 0x00000004--- | 'SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR' specifies that--- images created from the swapchain (i.e. with the @swapchain@ member of--- 'ImageSwapchainCreateInfoKHR' set to this swapchain’s handle) /must/ use--- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT'.-pattern SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = SwapchainCreateFlagBitsKHR 0x00000001--- | 'SWAPCHAIN_CREATE_PROTECTED_BIT_KHR' specifies that images created from--- the swapchain are protected images.-pattern SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = SwapchainCreateFlagBitsKHR 0x00000002--type SwapchainCreateFlagsKHR = SwapchainCreateFlagBitsKHR--instance Show SwapchainCreateFlagBitsKHR where-  showsPrec p = \case-    SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR -> showString "SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR"-    SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR -> showString "SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"-    SWAPCHAIN_CREATE_PROTECTED_BIT_KHR -> showString "SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"-    SwapchainCreateFlagBitsKHR x -> showParen (p >= 11) (showString "SwapchainCreateFlagBitsKHR 0x" . showHex x)--instance Read SwapchainCreateFlagBitsKHR where-  readPrec = parens (choose [("SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR", pure SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR)-                            , ("SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR", pure SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR)-                            , ("SWAPCHAIN_CREATE_PROTECTED_BIT_KHR", pure SWAPCHAIN_CREATE_PROTECTED_BIT_KHR)]-                     +++-                     prec 10 (do-                       expectP (Ident "SwapchainCreateFlagBitsKHR")-                       v <- step readPrec-                       pure (SwapchainCreateFlagBitsKHR v)))+-- | = Name+--+-- VK_KHR_swapchain - device extension+--+-- == VK_KHR_swapchain+--+-- [__Name String__]+--     @VK_KHR_swapchain@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     2+--+-- [__Revision__]+--     70+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_swapchain:%20&body=@cubanismo%20 >+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_swapchain:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-10-06+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Interacts with Vulkan 1.1+--+-- [__Contributors__]+--+--     -   Patrick Doane, Blizzard+--+--     -   Ian Elliott, LunarG+--+--     -   Jesse Hall, Google+--+--     -   Mathias Heyer, NVIDIA+--+--     -   James Jones, NVIDIA+--+--     -   David Mao, AMD+--+--     -   Norbert Nopper, Freescale+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Chia-I Wu, LunarG+--+--     -   Jason Ekstrand, Intel+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Ray Smith, ARM+--+-- == Description+--+-- The @VK_KHR_swapchain@ extension is the device-level companion to the+-- @VK_KHR_surface@ extension. It introduces+-- 'Vulkan.Extensions.Handles.SwapchainKHR' objects, which provide the+-- ability to present rendering results to a surface.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.SwapchainKHR'+--+-- == New Commands+--+-- -   'acquireNextImageKHR'+--+-- -   'createSwapchainKHR'+--+-- -   'destroySwapchainKHR'+--+-- -   'getSwapchainImagesKHR'+--+-- -   'queuePresentKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   'acquireNextImage2KHR'+--+-- -   'getDeviceGroupPresentCapabilitiesKHR'+--+-- -   'getDeviceGroupSurfacePresentModesKHR'+--+-- -   'getPhysicalDevicePresentRectanglesKHR'+--+-- == New Structures+--+-- -   'PresentInfoKHR'+--+-- -   'SwapchainCreateInfoKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   'AcquireNextImageInfoKHR'+--+-- -   'DeviceGroupPresentCapabilitiesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo':+--+--     -   'BindImageMemorySwapchainInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo':+--+--     -   'ImageSwapchainCreateInfoKHR'+--+-- -   Extending 'PresentInfoKHR':+--+--     -   'DeviceGroupPresentInfoKHR'+--+-- -   Extending 'SwapchainCreateInfoKHR':+--+--     -   'DeviceGroupSwapchainCreateInfoKHR'+--+-- == New Enums+--+-- -   'SwapchainCreateFlagBitsKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   'DeviceGroupPresentModeFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'SwapchainCreateFlagsKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   'DeviceGroupPresentModeFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SWAPCHAIN_EXTENSION_NAME'+--+-- -   'KHR_SWAPCHAIN_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':+--+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_SWAPCHAIN_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR'+--+-- -   Extending 'SwapchainCreateFlagBitsKHR':+--+--     -   'SWAPCHAIN_CREATE_PROTECTED_BIT_KHR'+--+--     -   'SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR'+--+-- == Issues+--+-- 1) Does this extension allow the application to specify the memory+-- backing of the presentable images?+--+-- __RESOLVED__: No. Unlike standard images, the implementation will+-- allocate the memory backing of the presentable image.+--+-- 2) What operations are allowed on presentable images?+--+-- __RESOLVED__: This is determined by the image usage flags specified when+-- creating the presentable image’s swapchain.+--+-- 3) Does this extension support MSAA presentable images?+--+-- __RESOLVED__: No. Presentable images are always single-sampled.+-- Multi-sampled rendering must use regular images. To present the+-- rendering results the application must manually resolve the multi-+-- sampled image to a single-sampled presentable image prior to+-- presentation.+--+-- 4) Does this extension support stereo\/multi-view presentable images?+--+-- __RESOLVED__: Yes. The number of views associated with a presentable+-- image is determined by the @imageArrayLayers@ specified when creating a+-- swapchain. All presentable images in a given swapchain use the same+-- array size.+--+-- 5) Are the layers of stereo presentable images half-sized?+--+-- __RESOLVED__: No. The image extents always match those requested by the+-- application.+--+-- 6) Do the “present” and “acquire next image” commands operate on a+-- queue? If not, do they need to include explicit semaphore objects to+-- interlock them with queue operations?+--+-- __RESOLVED__: The present command operates on a queue. The image+-- ownership operation it represents happens in order with other operations+-- on the queue, so no explicit semaphore object is required to synchronize+-- its actions.+--+-- Applications may want to acquire the next image in separate threads from+-- those in which they manage their queue, or in multiple threads. To make+-- such usage easier, the acquire next image command takes a semaphore to+-- signal as a method of explicit synchronization. The application must+-- later queue a wait for this semaphore before queuing execution of any+-- commands using the image.+--+-- 7) Does 'acquireNextImageKHR' block if no images are available?+--+-- __RESOLVED__: The command takes a timeout parameter. Special values for+-- the timeout are 0, which makes the call a non-blocking operation, and+-- @UINT64_MAX@, which blocks indefinitely. Values in between will block+-- for up to the specified time. The call will return when an image becomes+-- available or an error occurs. It may, but is not required to, return+-- before the specified timeout expires if the swapchain becomes out of+-- date.+--+-- 8) Can multiple presents be queued using one 'queuePresentKHR' call?+--+-- __RESOLVED__: Yes. 'PresentInfoKHR' contains a list of swapchains and+-- corresponding image indices that will be presented. When supported, all+-- presentations queued with a single 'queuePresentKHR' call will be+-- applied atomically as one operation. The same swapchain must not appear+-- in the list more than once. Later extensions may provide applications+-- stronger guarantees of atomicity for such present operations, and\/or+-- allow them to query whether atomic presentation of a particular group of+-- swapchains is possible.+--+-- 9) How do the presentation and acquire next image functions notify the+-- application the targeted surface has changed?+--+-- __RESOLVED__: Two new result codes are introduced for this purpose:+--+-- -   'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR' - Presentation will+--     still succeed, subject to the window resize behavior, but the+--     swapchain is no longer configured optimally for the surface it+--     targets. Applications should query updated surface information and+--     recreate their swapchain at the next convenient opportunity.+--+-- -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' - Failure. The+--     swapchain is no longer compatible with the surface it targets. The+--     application must query updated surface information and recreate the+--     swapchain before presentation will succeed.+--+-- These can be returned by both 'acquireNextImageKHR' and+-- 'queuePresentKHR'.+--+-- 10) Does the 'acquireNextImageKHR' command return a semaphore to the+-- application via an output parameter, or accept a semaphore to signal+-- from the application as an object handle parameter?+--+-- __RESOLVED__: Accept a semaphore to signal as an object handle. This+-- avoids the need to specify whether the application must destroy the+-- semaphore or whether it is owned by the swapchain, and if the latter,+-- what its lifetime is and whether it can be re-used for other operations+-- once it is received from 'acquireNextImageKHR'.+--+-- 11) What types of swapchain queuing behavior should be exposed? Options+-- include swap interval specification, mailbox\/most recent vs. FIFO queue+-- management, targeting specific vertical blank intervals or absolute+-- times for a given present operation, and probably others. For some of+-- these, whether they are specified at swapchain creation time or as+-- per-present parameters needs to be decided as well.+--+-- __RESOLVED__: The base swapchain extension will expose 3 possible+-- behaviors (of which, FIFO will always be supported):+--+-- -   Immediate present: Does not wait for vertical blanking period to+--     update the current image, likely resulting in visible tearing. No+--     internal queue is used. Present requests are applied immediately.+--+-- -   Mailbox queue: Waits for the next vertical blanking period to update+--     the current image. No tearing should be observed. An internal+--     single-entry queue is used to hold pending presentation requests. If+--     the queue is full when a new presentation request is received, the+--     new request replaces the existing entry, and any images associated+--     with the prior entry become available for re-use by the application.+--+-- -   FIFO queue: Waits for the next vertical blanking period to update+--     the current image. No tearing should be observed. An internal queue+--     containing @numSwapchainImages@ - 1 entries is used to hold pending+--     presentation requests. New requests are appended to the end of the+--     queue, and one request is removed from the beginning of the queue+--     and processed during each vertical blanking period in which the+--     queue is non-empty+--+-- Not all surfaces will support all of these modes, so the modes supported+-- will be returned using a surface info query. All surfaces must support+-- the FIFO queue mode. Applications must choose one of these modes up+-- front when creating a swapchain. Switching modes can be accomplished by+-- recreating the swapchain.+--+-- 12) Can 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR'+-- provide non-blocking guarantees for 'acquireNextImageKHR'? If so, what+-- is the proper criteria?+--+-- __RESOLVED__: Yes. The difficulty is not immediately obvious here.+-- Naively, if at least 3 images are requested, mailbox mode should always+-- have an image available for the application if the application does not+-- own any images when the call to 'acquireNextImageKHR' was made. However,+-- some presentation engines may have more than one “current” image, and+-- would still need to block in some cases. The right requirement appears+-- to be that if the application allocates the surface’s minimum number of+-- images + 1 then it is guaranteed non-blocking behavior when it does not+-- currently own any images.+--+-- 13) Is there a way to create and initialize a new swapchain for a+-- surface that has generated a 'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'+-- return code while still using the old swapchain?+--+-- __RESOLVED__: Not as part of this specification. This could be useful to+-- allow the application to create an “optimal” replacement swapchain and+-- rebuild all its command buffers using it in a background thread at a low+-- priority while continuing to use the “suboptimal” swapchain in the main+-- thread. It could probably use the same “atomic replace” semantics+-- proposed for recreating direct-to-device swapchains without incurring a+-- mode switch. However, after discussion, it was determined some platforms+-- probably could not support concurrent swapchains for the same surface+-- though, so this will be left out of the base KHR extensions. A future+-- extension could add this for platforms where it is supported.+--+-- 14) Should there be a special value for+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@maxImageCount@+-- to indicate there are no practical limits on the number of images in a+-- swapchain?+--+-- __RESOLVED__: Yes. There where often be cases where there is no+-- practical limit to the number of images in a swapchain other than the+-- amount of available resources (I.e., memory) in the system. Trying to+-- derive a hard limit from things like memory size is prone to failure. It+-- is better in such cases to leave it to applications to figure such soft+-- limits out via trial\/failure iterations.+--+-- 15) Should there be a special value for+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@currentExtent@+-- to indicate the size of the platform surface is undefined?+--+-- __RESOLVED__: Yes. On some platforms (Wayland, for example), the surface+-- size is defined by the images presented to it rather than the other way+-- around.+--+-- 16) Should there be a special value for+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@maxImageExtent@+-- to indicate there is no practical limit on the surface size?+--+-- __RESOLVED__: No. It seems unlikely such a system would exist. 0 could+-- be used to indicate the platform places no limits on the extents beyond+-- those imposed by Vulkan for normal images, but this query could just as+-- easily return those same limits, so a special “unlimited” value does not+-- seem useful for this field.+--+-- 17) How should surface rotation and mirroring be exposed to+-- applications? How do they specify rotation and mirroring transforms+-- applied prior to presentation?+--+-- __RESOLVED__: Applications can query both the supported and current+-- transforms of a surface. Both are specified relative to the device’s+-- “natural” display rotation and direction. The supported transforms+-- indicates which orientations the presentation engine accepts images in.+-- For example, a presentation engine that does not support transforming+-- surfaces as part of presentation, and which is presenting to a surface+-- that is displayed with a 90-degree rotation, would return only one+-- supported transform bit:+-- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR'.+-- Applications must transform their rendering by the transform they+-- specify when creating the swapchain in @preTransform@ field.+--+-- 18) Can surfaces ever not support @VK_MIRROR_NONE@? Can they support+-- vertical and horizontal mirroring simultaneously? Relatedly, should+-- @VK_MIRROR_NONE@[_BIT] be zero, or bit one, and should applications be+-- allowed to specify multiple pre and current mirror transform bits, or+-- exactly one?+--+-- __RESOLVED__: Since some platforms may not support presenting with a+-- transform other than the native window’s current transform, and+-- prerotation\/mirroring are specified relative to the device’s natural+-- rotation and direction, rather than relative to the surface’s current+-- rotation and direction, it is necessary to express lack of support for+-- no mirroring. To allow this, the @MIRROR_NONE@ enum must occupy a bit in+-- the flags. Since @MIRROR_NONE@ must be a bit in the bitmask rather than+-- a bitmask with no values set, allowing more than one bit to be set in+-- the bitmask would make it possible to describe undefined transforms such+-- as @VK_MIRROR_NONE_BIT@ | @VK_MIRROR_HORIZONTAL_BIT@, or a transform+-- that includes both “no mirroring” and “horizontal mirroring”+-- simultaneously. Therefore, it is desirable to allow specifying all+-- supported mirroring transforms using only one bit. The question then+-- becomes, should there be a @VK_MIRROR_HORIZONTAL_AND_VERTICAL_BIT@ to+-- represent a simultaneous horizontal and vertical mirror transform?+-- However, such a transform is equivalent to a 180 degree rotation, so+-- presentation engines and applications that wish to support or use such a+-- transform can express it through rotation instead. Therefore, 3+-- exclusive bits are sufficient to express all needed mirroring+-- transforms.+--+-- 19) Should support for sRGB be required?+--+-- __RESOLVED__: In the advent of UHD and HDR display devices, proper color+-- space information is vital to the display pipeline represented by the+-- swapchain. The app can discover the supported format\/color-space pairs+-- and select a pair most suited to its rendering needs. Currently only the+-- sRGB color space is supported, future extensions may provide support for+-- more color spaces. See issues 23 and 24.+--+-- 20) Is there a mechanism to modify or replace an existing swapchain with+-- one targeting the same surface?+--+-- __RESOLVED__: Yes. This is described above in the text.+--+-- 21) Should there be a way to set prerotation and mirroring using native+-- APIs when presenting using a Vulkan swapchain?+--+-- __RESOLVED__: Yes. The transforms that can be expressed in this+-- extension are a subset of those possible on native platforms. If a+-- platform exposes a method to specify the transform of presented images+-- for a given surface using native methods and exposes more transforms or+-- other properties for surfaces than Vulkan supports, it might be+-- impossible, difficult, or inconvenient to set some of those properties+-- using Vulkan KHR extensions and some using the native interfaces. To+-- avoid overwriting properties set using native commands when presenting+-- using a Vulkan swapchain, the application can set the pretransform to+-- “inherit”, in which case the current native properties will be used, or+-- if none are available, a platform-specific default will be used.+-- Platforms that do not specify a reasonable default or do not provide+-- native mechanisms to specify such transforms should not include the+-- inherit bits in the @supportedTransforms@ bitmask they return in+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'.+--+-- 22) Should the content of presentable images be clipped by objects+-- obscuring their target surface?+--+-- __RESOLVED__: Applications can choose which behavior they prefer.+-- Allowing the content to be clipped could enable more optimal+-- presentation methods on some platforms, but some applications might rely+-- on the content of presentable images to perform techniques such as+-- partial updates or motion blurs.+--+-- 23) What is the purpose of specifying a+-- 'Vulkan.Extensions.VK_KHR_surface.ColorSpaceKHR' along with+-- 'Vulkan.Core10.Enums.Format.Format' when creating a swapchain?+--+-- __RESOLVED__: While Vulkan itself is color space agnostic (e.g. even the+-- meaning of R, G, B and A can be freely defined by the rendering+-- application), the swapchain eventually will have to present the images+-- on a display device with specific color reproduction characteristics. If+-- any color space transformations are necessary before an image can be+-- displayed, the color space of the presented image must be known to the+-- swapchain. A swapchain will only support a restricted set of color+-- format and -space pairs. This set can be discovered via+-- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceFormatsKHR'.+-- As it can be expected that most display devices support the sRGB color+-- space, at least one format\/color-space pair has to be exposed, where+-- the color space is+-- 'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_SRGB_NONLINEAR_KHR'.+--+-- 24) How are sRGB formats and the sRGB color space related?+--+-- __RESOLVED__: While Vulkan exposes a number of SRGB texture formats,+-- using such formats does not guarantee working in a specific color space.+-- It merely means that the hardware can directly support applying the+-- non-linear transfer functions defined by the sRGB standard color space+-- when reading from or writing to images of that these formats. Still, it+-- is unlikely that a swapchain will expose a @*_SRGB@ format along with+-- any color space other than+-- 'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_SRGB_NONLINEAR_KHR'.+--+-- On the other hand, non-@*_SRGB@ formats will be very likely exposed in+-- pair with a SRGB color space. This means, the hardware will not apply+-- any transfer function when reading from or writing to such images, yet+-- they will still be presented on a device with sRGB display+-- characteristics. In this case the application is responsible for+-- applying the transfer function, for instance by using shader math.+--+-- 25) How are the lifetime of surfaces and swapchains targeting them+-- related?+--+-- __RESOLVED__: A surface must outlive any swapchains targeting it. A+-- 'Vulkan.Extensions.Handles.SurfaceKHR' owns the binding of the native+-- window to the Vulkan driver.+--+-- 26) How can the client control the way the alpha channel of swapchain+-- images is treated by the presentation engine during compositing?+--+-- __RESOLVED__: We should add new enum values to allow the client to+-- negotiate with the presentation engine on how to treat image alpha+-- values during the compositing process. Since not all platforms can+-- practically control this through the Vulkan driver, a value of+-- 'Vulkan.Extensions.VK_KHR_surface.COMPOSITE_ALPHA_INHERIT_BIT_KHR' is+-- provided like for surface transforms.+--+-- 27) Is 'createSwapchainKHR' the right function to return+-- 'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR', or should+-- the various platform-specific 'Vulkan.Extensions.Handles.SurfaceKHR'+-- factory functions catch this error earlier?+--+-- __RESOLVED__: For most platforms, the+-- 'Vulkan.Extensions.Handles.SurfaceKHR' structure is a simple container+-- holding the data that identifies a native window or other object+-- representing a surface on a particular platform. For the surface factory+-- functions to return this error, they would likely need to register a+-- reference on the native objects with the native display server somehow,+-- and ensure no other such references exist. Surfaces were not intended to+-- be that heavyweight.+--+-- Swapchains are intended to be the objects that directly manipulate+-- native windows and communicate with the native presentation mechanisms.+-- Swapchains will already need to communicate with the native display+-- server to negotiate allocation and\/or presentation of presentable+-- images for a native surface. Therefore, it makes more sense for+-- swapchain creation to be the point at which native object exclusivity is+-- enforced. Platforms may choose to enforce further restrictions on the+-- number of 'Vulkan.Extensions.Handles.SurfaceKHR' objects that may be+-- created for the same native window if such a requirement makes sense on+-- a particular platform, but a global requirement is only sensible at the+-- swapchain level.+--+-- == Examples+--+-- Note+--+-- The example code for the @VK_KHR_surface@ and @VK_KHR_swapchain@+-- extensions was removed from the appendix after revision 1.0.29. This WSI+-- example code was ported to the cube demo that is shipped with the+-- official Khronos SDK, and is being kept up-to-date in that location+-- (see:+-- <https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c>).+--+-- == Version History+--+-- -   Revision 1, 2015-05-20 (James Jones)+--+--     -   Initial draft, based on LunarG KHR spec, other KHR specs,+--         patches attached to bugs.+--+-- -   Revision 2, 2015-05-22 (Ian Elliott)+--+--     -   Made many agreed-upon changes from 2015-05-21 KHR TSG meeting.+--         This includes using only a queue for presentation, and having an+--         explicit function to acquire the next image.+--+--     -   Fixed typos and other minor mistakes.+--+-- -   Revision 3, 2015-05-26 (Ian Elliott)+--+--     -   Improved the Description section.+--+--     -   Added or resolved issues that were found in improving the+--         Description. For example, pSurfaceDescription is used+--         consistently, instead of sometimes using pSurface.+--+-- -   Revision 4, 2015-05-27 (James Jones)+--+--     -   Fixed some grammatical errors and typos+--+--     -   Filled in the description of imageUseFlags when creating a+--         swapchain.+--+--     -   Added a description of swapInterval.+--+--     -   Replaced the paragraph describing the order of operations on a+--         queue for image ownership and presentation.+--+-- -   Revision 5, 2015-05-27 (James Jones)+--+--     -   Imported relevant issues from the (abandoned)+--         vk_wsi_persistent_swapchain_images extension.+--+--     -   Added issues 6 and 7, regarding behavior of the acquire next+--         image and present commands with respect to queues.+--+--     -   Updated spec language and examples to align with proposed+--         resolutions to issues 6 and 7.+--+-- -   Revision 6, 2015-05-27 (James Jones)+--+--     -   Added issue 8, regarding atomic presentation of multiple+--         swapchains+--+--     -   Updated spec language and examples to align with proposed+--         resolution to issue 8.+--+-- -   Revision 7, 2015-05-27 (James Jones)+--+--     -   Fixed compilation errors in example code, and made related spec+--         fixes.+--+-- -   Revision 8, 2015-05-27 (James Jones)+--+--     -   Added issue 9, and the related VK_SUBOPTIMAL_KHR result code.+--+--     -   Renamed VK_OUT_OF_DATE_KHR to VK_ERROR_OUT_OF_DATE_KHR.+--+-- -   Revision 9, 2015-05-27 (James Jones)+--+--     -   Added inline proposed resolutions (marked with [JRJ]) to some+--         XXX questions\/issues. These should be moved to the issues+--         section in a subsequent update if the proposals are adopted.+--+-- -   Revision 10, 2015-05-28 (James Jones)+--+--     -   Converted vkAcquireNextImageKHR back to a non-queue operation+--         that uses a VkSemaphore object for explicit synchronization.+--+--     -   Added issue 10 to determine whether vkAcquireNextImageKHR+--         generates or returns semaphores, or whether it operates on a+--         semaphore provided by the application.+--+-- -   Revision 11, 2015-05-28 (James Jones)+--+--     -   Marked issues 6, 7, and 8 resolved.+--+--     -   Renamed VkSurfaceCapabilityPropertiesKHR to+--         VkSurfacePropertiesKHR to better convey the mutable nature of+--         the info it contains.+--+-- -   Revision 12, 2015-05-28 (James Jones)+--+--     -   Added issue 11 with a proposed resolution, and the related issue+--         12.+--+--     -   Updated various sections of the spec to match the proposed+--         resolution to issue 11.+--+-- -   Revision 13, 2015-06-01 (James Jones)+--+--     -   Moved some structures to VK_EXT_KHR_swap_chain to resolve the+--         spec’s issues 1 and 2.+--+-- -   Revision 14, 2015-06-01 (James Jones)+--+--     -   Added code for example 4 demonstrating how an application might+--         make use of the two different present and acquire next image KHR+--         result codes.+--+--     -   Added issue 13.+--+-- -   Revision 15, 2015-06-01 (James Jones)+--+--     -   Added issues 14 - 16 and related spec language.+--+--     -   Fixed some spelling errors.+--+--     -   Added language describing the meaningful return values for+--         vkAcquireNextImageKHR and vkQueuePresentKHR.+--+-- -   Revision 16, 2015-06-02 (James Jones)+--+--     -   Added issues 17 and 18, as well as related spec language.+--+--     -   Removed some erroneous text added by mistake in the last update.+--+-- -   Revision 17, 2015-06-15 (Ian Elliott)+--+--     -   Changed special value from \"-1\" to \"0\" so that the data+--         types can be unsigned.+--+-- -   Revision 18, 2015-06-15 (Ian Elliott)+--+--     -   Clarified the values of VkSurfacePropertiesKHR::minImageCount+--         and the timeout parameter of the vkAcquireNextImageKHR function.+--+-- -   Revision 19, 2015-06-17 (James Jones)+--+--     -   Misc. cleanup. Removed resolved inline issues and fixed typos.+--+--     -   Fixed clarification of VkSurfacePropertiesKHR::minImageCount+--         made in version 18.+--+--     -   Added a brief \"Image Ownership\" definition to the list of+--         terms used in the spec.+--+-- -   Revision 20, 2015-06-17 (James Jones)+--+--     -   Updated enum-extending values using new convention.+--+-- -   Revision 21, 2015-06-17 (James Jones)+--+--     -   Added language describing how to use+--         VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR.+--+--     -   Cleaned up an XXX comment regarding the description of which+--         queues vkQueuePresentKHR can be used on.+--+-- -   Revision 22, 2015-06-17 (James Jones)+--+--     -   Rebased on Vulkan API version 126.+--+-- -   Revision 23, 2015-06-18 (James Jones)+--+--     -   Updated language for issue 12 to read as a proposed resolution.+--+--     -   Marked issues 11, 12, 13, 16, and 17 resolved.+--+--     -   Temporarily added links to the relevant bugs under the remaining+--         unresolved issues.+--+--     -   Added issues 19 and 20 as well as proposed resolutions.+--+-- -   Revision 24, 2015-06-19 (Ian Elliott)+--+--     -   Changed special value for VkSurfacePropertiesKHR::currentExtent+--         back to \"-1\" from \"0\". This value will never need to be+--         unsigned, and \"0\" is actually a legal value.+--+-- -   Revision 25, 2015-06-23 (Ian Elliott)+--+--     -   Examples now show use of function pointers for extension+--         functions.+--+--     -   Eliminated extraneous whitespace.+--+-- -   Revision 26, 2015-06-25 (Ian Elliott)+--+--     -   Resolved Issues 9 & 10 per KHR TSG meeting.+--+-- -   Revision 27, 2015-06-25 (James Jones)+--+--     -   Added oldSwapchain member to VkSwapchainCreateInfoKHR.+--+-- -   Revision 28, 2015-06-25 (James Jones)+--+--     -   Added the \"inherit\" bits to the rotation and mirroring flags+--         and the associated issue 21.+--+-- -   Revision 29, 2015-06-25 (James Jones)+--+--     -   Added the \"clipped\" flag to VkSwapchainCreateInfoKHR, and the+--         associated issue 22.+--+--     -   Specified that presenting an image does not modify it.+--+-- -   Revision 30, 2015-06-25 (James Jones)+--+--     -   Added language to the spec that clarifies the behavior of+--         vkCreateSwapchainKHR() when the oldSwapchain field of+--         VkSwapchainCreateInfoKHR is not NULL.+--+-- -   Revision 31, 2015-06-26 (Ian Elliott)+--+--     -   Example of new VkSwapchainCreateInfoKHR members,+--         \"oldSwapchain\" and \"clipped\".+--+--     -   Example of using VkSurfacePropertiesKHR::{min|max}ImageCount to+--         set VkSwapchainCreateInfoKHR::minImageCount.+--+--     -   Rename vkGetSurfaceInfoKHR()\'s 4th parameter to \"pDataSize\",+--         for consistency with other functions.+--+--     -   Add macro with C-string name of extension (just to header file).+--+-- -   Revision 32, 2015-06-26 (James Jones)+--+--     -   Minor adjustments to the language describing the behavior of+--         \"oldSwapchain\"+--+--     -   Fixed the version date on my previous two updates.+--+-- -   Revision 33, 2015-06-26 (Jesse Hall)+--+--     -   Add usage flags to VkSwapchainCreateInfoKHR+--+-- -   Revision 34, 2015-06-26 (Ian Elliott)+--+--     -   Rename vkQueuePresentKHR()\'s 2nd parameter to \"pPresentInfo\",+--         for consistency with other functions.+--+-- -   Revision 35, 2015-06-26 (Jason Ekstrand)+--+--     -   Merged the VkRotationFlagBitsKHR and VkMirrorFlagBitsKHR enums+--         into a single VkSurfaceTransformFlagBitsKHR enum.+--+-- -   Revision 36, 2015-06-26 (Jason Ekstrand)+--+--     -   Added a VkSurfaceTransformKHR enum that is not a bitmask. Each+--         value in VkSurfaceTransformKHR corresponds directly to one of+--         the bits in VkSurfaceTransformFlagBitsKHR so transforming from+--         one to the other is easy. Having a separate enum means that+--         currentTransform and preTransform are now unambiguous by+--         definition.+--+-- -   Revision 37, 2015-06-29 (Ian Elliott)+--+--     -   Corrected one of the signatures of vkAcquireNextImageKHR, which+--         had the last two parameters switched from what it is elsewhere+--         in the specification and header files.+--+-- -   Revision 38, 2015-06-30 (Ian Elliott)+--+--     -   Corrected a typo in description of the vkGetSwapchainInfoKHR()+--         function.+--+--     -   Corrected a typo in header file comment for+--         VkPresentInfoKHR::sType.+--+-- -   Revision 39, 2015-07-07 (Daniel Rakos)+--+--     -   Added error section describing when each error is expected to be+--         reported.+--+--     -   Replaced bool32_t with VkBool32.+--+-- -   Revision 40, 2015-07-10 (Ian Elliott)+--+--     -   Updated to work with version 138 of the \"vulkan.h\" header.+--         This includes declaring the VkSwapchainKHR type using the new+--         VK_DEFINE_NONDISP_HANDLE macro, and no longer extending+--         VkObjectType (which was eliminated).+--+-- -   Revision 41 2015-07-09 (Mathias Heyer)+--+--     -   Added color space language.+--+-- -   Revision 42, 2015-07-10 (Daniel Rakos)+--+--     -   Updated query mechanism to reflect the convention changes done+--         in the core spec.+--+--     -   Removed \"queue\" from the name of+--         VK_STRUCTURE_TYPE_QUEUE_PRESENT_INFO_KHR to be consistent with+--         the established naming convention.+--+--     -   Removed reference to the no longer existing VkObjectType enum.+--+-- -   Revision 43, 2015-07-17 (Daniel Rakos)+--+--     -   Added support for concurrent sharing of swapchain images across+--         queue families.+--+--     -   Updated sample code based on recent changes+--+-- -   Revision 44, 2015-07-27 (Ian Elliott)+--+--     -   Noted that support for VK_PRESENT_MODE_FIFO_KHR is required.+--         That is ICDs may optionally support IMMEDIATE and MAILBOX, but+--         must support FIFO.+--+-- -   Revision 45, 2015-08-07 (Ian Elliott)+--+--     -   Corrected a typo in spec file (type and variable name had wrong+--         case for the imageColorSpace member of the+--         VkSwapchainCreateInfoKHR struct).+--+--     -   Corrected a typo in header file (last parameter in+--         PFN_vkGetSurfacePropertiesKHR was missing \"KHR\" at the end of+--         type: VkSurfacePropertiesKHR).+--+-- -   Revision 46, 2015-08-20 (Ian Elliott)+--+--     -   Renamed this extension and all of its enumerations, types,+--         functions, etc. This makes it compliant with the proposed+--         standard for Vulkan extensions.+--+--     -   Switched from \"revision\" to \"version\", including use of the+--         VK_MAKE_VERSION macro in the header file.+--+--     -   Made improvements to several descriptions.+--+--     -   Changed the status of several issues from PROPOSED to RESOLVED,+--         leaving no unresolved issues.+--+--     -   Resolved several TODOs, did miscellaneous cleanup, etc.+--+-- -   Revision 47, 2015-08-20 (Ian Elliott—​porting a 2015-07-29 change+--     from James Jones)+--+--     -   Moved the surface transform enums to VK_WSI_swapchain so they+--         could be re-used by VK_WSI_display.+--+-- -   Revision 48, 2015-09-01 (James Jones)+--+--     -   Various minor cleanups.+--+-- -   Revision 49, 2015-09-01 (James Jones)+--+--     -   Restore single-field revision number.+--+-- -   Revision 50, 2015-09-01 (James Jones)+--+--     -   Update Example #4 to include code that illustrates how to use+--         the oldSwapchain field.+--+-- -   Revision 51, 2015-09-01 (James Jones)+--+--     -   Fix example code compilation errors.+--+-- -   Revision 52, 2015-09-08 (Matthaeus G. Chajdas)+--+--     -   Corrected a typo.+--+-- -   Revision 53, 2015-09-10 (Alon Or-bach)+--+--     -   Removed underscore from SWAP_CHAIN left in+--         VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR.+--+-- -   Revision 54, 2015-09-11 (Jesse Hall)+--+--     -   Described the execution and memory coherence requirements for+--         image transitions to and from+--         VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR.+--+-- -   Revision 55, 2015-09-11 (Ray Smith)+--+--     -   Added errors for destroying and binding memory to presentable+--         images+--+-- -   Revision 56, 2015-09-18 (James Jones)+--+--     -   Added fence argument to vkAcquireNextImageKHR+--+--     -   Added example of how to meter a host thread based on+--         presentation rate.+--+-- -   Revision 57, 2015-09-26 (Jesse Hall)+--+--     -   Replace VkSurfaceDescriptionKHR with VkSurfaceKHR.+--+--     -   Added issue 25 with agreed resolution.+--+-- -   Revision 58, 2015-09-28 (Jesse Hall)+--+--     -   Renamed from VK_EXT_KHR_device_swapchain to+--         VK_EXT_KHR_swapchain.+--+-- -   Revision 59, 2015-09-29 (Ian Elliott)+--+--     -   Changed vkDestroySwapchainKHR() to return void.+--+-- -   Revision 60, 2015-10-01 (Jeff Vigil)+--+--     -   Added error result VK_ERROR_SURFACE_LOST_KHR.+--+-- -   Revision 61, 2015-10-05 (Jason Ekstrand)+--+--     -   Added the VkCompositeAlpha enum and corresponding structure+--         fields.+--+-- -   Revision 62, 2015-10-12 (Daniel Rakos)+--+--     -   Added VK_PRESENT_MODE_FIFO_RELAXED_KHR.+--+-- -   Revision 63, 2015-10-15 (Daniel Rakos)+--+--     -   Moved surface capability queries to VK_EXT_KHR_surface.+--+-- -   Revision 64, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_swapchain to VK_KHR_swapchain.+--+-- -   Revision 65, 2015-10-28 (Ian Elliott)+--+--     -   Added optional pResult member to VkPresentInfoKHR, so that+--         per-swapchain results can be obtained from vkQueuePresentKHR().+--+-- -   Revision 66, 2015-11-03 (Daniel Rakos)+--+--     -   Added allocation callbacks to create and destroy functions.+--+--     -   Updated resource transition language.+--+--     -   Updated sample code.+--+-- -   Revision 67, 2015-11-10 (Jesse Hall)+--+--     -   Add reserved flags bitmask to VkSwapchainCreateInfoKHR.+--+--     -   Modify naming and member ordering to match API style+--         conventions, and so the VkSwapchainCreateInfoKHR image property+--         members mirror corresponding VkImageCreateInfo members but with+--         an \'image\' prefix.+--+--     -   Make VkPresentInfoKHR::pResults non-const; it is an output array+--         parameter.+--+--     -   Make pPresentInfo parameter to vkQueuePresentKHR const.+--+-- -   Revision 68, 2016-04-05 (Ian Elliott)+--+--     -   Moved the \"validity\" include for vkAcquireNextImage to be in+--         its proper place, after the prototype and list of parameters.+--+--     -   Clarified language about presentable images, including how they+--         are acquired, when applications can and cannot use them, etc. As+--         part of this, removed language about \"ownership\" of+--         presentable images, and replaced it with more-consistent+--         language about presentable images being \"acquired\" by the+--         application.+--+-- -   2016-08-23 (Ian Elliott)+--+--     -   Update the example code, to use the final API command names, to+--         not have so many characters per line, and to split out a new+--         example to show how to obtain function pointers. This code is+--         more similar to the LunarG \"cube\" demo program.+--+-- -   2016-08-25 (Ian Elliott)+--+--     -   A note was added at the beginning of the example code, stating+--         that it will be removed from future versions of the appendix.+--+-- -   Revision 69, 2017-09-07 (Tobias Hector)+--+--     -   Added interactions with Vulkan 1.1+--+-- -   Revision 70, 2017-10-06 (Ian Elliott)+--+--     -   Corrected interactions with Vulkan 1.1+--+-- = See Also+--+-- 'PresentInfoKHR', 'SwapchainCreateFlagBitsKHR',+-- 'SwapchainCreateFlagsKHR', 'SwapchainCreateInfoKHR',+-- 'Vulkan.Extensions.Handles.SwapchainKHR', 'acquireNextImageKHR',+-- 'createSwapchainKHR', 'destroySwapchainKHR', 'getSwapchainImagesKHR',+-- 'queuePresentKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_KHR_swapchain  ( createSwapchainKHR+                                           , withSwapchainKHR+                                           , destroySwapchainKHR+                                           , getSwapchainImagesKHR+                                           , acquireNextImageKHR+                                           , acquireNextImageKHRSafe+                                           , queuePresentKHR+                                           , getDeviceGroupPresentCapabilitiesKHR+                                           , getDeviceGroupSurfacePresentModesKHR+                                           , acquireNextImage2KHR+                                           , acquireNextImage2KHRSafe+                                           , getPhysicalDevicePresentRectanglesKHR+                                           , SwapchainCreateInfoKHR(..)+                                           , PresentInfoKHR(..)+                                           , DeviceGroupPresentCapabilitiesKHR(..)+                                           , ImageSwapchainCreateInfoKHR(..)+                                           , BindImageMemorySwapchainInfoKHR(..)+                                           , AcquireNextImageInfoKHR(..)+                                           , DeviceGroupPresentInfoKHR(..)+                                           , DeviceGroupSwapchainCreateInfoKHR(..)+                                           , DeviceGroupPresentModeFlagsKHR+                                           , DeviceGroupPresentModeFlagBitsKHR( DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR+                                                                              , DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR+                                                                              , DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR+                                                                              , DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR+                                                                              , ..+                                                                              )+                                           , SwapchainCreateFlagsKHR+                                           , SwapchainCreateFlagBitsKHR( SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR+                                                                       , SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR+                                                                       , SWAPCHAIN_CREATE_PROTECTED_BIT_KHR+                                                                       , ..+                                                                       )+                                           , KHR_SWAPCHAIN_SPEC_VERSION+                                           , pattern KHR_SWAPCHAIN_SPEC_VERSION+                                           , KHR_SWAPCHAIN_EXTENSION_NAME+                                           , pattern KHR_SWAPCHAIN_EXTENSION_NAME+                                           , SurfaceKHR(..)+                                           , SwapchainKHR(..)+                                           , PresentModeKHR(..)+                                           , ColorSpaceKHR(..)+                                           , CompositeAlphaFlagBitsKHR(..)+                                           , CompositeAlphaFlagsKHR+                                           , SurfaceTransformFlagBitsKHR(..)+                                           , SurfaceTransformFlagsKHR+                                           ) where++import Vulkan.CStruct.Utils (FixedArray)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec)+import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Control.Monad.IO.Class (liftIO)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import GHC.Ptr (nullFunPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Show (showString)+import Numeric (showHex)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Control.Monad.IO.Class (MonadIO)+import Data.Bits (Bits)+import Data.Bits (FiniteBits)+import Data.String (IsString)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.Generics (Generic)+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Vulkan.CStruct.Utils (advancePtrBytes)+import Vulkan.Core10.FundamentalTypes (bool32ToBool)+import Vulkan.Core10.FundamentalTypes (boolToBool32)+import Vulkan.CStruct.Extends (forgetExtensions)+import Vulkan.CStruct.Utils (lowerArrayPtr)+import Vulkan.NamedType ((:::))+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Vulkan.Core10.FundamentalTypes (Bool32)+import Vulkan.CStruct.Extends (Chain)+import Vulkan.Extensions.VK_KHR_surface (ColorSpaceKHR)+import Vulkan.Extensions.VK_KHR_surface (CompositeAlphaFlagBitsKHR)+import Vulkan.Core10.Handles (Device)+import Vulkan.Core10.Handles (Device(..))+import Vulkan.Dynamic (DeviceCmds(pVkAcquireNextImage2KHR))+import Vulkan.Dynamic (DeviceCmds(pVkAcquireNextImageKHR))+import Vulkan.Dynamic (DeviceCmds(pVkCreateSwapchainKHR))+import Vulkan.Dynamic (DeviceCmds(pVkDestroySwapchainKHR))+import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceGroupPresentCapabilitiesKHR))+import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceGroupSurfacePresentModesKHR))+import Vulkan.Dynamic (DeviceCmds(pVkGetSwapchainImagesKHR))+import Vulkan.Dynamic (DeviceCmds(pVkQueuePresentKHR))+import Vulkan.Core10.Handles (Device_T)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display_swapchain (DisplayPresentInfoKHR)+import Vulkan.CStruct.Extends (Extends)+import Vulkan.CStruct.Extends (Extendss)+import Vulkan.CStruct.Extends (Extensible(..))+import Vulkan.Core10.FundamentalTypes (Extent2D)+import Vulkan.Core10.Handles (Fence)+import Vulkan.Core10.Handles (Fence(..))+import Vulkan.Core10.FundamentalTypes (Flags)+import Vulkan.Core10.Enums.Format (Format)+import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (FromCStruct(..))+import Vulkan.Core10.Handles (Image)+import Vulkan.Core10.Handles (Image(..))+import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_image_format_list (ImageFormatListCreateInfo)+import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDevicePresentRectanglesKHR))+import Vulkan.Core10.APIConstants (MAX_DEVICE_GROUP_SIZE)+import Vulkan.CStruct.Extends (PeekChain)+import Vulkan.CStruct.Extends (PeekChain(..))+import Vulkan.Core10.Handles (PhysicalDevice)+import Vulkan.Core10.Handles (PhysicalDevice(..))+import Vulkan.Core10.Handles (PhysicalDevice_T)+import Vulkan.CStruct.Extends (PokeChain)+import Vulkan.CStruct.Extends (PokeChain(..))+import {-# SOURCE #-} Vulkan.Extensions.VK_GGP_frame_token (PresentFrameTokenGGP)+import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_incremental_present (PresentRegionsKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (PresentTimesInfoGOOGLE)+import Vulkan.Core10.Handles (Queue)+import Vulkan.Core10.Handles (Queue(..))+import Vulkan.Core10.Handles (Queue_T)+import Vulkan.Core10.FundamentalTypes (Rect2D)+import Vulkan.Core10.Enums.Result (Result)+import Vulkan.Core10.Enums.Result (Result(..))+import Vulkan.Core10.Handles (Semaphore)+import Vulkan.Core10.Handles (Semaphore(..))+import Vulkan.Core10.Enums.SharingMode (SharingMode)+import Vulkan.CStruct.Extends (SomeStruct)+import Vulkan.Core10.Enums.StructureType (StructureType)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveInfoEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveWin32InfoEXT)+import Vulkan.Extensions.Handles (SurfaceKHR)+import Vulkan.Extensions.Handles (SurfaceKHR(..))+import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagBitsKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_control (SwapchainCounterCreateInfoEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_display_native_hdr (SwapchainDisplayNativeHdrCreateInfoAMD)+import Vulkan.Extensions.Handles (SwapchainKHR)+import Vulkan.Extensions.Handles (SwapchainKHR(..))+import Vulkan.CStruct (ToCStruct)+import Vulkan.CStruct (ToCStruct(..))+import Vulkan.Exception (VulkanException(..))+import Vulkan.Zero (Zero)+import Vulkan.Zero (Zero(..))+import Vulkan.Core10.APIConstants (pattern MAX_DEVICE_GROUP_SIZE)+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRESENT_INFO_KHR))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR))+import Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Vulkan.Extensions.VK_KHR_surface (ColorSpaceKHR(..))+import Vulkan.Extensions.VK_KHR_surface (CompositeAlphaFlagBitsKHR(..))+import Vulkan.Extensions.VK_KHR_surface (CompositeAlphaFlagsKHR)+import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR(..))+import Vulkan.Extensions.Handles (SurfaceKHR(..))+import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagBitsKHR(..))+import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagsKHR)+import Vulkan.Extensions.Handles (SwapchainKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCreateSwapchainKHR+  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct SwapchainCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr SwapchainKHR -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct SwapchainCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr SwapchainKHR -> IO Result++-- | vkCreateSwapchainKHR - Create a swapchain+--+-- = Description+--+-- If the @oldSwapchain@ parameter of @pCreateInfo@ is a valid swapchain,+-- which has exclusive full-screen access, that access is released from+-- @oldSwapchain@. If the command succeeds in this case, the newly created+-- swapchain will automatically acquire exclusive full-screen access from+-- @oldSwapchain@.+--+-- Note+--+-- This implicit transfer is intended to avoid exiting and entering+-- full-screen exclusive mode, which may otherwise cause unwanted visual+-- updates to the display.+--+-- In some cases, swapchain creation /may/ fail if exclusive full-screen+-- mode is requested for application control, but for some+-- implementation-specific reason exclusive full-screen access is+-- unavailable for the particular combination of parameters provided. If+-- this occurs, 'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'+-- will be returned.+--+-- Note+--+-- In particular, it will fail if the @imageExtent@ member of @pCreateInfo@+-- does not match the extents of the monitor. Other reasons for failure may+-- include the app not being set as high-dpi aware, or if the physical+-- device and monitor are not compatible in this mode.+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCreateSwapchainKHR-device-parameter# @device@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkCreateSwapchainKHR-pCreateInfo-parameter# @pCreateInfo@+--     /must/ be a valid pointer to a valid 'SwapchainCreateInfoKHR'+--     structure+--+-- -   #VUID-vkCreateSwapchainKHR-pAllocator-parameter# If @pAllocator@ is+--     not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure+--+-- -   #VUID-vkCreateSwapchainKHR-pSwapchain-parameter# @pSwapchain@ /must/+--     be a valid pointer to a 'Vulkan.Extensions.Handles.SwapchainKHR'+--     handle+--+-- == Host Synchronization+--+-- -   Host access to @pCreateInfo->surface@ /must/ be externally+--     synchronized+--+-- -   Host access to @pCreateInfo->oldSwapchain@ /must/ be externally+--     synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'+--+-- = See Also+--+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Vulkan.Core10.Handles.Device', 'SwapchainCreateInfoKHR',+-- 'Vulkan.Extensions.Handles.SwapchainKHR'+createSwapchainKHR :: forall a io+                    . (Extendss SwapchainCreateInfoKHR a, PokeChain a, MonadIO io)+                   => -- | @device@ is the device to create the swapchain for.+                      Device+                   -> -- | @pCreateInfo@ is a pointer to a 'SwapchainCreateInfoKHR' structure+                      -- specifying the parameters of the created swapchain.+                      (SwapchainCreateInfoKHR a)+                   -> -- | @pAllocator@ is the allocator used for host memory allocated for the+                      -- swapchain object when there is no more specific allocator available (see+                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).+                      ("allocator" ::: Maybe AllocationCallbacks)+                   -> io (SwapchainKHR)+createSwapchainKHR device createInfo allocator = liftIO . evalContT $ do+  let vkCreateSwapchainKHRPtr = pVkCreateSwapchainKHR (deviceCmds (device :: Device))+  lift $ unless (vkCreateSwapchainKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateSwapchainKHR is null" Nothing Nothing+  let vkCreateSwapchainKHR' = mkVkCreateSwapchainKHR vkCreateSwapchainKHRPtr+  pCreateInfo <- ContT $ withCStruct (createInfo)+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  pPSwapchain <- ContT $ bracket (callocBytes @SwapchainKHR 8) free+  r <- lift $ vkCreateSwapchainKHR' (deviceHandle (device)) (forgetExtensions pCreateInfo) pAllocator (pPSwapchain)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pSwapchain <- lift $ peek @SwapchainKHR pPSwapchain+  pure $ (pSwapchain)++-- | A convenience wrapper to make a compatible pair of calls to+-- 'createSwapchainKHR' and 'destroySwapchainKHR'+--+-- To ensure that 'destroySwapchainKHR' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument.+--+withSwapchainKHR :: forall a io r . (Extendss SwapchainCreateInfoKHR a, PokeChain a, MonadIO io) => Device -> SwapchainCreateInfoKHR a -> Maybe AllocationCallbacks -> (io SwapchainKHR -> (SwapchainKHR -> io ()) -> r) -> r+withSwapchainKHR device pCreateInfo pAllocator b =+  b (createSwapchainKHR device pCreateInfo pAllocator)+    (\(o0) -> destroySwapchainKHR device o0 pAllocator)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkDestroySwapchainKHR+  :: FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> SwapchainKHR -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroySwapchainKHR - Destroy a swapchain object+--+-- = Description+--+-- The application /must/ not destroy a swapchain until after completion of+-- all outstanding operations on images that were acquired from the+-- swapchain. @swapchain@ and all associated 'Vulkan.Core10.Handles.Image'+-- handles are destroyed, and /must/ not be acquired or used any more by+-- the application. The memory of each 'Vulkan.Core10.Handles.Image' will+-- only be freed after that image is no longer used by the presentation+-- engine. For example, if one image of the swapchain is being displayed in+-- a window, the memory for that image /may/ not be freed until the window+-- is destroyed, or another swapchain is created for the window. Destroying+-- the swapchain does not invalidate the parent+-- 'Vulkan.Extensions.Handles.SurfaceKHR', and a new swapchain /can/ be+-- created with it.+--+-- When a swapchain associated with a display surface is destroyed, if the+-- image most recently presented to the display surface is from the+-- swapchain being destroyed, then either any display resources modified by+-- presenting images from any swapchain associated with the display surface+-- /must/ be reverted by the implementation to their state prior to the+-- first present performed on one of these swapchains, or such resources+-- /must/ be left in their current state.+--+-- If @swapchain@ has exclusive full-screen access, it is released before+-- the swapchain is destroyed.+--+-- == Valid Usage+--+-- -   #VUID-vkDestroySwapchainKHR-swapchain-01282# All uses of presentable+--     images acquired from @swapchain@ /must/ have completed execution+--+-- -   #VUID-vkDestroySwapchainKHR-swapchain-01283# If+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were+--     provided when @swapchain@ was created, a compatible set of callbacks+--     /must/ be provided here+--+-- -   #VUID-vkDestroySwapchainKHR-swapchain-01284# If no+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were+--     provided when @swapchain@ was created, @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkDestroySwapchainKHR-device-parameter# @device@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkDestroySwapchainKHR-swapchain-parameter# If @swapchain@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @swapchain@ /must/ be+--     a valid 'Vulkan.Extensions.Handles.SwapchainKHR' handle+--+-- -   #VUID-vkDestroySwapchainKHR-pAllocator-parameter# If @pAllocator@ is+--     not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure+--+-- -   #VUID-vkDestroySwapchainKHR-commonparent# Both of @device@, and+--     @swapchain@ that are valid handles of non-ignored parameters /must/+--     have been created, allocated, or retrieved from the same+--     'Vulkan.Core10.Handles.Instance'+--+-- == Host Synchronization+--+-- -   Host access to @swapchain@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Extensions.Handles.SwapchainKHR'+destroySwapchainKHR :: forall io+                     . (MonadIO io)+                    => -- | @device@ is the 'Vulkan.Core10.Handles.Device' associated with+                       -- @swapchain@.+                       Device+                    -> -- | @swapchain@ is the swapchain to destroy.+                       SwapchainKHR+                    -> -- | @pAllocator@ is the allocator used for host memory allocated for the+                       -- swapchain object when there is no more specific allocator available (see+                       -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).+                       ("allocator" ::: Maybe AllocationCallbacks)+                    -> io ()+destroySwapchainKHR device swapchain allocator = liftIO . evalContT $ do+  let vkDestroySwapchainKHRPtr = pVkDestroySwapchainKHR (deviceCmds (device :: Device))+  lift $ unless (vkDestroySwapchainKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroySwapchainKHR is null" Nothing Nothing+  let vkDestroySwapchainKHR' = mkVkDestroySwapchainKHR vkDestroySwapchainKHRPtr+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  lift $ vkDestroySwapchainKHR' (deviceHandle (device)) (swapchain) pAllocator+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetSwapchainImagesKHR+  :: FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr Word32 -> Ptr Image -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Ptr Word32 -> Ptr Image -> IO Result++-- | vkGetSwapchainImagesKHR - Obtain the array of presentable images+-- associated with a swapchain+--+-- = Description+--+-- If @pSwapchainImages@ is @NULL@, then the number of presentable images+-- for @swapchain@ is returned in @pSwapchainImageCount@. Otherwise,+-- @pSwapchainImageCount@ /must/ point to a variable set by the user to the+-- number of elements in the @pSwapchainImages@ array, and on return the+-- variable is overwritten with the number of structures actually written+-- to @pSwapchainImages@. If the value of @pSwapchainImageCount@ is less+-- than the number of presentable images for @swapchain@, at most+-- @pSwapchainImageCount@ structures will be written. If+-- @pSwapchainImageCount@ is smaller than the number of presentable images+-- for @swapchain@, 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be+-- returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate+-- that not all the available values were returned.+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkGetSwapchainImagesKHR-device-parameter# @device@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkGetSwapchainImagesKHR-swapchain-parameter# @swapchain@+--     /must/ be a valid 'Vulkan.Extensions.Handles.SwapchainKHR' handle+--+-- -   #VUID-vkGetSwapchainImagesKHR-pSwapchainImageCount-parameter#+--     @pSwapchainImageCount@ /must/ be a valid pointer to a @uint32_t@+--     value+--+-- -   #VUID-vkGetSwapchainImagesKHR-pSwapchainImages-parameter# If the+--     value referenced by @pSwapchainImageCount@ is not @0@, and+--     @pSwapchainImages@ is not @NULL@, @pSwapchainImages@ /must/ be a+--     valid pointer to an array of @pSwapchainImageCount@+--     'Vulkan.Core10.Handles.Image' handles+--+-- -   #VUID-vkGetSwapchainImagesKHR-commonparent# Both of @device@, and+--     @swapchain@ /must/ have been created, allocated, or retrieved from+--     the same 'Vulkan.Core10.Handles.Instance'+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Image',+-- 'Vulkan.Extensions.Handles.SwapchainKHR'+getSwapchainImagesKHR :: forall io+                       . (MonadIO io)+                      => -- | @device@ is the device associated with @swapchain@.+                         Device+                      -> -- | @swapchain@ is the swapchain to query.+                         SwapchainKHR+                      -> io (Result, ("swapchainImages" ::: Vector Image))+getSwapchainImagesKHR device swapchain = liftIO . evalContT $ do+  let vkGetSwapchainImagesKHRPtr = pVkGetSwapchainImagesKHR (deviceCmds (device :: Device))+  lift $ unless (vkGetSwapchainImagesKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetSwapchainImagesKHR is null" Nothing Nothing+  let vkGetSwapchainImagesKHR' = mkVkGetSwapchainImagesKHR vkGetSwapchainImagesKHRPtr+  let device' = deviceHandle (device)+  pPSwapchainImageCount <- ContT $ bracket (callocBytes @Word32 4) free+  r <- lift $ vkGetSwapchainImagesKHR' device' (swapchain) (pPSwapchainImageCount) (nullPtr)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pSwapchainImageCount <- lift $ peek @Word32 pPSwapchainImageCount+  pPSwapchainImages <- ContT $ bracket (callocBytes @Image ((fromIntegral (pSwapchainImageCount)) * 8)) free+  r' <- lift $ vkGetSwapchainImagesKHR' device' (swapchain) (pPSwapchainImageCount) (pPSwapchainImages)+  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+  pSwapchainImageCount' <- lift $ peek @Word32 pPSwapchainImageCount+  pSwapchainImages' <- lift $ generateM (fromIntegral (pSwapchainImageCount')) (\i -> peek @Image ((pPSwapchainImages `advancePtrBytes` (8 * (i)) :: Ptr Image)))+  pure $ ((r'), pSwapchainImages')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkAcquireNextImageKHRUnsafe+  :: FunPtr (Ptr Device_T -> SwapchainKHR -> Word64 -> Semaphore -> Fence -> Ptr Word32 -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Word64 -> Semaphore -> Fence -> Ptr Word32 -> IO Result++foreign import ccall+  "dynamic" mkVkAcquireNextImageKHRSafe+  :: FunPtr (Ptr Device_T -> SwapchainKHR -> Word64 -> Semaphore -> Fence -> Ptr Word32 -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Word64 -> Semaphore -> Fence -> Ptr Word32 -> IO Result++-- | acquireNextImageKHR with selectable safeness+acquireNextImageKHRSafeOrUnsafe :: forall io+                                 . (MonadIO io)+                                => -- No documentation found for TopLevel ""+                                   (FunPtr (Ptr Device_T -> SwapchainKHR -> Word64 -> Semaphore -> Fence -> Ptr Word32 -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Word64 -> Semaphore -> Fence -> Ptr Word32 -> IO Result)+                                -> -- | @device@ is the device associated with @swapchain@.+                                   Device+                                -> -- | @swapchain@ is the non-retired swapchain from which an image is being+                                   -- acquired.+                                   SwapchainKHR+                                -> -- | @timeout@ specifies how long the function waits, in nanoseconds, if no+                                   -- image is available.+                                   ("timeout" ::: Word64)+                                -> -- | @semaphore@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a semaphore+                                   -- to signal.+                                   Semaphore+                                -> -- | @fence@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a fence to+                                   -- signal.+                                   Fence+                                -> io (Result, ("imageIndex" ::: Word32))+acquireNextImageKHRSafeOrUnsafe mkVkAcquireNextImageKHR device swapchain timeout semaphore fence = liftIO . evalContT $ do+  let vkAcquireNextImageKHRPtr = pVkAcquireNextImageKHR (deviceCmds (device :: Device))+  lift $ unless (vkAcquireNextImageKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkAcquireNextImageKHR is null" Nothing Nothing+  let vkAcquireNextImageKHR' = mkVkAcquireNextImageKHR vkAcquireNextImageKHRPtr+  pPImageIndex <- ContT $ bracket (callocBytes @Word32 4) free+  r <- lift $ vkAcquireNextImageKHR' (deviceHandle (device)) (swapchain) (timeout) (semaphore) (fence) (pPImageIndex)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pImageIndex <- lift $ peek @Word32 pPImageIndex+  pure $ (r, pImageIndex)++-- | vkAcquireNextImageKHR - Retrieve the index of the next available+-- presentable image+--+-- == Valid Usage+--+-- -   #VUID-vkAcquireNextImageKHR-swapchain-01285# @swapchain@ /must/ not+--     be in the retired state+--+-- -   #VUID-vkAcquireNextImageKHR-semaphore-01286# If @semaphore@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ be unsignaled+--+-- -   #VUID-vkAcquireNextImageKHR-semaphore-01779# If @semaphore@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ not have any+--     uncompleted signal or wait operations pending+--+-- -   #VUID-vkAcquireNextImageKHR-fence-01287# If @fence@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ be unsignaled and+--     /must/ not be associated with any other queue command that has not+--     yet completed execution on that queue+--+-- -   #VUID-vkAcquireNextImageKHR-semaphore-01780# @semaphore@ and @fence@+--     /must/ not both be equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkAcquireNextImageKHR-swapchain-01802# If the number of+--     currently acquired images is greater than the difference between the+--     number of images in @swapchain@ and the value of+--     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@minImageCount@+--     as returned by a call to+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'+--     with the @surface@ used to create @swapchain@, @timeout@ /must/ not+--     be @UINT64_MAX@+--+-- -   #VUID-vkAcquireNextImageKHR-semaphore-03265# @semaphore@ /must/ have+--     a 'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+--     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkAcquireNextImageKHR-device-parameter# @device@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkAcquireNextImageKHR-swapchain-parameter# @swapchain@ /must/+--     be a valid 'Vulkan.Extensions.Handles.SwapchainKHR' handle+--+-- -   #VUID-vkAcquireNextImageKHR-semaphore-parameter# If @semaphore@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @semaphore@ /must/ be+--     a valid 'Vulkan.Core10.Handles.Semaphore' handle+--+-- -   #VUID-vkAcquireNextImageKHR-fence-parameter# If @fence@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @fence@ /must/ be a valid+--     'Vulkan.Core10.Handles.Fence' handle+--+-- -   #VUID-vkAcquireNextImageKHR-pImageIndex-parameter# @pImageIndex@+--     /must/ be a valid pointer to a @uint32_t@ value+--+-- -   #VUID-vkAcquireNextImageKHR-semaphore-parent# If @semaphore@ is a+--     valid handle, it /must/ have been created, allocated, or retrieved+--     from @device@+--+-- -   #VUID-vkAcquireNextImageKHR-fence-parent# If @fence@ is a valid+--     handle, it /must/ have been created, allocated, or retrieved from+--     @device@+--+-- -   #VUID-vkAcquireNextImageKHR-commonparent# Both of @device@, and+--     @swapchain@ that are valid handles of non-ignored parameters /must/+--     have been created, allocated, or retrieved from the same+--     'Vulkan.Core10.Handles.Instance'+--+-- == Host Synchronization+--+-- -   Host access to @swapchain@ /must/ be externally synchronized+--+-- -   Host access to @semaphore@ /must/ be externally synchronized+--+-- -   Host access to @fence@ /must/ be externally synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Vulkan.Core10.Enums.Result.TIMEOUT'+--+--     -   'Vulkan.Core10.Enums.Result.NOT_READY'+--+--     -   'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Fence',+-- 'Vulkan.Core10.Handles.Semaphore',+-- 'Vulkan.Extensions.Handles.SwapchainKHR'+acquireNextImageKHR :: forall io+                     . (MonadIO io)+                    => -- | @device@ is the device associated with @swapchain@.+                       Device+                    -> -- | @swapchain@ is the non-retired swapchain from which an image is being+                       -- acquired.+                       SwapchainKHR+                    -> -- | @timeout@ specifies how long the function waits, in nanoseconds, if no+                       -- image is available.+                       ("timeout" ::: Word64)+                    -> -- | @semaphore@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a semaphore+                       -- to signal.+                       Semaphore+                    -> -- | @fence@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a fence to+                       -- signal.+                       Fence+                    -> io (Result, ("imageIndex" ::: Word32))+acquireNextImageKHR = acquireNextImageKHRSafeOrUnsafe mkVkAcquireNextImageKHRUnsafe++-- | A variant of 'acquireNextImageKHR' which makes a *safe* FFI call+acquireNextImageKHRSafe :: forall io+                         . (MonadIO io)+                        => -- | @device@ is the device associated with @swapchain@.+                           Device+                        -> -- | @swapchain@ is the non-retired swapchain from which an image is being+                           -- acquired.+                           SwapchainKHR+                        -> -- | @timeout@ specifies how long the function waits, in nanoseconds, if no+                           -- image is available.+                           ("timeout" ::: Word64)+                        -> -- | @semaphore@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a semaphore+                           -- to signal.+                           Semaphore+                        -> -- | @fence@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a fence to+                           -- signal.+                           Fence+                        -> io (Result, ("imageIndex" ::: Word32))+acquireNextImageKHRSafe = acquireNextImageKHRSafeOrUnsafe mkVkAcquireNextImageKHRSafe+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkQueuePresentKHR+  :: FunPtr (Ptr Queue_T -> Ptr (SomeStruct PresentInfoKHR) -> IO Result) -> Ptr Queue_T -> Ptr (SomeStruct PresentInfoKHR) -> IO Result++-- | vkQueuePresentKHR - Queue an image for presentation+--+-- = Description+--+-- Note+--+-- There is no requirement for an application to present images in the same+-- order that they were acquired - applications can arbitrarily present any+-- image that is currently acquired.+--+-- == Valid Usage+--+-- -   #VUID-vkQueuePresentKHR-pSwapchains-01292# Each element of+--     @pSwapchains@ member of @pPresentInfo@ /must/ be a swapchain that is+--     created for a surface for which presentation is supported from+--     @queue@ as determined using a call to+--     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR'+--+-- -   #VUID-vkQueuePresentKHR-pSwapchains-01293# If more than one member+--     of @pSwapchains@ was created from a display surface, all display+--     surfaces referenced that refer to the same display /must/ use the+--     same display mode+--+-- -   #VUID-vkQueuePresentKHR-pWaitSemaphores-01294# When a semaphore wait+--     operation referring to a binary semaphore defined by the elements of+--     the @pWaitSemaphores@ member of @pPresentInfo@ executes on @queue@,+--     there /must/ be no other queues waiting on the same semaphore+--+-- -   #VUID-vkQueuePresentKHR-pWaitSemaphores-01295# All elements of the+--     @pWaitSemaphores@ member of @pPresentInfo@ /must/ be semaphores that+--     are signaled, or have+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>+--     previously submitted for execution+--+-- -   #VUID-vkQueuePresentKHR-pWaitSemaphores-03267# All elements of the+--     @pWaitSemaphores@ member of @pPresentInfo@ /must/ be created with a+--     'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+--     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'+--+-- -   #VUID-vkQueuePresentKHR-pWaitSemaphores-03268# All elements of the+--     @pWaitSemaphores@ member of @pPresentInfo@ /must/ reference a+--     semaphore signal operation that has been submitted for execution and+--     any semaphore signal operations on which it depends (if any) /must/+--     have also been submitted for execution+--+-- Any writes to memory backing the images referenced by the+-- @pImageIndices@ and @pSwapchains@ members of @pPresentInfo@, that are+-- available before 'queuePresentKHR' is executed, are automatically made+-- visible to the read access performed by the presentation engine. This+-- automatic visibility operation for an image happens-after the semaphore+-- signal operation, and happens-before the presentation engine accesses+-- the image.+--+-- Queueing an image for presentation defines a set of /queue operations/,+-- including waiting on the semaphores and submitting a presentation+-- request to the presentation engine. However, the scope of this set of+-- queue operations does not include the actual processing of the image by+-- the presentation engine.+--+-- Note+--+-- The origin of the native orientation of the surface coordinate system is+-- not specified in the Vulkan specification; it depends on the platform.+-- For most platforms the origin is by default upper-left, meaning the+-- pixel of the presented 'Vulkan.Core10.Handles.Image' at coordinates+-- (0,0) would appear at the upper left pixel of the platform surface+-- (assuming+-- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',+-- and the display standing the right way up).+--+-- If 'queuePresentKHR' fails to enqueue the corresponding set of queue+-- operations, it /may/ return+-- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' or+-- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'. If it does, the+-- implementation /must/ ensure that the state and contents of any+-- resources or synchronization primitives referenced is unaffected by the+-- call or its failure.+--+-- If 'queuePresentKHR' fails in such a way that the implementation is+-- unable to make that guarantee, the implementation /must/ return+-- 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'.+--+-- However, if the presentation request is rejected by the presentation+-- engine with an error 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR',+-- 'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT',+-- or 'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR', the set of queue+-- operations are still considered to be enqueued and thus any semaphore+-- wait operation specified in 'PresentInfoKHR' will execute when the+-- corresponding queue operation is complete.+--+-- If any @swapchain@ member of @pPresentInfo@ was created with+-- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT',+-- 'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'+-- will be returned if that swapchain does not have exclusive full-screen+-- access, possibly for implementation-specific reasons outside of the+-- application’s control.+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkQueuePresentKHR-queue-parameter# @queue@ /must/ be a valid+--     'Vulkan.Core10.Handles.Queue' handle+--+-- -   #VUID-vkQueuePresentKHR-pPresentInfo-parameter# @pPresentInfo@+--     /must/ be a valid pointer to a valid 'PresentInfoKHR' structure+--+-- == Host Synchronization+--+-- -   Host access to @queue@ /must/ be externally synchronized+--+-- -   Host access to @pPresentInfo->pWaitSemaphores@[] /must/ be+--     externally synchronized+--+-- -   Host access to @pPresentInfo->pSwapchains@[] /must/ be externally+--     synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | -                                                                                                                          | -                                                                                                                      | Any                                                                                                                   | -                                                                                                                                   |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'+--+-- = See Also+--+-- 'PresentInfoKHR', 'Vulkan.Core10.Handles.Queue'+queuePresentKHR :: forall a io+                 . (Extendss PresentInfoKHR a, PokeChain a, MonadIO io)+                => -- | @queue@ is a queue that is capable of presentation to the target+                   -- surface’s platform on the same device as the image’s swapchain.+                   Queue+                -> -- | @pPresentInfo@ is a pointer to a 'PresentInfoKHR' structure specifying+                   -- parameters of the presentation.+                   (PresentInfoKHR a)+                -> io (Result)+queuePresentKHR queue presentInfo = liftIO . evalContT $ do+  let vkQueuePresentKHRPtr = pVkQueuePresentKHR (deviceCmds (queue :: Queue))+  lift $ unless (vkQueuePresentKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkQueuePresentKHR is null" Nothing Nothing+  let vkQueuePresentKHR' = mkVkQueuePresentKHR vkQueuePresentKHRPtr+  pPresentInfo <- ContT $ withCStruct (presentInfo)+  r <- lift $ vkQueuePresentKHR' (queueHandle (queue)) (forgetExtensions pPresentInfo)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetDeviceGroupPresentCapabilitiesKHR+  :: FunPtr (Ptr Device_T -> Ptr DeviceGroupPresentCapabilitiesKHR -> IO Result) -> Ptr Device_T -> Ptr DeviceGroupPresentCapabilitiesKHR -> IO Result++-- | vkGetDeviceGroupPresentCapabilitiesKHR - Query present capabilities from+-- other physical devices+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.Device', 'DeviceGroupPresentCapabilitiesKHR'+getDeviceGroupPresentCapabilitiesKHR :: forall io+                                      . (MonadIO io)+                                     => -- | @device@ is the logical device.+                                        --+                                        -- #VUID-vkGetDeviceGroupPresentCapabilitiesKHR-device-parameter# @device@+                                        -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+                                        Device+                                     -> io (DeviceGroupPresentCapabilitiesKHR)+getDeviceGroupPresentCapabilitiesKHR device = liftIO . evalContT $ do+  let vkGetDeviceGroupPresentCapabilitiesKHRPtr = pVkGetDeviceGroupPresentCapabilitiesKHR (deviceCmds (device :: Device))+  lift $ unless (vkGetDeviceGroupPresentCapabilitiesKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceGroupPresentCapabilitiesKHR is null" Nothing Nothing+  let vkGetDeviceGroupPresentCapabilitiesKHR' = mkVkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHRPtr+  pPDeviceGroupPresentCapabilities <- ContT (withZeroCStruct @DeviceGroupPresentCapabilitiesKHR)+  r <- lift $ vkGetDeviceGroupPresentCapabilitiesKHR' (deviceHandle (device)) (pPDeviceGroupPresentCapabilities)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pDeviceGroupPresentCapabilities <- lift $ peekCStruct @DeviceGroupPresentCapabilitiesKHR pPDeviceGroupPresentCapabilities+  pure $ (pDeviceGroupPresentCapabilities)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetDeviceGroupSurfacePresentModesKHR+  :: FunPtr (Ptr Device_T -> SurfaceKHR -> Ptr DeviceGroupPresentModeFlagsKHR -> IO Result) -> Ptr Device_T -> SurfaceKHR -> Ptr DeviceGroupPresentModeFlagsKHR -> IO Result++-- | vkGetDeviceGroupSurfacePresentModesKHR - Query present capabilities for+-- a surface+--+-- = Description+--+-- The modes returned by this command are not invariant, and /may/ change+-- in response to the surface being moved, resized, or occluded. These+-- modes /must/ be a subset of the modes returned by+-- 'getDeviceGroupPresentCapabilitiesKHR'.+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkGetDeviceGroupSurfacePresentModesKHR-device-parameter#+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-parameter#+--     @surface@ /must/ be a valid 'Vulkan.Extensions.Handles.SurfaceKHR'+--     handle+--+-- -   #VUID-vkGetDeviceGroupSurfacePresentModesKHR-pModes-parameter#+--     @pModes@ /must/ be a valid pointer to a+--     'DeviceGroupPresentModeFlagsKHR' value+--+-- -   #VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent# Both of+--     @device@, and @surface@ /must/ have been created, allocated, or+--     retrieved from the same 'Vulkan.Core10.Handles.Instance'+--+-- == Host Synchronization+--+-- -   Host access to @surface@ /must/ be externally synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.Device', 'DeviceGroupPresentModeFlagsKHR',+-- 'Vulkan.Extensions.Handles.SurfaceKHR'+getDeviceGroupSurfacePresentModesKHR :: forall io+                                      . (MonadIO io)+                                     => -- | @device@ is the logical device.+                                        Device+                                     -> -- | @surface@ is the surface.+                                        SurfaceKHR+                                     -> io (("modes" ::: DeviceGroupPresentModeFlagsKHR))+getDeviceGroupSurfacePresentModesKHR device surface = liftIO . evalContT $ do+  let vkGetDeviceGroupSurfacePresentModesKHRPtr = pVkGetDeviceGroupSurfacePresentModesKHR (deviceCmds (device :: Device))+  lift $ unless (vkGetDeviceGroupSurfacePresentModesKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceGroupSurfacePresentModesKHR is null" Nothing Nothing+  let vkGetDeviceGroupSurfacePresentModesKHR' = mkVkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHRPtr+  pPModes <- ContT $ bracket (callocBytes @DeviceGroupPresentModeFlagsKHR 4) free+  r <- lift $ vkGetDeviceGroupSurfacePresentModesKHR' (deviceHandle (device)) (surface) (pPModes)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pModes <- lift $ peek @DeviceGroupPresentModeFlagsKHR pPModes+  pure $ (pModes)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkAcquireNextImage2KHRUnsafe+  :: FunPtr (Ptr Device_T -> Ptr AcquireNextImageInfoKHR -> Ptr Word32 -> IO Result) -> Ptr Device_T -> Ptr AcquireNextImageInfoKHR -> Ptr Word32 -> IO Result++foreign import ccall+  "dynamic" mkVkAcquireNextImage2KHRSafe+  :: FunPtr (Ptr Device_T -> Ptr AcquireNextImageInfoKHR -> Ptr Word32 -> IO Result) -> Ptr Device_T -> Ptr AcquireNextImageInfoKHR -> Ptr Word32 -> IO Result++-- | acquireNextImage2KHR with selectable safeness+acquireNextImage2KHRSafeOrUnsafe :: forall io+                                  . (MonadIO io)+                                 => -- No documentation found for TopLevel ""+                                    (FunPtr (Ptr Device_T -> Ptr AcquireNextImageInfoKHR -> Ptr Word32 -> IO Result) -> Ptr Device_T -> Ptr AcquireNextImageInfoKHR -> Ptr Word32 -> IO Result)+                                 -> -- | @device@ is the device associated with @swapchain@.+                                    Device+                                 -> -- | @pAcquireInfo@ is a pointer to a 'AcquireNextImageInfoKHR' structure+                                    -- containing parameters of the acquire.+                                    ("acquireInfo" ::: AcquireNextImageInfoKHR)+                                 -> io (Result, ("imageIndex" ::: Word32))+acquireNextImage2KHRSafeOrUnsafe mkVkAcquireNextImage2KHR device acquireInfo = liftIO . evalContT $ do+  let vkAcquireNextImage2KHRPtr = pVkAcquireNextImage2KHR (deviceCmds (device :: Device))+  lift $ unless (vkAcquireNextImage2KHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkAcquireNextImage2KHR is null" Nothing Nothing+  let vkAcquireNextImage2KHR' = mkVkAcquireNextImage2KHR vkAcquireNextImage2KHRPtr+  pAcquireInfo <- ContT $ withCStruct (acquireInfo)+  pPImageIndex <- ContT $ bracket (callocBytes @Word32 4) free+  r <- lift $ vkAcquireNextImage2KHR' (deviceHandle (device)) pAcquireInfo (pPImageIndex)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pImageIndex <- lift $ peek @Word32 pPImageIndex+  pure $ (r, pImageIndex)++-- | vkAcquireNextImage2KHR - Retrieve the index of the next available+-- presentable image+--+-- == Valid Usage+--+-- -   #VUID-vkAcquireNextImage2KHR-swapchain-01803# If the number of+--     currently acquired images is greater than the difference between the+--     number of images in the @swapchain@ member of @pAcquireInfo@ and the+--     value of+--     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@minImageCount@+--     as returned by a call to+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'+--     with the @surface@ used to create @swapchain@, the @timeout@ member+--     of @pAcquireInfo@ /must/ not be @UINT64_MAX@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkAcquireNextImage2KHR-device-parameter# @device@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkAcquireNextImage2KHR-pAcquireInfo-parameter# @pAcquireInfo@+--     /must/ be a valid pointer to a valid 'AcquireNextImageInfoKHR'+--     structure+--+-- -   #VUID-vkAcquireNextImage2KHR-pImageIndex-parameter# @pImageIndex@+--     /must/ be a valid pointer to a @uint32_t@ value+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Vulkan.Core10.Enums.Result.TIMEOUT'+--+--     -   'Vulkan.Core10.Enums.Result.NOT_READY'+--+--     -   'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'+--+-- = See Also+--+-- 'AcquireNextImageInfoKHR', 'Vulkan.Core10.Handles.Device'+acquireNextImage2KHR :: forall io+                      . (MonadIO io)+                     => -- | @device@ is the device associated with @swapchain@.+                        Device+                     -> -- | @pAcquireInfo@ is a pointer to a 'AcquireNextImageInfoKHR' structure+                        -- containing parameters of the acquire.+                        ("acquireInfo" ::: AcquireNextImageInfoKHR)+                     -> io (Result, ("imageIndex" ::: Word32))+acquireNextImage2KHR = acquireNextImage2KHRSafeOrUnsafe mkVkAcquireNextImage2KHRUnsafe++-- | A variant of 'acquireNextImage2KHR' which makes a *safe* FFI call+acquireNextImage2KHRSafe :: forall io+                          . (MonadIO io)+                         => -- | @device@ is the device associated with @swapchain@.+                            Device+                         -> -- | @pAcquireInfo@ is a pointer to a 'AcquireNextImageInfoKHR' structure+                            -- containing parameters of the acquire.+                            ("acquireInfo" ::: AcquireNextImageInfoKHR)+                         -> io (Result, ("imageIndex" ::: Word32))+acquireNextImage2KHRSafe = acquireNextImage2KHRSafeOrUnsafe mkVkAcquireNextImage2KHRSafe+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetPhysicalDevicePresentRectanglesKHR+  :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr Word32 -> Ptr Rect2D -> IO Result) -> Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr Word32 -> Ptr Rect2D -> IO Result++-- | vkGetPhysicalDevicePresentRectanglesKHR - Query present rectangles for a+-- surface on a physical device+--+-- = Description+--+-- If @pRects@ is @NULL@, then the number of rectangles used when+-- presenting the given @surface@ is returned in @pRectCount@. Otherwise,+-- @pRectCount@ /must/ point to a variable set by the user to the number of+-- elements in the @pRects@ array, and on return the variable is+-- overwritten with the number of structures actually written to @pRects@.+-- If the value of @pRectCount@ is less than the number of rectangles, at+-- most @pRectCount@ structures will be written. If @pRectCount@ is smaller+-- than the number of rectangles used for the given @surface@,+-- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of+-- 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate that not all the+-- available values were returned.+--+-- The values returned by this command are not invariant, and /may/ change+-- in response to the surface being moved, resized, or occluded.+--+-- The rectangles returned by this command /must/ not overlap.+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter#+--     @physicalDevice@ /must/ be a valid+--     'Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- -   #VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter#+--     @surface@ /must/ be a valid 'Vulkan.Extensions.Handles.SurfaceKHR'+--     handle+--+-- -   #VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRectCount-parameter#+--     @pRectCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- -   #VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter# If+--     the value referenced by @pRectCount@ is not @0@, and @pRects@ is not+--     @NULL@, @pRects@ /must/ be a valid pointer to an array of+--     @pRectCount@ 'Vulkan.Core10.FundamentalTypes.Rect2D' structures+--+-- -   #VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent# Both of+--     @physicalDevice@, and @surface@ /must/ have been created, allocated,+--     or retrieved from the same 'Vulkan.Core10.Handles.Instance'+--+-- == Host Synchronization+--+-- -   Host access to @surface@ /must/ be externally synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.PhysicalDevice',+-- 'Vulkan.Core10.FundamentalTypes.Rect2D',+-- 'Vulkan.Extensions.Handles.SurfaceKHR'+getPhysicalDevicePresentRectanglesKHR :: forall io+                                       . (MonadIO io)+                                      => -- | @physicalDevice@ is the physical device.+                                         PhysicalDevice+                                      -> -- | @surface@ is the surface.+                                         SurfaceKHR+                                      -> io (Result, ("rects" ::: Vector Rect2D))+getPhysicalDevicePresentRectanglesKHR physicalDevice surface = liftIO . evalContT $ do+  let vkGetPhysicalDevicePresentRectanglesKHRPtr = pVkGetPhysicalDevicePresentRectanglesKHR (instanceCmds (physicalDevice :: PhysicalDevice))+  lift $ unless (vkGetPhysicalDevicePresentRectanglesKHRPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDevicePresentRectanglesKHR is null" Nothing Nothing+  let vkGetPhysicalDevicePresentRectanglesKHR' = mkVkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHRPtr+  let physicalDevice' = physicalDeviceHandle (physicalDevice)+  pPRectCount <- ContT $ bracket (callocBytes @Word32 4) free+  r <- lift $ vkGetPhysicalDevicePresentRectanglesKHR' physicalDevice' (surface) (pPRectCount) (nullPtr)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pRectCount <- lift $ peek @Word32 pPRectCount+  pPRects <- ContT $ bracket (callocBytes @Rect2D ((fromIntegral (pRectCount)) * 16)) free+  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPRects `advancePtrBytes` (i * 16) :: Ptr Rect2D) . ($ ())) [0..(fromIntegral (pRectCount)) - 1]+  r' <- lift $ vkGetPhysicalDevicePresentRectanglesKHR' physicalDevice' (surface) (pPRectCount) ((pPRects))+  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+  pRectCount' <- lift $ peek @Word32 pPRectCount+  pRects' <- lift $ generateM (fromIntegral (pRectCount')) (\i -> peekCStruct @Rect2D (((pPRects) `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))+  pure $ ((r'), pRects')+++-- | VkSwapchainCreateInfoKHR - Structure specifying parameters of a newly+-- created swapchain object+--+-- = Description+--+-- Note+--+-- On some platforms, it is normal that @maxImageExtent@ /may/ become @(0,+-- 0)@, for example when the window is minimized. In such a case, it is not+-- possible to create a swapchain due to the Valid Usage requirements.+--+-- -   @imageArrayLayers@ is the number of views in a multiview\/stereo+--     surface. For non-stereoscopic-3D applications, this value is 1.+--+-- -   @imageUsage@ is a bitmask of+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'+--     describing the intended usage of the (acquired) swapchain images.+--+-- -   @imageSharingMode@ is the sharing mode used for the image(s) of the+--     swapchain.+--+-- -   @queueFamilyIndexCount@ is the number of queue families having+--     access to the image(s) of the swapchain when @imageSharingMode@ is+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT'.+--+-- -   @pQueueFamilyIndices@ is a pointer to an array of queue family+--     indices having access to the images(s) of the swapchain when+--     @imageSharingMode@ is+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT'.+--+-- -   @preTransform@ is a+--     'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagBitsKHR' value+--     describing the transform, relative to the presentation engine’s+--     natural orientation, applied to the image content prior to+--     presentation. If it does not match the @currentTransform@ value+--     returned by+--     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR',+--     the presentation engine will transform the image content as part of+--     the presentation operation.+--+-- -   @compositeAlpha@ is a+--     'Vulkan.Extensions.VK_KHR_surface.CompositeAlphaFlagBitsKHR' value+--     indicating the alpha compositing mode to use when this surface is+--     composited together with other surfaces on certain window systems.+--+-- -   @presentMode@ is the presentation mode the swapchain will use. A+--     swapchain’s present mode determines how incoming present requests+--     will be processed and queued internally.+--+-- -   @clipped@ specifies whether the Vulkan implementation is allowed to+--     discard rendering operations that affect regions of the surface that+--     are not visible.+--+--     -   If set to 'Vulkan.Core10.FundamentalTypes.TRUE', the presentable+--         images associated with the swapchain /may/ not own all of their+--         pixels. Pixels in the presentable images that correspond to+--         regions of the target surface obscured by another window on the+--         desktop, or subject to some other clipping mechanism will have+--         undefined content when read back. Fragment shaders /may/ not+--         execute for these pixels, and thus any side effects they would+--         have had will not occur. 'Vulkan.Core10.FundamentalTypes.TRUE'+--         value does not guarantee any clipping will occur, but allows+--         more optimal presentation methods to be used on some platforms.+--+--     -   If set to 'Vulkan.Core10.FundamentalTypes.FALSE', presentable+--         images associated with the swapchain will own all of the pixels+--         they contain.+--+-- Note+--+-- Applications /should/ set this value to+-- 'Vulkan.Core10.FundamentalTypes.TRUE' if they do not expect to read back+-- the content of presentable images before presenting them or after+-- reacquiring them, and if their fragment shaders do not have any side+-- effects that require them to run for all pixels in the presentable+-- image.+--+-- -   @oldSwapchain@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', or the+--     existing non-retired swapchain currently associated with @surface@.+--     Providing a valid @oldSwapchain@ /may/ aid in the resource reuse,+--     and also allows the application to still present any images that are+--     already acquired from it.+--+-- Upon calling 'createSwapchainKHR' with an @oldSwapchain@ that is not+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @oldSwapchain@ is+-- retired — even if creation of the new swapchain fails. The new swapchain+-- is created in the non-retired state whether or not @oldSwapchain@ is+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE'.+--+-- Upon calling 'createSwapchainKHR' with an @oldSwapchain@ that is not+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', any images from @oldSwapchain@+-- that are not acquired by the application /may/ be freed by the+-- implementation, which /may/ occur even if creation of the new swapchain+-- fails. The application /can/ destroy @oldSwapchain@ to free all memory+-- associated with @oldSwapchain@.+--+-- Note+--+-- Multiple retired swapchains /can/ be associated with the same+-- 'Vulkan.Extensions.Handles.SurfaceKHR' through multiple uses of+-- @oldSwapchain@ that outnumber calls to 'destroySwapchainKHR'.+--+-- After @oldSwapchain@ is retired, the application /can/ pass to+-- 'queuePresentKHR' any images it had already acquired from+-- @oldSwapchain@. E.g., an application may present an image from the old+-- swapchain before an image from the new swapchain is ready to be+-- presented. As usual, 'queuePresentKHR' /may/ fail if @oldSwapchain@ has+-- entered a state that causes+-- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' to be returned.+--+-- The application /can/ continue to use a shared presentable image+-- obtained from @oldSwapchain@ until a presentable image is acquired from+-- the new swapchain, as long as it has not entered a state that causes it+-- to return 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'.+--+-- == Valid Usage+--+-- -   #VUID-VkSwapchainCreateInfoKHR-surface-01270# @surface@ /must/ be a+--     surface that is supported by the device as determined using+--     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR'+--+-- -   #VUID-VkSwapchainCreateInfoKHR-minImageCount-01272# @minImageCount@+--     /must/ be less than or equal to the value returned in the+--     @maxImageCount@ member of the+--     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' structure+--     returned by+--     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'+--     for the surface if the returned @maxImageCount@ is not zero+--+-- -   #VUID-VkSwapchainCreateInfoKHR-presentMode-02839# If @presentMode@+--     is not+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'+--     nor+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR',+--     then @minImageCount@ /must/ be greater than or equal to the value+--     returned in the @minImageCount@ member of the+--     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' structure+--     returned by+--     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'+--     for the surface+--+-- -   #VUID-VkSwapchainCreateInfoKHR-minImageCount-01383# @minImageCount@+--     /must/ be @1@ if @presentMode@ is either+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'+--     or+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'+--+-- -   #VUID-VkSwapchainCreateInfoKHR-imageFormat-01273# @imageFormat@ and+--     @imageColorSpace@ /must/ match the @format@ and @colorSpace@+--     members, respectively, of one of the+--     'Vulkan.Extensions.VK_KHR_surface.SurfaceFormatKHR' structures+--     returned by+--     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceFormatsKHR'+--     for the surface+--+-- -   #VUID-VkSwapchainCreateInfoKHR-imageExtent-01274# @imageExtent@+--     /must/ be between @minImageExtent@ and @maxImageExtent@, inclusive,+--     where @minImageExtent@ and @maxImageExtent@ are members of the+--     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' structure+--     returned by+--     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'+--     for the surface+--+-- -   #VUID-VkSwapchainCreateInfoKHR-imageExtent-01689# @imageExtent@+--     members @width@ and @height@ /must/ both be non-zero+--+-- -   #VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275#+--     @imageArrayLayers@ /must/ be greater than @0@ and less than or equal+--     to the @maxImageArrayLayers@ member of the+--     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' structure+--     returned by+--     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'+--     for the surface+--+-- -   #VUID-VkSwapchainCreateInfoKHR-presentMode-01427# If @presentMode@+--     is 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_IMMEDIATE_KHR',+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR',+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' or+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_RELAXED_KHR',+--     @imageUsage@ /must/ be a subset of the supported usage flags present+--     in the @supportedUsageFlags@ member of the+--     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' structure+--     returned by+--     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'+--     for @surface@+--+-- -   #VUID-VkSwapchainCreateInfoKHR-imageUsage-01384# If @presentMode@ is+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'+--     or+--     'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR',+--     @imageUsage@ /must/ be a subset of the supported usage flags present+--     in the @sharedPresentSupportedUsageFlags@ member of the+--     'Vulkan.Extensions.VK_KHR_shared_presentable_image.SharedPresentSurfaceCapabilitiesKHR'+--     structure returned by+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'+--     for @surface@+--+-- -   #VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277# If+--     @imageSharingMode@ is+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+--     @pQueueFamilyIndices@ /must/ be a valid pointer to an array of+--     @queueFamilyIndexCount@ @uint32_t@ values+--+-- -   #VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278# If+--     @imageSharingMode@ is+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+--     @queueFamilyIndexCount@ /must/ be greater than @1@+--+-- -   #VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428# If+--     @imageSharingMode@ is+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', each+--     element of @pQueueFamilyIndices@ /must/ be unique and /must/ be less+--     than @pQueueFamilyPropertyCount@ returned by either+--     'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties'+--     or+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2'+--     for the @physicalDevice@ that was used to create @device@+--+-- -   #VUID-VkSwapchainCreateInfoKHR-preTransform-01279# @preTransform@+--     /must/ be one of the bits present in the @supportedTransforms@+--     member of the+--     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' structure+--     returned by+--     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'+--     for the surface+--+-- -   #VUID-VkSwapchainCreateInfoKHR-compositeAlpha-01280#+--     @compositeAlpha@ /must/ be one of the bits present in the+--     @supportedCompositeAlpha@ member of the+--     'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' structure+--     returned by+--     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'+--     for the surface+--+-- -   #VUID-VkSwapchainCreateInfoKHR-presentMode-01281# @presentMode@+--     /must/ be one of the+--     'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR' values returned by+--     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR'+--     for the surface+--+-- -   #VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429# If the+--     logical device was created with+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo'::@physicalDeviceCount@+--     equal to 1, @flags@ /must/ not contain+--     'SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR'+--+-- -   #VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933# If @oldSwapchain@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @oldSwapchain@+--     /must/ be a non-retired swapchain associated with native window+--     referred to by @surface@+--+-- -   #VUID-VkSwapchainCreateInfoKHR-imageFormat-01778# The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#swapchain-wsi-image-create-info implied image creation parameters>+--     of the swapchain /must/ be supported as reported by+--     'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties'+--+-- -   #VUID-VkSwapchainCreateInfoKHR-flags-03168# If @flags@ contains+--     'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR' then the @pNext@ chain+--     /must/ include a+--     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'+--     structure with a @viewFormatCount@ greater than zero and+--     @pViewFormats@ /must/ have an element equal to @imageFormat@+--+-- -   #VUID-VkSwapchainCreateInfoKHR-pNext-04099# If a+--     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'+--     structure was included in the @pNext@ chain and+--     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@+--     is not zero then all of the formats in+--     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@+--     /must/ be compatible with the @format@ as described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility compatibility table>+--+-- -   #VUID-VkSwapchainCreateInfoKHR-flags-04100# If @flags@ does not+--     contain 'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR' and the @pNext@+--     chain include a+--     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'+--     structure then+--     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@+--     /must/ be @0@ or @1@+--+-- -   #VUID-VkSwapchainCreateInfoKHR-flags-03187# If @flags@ contains+--     'SWAPCHAIN_CREATE_PROTECTED_BIT_KHR', then+--     'Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR'::@supportsProtected@+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE' in the+--     'Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR'+--     structure returned by+--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'+--     for @surface@+--+-- -   #VUID-VkSwapchainCreateInfoKHR-pNext-02679# If the @pNext@ chain+--     includes a+--     'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveInfoEXT'+--     structure with its @fullScreenExclusive@ member set to+--     'Vulkan.Extensions.VK_EXT_full_screen_exclusive.FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT',+--     and @surface@ was created using+--     'Vulkan.Extensions.VK_KHR_win32_surface.createWin32SurfaceKHR', a+--     'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT'+--     structure /must/ be included in the @pNext@ chain+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkSwapchainCreateInfoKHR-sType-sType# @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR'+--+-- -   #VUID-VkSwapchainCreateInfoKHR-pNext-pNext# Each @pNext@ member of+--     any structure (including this one) in the @pNext@ chain /must/ be+--     either @NULL@ or a pointer to a valid instance of+--     'DeviceGroupSwapchainCreateInfoKHR',+--     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',+--     'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveInfoEXT',+--     'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT',+--     'Vulkan.Extensions.VK_EXT_display_control.SwapchainCounterCreateInfoEXT',+--     or+--     'Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD'+--+-- -   #VUID-VkSwapchainCreateInfoKHR-sType-unique# The @sType@ value of+--     each struct in the @pNext@ chain /must/ be unique+--+-- -   #VUID-VkSwapchainCreateInfoKHR-flags-parameter# @flags@ /must/ be a+--     valid combination of 'SwapchainCreateFlagBitsKHR' values+--+-- -   #VUID-VkSwapchainCreateInfoKHR-surface-parameter# @surface@ /must/+--     be a valid 'Vulkan.Extensions.Handles.SurfaceKHR' handle+--+-- -   #VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter# @imageFormat@+--     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value+--+-- -   #VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter#+--     @imageColorSpace@ /must/ be a valid+--     'Vulkan.Extensions.VK_KHR_surface.ColorSpaceKHR' value+--+-- -   #VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter# @imageUsage@+--     /must/ be a valid combination of+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' values+--+-- -   #VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask#+--     @imageUsage@ /must/ not be @0@+--+-- -   #VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter#+--     @imageSharingMode@ /must/ be a valid+--     'Vulkan.Core10.Enums.SharingMode.SharingMode' value+--+-- -   #VUID-VkSwapchainCreateInfoKHR-preTransform-parameter#+--     @preTransform@ /must/ be a valid+--     'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagBitsKHR' value+--+-- -   #VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter#+--     @compositeAlpha@ /must/ be a valid+--     'Vulkan.Extensions.VK_KHR_surface.CompositeAlphaFlagBitsKHR' value+--+-- -   #VUID-VkSwapchainCreateInfoKHR-presentMode-parameter# @presentMode@+--     /must/ be a valid 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR'+--     value+--+-- -   #VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parameter# If+--     @oldSwapchain@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @oldSwapchain@ /must/ be a valid+--     'Vulkan.Extensions.Handles.SwapchainKHR' handle+--+-- -   #VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parent# If+--     @oldSwapchain@ is a valid handle, it /must/ have been created,+--     allocated, or retrieved from @surface@+--+-- -   #VUID-VkSwapchainCreateInfoKHR-commonparent# Both of @oldSwapchain@,+--     and @surface@ that are valid handles of non-ignored parameters+--     /must/ have been created, allocated, or retrieved from the same+--     'Vulkan.Core10.Handles.Instance'+--+-- = See Also+--+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Extensions.VK_KHR_surface.ColorSpaceKHR',+-- 'Vulkan.Extensions.VK_KHR_surface.CompositeAlphaFlagBitsKHR',+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',+-- 'Vulkan.Core10.Enums.Format.Format',+-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',+-- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR',+-- 'Vulkan.Core10.Enums.SharingMode.SharingMode',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Vulkan.Extensions.Handles.SurfaceKHR',+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagBitsKHR',+-- 'SwapchainCreateFlagsKHR', 'Vulkan.Extensions.Handles.SwapchainKHR',+-- 'Vulkan.Extensions.VK_KHR_display_swapchain.createSharedSwapchainsKHR',+-- 'createSwapchainKHR'+data SwapchainCreateInfoKHR (es :: [Type]) = SwapchainCreateInfoKHR+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @flags@ is a bitmask of 'SwapchainCreateFlagBitsKHR' indicating+    -- parameters of the swapchain creation.+    flags :: SwapchainCreateFlagsKHR+  , -- | @surface@ is the surface onto which the swapchain will present images.+    -- If the creation succeeds, the swapchain becomes associated with+    -- @surface@.+    surface :: SurfaceKHR+  , -- | @minImageCount@ is the minimum number of presentable images that the+    -- application needs. The implementation will either create the swapchain+    -- with at least that many images, or it will fail to create the swapchain.+    minImageCount :: Word32+  , -- | @imageFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value specifying+    -- the format the swapchain image(s) will be created with.+    imageFormat :: Format+  , -- | @imageColorSpace@ is a 'Vulkan.Extensions.VK_KHR_surface.ColorSpaceKHR'+    -- value specifying the way the swapchain interprets image data.+    imageColorSpace :: ColorSpaceKHR+  , -- | @imageExtent@ is the size (in pixels) of the swapchain image(s). The+    -- behavior is platform-dependent if the image extent does not match the+    -- surface’s @currentExtent@ as returned by+    -- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'.+    imageExtent :: Extent2D+  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageArrayLayers"+    imageArrayLayers :: Word32+  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageUsage"+    imageUsage :: ImageUsageFlags+  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageSharingMode"+    imageSharingMode :: SharingMode+  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "pQueueFamilyIndices"+    queueFamilyIndices :: Vector Word32+  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "preTransform"+    preTransform :: SurfaceTransformFlagBitsKHR+  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "compositeAlpha"+    compositeAlpha :: CompositeAlphaFlagBitsKHR+  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "presentMode"+    presentMode :: PresentModeKHR+  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "clipped"+    clipped :: Bool+  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "oldSwapchain"+    oldSwapchain :: SwapchainKHR+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (SwapchainCreateInfoKHR (es :: [Type]))+#endif+deriving instance Show (Chain es) => Show (SwapchainCreateInfoKHR es)++instance Extensible SwapchainCreateInfoKHR where+  extensibleType = STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR+  setNext x next = x{next = next}+  getNext SwapchainCreateInfoKHR{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends SwapchainCreateInfoKHR e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @SurfaceFullScreenExclusiveWin32InfoEXT = Just f+    | Just Refl <- eqT @e @SurfaceFullScreenExclusiveInfoEXT = Just f+    | Just Refl <- eqT @e @ImageFormatListCreateInfo = Just f+    | Just Refl <- eqT @e @SwapchainDisplayNativeHdrCreateInfoAMD = Just f+    | Just Refl <- eqT @e @DeviceGroupSwapchainCreateInfoKHR = Just f+    | Just Refl <- eqT @e @SwapchainCounterCreateInfoEXT = Just f+    | otherwise = Nothing++instance (Extendss SwapchainCreateInfoKHR es, PokeChain es) => ToCStruct (SwapchainCreateInfoKHR es) where+  withCStruct x f = allocaBytesAligned 104 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p SwapchainCreateInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr SwapchainCreateFlagsKHR)) (flags)+    lift $ poke ((p `plusPtr` 24 :: Ptr SurfaceKHR)) (surface)+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (minImageCount)+    lift $ poke ((p `plusPtr` 36 :: Ptr Format)) (imageFormat)+    lift $ poke ((p `plusPtr` 40 :: Ptr ColorSpaceKHR)) (imageColorSpace)+    lift $ poke ((p `plusPtr` 44 :: Ptr Extent2D)) (imageExtent)+    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (imageArrayLayers)+    lift $ poke ((p `plusPtr` 56 :: Ptr ImageUsageFlags)) (imageUsage)+    lift $ poke ((p `plusPtr` 60 :: Ptr SharingMode)) (imageSharingMode)+    lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (queueFamilyIndices)) :: Word32))+    pPQueueFamilyIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (queueFamilyIndices)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPQueueFamilyIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (queueFamilyIndices)+    lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr Word32))) (pPQueueFamilyIndices')+    lift $ poke ((p `plusPtr` 80 :: Ptr SurfaceTransformFlagBitsKHR)) (preTransform)+    lift $ poke ((p `plusPtr` 84 :: Ptr CompositeAlphaFlagBitsKHR)) (compositeAlpha)+    lift $ poke ((p `plusPtr` 88 :: Ptr PresentModeKHR)) (presentMode)+    lift $ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (clipped))+    lift $ poke ((p `plusPtr` 96 :: Ptr SwapchainKHR)) (oldSwapchain)+    lift $ f+  cStructSize = 104+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    lift $ poke ((p `plusPtr` 24 :: Ptr SurfaceKHR)) (zero)+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+    lift $ poke ((p `plusPtr` 36 :: Ptr Format)) (zero)+    lift $ poke ((p `plusPtr` 40 :: Ptr ColorSpaceKHR)) (zero)+    lift $ poke ((p `plusPtr` 44 :: Ptr Extent2D)) (zero)+    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)+    lift $ poke ((p `plusPtr` 56 :: Ptr ImageUsageFlags)) (zero)+    lift $ poke ((p `plusPtr` 60 :: Ptr SharingMode)) (zero)+    pPQueueFamilyIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPQueueFamilyIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+    lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr Word32))) (pPQueueFamilyIndices')+    lift $ poke ((p `plusPtr` 80 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)+    lift $ poke ((p `plusPtr` 84 :: Ptr CompositeAlphaFlagBitsKHR)) (zero)+    lift $ poke ((p `plusPtr` 88 :: Ptr PresentModeKHR)) (zero)+    lift $ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (zero))+    lift $ f++instance (Extendss SwapchainCreateInfoKHR es, PeekChain es) => FromCStruct (SwapchainCreateInfoKHR es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    flags <- peek @SwapchainCreateFlagsKHR ((p `plusPtr` 16 :: Ptr SwapchainCreateFlagsKHR))+    surface <- peek @SurfaceKHR ((p `plusPtr` 24 :: Ptr SurfaceKHR))+    minImageCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    imageFormat <- peek @Format ((p `plusPtr` 36 :: Ptr Format))+    imageColorSpace <- peek @ColorSpaceKHR ((p `plusPtr` 40 :: Ptr ColorSpaceKHR))+    imageExtent <- peekCStruct @Extent2D ((p `plusPtr` 44 :: Ptr Extent2D))+    imageArrayLayers <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))+    imageUsage <- peek @ImageUsageFlags ((p `plusPtr` 56 :: Ptr ImageUsageFlags))+    imageSharingMode <- peek @SharingMode ((p `plusPtr` 60 :: Ptr SharingMode))+    queueFamilyIndexCount <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))+    pQueueFamilyIndices <- peek @(Ptr Word32) ((p `plusPtr` 72 :: Ptr (Ptr Word32)))+    pQueueFamilyIndices' <- generateM (fromIntegral queueFamilyIndexCount) (\i -> peek @Word32 ((pQueueFamilyIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+    preTransform <- peek @SurfaceTransformFlagBitsKHR ((p `plusPtr` 80 :: Ptr SurfaceTransformFlagBitsKHR))+    compositeAlpha <- peek @CompositeAlphaFlagBitsKHR ((p `plusPtr` 84 :: Ptr CompositeAlphaFlagBitsKHR))+    presentMode <- peek @PresentModeKHR ((p `plusPtr` 88 :: Ptr PresentModeKHR))+    clipped <- peek @Bool32 ((p `plusPtr` 92 :: Ptr Bool32))+    oldSwapchain <- peek @SwapchainKHR ((p `plusPtr` 96 :: Ptr SwapchainKHR))+    pure $ SwapchainCreateInfoKHR+             next flags surface minImageCount imageFormat imageColorSpace imageExtent imageArrayLayers imageUsage imageSharingMode pQueueFamilyIndices' preTransform compositeAlpha presentMode (bool32ToBool clipped) oldSwapchain++instance es ~ '[] => Zero (SwapchainCreateInfoKHR es) where+  zero = SwapchainCreateInfoKHR+           ()+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           mempty+           zero+           zero+           zero+           zero+           zero+++-- | VkPresentInfoKHR - Structure describing parameters of a queue+-- presentation+--+-- = Description+--+-- Before an application /can/ present an image, the image’s layout /must/+-- be transitioned to the+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR' layout,+-- or for a shared presentable image the+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+-- layout.+--+-- Note+--+-- When transitioning the image to+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR' or+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR', there is+-- no need to delay subsequent processing, or perform any visibility+-- operations (as 'queuePresentKHR' performs automatic visibility+-- operations). To achieve this, the @dstAccessMask@ member of the+-- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' /should/ be set to @0@,+-- and the @dstStageMask@ parameter /should/ be set to+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT'.+--+-- == Valid Usage+--+-- -   #VUID-VkPresentInfoKHR-pImageIndices-01430# Each element of+--     @pImageIndices@ /must/ be the index of a presentable image acquired+--     from the swapchain specified by the corresponding element of the+--     @pSwapchains@ array, and the presented image subresource /must/ be+--     in the+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR' or+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+--     layout at the time the operation is executed on a+--     'Vulkan.Core10.Handles.Device'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkPresentInfoKHR-sType-sType# @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_INFO_KHR'+--+-- -   #VUID-VkPresentInfoKHR-pNext-pNext# Each @pNext@ member of any+--     structure (including this one) in the @pNext@ chain /must/ be either+--     @NULL@ or a pointer to a valid instance of+--     'DeviceGroupPresentInfoKHR',+--     'Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR',+--     'Vulkan.Extensions.VK_GGP_frame_token.PresentFrameTokenGGP',+--     'Vulkan.Extensions.VK_KHR_incremental_present.PresentRegionsKHR', or+--     'Vulkan.Extensions.VK_GOOGLE_display_timing.PresentTimesInfoGOOGLE'+--+-- -   #VUID-VkPresentInfoKHR-sType-unique# The @sType@ value of each+--     struct in the @pNext@ chain /must/ be unique+--+-- -   #VUID-VkPresentInfoKHR-pWaitSemaphores-parameter# If+--     @waitSemaphoreCount@ is not @0@, @pWaitSemaphores@ /must/ be a valid+--     pointer to an array of @waitSemaphoreCount@ valid+--     'Vulkan.Core10.Handles.Semaphore' handles+--+-- -   #VUID-VkPresentInfoKHR-pSwapchains-parameter# @pSwapchains@ /must/+--     be a valid pointer to an array of @swapchainCount@ valid+--     'Vulkan.Extensions.Handles.SwapchainKHR' handles+--+-- -   #VUID-VkPresentInfoKHR-pImageIndices-parameter# @pImageIndices@+--     /must/ be a valid pointer to an array of @swapchainCount@ @uint32_t@+--     values+--+-- -   #VUID-VkPresentInfoKHR-pResults-parameter# If @pResults@ is not+--     @NULL@, @pResults@ /must/ be a valid pointer to an array of+--     @swapchainCount@ 'Vulkan.Core10.Enums.Result.Result' values+--+-- -   #VUID-VkPresentInfoKHR-swapchainCount-arraylength# @swapchainCount@+--     /must/ be greater than @0@+--+-- -   #VUID-VkPresentInfoKHR-commonparent# Both of the elements of+--     @pSwapchains@, and the elements of @pWaitSemaphores@ that are valid+--     handles of non-ignored parameters /must/ have been created,+--     allocated, or retrieved from the same+--     'Vulkan.Core10.Handles.Instance'+--+-- = See Also+--+-- 'Vulkan.Core10.Enums.Result.Result', 'Vulkan.Core10.Handles.Semaphore',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Vulkan.Extensions.Handles.SwapchainKHR', 'queuePresentKHR'+data PresentInfoKHR (es :: [Type]) = PresentInfoKHR+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @pWaitSemaphores@ is @NULL@ or a pointer to an array of+    -- 'Vulkan.Core10.Handles.Semaphore' objects with @waitSemaphoreCount@+    -- entries, and specifies the semaphores to wait for before issuing the+    -- present request.+    waitSemaphores :: Vector Semaphore+  , -- | @pSwapchains@ is a pointer to an array of+    -- 'Vulkan.Extensions.Handles.SwapchainKHR' objects with @swapchainCount@+    -- entries. A given swapchain /must/ not appear in this list more than+    -- once.+    swapchains :: Vector SwapchainKHR+  , -- | @pImageIndices@ is a pointer to an array of indices into the array of+    -- each swapchain’s presentable images, with @swapchainCount@ entries. Each+    -- entry in this array identifies the image to present on the corresponding+    -- entry in the @pSwapchains@ array.+    imageIndices :: Vector Word32+  , -- | @pResults@ is a pointer to an array of+    -- 'Vulkan.Core10.Enums.Result.Result' typed elements with @swapchainCount@+    -- entries. Applications that do not need per-swapchain results /can/ use+    -- @NULL@ for @pResults@. If non-@NULL@, each entry in @pResults@ will be+    -- set to the 'Vulkan.Core10.Enums.Result.Result' for presenting the+    -- swapchain corresponding to the same index in @pSwapchains@.+    results :: Ptr Result+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PresentInfoKHR (es :: [Type]))+#endif+deriving instance Show (Chain es) => Show (PresentInfoKHR es)++instance Extensible PresentInfoKHR where+  extensibleType = STRUCTURE_TYPE_PRESENT_INFO_KHR+  setNext x next = x{next = next}+  getNext PresentInfoKHR{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends PresentInfoKHR e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @PresentFrameTokenGGP = Just f+    | Just Refl <- eqT @e @PresentTimesInfoGOOGLE = Just f+    | Just Refl <- eqT @e @DeviceGroupPresentInfoKHR = Just f+    | Just Refl <- eqT @e @PresentRegionsKHR = Just f+    | Just Refl <- eqT @e @DisplayPresentInfoKHR = Just f+    | otherwise = Nothing++instance (Extendss PresentInfoKHR es, PokeChain es) => ToCStruct (PresentInfoKHR es) where+  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PresentInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_INFO_KHR)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (waitSemaphores)) :: Word32))+    pPWaitSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (waitSemaphores)) * 8) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (waitSemaphores)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Semaphore))) (pPWaitSemaphores')+    let pSwapchainsLength = Data.Vector.length $ (swapchains)+    lift $ unless ((Data.Vector.length $ (imageIndices)) == pSwapchainsLength) $+      throwIO $ IOError Nothing InvalidArgument "" "pImageIndices and pSwapchains must have the same length" Nothing Nothing+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral pSwapchainsLength :: Word32))+    pPSwapchains' <- ContT $ allocaBytesAligned @SwapchainKHR ((Data.Vector.length (swapchains)) * 8) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPSwapchains' `plusPtr` (8 * (i)) :: Ptr SwapchainKHR) (e)) (swapchains)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SwapchainKHR))) (pPSwapchains')+    pPImageIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (imageIndices)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPImageIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (imageIndices)+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPImageIndices')+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr Result))) (results)+    lift $ f+  cStructSize = 64+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_INFO_KHR)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    pPWaitSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (mempty)) * 8) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (mempty)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Semaphore))) (pPWaitSemaphores')+    pPSwapchains' <- ContT $ allocaBytesAligned @SwapchainKHR ((Data.Vector.length (mempty)) * 8) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPSwapchains' `plusPtr` (8 * (i)) :: Ptr SwapchainKHR) (e)) (mempty)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SwapchainKHR))) (pPSwapchains')+    pPImageIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPImageIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPImageIndices')+    lift $ f++instance (Extendss PresentInfoKHR es, PeekChain es) => FromCStruct (PresentInfoKHR es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    waitSemaphoreCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    pWaitSemaphores <- peek @(Ptr Semaphore) ((p `plusPtr` 24 :: Ptr (Ptr Semaphore)))+    pWaitSemaphores' <- generateM (fromIntegral waitSemaphoreCount) (\i -> peek @Semaphore ((pWaitSemaphores `advancePtrBytes` (8 * (i)) :: Ptr Semaphore)))+    swapchainCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    pSwapchains <- peek @(Ptr SwapchainKHR) ((p `plusPtr` 40 :: Ptr (Ptr SwapchainKHR)))+    pSwapchains' <- generateM (fromIntegral swapchainCount) (\i -> peek @SwapchainKHR ((pSwapchains `advancePtrBytes` (8 * (i)) :: Ptr SwapchainKHR)))+    pImageIndices <- peek @(Ptr Word32) ((p `plusPtr` 48 :: Ptr (Ptr Word32)))+    pImageIndices' <- generateM (fromIntegral swapchainCount) (\i -> peek @Word32 ((pImageIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+    pResults <- peek @(Ptr Result) ((p `plusPtr` 56 :: Ptr (Ptr Result)))+    pure $ PresentInfoKHR+             next pWaitSemaphores' pSwapchains' pImageIndices' pResults++instance es ~ '[] => Zero (PresentInfoKHR es) where+  zero = PresentInfoKHR+           ()+           mempty+           mempty+           mempty+           zero+++-- | VkDeviceGroupPresentCapabilitiesKHR - Present capabilities from other+-- physical devices+--+-- = Description+--+-- @modes@ always has 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR' set.+--+-- The present mode flags are also used when presenting an image, in+-- 'DeviceGroupPresentInfoKHR'::@mode@.+--+-- If a device group only includes a single physical device, then @modes@+-- /must/ equal 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'DeviceGroupPresentModeFlagsKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getDeviceGroupPresentCapabilitiesKHR'+data DeviceGroupPresentCapabilitiesKHR = DeviceGroupPresentCapabilitiesKHR+  { -- | @presentMask@ is an array of+    -- 'Vulkan.Core10.APIConstants.MAX_DEVICE_GROUP_SIZE' @uint32_t@ masks,+    -- where the mask at element i is non-zero if physical device i has a+    -- presentation engine, and where bit j is set in element i if physical+    -- device i /can/ present swapchain images from physical device j. If+    -- element i is non-zero, then bit i /must/ be set.+    presentMask :: Vector Word32+  , -- | @modes@ is a bitmask of 'DeviceGroupPresentModeFlagBitsKHR' indicating+    -- which device group presentation modes are supported.+    modes :: DeviceGroupPresentModeFlagsKHR+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (DeviceGroupPresentCapabilitiesKHR)+#endif+deriving instance Show DeviceGroupPresentCapabilitiesKHR++instance ToCStruct DeviceGroupPresentCapabilitiesKHR where+  withCStruct x f = allocaBytesAligned 152 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p DeviceGroupPresentCapabilitiesKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    unless ((Data.Vector.length $ (presentMask)) <= MAX_DEVICE_GROUP_SIZE) $+      throwIO $ IOError Nothing InvalidArgument "" "presentMask is too long, a maximum of MAX_DEVICE_GROUP_SIZE elements are allowed" Nothing Nothing+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DEVICE_GROUP_SIZE Word32)))) `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (presentMask)+    poke ((p `plusPtr` 144 :: Ptr DeviceGroupPresentModeFlagsKHR)) (modes)+    f+  cStructSize = 152+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    unless ((Data.Vector.length $ (mempty)) <= MAX_DEVICE_GROUP_SIZE) $+      throwIO $ IOError Nothing InvalidArgument "" "presentMask is too long, a maximum of MAX_DEVICE_GROUP_SIZE elements are allowed" Nothing Nothing+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DEVICE_GROUP_SIZE Word32)))) `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+    poke ((p `plusPtr` 144 :: Ptr DeviceGroupPresentModeFlagsKHR)) (zero)+    f++instance FromCStruct DeviceGroupPresentCapabilitiesKHR where+  peekCStruct p = do+    presentMask <- generateM (MAX_DEVICE_GROUP_SIZE) (\i -> peek @Word32 (((lowerArrayPtr @Word32 ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DEVICE_GROUP_SIZE Word32)))) `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+    modes <- peek @DeviceGroupPresentModeFlagsKHR ((p `plusPtr` 144 :: Ptr DeviceGroupPresentModeFlagsKHR))+    pure $ DeviceGroupPresentCapabilitiesKHR+             presentMask modes++instance Storable DeviceGroupPresentCapabilitiesKHR where+  sizeOf ~_ = 152+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DeviceGroupPresentCapabilitiesKHR where+  zero = DeviceGroupPresentCapabilitiesKHR+           mempty+           zero+++-- | VkImageSwapchainCreateInfoKHR - Specify that an image will be bound to+-- swapchain memory+--+-- == Valid Usage+--+-- -   #VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995# If @swapchain@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the fields of+--     'Vulkan.Core10.Image.ImageCreateInfo' /must/ match the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#swapchain-wsi-image-create-info implied image creation parameters>+--     of the swapchain+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkImageSwapchainCreateInfoKHR-sType-sType# @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR'+--+-- -   #VUID-VkImageSwapchainCreateInfoKHR-swapchain-parameter# If+--     @swapchain@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @swapchain@ /must/ be a valid+--     'Vulkan.Extensions.Handles.SwapchainKHR' handle+--+-- = See Also+--+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Vulkan.Extensions.Handles.SwapchainKHR'+data ImageSwapchainCreateInfoKHR = ImageSwapchainCreateInfoKHR+  { -- | @swapchain@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a handle of a+    -- swapchain that the image will be bound to.+    swapchain :: SwapchainKHR }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (ImageSwapchainCreateInfoKHR)+#endif+deriving instance Show ImageSwapchainCreateInfoKHR++instance ToCStruct ImageSwapchainCreateInfoKHR where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p ImageSwapchainCreateInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (swapchain)+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    f++instance FromCStruct ImageSwapchainCreateInfoKHR where+  peekCStruct p = do+    swapchain <- peek @SwapchainKHR ((p `plusPtr` 16 :: Ptr SwapchainKHR))+    pure $ ImageSwapchainCreateInfoKHR+             swapchain++instance Storable ImageSwapchainCreateInfoKHR where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImageSwapchainCreateInfoKHR where+  zero = ImageSwapchainCreateInfoKHR+           zero+++-- | VkBindImageMemorySwapchainInfoKHR - Structure specifying swapchain image+-- memory to bind to+--+-- = Description+--+-- If @swapchain@ is not @NULL@, the @swapchain@ and @imageIndex@ are used+-- to determine the memory that the image is bound to, instead of @memory@+-- and @memoryOffset@.+--+-- Memory /can/ be bound to a swapchain and use the @pDeviceIndices@ or+-- @pSplitInstanceBindRegions@ members of+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'.+--+-- == Valid Usage+--+-- -   #VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644#+--     @imageIndex@ /must/ be less than the number of images in @swapchain@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType# @sType@ /must/+--     be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR'+--+-- -   #VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter#+--     @swapchain@ /must/ be a valid+--     'Vulkan.Extensions.Handles.SwapchainKHR' handle+--+-- == Host Synchronization+--+-- -   Host access to @swapchain@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Vulkan.Extensions.Handles.SwapchainKHR'+data BindImageMemorySwapchainInfoKHR = BindImageMemorySwapchainInfoKHR+  { -- | @swapchain@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a swapchain+    -- handle.+    swapchain :: SwapchainKHR+  , -- | @imageIndex@ is an image index within @swapchain@.+    imageIndex :: Word32+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (BindImageMemorySwapchainInfoKHR)+#endif+deriving instance Show BindImageMemorySwapchainInfoKHR++instance ToCStruct BindImageMemorySwapchainInfoKHR where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p BindImageMemorySwapchainInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (swapchain)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (imageIndex)+    f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    f++instance FromCStruct BindImageMemorySwapchainInfoKHR where+  peekCStruct p = do+    swapchain <- peek @SwapchainKHR ((p `plusPtr` 16 :: Ptr SwapchainKHR))+    imageIndex <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    pure $ BindImageMemorySwapchainInfoKHR+             swapchain imageIndex++instance Storable BindImageMemorySwapchainInfoKHR where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero BindImageMemorySwapchainInfoKHR where+  zero = BindImageMemorySwapchainInfoKHR+           zero+           zero+++-- | VkAcquireNextImageInfoKHR - Structure specifying parameters of the+-- acquire+--+-- = Description+--+-- If 'acquireNextImageKHR' is used, the device mask is considered to+-- include all physical devices in the logical device.+--+-- Note+--+-- 'acquireNextImage2KHR' signals at most one semaphore, even if the+-- application requests waiting for multiple physical devices to be ready+-- via the @deviceMask@. However, only a single physical device /can/ wait+-- on that semaphore, since the semaphore becomes unsignaled when the wait+-- succeeds. For other physical devices to wait for the image to be ready,+-- it is necessary for the application to submit semaphore signal+-- operation(s) to that first physical device to signal additional+-- semaphore(s) after the wait succeeds, which the other physical device(s)+-- /can/ wait upon.+--+-- == Valid Usage+--+-- -   #VUID-VkAcquireNextImageInfoKHR-swapchain-01675# @swapchain@ /must/+--     not be in the retired state+--+-- -   #VUID-VkAcquireNextImageInfoKHR-semaphore-01288# If @semaphore@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ be unsignaled+--+-- -   #VUID-VkAcquireNextImageInfoKHR-semaphore-01781# If @semaphore@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ not have any+--     uncompleted signal or wait operations pending+--+-- -   #VUID-VkAcquireNextImageInfoKHR-fence-01289# If @fence@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ be unsignaled and+--     /must/ not be associated with any other queue command that has not+--     yet completed execution on that queue+--+-- -   #VUID-VkAcquireNextImageInfoKHR-semaphore-01782# @semaphore@ and+--     @fence@ /must/ not both be equal to+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkAcquireNextImageInfoKHR-deviceMask-01290# @deviceMask@+--     /must/ be a valid device mask+--+-- -   #VUID-VkAcquireNextImageInfoKHR-deviceMask-01291# @deviceMask@+--     /must/ not be zero+--+-- -   #VUID-VkAcquireNextImageInfoKHR-semaphore-03266# @semaphore@ /must/+--     have a 'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+--     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkAcquireNextImageInfoKHR-sType-sType# @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR'+--+-- -   #VUID-VkAcquireNextImageInfoKHR-pNext-pNext# @pNext@ /must/ be+--     @NULL@+--+-- -   #VUID-VkAcquireNextImageInfoKHR-swapchain-parameter# @swapchain@+--     /must/ be a valid 'Vulkan.Extensions.Handles.SwapchainKHR' handle+--+-- -   #VUID-VkAcquireNextImageInfoKHR-semaphore-parameter# If @semaphore@+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @semaphore@ /must/+--     be a valid 'Vulkan.Core10.Handles.Semaphore' handle+--+-- -   #VUID-VkAcquireNextImageInfoKHR-fence-parameter# If @fence@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @fence@ /must/ be a valid+--     'Vulkan.Core10.Handles.Fence' handle+--+-- -   #VUID-VkAcquireNextImageInfoKHR-commonparent# Each of @fence@,+--     @semaphore@, and @swapchain@ that are valid handles of non-ignored+--     parameters /must/ have been created, allocated, or retrieved from+--     the same 'Vulkan.Core10.Handles.Instance'+--+-- == Host Synchronization+--+-- -   Host access to @swapchain@ /must/ be externally synchronized+--+-- -   Host access to @semaphore@ /must/ be externally synchronized+--+-- -   Host access to @fence@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.Fence', 'Vulkan.Core10.Handles.Semaphore',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Vulkan.Extensions.Handles.SwapchainKHR', 'acquireNextImage2KHR'+data AcquireNextImageInfoKHR = AcquireNextImageInfoKHR+  { -- | @swapchain@ is a non-retired swapchain from which an image is acquired.+    swapchain :: SwapchainKHR+  , -- | @timeout@ specifies how long the function waits, in nanoseconds, if no+    -- image is available.+    timeout :: Word64+  , -- | @semaphore@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a semaphore+    -- to signal.+    semaphore :: Semaphore+  , -- | @fence@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a fence to+    -- signal.+    fence :: Fence+  , -- | @deviceMask@ is a mask of physical devices for which the swapchain image+    -- will be ready to use when the semaphore or fence is signaled.+    deviceMask :: Word32+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AcquireNextImageInfoKHR)+#endif+deriving instance Show AcquireNextImageInfoKHR++instance ToCStruct AcquireNextImageInfoKHR where+  withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AcquireNextImageInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (swapchain)+    poke ((p `plusPtr` 24 :: Ptr Word64)) (timeout)+    poke ((p `plusPtr` 32 :: Ptr Semaphore)) (semaphore)+    poke ((p `plusPtr` 40 :: Ptr Fence)) (fence)+    poke ((p `plusPtr` 48 :: Ptr Word32)) (deviceMask)+    f+  cStructSize = 56+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)+    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+    f++instance FromCStruct AcquireNextImageInfoKHR where+  peekCStruct p = do+    swapchain <- peek @SwapchainKHR ((p `plusPtr` 16 :: Ptr SwapchainKHR))+    timeout <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))+    semaphore <- peek @Semaphore ((p `plusPtr` 32 :: Ptr Semaphore))+    fence <- peek @Fence ((p `plusPtr` 40 :: Ptr Fence))+    deviceMask <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+    pure $ AcquireNextImageInfoKHR+             swapchain timeout semaphore fence deviceMask++instance Storable AcquireNextImageInfoKHR where+  sizeOf ~_ = 56+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AcquireNextImageInfoKHR where+  zero = AcquireNextImageInfoKHR+           zero+           zero+           zero+           zero+           zero+++-- | VkDeviceGroupPresentInfoKHR - Mode and mask controlling which physical+-- devices\' images are presented+--+-- = Description+--+-- If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR', then each+-- element of @pDeviceMasks@ selects which instance of the swapchain image+-- is presented. Each element of @pDeviceMasks@ /must/ have exactly one bit+-- set, and the corresponding physical device /must/ have a presentation+-- engine as reported by 'DeviceGroupPresentCapabilitiesKHR'.+--+-- If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR', then each+-- element of @pDeviceMasks@ selects which instance of the swapchain image+-- is presented. Each element of @pDeviceMasks@ /must/ have exactly one bit+-- set, and some physical device in the logical device /must/ include that+-- bit in its 'DeviceGroupPresentCapabilitiesKHR'::@presentMask@.+--+-- If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR', then each element+-- of @pDeviceMasks@ selects which instances of the swapchain image are+-- component-wise summed and the sum of those images is presented. If the+-- sum in any component is outside the representable range, the value of+-- that component is undefined. Each element of @pDeviceMasks@ /must/ have+-- a value for which all set bits are set in one of the elements of+-- 'DeviceGroupPresentCapabilitiesKHR'::@presentMask@.+--+-- If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR',+-- then each element of @pDeviceMasks@ selects which instance(s) of the+-- swapchain images are presented. For each bit set in each element of+-- @pDeviceMasks@, the corresponding physical device /must/ have a+-- presentation engine as reported by 'DeviceGroupPresentCapabilitiesKHR'.+--+-- If 'DeviceGroupPresentInfoKHR' is not provided or @swapchainCount@ is+-- zero then the masks are considered to be @1@. If+-- 'DeviceGroupPresentInfoKHR' is not provided, @mode@ is considered to be+-- 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR'.+--+-- == Valid Usage+--+-- -   #VUID-VkDeviceGroupPresentInfoKHR-swapchainCount-01297#+--     @swapchainCount@ /must/ equal @0@ or+--     'PresentInfoKHR'::@swapchainCount@+--+-- -   #VUID-VkDeviceGroupPresentInfoKHR-mode-01298# If @mode@ is+--     'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR', then each element of+--     @pDeviceMasks@ /must/ have exactly one bit set, and the+--     corresponding element of+--     'DeviceGroupPresentCapabilitiesKHR'::@presentMask@ /must/ be+--     non-zero+--+-- -   #VUID-VkDeviceGroupPresentInfoKHR-mode-01299# If @mode@ is+--     'DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR', then each element of+--     @pDeviceMasks@ /must/ have exactly one bit set, and some physical+--     device in the logical device /must/ include that bit in its+--     'DeviceGroupPresentCapabilitiesKHR'::@presentMask@+--+-- -   #VUID-VkDeviceGroupPresentInfoKHR-mode-01300# If @mode@ is+--     'DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR', then each element of+--     @pDeviceMasks@ /must/ have a value for which all set bits are set in+--     one of the elements of+--     'DeviceGroupPresentCapabilitiesKHR'::@presentMask@+--+-- -   #VUID-VkDeviceGroupPresentInfoKHR-mode-01301# If @mode@ is+--     'DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR', then for+--     each bit set in each element of @pDeviceMasks@, the corresponding+--     element of 'DeviceGroupPresentCapabilitiesKHR'::@presentMask@ /must/+--     be non-zero+--+-- -   #VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-01302# The value of+--     each element of @pDeviceMasks@ /must/ be equal to the device mask+--     passed in 'AcquireNextImageInfoKHR'::@deviceMask@ when the image+--     index was last acquired+--+-- -   #VUID-VkDeviceGroupPresentInfoKHR-mode-01303# @mode@ /must/ have+--     exactly one bit set, and that bit /must/ have been included in+--     'DeviceGroupSwapchainCreateInfoKHR'::@modes@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkDeviceGroupPresentInfoKHR-sType-sType# @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR'+--+-- -   #VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter# If+--     @swapchainCount@ is not @0@, @pDeviceMasks@ /must/ be a valid+--     pointer to an array of @swapchainCount@ @uint32_t@ values+--+-- -   #VUID-VkDeviceGroupPresentInfoKHR-mode-parameter# @mode@ /must/ be a+--     valid 'DeviceGroupPresentModeFlagBitsKHR' value+--+-- = See Also+--+-- 'DeviceGroupPresentModeFlagBitsKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data DeviceGroupPresentInfoKHR = DeviceGroupPresentInfoKHR+  { -- | @pDeviceMasks@ is a pointer to an array of device masks, one for each+    -- element of 'PresentInfoKHR'::pSwapchains.+    deviceMasks :: Vector Word32+  , -- | @mode@ is the device group present mode that will be used for this+    -- present.+    mode :: DeviceGroupPresentModeFlagBitsKHR+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (DeviceGroupPresentInfoKHR)+#endif+deriving instance Show DeviceGroupPresentInfoKHR++instance ToCStruct DeviceGroupPresentInfoKHR where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p DeviceGroupPresentInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (deviceMasks)) :: Word32))+    pPDeviceMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (deviceMasks)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceMasks' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (deviceMasks)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPDeviceMasks')+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceGroupPresentModeFlagBitsKHR)) (mode)+    lift $ f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    pPDeviceMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceMasks' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPDeviceMasks')+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceGroupPresentModeFlagBitsKHR)) (zero)+    lift $ f++instance FromCStruct DeviceGroupPresentInfoKHR where+  peekCStruct p = do+    swapchainCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    pDeviceMasks <- peek @(Ptr Word32) ((p `plusPtr` 24 :: Ptr (Ptr Word32)))+    pDeviceMasks' <- generateM (fromIntegral swapchainCount) (\i -> peek @Word32 ((pDeviceMasks `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+    mode <- peek @DeviceGroupPresentModeFlagBitsKHR ((p `plusPtr` 32 :: Ptr DeviceGroupPresentModeFlagBitsKHR))+    pure $ DeviceGroupPresentInfoKHR+             pDeviceMasks' mode++instance Zero DeviceGroupPresentInfoKHR where+  zero = DeviceGroupPresentInfoKHR+           mempty+           zero+++-- | VkDeviceGroupSwapchainCreateInfoKHR - Structure specifying parameters of+-- a newly created swapchain object+--+-- = Description+--+-- If this structure is not present, @modes@ is considered to be+-- 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'DeviceGroupPresentModeFlagsKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data DeviceGroupSwapchainCreateInfoKHR = DeviceGroupSwapchainCreateInfoKHR+  { -- | @modes@ is a bitfield of modes that the swapchain /can/ be used with.+    --+    -- #VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter# @modes@+    -- /must/ be a valid combination of 'DeviceGroupPresentModeFlagBitsKHR'+    -- values+    --+    -- #VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask# @modes@+    -- /must/ not be @0@+    modes :: DeviceGroupPresentModeFlagsKHR }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (DeviceGroupSwapchainCreateInfoKHR)+#endif+deriving instance Show DeviceGroupSwapchainCreateInfoKHR++instance ToCStruct DeviceGroupSwapchainCreateInfoKHR where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p DeviceGroupSwapchainCreateInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DeviceGroupPresentModeFlagsKHR)) (modes)+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DeviceGroupPresentModeFlagsKHR)) (zero)+    f++instance FromCStruct DeviceGroupSwapchainCreateInfoKHR where+  peekCStruct p = do+    modes <- peek @DeviceGroupPresentModeFlagsKHR ((p `plusPtr` 16 :: Ptr DeviceGroupPresentModeFlagsKHR))+    pure $ DeviceGroupSwapchainCreateInfoKHR+             modes++instance Storable DeviceGroupSwapchainCreateInfoKHR where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DeviceGroupSwapchainCreateInfoKHR where+  zero = DeviceGroupSwapchainCreateInfoKHR+           zero+++type DeviceGroupPresentModeFlagsKHR = DeviceGroupPresentModeFlagBitsKHR++-- | VkDeviceGroupPresentModeFlagBitsKHR - Bitmask specifying supported+-- device group present modes+--+-- = See Also+--+-- 'DeviceGroupPresentInfoKHR', 'DeviceGroupPresentModeFlagsKHR'+newtype DeviceGroupPresentModeFlagBitsKHR = DeviceGroupPresentModeFlagBitsKHR Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)++-- | 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR' specifies that any physical+-- device with a presentation engine /can/ present its own swapchain+-- images.+pattern DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR              = DeviceGroupPresentModeFlagBitsKHR 0x00000001+-- | 'DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR' specifies that any physical+-- device with a presentation engine /can/ present swapchain images from+-- any physical device in its @presentMask@.+pattern DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR             = DeviceGroupPresentModeFlagBitsKHR 0x00000002+-- | 'DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR' specifies that any physical+-- device with a presentation engine /can/ present the sum of swapchain+-- images from any physical devices in its @presentMask@.+pattern DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR                = DeviceGroupPresentModeFlagBitsKHR 0x00000004+-- | 'DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR' specifies that+-- multiple physical devices with a presentation engine /can/ each present+-- their own swapchain images.+pattern DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = DeviceGroupPresentModeFlagBitsKHR 0x00000008++conNameDeviceGroupPresentModeFlagBitsKHR :: String+conNameDeviceGroupPresentModeFlagBitsKHR = "DeviceGroupPresentModeFlagBitsKHR"++enumPrefixDeviceGroupPresentModeFlagBitsKHR :: String+enumPrefixDeviceGroupPresentModeFlagBitsKHR = "DEVICE_GROUP_PRESENT_MODE_"++showTableDeviceGroupPresentModeFlagBitsKHR :: [(DeviceGroupPresentModeFlagBitsKHR, String)]+showTableDeviceGroupPresentModeFlagBitsKHR =+  [ (DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR             , "LOCAL_BIT_KHR")+  , (DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR            , "REMOTE_BIT_KHR")+  , (DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR               , "SUM_BIT_KHR")+  , (DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR, "LOCAL_MULTI_DEVICE_BIT_KHR")+  ]++instance Show DeviceGroupPresentModeFlagBitsKHR where+  showsPrec = enumShowsPrec enumPrefixDeviceGroupPresentModeFlagBitsKHR+                            showTableDeviceGroupPresentModeFlagBitsKHR+                            conNameDeviceGroupPresentModeFlagBitsKHR+                            (\(DeviceGroupPresentModeFlagBitsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)++instance Read DeviceGroupPresentModeFlagBitsKHR where+  readPrec = enumReadPrec enumPrefixDeviceGroupPresentModeFlagBitsKHR+                          showTableDeviceGroupPresentModeFlagBitsKHR+                          conNameDeviceGroupPresentModeFlagBitsKHR+                          DeviceGroupPresentModeFlagBitsKHR+++type SwapchainCreateFlagsKHR = SwapchainCreateFlagBitsKHR++-- | VkSwapchainCreateFlagBitsKHR - Bitmask controlling swapchain creation+--+-- = See Also+--+-- 'SwapchainCreateFlagsKHR'+newtype SwapchainCreateFlagBitsKHR = SwapchainCreateFlagBitsKHR Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)++-- | 'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR' specifies that the images of+-- the swapchain /can/ be used to create a+-- 'Vulkan.Core10.Handles.ImageView' with a different format than what the+-- swapchain was created with. The list of allowed image view formats are+-- specified by adding a+-- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'+-- structure to the @pNext@ chain of 'SwapchainCreateInfoKHR'. In addition,+-- this flag also specifies that the swapchain /can/ be created with usage+-- flags that are not supported for the format the swapchain is created+-- with but are supported for at least one of the allowed image view+-- formats.+pattern SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR              = SwapchainCreateFlagBitsKHR 0x00000004+-- | 'SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR' specifies that+-- images created from the swapchain (i.e. with the @swapchain@ member of+-- 'ImageSwapchainCreateInfoKHR' set to this swapchain’s handle) /must/ use+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT'.+pattern SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = SwapchainCreateFlagBitsKHR 0x00000001+-- | 'SWAPCHAIN_CREATE_PROTECTED_BIT_KHR' specifies that images created from+-- the swapchain are protected images.+pattern SWAPCHAIN_CREATE_PROTECTED_BIT_KHR                   = SwapchainCreateFlagBitsKHR 0x00000002++conNameSwapchainCreateFlagBitsKHR :: String+conNameSwapchainCreateFlagBitsKHR = "SwapchainCreateFlagBitsKHR"++enumPrefixSwapchainCreateFlagBitsKHR :: String+enumPrefixSwapchainCreateFlagBitsKHR = "SWAPCHAIN_CREATE_"++showTableSwapchainCreateFlagBitsKHR :: [(SwapchainCreateFlagBitsKHR, String)]+showTableSwapchainCreateFlagBitsKHR =+  [ (SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR             , "MUTABLE_FORMAT_BIT_KHR")+  , (SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR, "SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR")+  , (SWAPCHAIN_CREATE_PROTECTED_BIT_KHR                  , "PROTECTED_BIT_KHR")+  ]++instance Show SwapchainCreateFlagBitsKHR where+  showsPrec = enumShowsPrec enumPrefixSwapchainCreateFlagBitsKHR+                            showTableSwapchainCreateFlagBitsKHR+                            conNameSwapchainCreateFlagBitsKHR+                            (\(SwapchainCreateFlagBitsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)++instance Read SwapchainCreateFlagBitsKHR where+  readPrec = enumReadPrec enumPrefixSwapchainCreateFlagBitsKHR+                          showTableSwapchainCreateFlagBitsKHR+                          conNameSwapchainCreateFlagBitsKHR+                          SwapchainCreateFlagBitsKHR   type KHR_SWAPCHAIN_SPEC_VERSION = 70
src/Vulkan/Extensions/VK_KHR_swapchain.hs-boot view
@@ -1,90 +1,1165 @@ {-# language CPP #-}-module Vulkan.Extensions.VK_KHR_swapchain  ( AcquireNextImageInfoKHR-                                           , BindImageMemorySwapchainInfoKHR-                                           , DeviceGroupPresentCapabilitiesKHR-                                           , DeviceGroupPresentInfoKHR-                                           , DeviceGroupSwapchainCreateInfoKHR-                                           , ImageSwapchainCreateInfoKHR-                                           , PresentInfoKHR-                                           , SwapchainCreateInfoKHR-                                           , DeviceGroupPresentModeFlagBitsKHR-                                           , DeviceGroupPresentModeFlagsKHR-                                           ) where--import Data.Kind (Type)-import {-# SOURCE #-} Vulkan.CStruct.Extends (Chain)-import {-# SOURCE #-} Vulkan.CStruct.Extends (Extendss)-import Vulkan.CStruct (FromCStruct)-import {-# SOURCE #-} Vulkan.CStruct.Extends (PeekChain)-import {-# SOURCE #-} Vulkan.CStruct.Extends (PokeChain)-import Vulkan.CStruct (ToCStruct)-data AcquireNextImageInfoKHR--instance ToCStruct AcquireNextImageInfoKHR-instance Show AcquireNextImageInfoKHR--instance FromCStruct AcquireNextImageInfoKHR---data BindImageMemorySwapchainInfoKHR--instance ToCStruct BindImageMemorySwapchainInfoKHR-instance Show BindImageMemorySwapchainInfoKHR--instance FromCStruct BindImageMemorySwapchainInfoKHR---data DeviceGroupPresentCapabilitiesKHR--instance ToCStruct DeviceGroupPresentCapabilitiesKHR-instance Show DeviceGroupPresentCapabilitiesKHR--instance FromCStruct DeviceGroupPresentCapabilitiesKHR---data DeviceGroupPresentInfoKHR--instance ToCStruct DeviceGroupPresentInfoKHR-instance Show DeviceGroupPresentInfoKHR--instance FromCStruct DeviceGroupPresentInfoKHR---data DeviceGroupSwapchainCreateInfoKHR--instance ToCStruct DeviceGroupSwapchainCreateInfoKHR-instance Show DeviceGroupSwapchainCreateInfoKHR--instance FromCStruct DeviceGroupSwapchainCreateInfoKHR---data ImageSwapchainCreateInfoKHR--instance ToCStruct ImageSwapchainCreateInfoKHR-instance Show ImageSwapchainCreateInfoKHR--instance FromCStruct ImageSwapchainCreateInfoKHR---type role PresentInfoKHR nominal-data PresentInfoKHR (es :: [Type])--instance (Extendss PresentInfoKHR es, PokeChain es) => ToCStruct (PresentInfoKHR es)-instance Show (Chain es) => Show (PresentInfoKHR es)--instance (Extendss PresentInfoKHR es, PeekChain es) => FromCStruct (PresentInfoKHR es)---type role SwapchainCreateInfoKHR nominal-data SwapchainCreateInfoKHR (es :: [Type])--instance (Extendss SwapchainCreateInfoKHR es, PokeChain es) => ToCStruct (SwapchainCreateInfoKHR es)-instance Show (Chain es) => Show (SwapchainCreateInfoKHR es)--instance (Extendss SwapchainCreateInfoKHR es, PeekChain es) => FromCStruct (SwapchainCreateInfoKHR es)---data DeviceGroupPresentModeFlagBitsKHR--type DeviceGroupPresentModeFlagsKHR = DeviceGroupPresentModeFlagBitsKHR+-- | = Name+--+-- VK_KHR_swapchain - device extension+--+-- == VK_KHR_swapchain+--+-- [__Name String__]+--     @VK_KHR_swapchain@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     2+--+-- [__Revision__]+--     70+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_swapchain:%20&body=@cubanismo%20 >+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_swapchain:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-10-06+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Interacts with Vulkan 1.1+--+-- [__Contributors__]+--+--     -   Patrick Doane, Blizzard+--+--     -   Ian Elliott, LunarG+--+--     -   Jesse Hall, Google+--+--     -   Mathias Heyer, NVIDIA+--+--     -   James Jones, NVIDIA+--+--     -   David Mao, AMD+--+--     -   Norbert Nopper, Freescale+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Chia-I Wu, LunarG+--+--     -   Jason Ekstrand, Intel+--+--     -   Matthaeus G. Chajdas, AMD+--+--     -   Ray Smith, ARM+--+-- == Description+--+-- The @VK_KHR_swapchain@ extension is the device-level companion to the+-- @VK_KHR_surface@ extension. It introduces+-- 'Vulkan.Extensions.Handles.SwapchainKHR' objects, which provide the+-- ability to present rendering results to a surface.+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.SwapchainKHR'+--+-- == New Commands+--+-- -   'acquireNextImageKHR'+--+-- -   'createSwapchainKHR'+--+-- -   'destroySwapchainKHR'+--+-- -   'getSwapchainImagesKHR'+--+-- -   'queuePresentKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   'acquireNextImage2KHR'+--+-- -   'getDeviceGroupPresentCapabilitiesKHR'+--+-- -   'getDeviceGroupSurfacePresentModesKHR'+--+-- -   'getPhysicalDevicePresentRectanglesKHR'+--+-- == New Structures+--+-- -   'PresentInfoKHR'+--+-- -   'SwapchainCreateInfoKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   'AcquireNextImageInfoKHR'+--+-- -   'DeviceGroupPresentCapabilitiesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo':+--+--     -   'BindImageMemorySwapchainInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo':+--+--     -   'ImageSwapchainCreateInfoKHR'+--+-- -   Extending 'PresentInfoKHR':+--+--     -   'DeviceGroupPresentInfoKHR'+--+-- -   Extending 'SwapchainCreateInfoKHR':+--+--     -   'DeviceGroupSwapchainCreateInfoKHR'+--+-- == New Enums+--+-- -   'SwapchainCreateFlagBitsKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   'DeviceGroupPresentModeFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'SwapchainCreateFlagsKHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   'DeviceGroupPresentModeFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_SWAPCHAIN_EXTENSION_NAME'+--+-- -   'KHR_SWAPCHAIN_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':+--+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_SWAPCHAIN_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'+--+--     -   'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR'+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Version 1.1>+-- is supported:+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR'+--+-- -   Extending 'SwapchainCreateFlagBitsKHR':+--+--     -   'SWAPCHAIN_CREATE_PROTECTED_BIT_KHR'+--+--     -   'SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR'+--+-- == Issues+--+-- 1) Does this extension allow the application to specify the memory+-- backing of the presentable images?+--+-- __RESOLVED__: No. Unlike standard images, the implementation will+-- allocate the memory backing of the presentable image.+--+-- 2) What operations are allowed on presentable images?+--+-- __RESOLVED__: This is determined by the image usage flags specified when+-- creating the presentable image’s swapchain.+--+-- 3) Does this extension support MSAA presentable images?+--+-- __RESOLVED__: No. Presentable images are always single-sampled.+-- Multi-sampled rendering must use regular images. To present the+-- rendering results the application must manually resolve the multi-+-- sampled image to a single-sampled presentable image prior to+-- presentation.+--+-- 4) Does this extension support stereo\/multi-view presentable images?+--+-- __RESOLVED__: Yes. The number of views associated with a presentable+-- image is determined by the @imageArrayLayers@ specified when creating a+-- swapchain. All presentable images in a given swapchain use the same+-- array size.+--+-- 5) Are the layers of stereo presentable images half-sized?+--+-- __RESOLVED__: No. The image extents always match those requested by the+-- application.+--+-- 6) Do the “present” and “acquire next image” commands operate on a+-- queue? If not, do they need to include explicit semaphore objects to+-- interlock them with queue operations?+--+-- __RESOLVED__: The present command operates on a queue. The image+-- ownership operation it represents happens in order with other operations+-- on the queue, so no explicit semaphore object is required to synchronize+-- its actions.+--+-- Applications may want to acquire the next image in separate threads from+-- those in which they manage their queue, or in multiple threads. To make+-- such usage easier, the acquire next image command takes a semaphore to+-- signal as a method of explicit synchronization. The application must+-- later queue a wait for this semaphore before queuing execution of any+-- commands using the image.+--+-- 7) Does 'acquireNextImageKHR' block if no images are available?+--+-- __RESOLVED__: The command takes a timeout parameter. Special values for+-- the timeout are 0, which makes the call a non-blocking operation, and+-- @UINT64_MAX@, which blocks indefinitely. Values in between will block+-- for up to the specified time. The call will return when an image becomes+-- available or an error occurs. It may, but is not required to, return+-- before the specified timeout expires if the swapchain becomes out of+-- date.+--+-- 8) Can multiple presents be queued using one 'queuePresentKHR' call?+--+-- __RESOLVED__: Yes. 'PresentInfoKHR' contains a list of swapchains and+-- corresponding image indices that will be presented. When supported, all+-- presentations queued with a single 'queuePresentKHR' call will be+-- applied atomically as one operation. The same swapchain must not appear+-- in the list more than once. Later extensions may provide applications+-- stronger guarantees of atomicity for such present operations, and\/or+-- allow them to query whether atomic presentation of a particular group of+-- swapchains is possible.+--+-- 9) How do the presentation and acquire next image functions notify the+-- application the targeted surface has changed?+--+-- __RESOLVED__: Two new result codes are introduced for this purpose:+--+-- -   'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR' - Presentation will+--     still succeed, subject to the window resize behavior, but the+--     swapchain is no longer configured optimally for the surface it+--     targets. Applications should query updated surface information and+--     recreate their swapchain at the next convenient opportunity.+--+-- -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' - Failure. The+--     swapchain is no longer compatible with the surface it targets. The+--     application must query updated surface information and recreate the+--     swapchain before presentation will succeed.+--+-- These can be returned by both 'acquireNextImageKHR' and+-- 'queuePresentKHR'.+--+-- 10) Does the 'acquireNextImageKHR' command return a semaphore to the+-- application via an output parameter, or accept a semaphore to signal+-- from the application as an object handle parameter?+--+-- __RESOLVED__: Accept a semaphore to signal as an object handle. This+-- avoids the need to specify whether the application must destroy the+-- semaphore or whether it is owned by the swapchain, and if the latter,+-- what its lifetime is and whether it can be re-used for other operations+-- once it is received from 'acquireNextImageKHR'.+--+-- 11) What types of swapchain queuing behavior should be exposed? Options+-- include swap interval specification, mailbox\/most recent vs. FIFO queue+-- management, targeting specific vertical blank intervals or absolute+-- times for a given present operation, and probably others. For some of+-- these, whether they are specified at swapchain creation time or as+-- per-present parameters needs to be decided as well.+--+-- __RESOLVED__: The base swapchain extension will expose 3 possible+-- behaviors (of which, FIFO will always be supported):+--+-- -   Immediate present: Does not wait for vertical blanking period to+--     update the current image, likely resulting in visible tearing. No+--     internal queue is used. Present requests are applied immediately.+--+-- -   Mailbox queue: Waits for the next vertical blanking period to update+--     the current image. No tearing should be observed. An internal+--     single-entry queue is used to hold pending presentation requests. If+--     the queue is full when a new presentation request is received, the+--     new request replaces the existing entry, and any images associated+--     with the prior entry become available for re-use by the application.+--+-- -   FIFO queue: Waits for the next vertical blanking period to update+--     the current image. No tearing should be observed. An internal queue+--     containing @numSwapchainImages@ - 1 entries is used to hold pending+--     presentation requests. New requests are appended to the end of the+--     queue, and one request is removed from the beginning of the queue+--     and processed during each vertical blanking period in which the+--     queue is non-empty+--+-- Not all surfaces will support all of these modes, so the modes supported+-- will be returned using a surface info query. All surfaces must support+-- the FIFO queue mode. Applications must choose one of these modes up+-- front when creating a swapchain. Switching modes can be accomplished by+-- recreating the swapchain.+--+-- 12) Can 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR'+-- provide non-blocking guarantees for 'acquireNextImageKHR'? If so, what+-- is the proper criteria?+--+-- __RESOLVED__: Yes. The difficulty is not immediately obvious here.+-- Naively, if at least 3 images are requested, mailbox mode should always+-- have an image available for the application if the application does not+-- own any images when the call to 'acquireNextImageKHR' was made. However,+-- some presentation engines may have more than one “current” image, and+-- would still need to block in some cases. The right requirement appears+-- to be that if the application allocates the surface’s minimum number of+-- images + 1 then it is guaranteed non-blocking behavior when it does not+-- currently own any images.+--+-- 13) Is there a way to create and initialize a new swapchain for a+-- surface that has generated a 'Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'+-- return code while still using the old swapchain?+--+-- __RESOLVED__: Not as part of this specification. This could be useful to+-- allow the application to create an “optimal” replacement swapchain and+-- rebuild all its command buffers using it in a background thread at a low+-- priority while continuing to use the “suboptimal” swapchain in the main+-- thread. It could probably use the same “atomic replace” semantics+-- proposed for recreating direct-to-device swapchains without incurring a+-- mode switch. However, after discussion, it was determined some platforms+-- probably could not support concurrent swapchains for the same surface+-- though, so this will be left out of the base KHR extensions. A future+-- extension could add this for platforms where it is supported.+--+-- 14) Should there be a special value for+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@maxImageCount@+-- to indicate there are no practical limits on the number of images in a+-- swapchain?+--+-- __RESOLVED__: Yes. There where often be cases where there is no+-- practical limit to the number of images in a swapchain other than the+-- amount of available resources (I.e., memory) in the system. Trying to+-- derive a hard limit from things like memory size is prone to failure. It+-- is better in such cases to leave it to applications to figure such soft+-- limits out via trial\/failure iterations.+--+-- 15) Should there be a special value for+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@currentExtent@+-- to indicate the size of the platform surface is undefined?+--+-- __RESOLVED__: Yes. On some platforms (Wayland, for example), the surface+-- size is defined by the images presented to it rather than the other way+-- around.+--+-- 16) Should there be a special value for+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@maxImageExtent@+-- to indicate there is no practical limit on the surface size?+--+-- __RESOLVED__: No. It seems unlikely such a system would exist. 0 could+-- be used to indicate the platform places no limits on the extents beyond+-- those imposed by Vulkan for normal images, but this query could just as+-- easily return those same limits, so a special “unlimited” value does not+-- seem useful for this field.+--+-- 17) How should surface rotation and mirroring be exposed to+-- applications? How do they specify rotation and mirroring transforms+-- applied prior to presentation?+--+-- __RESOLVED__: Applications can query both the supported and current+-- transforms of a surface. Both are specified relative to the device’s+-- “natural” display rotation and direction. The supported transforms+-- indicates which orientations the presentation engine accepts images in.+-- For example, a presentation engine that does not support transforming+-- surfaces as part of presentation, and which is presenting to a surface+-- that is displayed with a 90-degree rotation, would return only one+-- supported transform bit:+-- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR'.+-- Applications must transform their rendering by the transform they+-- specify when creating the swapchain in @preTransform@ field.+--+-- 18) Can surfaces ever not support @VK_MIRROR_NONE@? Can they support+-- vertical and horizontal mirroring simultaneously? Relatedly, should+-- @VK_MIRROR_NONE@[_BIT] be zero, or bit one, and should applications be+-- allowed to specify multiple pre and current mirror transform bits, or+-- exactly one?+--+-- __RESOLVED__: Since some platforms may not support presenting with a+-- transform other than the native window’s current transform, and+-- prerotation\/mirroring are specified relative to the device’s natural+-- rotation and direction, rather than relative to the surface’s current+-- rotation and direction, it is necessary to express lack of support for+-- no mirroring. To allow this, the @MIRROR_NONE@ enum must occupy a bit in+-- the flags. Since @MIRROR_NONE@ must be a bit in the bitmask rather than+-- a bitmask with no values set, allowing more than one bit to be set in+-- the bitmask would make it possible to describe undefined transforms such+-- as @VK_MIRROR_NONE_BIT@ | @VK_MIRROR_HORIZONTAL_BIT@, or a transform+-- that includes both “no mirroring” and “horizontal mirroring”+-- simultaneously. Therefore, it is desirable to allow specifying all+-- supported mirroring transforms using only one bit. The question then+-- becomes, should there be a @VK_MIRROR_HORIZONTAL_AND_VERTICAL_BIT@ to+-- represent a simultaneous horizontal and vertical mirror transform?+-- However, such a transform is equivalent to a 180 degree rotation, so+-- presentation engines and applications that wish to support or use such a+-- transform can express it through rotation instead. Therefore, 3+-- exclusive bits are sufficient to express all needed mirroring+-- transforms.+--+-- 19) Should support for sRGB be required?+--+-- __RESOLVED__: In the advent of UHD and HDR display devices, proper color+-- space information is vital to the display pipeline represented by the+-- swapchain. The app can discover the supported format\/color-space pairs+-- and select a pair most suited to its rendering needs. Currently only the+-- sRGB color space is supported, future extensions may provide support for+-- more color spaces. See issues 23 and 24.+--+-- 20) Is there a mechanism to modify or replace an existing swapchain with+-- one targeting the same surface?+--+-- __RESOLVED__: Yes. This is described above in the text.+--+-- 21) Should there be a way to set prerotation and mirroring using native+-- APIs when presenting using a Vulkan swapchain?+--+-- __RESOLVED__: Yes. The transforms that can be expressed in this+-- extension are a subset of those possible on native platforms. If a+-- platform exposes a method to specify the transform of presented images+-- for a given surface using native methods and exposes more transforms or+-- other properties for surfaces than Vulkan supports, it might be+-- impossible, difficult, or inconvenient to set some of those properties+-- using Vulkan KHR extensions and some using the native interfaces. To+-- avoid overwriting properties set using native commands when presenting+-- using a Vulkan swapchain, the application can set the pretransform to+-- “inherit”, in which case the current native properties will be used, or+-- if none are available, a platform-specific default will be used.+-- Platforms that do not specify a reasonable default or do not provide+-- native mechanisms to specify such transforms should not include the+-- inherit bits in the @supportedTransforms@ bitmask they return in+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'.+--+-- 22) Should the content of presentable images be clipped by objects+-- obscuring their target surface?+--+-- __RESOLVED__: Applications can choose which behavior they prefer.+-- Allowing the content to be clipped could enable more optimal+-- presentation methods on some platforms, but some applications might rely+-- on the content of presentable images to perform techniques such as+-- partial updates or motion blurs.+--+-- 23) What is the purpose of specifying a+-- 'Vulkan.Extensions.VK_KHR_surface.ColorSpaceKHR' along with+-- 'Vulkan.Core10.Enums.Format.Format' when creating a swapchain?+--+-- __RESOLVED__: While Vulkan itself is color space agnostic (e.g. even the+-- meaning of R, G, B and A can be freely defined by the rendering+-- application), the swapchain eventually will have to present the images+-- on a display device with specific color reproduction characteristics. If+-- any color space transformations are necessary before an image can be+-- displayed, the color space of the presented image must be known to the+-- swapchain. A swapchain will only support a restricted set of color+-- format and -space pairs. This set can be discovered via+-- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceFormatsKHR'.+-- As it can be expected that most display devices support the sRGB color+-- space, at least one format\/color-space pair has to be exposed, where+-- the color space is+-- 'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_SRGB_NONLINEAR_KHR'.+--+-- 24) How are sRGB formats and the sRGB color space related?+--+-- __RESOLVED__: While Vulkan exposes a number of SRGB texture formats,+-- using such formats does not guarantee working in a specific color space.+-- It merely means that the hardware can directly support applying the+-- non-linear transfer functions defined by the sRGB standard color space+-- when reading from or writing to images of that these formats. Still, it+-- is unlikely that a swapchain will expose a @*_SRGB@ format along with+-- any color space other than+-- 'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_SRGB_NONLINEAR_KHR'.+--+-- On the other hand, non-@*_SRGB@ formats will be very likely exposed in+-- pair with a SRGB color space. This means, the hardware will not apply+-- any transfer function when reading from or writing to such images, yet+-- they will still be presented on a device with sRGB display+-- characteristics. In this case the application is responsible for+-- applying the transfer function, for instance by using shader math.+--+-- 25) How are the lifetime of surfaces and swapchains targeting them+-- related?+--+-- __RESOLVED__: A surface must outlive any swapchains targeting it. A+-- 'Vulkan.Extensions.Handles.SurfaceKHR' owns the binding of the native+-- window to the Vulkan driver.+--+-- 26) How can the client control the way the alpha channel of swapchain+-- images is treated by the presentation engine during compositing?+--+-- __RESOLVED__: We should add new enum values to allow the client to+-- negotiate with the presentation engine on how to treat image alpha+-- values during the compositing process. Since not all platforms can+-- practically control this through the Vulkan driver, a value of+-- 'Vulkan.Extensions.VK_KHR_surface.COMPOSITE_ALPHA_INHERIT_BIT_KHR' is+-- provided like for surface transforms.+--+-- 27) Is 'createSwapchainKHR' the right function to return+-- 'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR', or should+-- the various platform-specific 'Vulkan.Extensions.Handles.SurfaceKHR'+-- factory functions catch this error earlier?+--+-- __RESOLVED__: For most platforms, the+-- 'Vulkan.Extensions.Handles.SurfaceKHR' structure is a simple container+-- holding the data that identifies a native window or other object+-- representing a surface on a particular platform. For the surface factory+-- functions to return this error, they would likely need to register a+-- reference on the native objects with the native display server somehow,+-- and ensure no other such references exist. Surfaces were not intended to+-- be that heavyweight.+--+-- Swapchains are intended to be the objects that directly manipulate+-- native windows and communicate with the native presentation mechanisms.+-- Swapchains will already need to communicate with the native display+-- server to negotiate allocation and\/or presentation of presentable+-- images for a native surface. Therefore, it makes more sense for+-- swapchain creation to be the point at which native object exclusivity is+-- enforced. Platforms may choose to enforce further restrictions on the+-- number of 'Vulkan.Extensions.Handles.SurfaceKHR' objects that may be+-- created for the same native window if such a requirement makes sense on+-- a particular platform, but a global requirement is only sensible at the+-- swapchain level.+--+-- == Examples+--+-- Note+--+-- The example code for the @VK_KHR_surface@ and @VK_KHR_swapchain@+-- extensions was removed from the appendix after revision 1.0.29. This WSI+-- example code was ported to the cube demo that is shipped with the+-- official Khronos SDK, and is being kept up-to-date in that location+-- (see:+-- <https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c>).+--+-- == Version History+--+-- -   Revision 1, 2015-05-20 (James Jones)+--+--     -   Initial draft, based on LunarG KHR spec, other KHR specs,+--         patches attached to bugs.+--+-- -   Revision 2, 2015-05-22 (Ian Elliott)+--+--     -   Made many agreed-upon changes from 2015-05-21 KHR TSG meeting.+--         This includes using only a queue for presentation, and having an+--         explicit function to acquire the next image.+--+--     -   Fixed typos and other minor mistakes.+--+-- -   Revision 3, 2015-05-26 (Ian Elliott)+--+--     -   Improved the Description section.+--+--     -   Added or resolved issues that were found in improving the+--         Description. For example, pSurfaceDescription is used+--         consistently, instead of sometimes using pSurface.+--+-- -   Revision 4, 2015-05-27 (James Jones)+--+--     -   Fixed some grammatical errors and typos+--+--     -   Filled in the description of imageUseFlags when creating a+--         swapchain.+--+--     -   Added a description of swapInterval.+--+--     -   Replaced the paragraph describing the order of operations on a+--         queue for image ownership and presentation.+--+-- -   Revision 5, 2015-05-27 (James Jones)+--+--     -   Imported relevant issues from the (abandoned)+--         vk_wsi_persistent_swapchain_images extension.+--+--     -   Added issues 6 and 7, regarding behavior of the acquire next+--         image and present commands with respect to queues.+--+--     -   Updated spec language and examples to align with proposed+--         resolutions to issues 6 and 7.+--+-- -   Revision 6, 2015-05-27 (James Jones)+--+--     -   Added issue 8, regarding atomic presentation of multiple+--         swapchains+--+--     -   Updated spec language and examples to align with proposed+--         resolution to issue 8.+--+-- -   Revision 7, 2015-05-27 (James Jones)+--+--     -   Fixed compilation errors in example code, and made related spec+--         fixes.+--+-- -   Revision 8, 2015-05-27 (James Jones)+--+--     -   Added issue 9, and the related VK_SUBOPTIMAL_KHR result code.+--+--     -   Renamed VK_OUT_OF_DATE_KHR to VK_ERROR_OUT_OF_DATE_KHR.+--+-- -   Revision 9, 2015-05-27 (James Jones)+--+--     -   Added inline proposed resolutions (marked with [JRJ]) to some+--         XXX questions\/issues. These should be moved to the issues+--         section in a subsequent update if the proposals are adopted.+--+-- -   Revision 10, 2015-05-28 (James Jones)+--+--     -   Converted vkAcquireNextImageKHR back to a non-queue operation+--         that uses a VkSemaphore object for explicit synchronization.+--+--     -   Added issue 10 to determine whether vkAcquireNextImageKHR+--         generates or returns semaphores, or whether it operates on a+--         semaphore provided by the application.+--+-- -   Revision 11, 2015-05-28 (James Jones)+--+--     -   Marked issues 6, 7, and 8 resolved.+--+--     -   Renamed VkSurfaceCapabilityPropertiesKHR to+--         VkSurfacePropertiesKHR to better convey the mutable nature of+--         the info it contains.+--+-- -   Revision 12, 2015-05-28 (James Jones)+--+--     -   Added issue 11 with a proposed resolution, and the related issue+--         12.+--+--     -   Updated various sections of the spec to match the proposed+--         resolution to issue 11.+--+-- -   Revision 13, 2015-06-01 (James Jones)+--+--     -   Moved some structures to VK_EXT_KHR_swap_chain to resolve the+--         spec’s issues 1 and 2.+--+-- -   Revision 14, 2015-06-01 (James Jones)+--+--     -   Added code for example 4 demonstrating how an application might+--         make use of the two different present and acquire next image KHR+--         result codes.+--+--     -   Added issue 13.+--+-- -   Revision 15, 2015-06-01 (James Jones)+--+--     -   Added issues 14 - 16 and related spec language.+--+--     -   Fixed some spelling errors.+--+--     -   Added language describing the meaningful return values for+--         vkAcquireNextImageKHR and vkQueuePresentKHR.+--+-- -   Revision 16, 2015-06-02 (James Jones)+--+--     -   Added issues 17 and 18, as well as related spec language.+--+--     -   Removed some erroneous text added by mistake in the last update.+--+-- -   Revision 17, 2015-06-15 (Ian Elliott)+--+--     -   Changed special value from \"-1\" to \"0\" so that the data+--         types can be unsigned.+--+-- -   Revision 18, 2015-06-15 (Ian Elliott)+--+--     -   Clarified the values of VkSurfacePropertiesKHR::minImageCount+--         and the timeout parameter of the vkAcquireNextImageKHR function.+--+-- -   Revision 19, 2015-06-17 (James Jones)+--+--     -   Misc. cleanup. Removed resolved inline issues and fixed typos.+--+--     -   Fixed clarification of VkSurfacePropertiesKHR::minImageCount+--         made in version 18.+--+--     -   Added a brief \"Image Ownership\" definition to the list of+--         terms used in the spec.+--+-- -   Revision 20, 2015-06-17 (James Jones)+--+--     -   Updated enum-extending values using new convention.+--+-- -   Revision 21, 2015-06-17 (James Jones)+--+--     -   Added language describing how to use+--         VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR.+--+--     -   Cleaned up an XXX comment regarding the description of which+--         queues vkQueuePresentKHR can be used on.+--+-- -   Revision 22, 2015-06-17 (James Jones)+--+--     -   Rebased on Vulkan API version 126.+--+-- -   Revision 23, 2015-06-18 (James Jones)+--+--     -   Updated language for issue 12 to read as a proposed resolution.+--+--     -   Marked issues 11, 12, 13, 16, and 17 resolved.+--+--     -   Temporarily added links to the relevant bugs under the remaining+--         unresolved issues.+--+--     -   Added issues 19 and 20 as well as proposed resolutions.+--+-- -   Revision 24, 2015-06-19 (Ian Elliott)+--+--     -   Changed special value for VkSurfacePropertiesKHR::currentExtent+--         back to \"-1\" from \"0\". This value will never need to be+--         unsigned, and \"0\" is actually a legal value.+--+-- -   Revision 25, 2015-06-23 (Ian Elliott)+--+--     -   Examples now show use of function pointers for extension+--         functions.+--+--     -   Eliminated extraneous whitespace.+--+-- -   Revision 26, 2015-06-25 (Ian Elliott)+--+--     -   Resolved Issues 9 & 10 per KHR TSG meeting.+--+-- -   Revision 27, 2015-06-25 (James Jones)+--+--     -   Added oldSwapchain member to VkSwapchainCreateInfoKHR.+--+-- -   Revision 28, 2015-06-25 (James Jones)+--+--     -   Added the \"inherit\" bits to the rotation and mirroring flags+--         and the associated issue 21.+--+-- -   Revision 29, 2015-06-25 (James Jones)+--+--     -   Added the \"clipped\" flag to VkSwapchainCreateInfoKHR, and the+--         associated issue 22.+--+--     -   Specified that presenting an image does not modify it.+--+-- -   Revision 30, 2015-06-25 (James Jones)+--+--     -   Added language to the spec that clarifies the behavior of+--         vkCreateSwapchainKHR() when the oldSwapchain field of+--         VkSwapchainCreateInfoKHR is not NULL.+--+-- -   Revision 31, 2015-06-26 (Ian Elliott)+--+--     -   Example of new VkSwapchainCreateInfoKHR members,+--         \"oldSwapchain\" and \"clipped\".+--+--     -   Example of using VkSurfacePropertiesKHR::{min|max}ImageCount to+--         set VkSwapchainCreateInfoKHR::minImageCount.+--+--     -   Rename vkGetSurfaceInfoKHR()\'s 4th parameter to \"pDataSize\",+--         for consistency with other functions.+--+--     -   Add macro with C-string name of extension (just to header file).+--+-- -   Revision 32, 2015-06-26 (James Jones)+--+--     -   Minor adjustments to the language describing the behavior of+--         \"oldSwapchain\"+--+--     -   Fixed the version date on my previous two updates.+--+-- -   Revision 33, 2015-06-26 (Jesse Hall)+--+--     -   Add usage flags to VkSwapchainCreateInfoKHR+--+-- -   Revision 34, 2015-06-26 (Ian Elliott)+--+--     -   Rename vkQueuePresentKHR()\'s 2nd parameter to \"pPresentInfo\",+--         for consistency with other functions.+--+-- -   Revision 35, 2015-06-26 (Jason Ekstrand)+--+--     -   Merged the VkRotationFlagBitsKHR and VkMirrorFlagBitsKHR enums+--         into a single VkSurfaceTransformFlagBitsKHR enum.+--+-- -   Revision 36, 2015-06-26 (Jason Ekstrand)+--+--     -   Added a VkSurfaceTransformKHR enum that is not a bitmask. Each+--         value in VkSurfaceTransformKHR corresponds directly to one of+--         the bits in VkSurfaceTransformFlagBitsKHR so transforming from+--         one to the other is easy. Having a separate enum means that+--         currentTransform and preTransform are now unambiguous by+--         definition.+--+-- -   Revision 37, 2015-06-29 (Ian Elliott)+--+--     -   Corrected one of the signatures of vkAcquireNextImageKHR, which+--         had the last two parameters switched from what it is elsewhere+--         in the specification and header files.+--+-- -   Revision 38, 2015-06-30 (Ian Elliott)+--+--     -   Corrected a typo in description of the vkGetSwapchainInfoKHR()+--         function.+--+--     -   Corrected a typo in header file comment for+--         VkPresentInfoKHR::sType.+--+-- -   Revision 39, 2015-07-07 (Daniel Rakos)+--+--     -   Added error section describing when each error is expected to be+--         reported.+--+--     -   Replaced bool32_t with VkBool32.+--+-- -   Revision 40, 2015-07-10 (Ian Elliott)+--+--     -   Updated to work with version 138 of the \"vulkan.h\" header.+--         This includes declaring the VkSwapchainKHR type using the new+--         VK_DEFINE_NONDISP_HANDLE macro, and no longer extending+--         VkObjectType (which was eliminated).+--+-- -   Revision 41 2015-07-09 (Mathias Heyer)+--+--     -   Added color space language.+--+-- -   Revision 42, 2015-07-10 (Daniel Rakos)+--+--     -   Updated query mechanism to reflect the convention changes done+--         in the core spec.+--+--     -   Removed \"queue\" from the name of+--         VK_STRUCTURE_TYPE_QUEUE_PRESENT_INFO_KHR to be consistent with+--         the established naming convention.+--+--     -   Removed reference to the no longer existing VkObjectType enum.+--+-- -   Revision 43, 2015-07-17 (Daniel Rakos)+--+--     -   Added support for concurrent sharing of swapchain images across+--         queue families.+--+--     -   Updated sample code based on recent changes+--+-- -   Revision 44, 2015-07-27 (Ian Elliott)+--+--     -   Noted that support for VK_PRESENT_MODE_FIFO_KHR is required.+--         That is ICDs may optionally support IMMEDIATE and MAILBOX, but+--         must support FIFO.+--+-- -   Revision 45, 2015-08-07 (Ian Elliott)+--+--     -   Corrected a typo in spec file (type and variable name had wrong+--         case for the imageColorSpace member of the+--         VkSwapchainCreateInfoKHR struct).+--+--     -   Corrected a typo in header file (last parameter in+--         PFN_vkGetSurfacePropertiesKHR was missing \"KHR\" at the end of+--         type: VkSurfacePropertiesKHR).+--+-- -   Revision 46, 2015-08-20 (Ian Elliott)+--+--     -   Renamed this extension and all of its enumerations, types,+--         functions, etc. This makes it compliant with the proposed+--         standard for Vulkan extensions.+--+--     -   Switched from \"revision\" to \"version\", including use of the+--         VK_MAKE_VERSION macro in the header file.+--+--     -   Made improvements to several descriptions.+--+--     -   Changed the status of several issues from PROPOSED to RESOLVED,+--         leaving no unresolved issues.+--+--     -   Resolved several TODOs, did miscellaneous cleanup, etc.+--+-- -   Revision 47, 2015-08-20 (Ian Elliott—​porting a 2015-07-29 change+--     from James Jones)+--+--     -   Moved the surface transform enums to VK_WSI_swapchain so they+--         could be re-used by VK_WSI_display.+--+-- -   Revision 48, 2015-09-01 (James Jones)+--+--     -   Various minor cleanups.+--+-- -   Revision 49, 2015-09-01 (James Jones)+--+--     -   Restore single-field revision number.+--+-- -   Revision 50, 2015-09-01 (James Jones)+--+--     -   Update Example #4 to include code that illustrates how to use+--         the oldSwapchain field.+--+-- -   Revision 51, 2015-09-01 (James Jones)+--+--     -   Fix example code compilation errors.+--+-- -   Revision 52, 2015-09-08 (Matthaeus G. Chajdas)+--+--     -   Corrected a typo.+--+-- -   Revision 53, 2015-09-10 (Alon Or-bach)+--+--     -   Removed underscore from SWAP_CHAIN left in+--         VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR.+--+-- -   Revision 54, 2015-09-11 (Jesse Hall)+--+--     -   Described the execution and memory coherence requirements for+--         image transitions to and from+--         VK_IMAGE_LAYOUT_PRESENT_SOURCE_KHR.+--+-- -   Revision 55, 2015-09-11 (Ray Smith)+--+--     -   Added errors for destroying and binding memory to presentable+--         images+--+-- -   Revision 56, 2015-09-18 (James Jones)+--+--     -   Added fence argument to vkAcquireNextImageKHR+--+--     -   Added example of how to meter a host thread based on+--         presentation rate.+--+-- -   Revision 57, 2015-09-26 (Jesse Hall)+--+--     -   Replace VkSurfaceDescriptionKHR with VkSurfaceKHR.+--+--     -   Added issue 25 with agreed resolution.+--+-- -   Revision 58, 2015-09-28 (Jesse Hall)+--+--     -   Renamed from VK_EXT_KHR_device_swapchain to+--         VK_EXT_KHR_swapchain.+--+-- -   Revision 59, 2015-09-29 (Ian Elliott)+--+--     -   Changed vkDestroySwapchainKHR() to return void.+--+-- -   Revision 60, 2015-10-01 (Jeff Vigil)+--+--     -   Added error result VK_ERROR_SURFACE_LOST_KHR.+--+-- -   Revision 61, 2015-10-05 (Jason Ekstrand)+--+--     -   Added the VkCompositeAlpha enum and corresponding structure+--         fields.+--+-- -   Revision 62, 2015-10-12 (Daniel Rakos)+--+--     -   Added VK_PRESENT_MODE_FIFO_RELAXED_KHR.+--+-- -   Revision 63, 2015-10-15 (Daniel Rakos)+--+--     -   Moved surface capability queries to VK_EXT_KHR_surface.+--+-- -   Revision 64, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_swapchain to VK_KHR_swapchain.+--+-- -   Revision 65, 2015-10-28 (Ian Elliott)+--+--     -   Added optional pResult member to VkPresentInfoKHR, so that+--         per-swapchain results can be obtained from vkQueuePresentKHR().+--+-- -   Revision 66, 2015-11-03 (Daniel Rakos)+--+--     -   Added allocation callbacks to create and destroy functions.+--+--     -   Updated resource transition language.+--+--     -   Updated sample code.+--+-- -   Revision 67, 2015-11-10 (Jesse Hall)+--+--     -   Add reserved flags bitmask to VkSwapchainCreateInfoKHR.+--+--     -   Modify naming and member ordering to match API style+--         conventions, and so the VkSwapchainCreateInfoKHR image property+--         members mirror corresponding VkImageCreateInfo members but with+--         an \'image\' prefix.+--+--     -   Make VkPresentInfoKHR::pResults non-const; it is an output array+--         parameter.+--+--     -   Make pPresentInfo parameter to vkQueuePresentKHR const.+--+-- -   Revision 68, 2016-04-05 (Ian Elliott)+--+--     -   Moved the \"validity\" include for vkAcquireNextImage to be in+--         its proper place, after the prototype and list of parameters.+--+--     -   Clarified language about presentable images, including how they+--         are acquired, when applications can and cannot use them, etc. As+--         part of this, removed language about \"ownership\" of+--         presentable images, and replaced it with more-consistent+--         language about presentable images being \"acquired\" by the+--         application.+--+-- -   2016-08-23 (Ian Elliott)+--+--     -   Update the example code, to use the final API command names, to+--         not have so many characters per line, and to split out a new+--         example to show how to obtain function pointers. This code is+--         more similar to the LunarG \"cube\" demo program.+--+-- -   2016-08-25 (Ian Elliott)+--+--     -   A note was added at the beginning of the example code, stating+--         that it will be removed from future versions of the appendix.+--+-- -   Revision 69, 2017-09-07 (Tobias Hector)+--+--     -   Added interactions with Vulkan 1.1+--+-- -   Revision 70, 2017-10-06 (Ian Elliott)+--+--     -   Corrected interactions with Vulkan 1.1+--+-- = See Also+--+-- 'PresentInfoKHR', 'SwapchainCreateFlagBitsKHR',+-- 'SwapchainCreateFlagsKHR', 'SwapchainCreateInfoKHR',+-- 'Vulkan.Extensions.Handles.SwapchainKHR', 'acquireNextImageKHR',+-- 'createSwapchainKHR', 'destroySwapchainKHR', 'getSwapchainImagesKHR',+-- 'queuePresentKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_KHR_swapchain  ( AcquireNextImageInfoKHR+                                           , BindImageMemorySwapchainInfoKHR+                                           , DeviceGroupPresentCapabilitiesKHR+                                           , DeviceGroupPresentInfoKHR+                                           , DeviceGroupSwapchainCreateInfoKHR+                                           , ImageSwapchainCreateInfoKHR+                                           , PresentInfoKHR+                                           , SwapchainCreateInfoKHR+                                           , DeviceGroupPresentModeFlagsKHR+                                           , DeviceGroupPresentModeFlagBitsKHR+                                           ) where++import Data.Kind (Type)+import {-# SOURCE #-} Vulkan.CStruct.Extends (Chain)+import {-# SOURCE #-} Vulkan.CStruct.Extends (Extendss)+import Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Vulkan.CStruct.Extends (PokeChain)+import Vulkan.CStruct (ToCStruct)+data AcquireNextImageInfoKHR++instance ToCStruct AcquireNextImageInfoKHR+instance Show AcquireNextImageInfoKHR++instance FromCStruct AcquireNextImageInfoKHR+++data BindImageMemorySwapchainInfoKHR++instance ToCStruct BindImageMemorySwapchainInfoKHR+instance Show BindImageMemorySwapchainInfoKHR++instance FromCStruct BindImageMemorySwapchainInfoKHR+++data DeviceGroupPresentCapabilitiesKHR++instance ToCStruct DeviceGroupPresentCapabilitiesKHR+instance Show DeviceGroupPresentCapabilitiesKHR++instance FromCStruct DeviceGroupPresentCapabilitiesKHR+++data DeviceGroupPresentInfoKHR++instance ToCStruct DeviceGroupPresentInfoKHR+instance Show DeviceGroupPresentInfoKHR++instance FromCStruct DeviceGroupPresentInfoKHR+++data DeviceGroupSwapchainCreateInfoKHR++instance ToCStruct DeviceGroupSwapchainCreateInfoKHR+instance Show DeviceGroupSwapchainCreateInfoKHR++instance FromCStruct DeviceGroupSwapchainCreateInfoKHR+++data ImageSwapchainCreateInfoKHR++instance ToCStruct ImageSwapchainCreateInfoKHR+instance Show ImageSwapchainCreateInfoKHR++instance FromCStruct ImageSwapchainCreateInfoKHR+++type role PresentInfoKHR nominal+data PresentInfoKHR (es :: [Type])++instance (Extendss PresentInfoKHR es, PokeChain es) => ToCStruct (PresentInfoKHR es)+instance Show (Chain es) => Show (PresentInfoKHR es)++instance (Extendss PresentInfoKHR es, PeekChain es) => FromCStruct (PresentInfoKHR es)+++type role SwapchainCreateInfoKHR nominal+data SwapchainCreateInfoKHR (es :: [Type])++instance (Extendss SwapchainCreateInfoKHR es, PokeChain es) => ToCStruct (SwapchainCreateInfoKHR es)+instance Show (Chain es) => Show (SwapchainCreateInfoKHR es)++instance (Extendss SwapchainCreateInfoKHR es, PeekChain es) => FromCStruct (SwapchainCreateInfoKHR es)+++type DeviceGroupPresentModeFlagsKHR = DeviceGroupPresentModeFlagBitsKHR++data DeviceGroupPresentModeFlagBitsKHR 
src/Vulkan/Extensions/VK_KHR_swapchain_mutable_format.hs view
@@ -1,4 +1,123 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_swapchain_mutable_format - device extension+--+-- == VK_KHR_swapchain_mutable_format+--+-- [__Name String__]+--     @VK_KHR_swapchain_mutable_format@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     201+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+--     -   Requires @VK_KHR_maintenance2@+--+--     -   Requires @VK_KHR_image_format_list@+--+-- [__Contact__]+--+--     -   Daniel Rakos+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_swapchain_mutable_format:%20&body=@drakos-arm%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-03-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jason Ekstrand, Intel+--+--     -   Jan-Harald Fredriksen, ARM+--+--     -   Jesse Hall, Google+--+--     -   Daniel Rakos, AMD+--+--     -   Ray Smith, ARM+--+-- == Description+--+-- This extension allows processing of swapchain images as different+-- formats to that used by the window system, which is particularly useful+-- for switching between sRGB and linear RGB formats.+--+-- It adds a new swapchain creation flag that enables creating image views+-- from presentable images with a different format than the one used to+-- create the swapchain.+--+-- == New Enum Constants+--+-- -   'KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME'+--+-- -   'KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagBitsKHR':+--+--     -   'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR'+--+-- == Issues+--+-- 1) Are there any new capabilities needed?+--+-- __RESOLVED__: No. It is expected that all implementations exposing this+-- extension support swapchain image format mutability.+--+-- 2) Do we need a separate @VK_SWAPCHAIN_CREATE_EXTENDED_USAGE_BIT_KHR@?+--+-- __RESOLVED__: No. This extension requires @VK_KHR_maintenance2@ and+-- presentable images of swapchains created with+-- 'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR'+-- are created internally in a way equivalent to specifying both+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'+-- and+-- 'Vulkan.Extensions.VK_KHR_maintenance2.IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR'.+--+-- 3) Do we need a separate structure to allow specifying an image format+-- list for swapchains?+--+-- __RESOLVED__: No. We simply use the same+-- 'Vulkan.Extensions.VK_KHR_image_format_list.ImageFormatListCreateInfoKHR'+-- structure introduced by @VK_KHR_image_format_list@. The structure is+-- required to be included in the @pNext@ chain of+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR' for+-- swapchains created with+-- 'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR'.+--+-- == Version History+--+-- -   Revision 1, 2018-03-28 (Daniel Rakos)+--+--     -   Internal revisions.+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain_mutable_format Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_swapchain_mutable_format  ( KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION                                                           , pattern KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION                                                           , KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME
src/Vulkan/Extensions/VK_KHR_timeline_semaphore.hs view
@@ -1,4 +1,292 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_timeline_semaphore - device extension+--+-- == VK_KHR_timeline_semaphore+--+-- [__Name String__]+--     @VK_KHR_timeline_semaphore@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     208+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Jason Ekstrand+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_timeline_semaphore:%20&body=@jekstrand%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-06-12+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension interacts with+--         @VK_KHR_external_semaphore_capabilities@+--+--     -   This extension interacts with @VK_KHR_external_semaphore@+--+--     -   This extension interacts with @VK_KHR_external_semaphore_win32@+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Yuriy O’Donnell, Epic Games+--+--     -   Jason Ekstrand, Intel+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Daniel Rakos, AMD+--+--     -   Ray Smith, Arm+--+-- == Description+--+-- This extension introduces a new type of semaphore that has an integer+-- payload identifying a point in a timeline. Such timeline semaphores+-- support the following operations:+--+-- -   Host query - A host operation that allows querying the payload of+--     the timeline semaphore.+--+-- -   Host wait - A host operation that allows a blocking wait for a+--     timeline semaphore to reach a specified value.+--+-- -   Host signal - A host operation that allows advancing the timeline+--     semaphore to a specified value.+--+-- -   Device wait - A device operation that allows waiting for a timeline+--     semaphore to reach a specified value.+--+-- -   Device signal - A device operation that allows advancing the+--     timeline semaphore to a specified value.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Commands+--+-- -   'getSemaphoreCounterValueKHR'+--+-- -   'signalSemaphoreKHR'+--+-- -   'waitSemaphoresKHR'+--+-- == New Structures+--+-- -   'SemaphoreSignalInfoKHR'+--+-- -   'SemaphoreWaitInfoKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceTimelineSemaphoreFeaturesKHR'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceTimelineSemaphorePropertiesKHR'+--+-- -   Extending 'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo',+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.PhysicalDeviceExternalSemaphoreInfo':+--+--     -   'SemaphoreTypeCreateInfoKHR'+--+-- -   Extending 'Vulkan.Core10.Queue.SubmitInfo',+--     'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo':+--+--     -   'TimelineSemaphoreSubmitInfoKHR'+--+-- == New Enums+--+-- -   'SemaphoreTypeKHR'+--+-- -   'SemaphoreWaitFlagBitsKHR'+--+-- == New Bitmasks+--+-- -   'SemaphoreWaitFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME'+--+-- -   'KHR_TIMELINE_SEMAPHORE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType':+--+--     -   'SEMAPHORE_TYPE_BINARY_KHR'+--+--     -   'SEMAPHORE_TYPE_TIMELINE_KHR'+--+-- -   Extending+--     'Vulkan.Core12.Enums.SemaphoreWaitFlagBits.SemaphoreWaitFlagBits':+--+--     -   'SEMAPHORE_WAIT_ANY_BIT_KHR'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR'+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR'+--+--     -   'STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR'+--+--     -   'STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR'+--+-- == Issues+--+-- 1) Do we need a new object type for this?+--+-- __RESOLVED__: No, we just introduce a new type of semaphore object, as+-- @VK_KHR_external_semaphore_win32@ already uses semaphores as the+-- destination for importing D3D12 fence objects, which are semantically+-- close\/identical to the proposed synchronization primitive.+--+-- 2) What type of payload the new synchronization primitive has?+--+-- __RESOLVED__: A 64-bit unsigned integer that can only be set to+-- monotonically increasing values by signal operations and is not changed+-- by wait operations.+--+-- 3) Does the new synchronization primitive have the same+-- signal-before-wait requirement as the existing semaphores do?+--+-- __RESOLVED__: No. Timeline semaphores support signaling and waiting+-- entirely asynchronously. It is the responsibility of the client to avoid+-- deadlock.+--+-- 4) Does the new synchronization primitive allow resetting its payload?+--+-- __RESOLVED__: No, allowing the payload value to \"go backwards\" is+-- problematic. Applications looking for reset behavior should create a new+-- instance of the sychronization primitive instead.+--+-- 5) How do we enable host waits on the synchronization primitive?+--+-- __RESOLVED__: Both a non-blocking query of the current payload value of+-- the synchronization primitive, and a blocking wait operation are+-- provided.+--+-- 6) How do we enable device waits and signals on the synchronization+-- primitive?+--+-- __RESOLVED__: Similar to @VK_KHR_external_semaphore_win32@, this+-- extension introduces a new structure that can be chained to+-- 'Vulkan.Core10.Queue.SubmitInfo' to specify the values signaled+-- semaphores should be set to, and the values waited semaphores need to+-- reach.+--+-- 7) Can the new synchronization primitive be used to synchronize+-- presentation and swapchain image acquisition operations?+--+-- __RESOLVED__: Some implementations may have problems with supporting+-- that directly, thus it’s not allowed in this extension.+--+-- 8) Do we want to support external sharing of the new synchronization+-- primitive type?+--+-- __RESOLVED__: Yes. Timeline semaphore specific external sharing+-- capabilities can be queried using+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.getPhysicalDeviceExternalSemaphoreProperties'+-- by chaining the new 'SemaphoreTypeCreateInfoKHR' structure to its+-- @pExternalSemaphoreInfo@ structure. This allows having a different set+-- of external semaphore handle types supported for timeline semaphores vs+-- binary semaphores.+--+-- 9) Do we need to add a host signal operation for the new synchronization+-- primitive type?+--+-- __RESOLVED__: Yes. This helps in situations where one host thread+-- submits a workload but another host thread has the information on when+-- the workload is ready to be executed.+--+-- 10) How should the new synchronization primitive interact with the+-- ordering requirements of the original 'Vulkan.Core10.Handles.Semaphore'?+--+-- __RESOLVED__: Prior to calling any command which /may/ cause a wait+-- operation on a binary semaphore, the client /must/ ensure that the+-- semaphore signal operation that has been submitted for execution and any+-- semaphore signal operations on which it depends (if any) /must/ have+-- also been submitted for execution.+--+-- 11) Should we have separate feature bits for different sub-features of+-- timeline semaphores?+--+-- __RESOLVED__: No. The only feature which cannot be supported universally+-- is timeline semaphore import\/export. For import\/export, the client is+-- already required to query available external handle types via+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.getPhysicalDeviceExternalSemaphoreProperties'+-- and provide the semaphore type by adding a 'SemaphoreTypeCreateInfoKHR'+-- structure to the @pNext@ chain of+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.PhysicalDeviceExternalSemaphoreInfo'+-- so no new feature bit is required.+--+-- == Version History+--+-- -   Revision 1, 2018-05-10 (Jason Ekstrand)+--+--     -   Initial version+--+-- -   Revision 2, 2019-06-12 (Jason Ekstrand)+--+--     -   Added an initialValue parameter to timeline semaphore creation+--+-- = See Also+--+-- 'PhysicalDeviceTimelineSemaphoreFeaturesKHR',+-- 'PhysicalDeviceTimelineSemaphorePropertiesKHR',+-- 'SemaphoreSignalInfoKHR', 'SemaphoreTypeCreateInfoKHR',+-- 'SemaphoreTypeKHR', 'SemaphoreWaitFlagBitsKHR', 'SemaphoreWaitFlagsKHR',+-- 'SemaphoreWaitInfoKHR', 'TimelineSemaphoreSubmitInfoKHR',+-- 'getSemaphoreCounterValueKHR', 'signalSemaphoreKHR', 'waitSemaphoresKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_timeline_semaphore Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_timeline_semaphore  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR                                                     , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR                                                     , pattern STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR
src/Vulkan/Extensions/VK_KHR_uniform_buffer_standard_layout.hs view
@@ -1,4 +1,111 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_uniform_buffer_standard_layout - device extension+--+-- == VK_KHR_uniform_buffer_standard_layout+--+-- [__Name String__]+--     @VK_KHR_uniform_buffer_standard_layout@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     254+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Graeme Leese+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_uniform_buffer_standard_layout:%20&body=@gnl21%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-01-25+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+-- [__Contributors__]+--+--     -   Graeme Leese, Broadcom+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Tobias Hector, AMD+--+--     -   Jason Ekstrand, Intel+--+--     -   Neil Henning, AMD+--+-- == Description+--+-- This extension enables tighter array and struct packing to be used with+-- uniform buffers.+--+-- It modifies the alignment rules for uniform buffers, allowing for+-- tighter packing of arrays and structures. This allows, for example, the+-- std430 layout, as defined in+-- <https://www.khronos.org/registry/OpenGL/specs/gl/GLSLangSpec.4.60.pdf GLSL>+-- to be supported in uniform buffers.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME'+--+-- -   'KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR'+--+-- == Version History+--+-- -   Revision 1, 2019-01-25 (Graeme Leese)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_uniform_buffer_standard_layout Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_uniform_buffer_standard_layout  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR                                                                 , PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR                                                                 , KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION
src/Vulkan/Extensions/VK_KHR_variable_pointers.hs view
@@ -1,4 +1,162 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_variable_pointers - device extension+--+-- == VK_KHR_variable_pointers+--+-- [__Name String__]+--     @VK_KHR_variable_pointers@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     121+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_storage_buffer_storage_class@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_variable_pointers:%20&body=@critsec%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-09-05+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_variable_pointers.html SPV_KHR_variable_pointers>+--+--     -   Promoted to Vulkan 1.1 Core+--+-- [__Contributors__]+--+--     -   John Kessenich, Google+--+--     -   Neil Henning, Codeplay+--+--     -   David Neto, Google+--+--     -   Daniel Koch, Nvidia+--+--     -   Graeme Leese, Broadcom+--+--     -   Weifeng Zhang, Qualcomm+--+--     -   Stephen Clarke, Imagination Technologies+--+--     -   Jason Ekstrand, Intel+--+--     -   Jesse Hall, Google+--+-- == Description+--+-- The @VK_KHR_variable_pointers@ extension allows implementations to+-- indicate their level of support for the @SPV_KHR_variable_pointers@+-- SPIR-V extension. The SPIR-V extension allows shader modules to use+-- invocation-private pointers into uniform and\/or storage buffers, where+-- the pointer values can be dynamic and non-uniform.+--+-- The @SPV_KHR_variable_pointers@ extension introduces two capabilities.+-- The first, @VariablePointersStorageBuffer@, /must/ be supported by all+-- implementations of this extension. The second, @VariablePointers@, is+-- optional.+--+-- == Promotion to Vulkan 1.1+--+-- All functionality in this extension is included in core Vulkan 1.1, with+-- the KHR suffix omitted, however support for the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-variablePointersStorageBuffer variablePointersStorageBuffer>+-- feature is made optional. The original type, enum and command names are+-- still available as aliases of the core functionality.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceVariablePointerFeaturesKHR'+--+--     -   'PhysicalDeviceVariablePointersFeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_VARIABLE_POINTERS_EXTENSION_NAME'+--+-- -   'KHR_VARIABLE_POINTERS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-variablepointers VariablePointers>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-variablepointers VariablePointersStorageBuffer>+--+-- == Issues+--+-- 1) Do we need an optional property for the SPIR-V+-- @VariablePointersStorageBuffer@ capability or should it be mandatory+-- when this extension is advertised?+--+-- __RESOLVED__: Add it as a distinct feature, but make support mandatory.+-- Adding it as a feature makes the extension easier to include in a future+-- core API version. In the extension, the feature is mandatory, so that+-- presence of the extension guarantees some functionality. When included+-- in a core API version, the feature would be optional.+--+-- 2) Can support for these capabilities vary between shader stages?+--+-- __RESOLVED__: No, if the capability is supported in any stage it must be+-- supported in all stages.+--+-- 3) Should the capabilities be features or limits?+--+-- __RESOLVED__: Features, primarily for consistency with other similar+-- extensions.+--+-- == Version History+--+-- -   Revision 1, 2017-03-14 (Jesse Hall and John Kessenich)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceVariablePointerFeaturesKHR',+-- 'PhysicalDeviceVariablePointersFeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_variable_pointers Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_variable_pointers  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR                                                    , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR                                                    , PhysicalDeviceVariablePointersFeaturesKHR
src/Vulkan/Extensions/VK_KHR_vulkan_memory_model.hs view
@@ -1,4 +1,131 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_vulkan_memory_model - device extension+--+-- == VK_KHR_vulkan_memory_model+--+-- [__Name String__]+--     @VK_KHR_vulkan_memory_model@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     212+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2-promotions Vulkan 1.2>+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_vulkan_memory_model:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-12-10+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Promoted to Vulkan 1.2 Core+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_vulkan_memory_model.html SPV_KHR_vulkan_memory_model>+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Alan Baker, Google+--+--     -   Tobias Hector, AMD+--+--     -   David Neto, Google+--+--     -   Robert Simpson, Qualcomm Technologies, Inc.+--+--     -   Brian Sumner, AMD+--+-- == Description+--+-- The @VK_KHR_vulkan_memory_model@ extension allows use of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-model Vulkan Memory Model>,+-- which formally defines how to synchronize memory accesses to the same+-- memory locations performed by multiple shader invocations.+--+-- Note+--+-- Version 3 of the spec added a member+-- (@vulkanMemoryModelAvailabilityVisibilityChains@) to+-- 'PhysicalDeviceVulkanMemoryModelFeaturesKHR', which is an incompatible+-- change from version 2.+--+-- == Promotion to Vulkan 1.2+--+-- All functionality in this extension is included in core Vulkan 1.2, with+-- the KHR suffix omitted. However, if Vulkan 1.2 is supported and this+-- extension is not, the @vulkanMemoryModel@ capability is optional. The+-- original type, enum and command names are still available as aliases of+-- the core functionality.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceVulkanMemoryModelFeaturesKHR'+--+-- == New Enum Constants+--+-- -   'KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME'+--+-- -   'KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-memorymodel VulkanMemoryModelKHR>+--+-- == Version History+--+-- -   Revision 1, 2018-06-24 (Jeff Bolz)+--+--     -   Initial draft+--+-- -   Revision 3, 2018-12-10 (Jeff Bolz)+--+--     -   Add vulkanMemoryModelAvailabilityVisibilityChains member to the+--         VkPhysicalDeviceVulkanMemoryModelFeaturesKHR structure.+--+-- = See Also+--+-- 'PhysicalDeviceVulkanMemoryModelFeaturesKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_vulkan_memory_model Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_vulkan_memory_model  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR                                                      , PhysicalDeviceVulkanMemoryModelFeaturesKHR                                                      , KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION
src/Vulkan/Extensions/VK_KHR_wayland_surface.hs view
@@ -1,4 +1,191 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_wayland_surface - instance extension+--+-- == VK_KHR_wayland_surface+--+-- [__Name String__]+--     @VK_KHR_wayland_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     7+--+-- [__Revision__]+--     6+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_wayland_surface:%20&body=@critsec%20 >+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_wayland_surface:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2015-11-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Patrick Doane, Blizzard+--+--     -   Jason Ekstrand, Intel+--+--     -   Ian Elliott, LunarG+--+--     -   Courtney Goeltzenleuchter, LunarG+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Antoine Labour, Google+--+--     -   Jon Leech, Khronos+--+--     -   David Mao, AMD+--+--     -   Norbert Nopper, Freescale+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Ray Smith, ARM+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Chia-I Wu, LunarG+--+-- == Description+--+-- The @VK_KHR_wayland_surface@ extension is an instance extension. It+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'+-- object (defined by the @VK_KHR_surface@ extension) that refers to a+-- Wayland @wl_surface@, as well as a query to determine support for+-- rendering to a Wayland compositor.+--+-- == New Commands+--+-- -   'createWaylandSurfaceKHR'+--+-- -   'getPhysicalDeviceWaylandPresentationSupportKHR'+--+-- == New Structures+--+-- -   'WaylandSurfaceCreateInfoKHR'+--+-- == New Bitmasks+--+-- -   'WaylandSurfaceCreateFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_WAYLAND_SURFACE_EXTENSION_NAME'+--+-- -   'KHR_WAYLAND_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) Does Wayland need a way to query for compatibility between a+-- particular physical device and a specific Wayland display? This would be+-- a more general query than+-- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR':+-- if the Wayland-specific query returned+-- 'Vulkan.Core10.FundamentalTypes.TRUE' for a+-- ('Vulkan.Core10.Handles.PhysicalDevice', @struct wl_display*@) pair,+-- then the physical device could be assumed to support presentation to any+-- 'Vulkan.Extensions.Handles.SurfaceKHR' for surfaces on the display.+--+-- __RESOLVED__: Yes. 'getPhysicalDeviceWaylandPresentationSupportKHR' was+-- added to address this issue.+--+-- 2) Should we require surfaces created with 'createWaylandSurfaceKHR' to+-- support the 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR'+-- present mode?+--+-- __RESOLVED__: Yes. Wayland is an inherently mailbox window system and+-- mailbox support is required for some Wayland compositor interactions to+-- work as expected. While handling these interactions may be possible with+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR', it is much+-- more difficult to do without deadlock and requiring all Wayland+-- applications to be able to support implementations which only support+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' would be an+-- onerous restriction on application developers.+--+-- == Version History+--+-- -   Revision 1, 2015-09-23 (Jesse Hall)+--+--     -   Initial draft, based on the previous contents of+--         VK_EXT_KHR_swapchain (later renamed VK_EXT_KHR_surface).+--+-- -   Revision 2, 2015-10-02 (James Jones)+--+--     -   Added vkGetPhysicalDeviceWaylandPresentationSupportKHR() to+--         resolve issue #1.+--+--     -   Adjusted wording of issue #1 to match the agreed-upon solution.+--+--     -   Renamed \"window\" parameters to \"surface\" to match Wayland+--         conventions.+--+-- -   Revision 3, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_wayland_surface to+--         VK_KHR_wayland_surface.+--+-- -   Revision 4, 2015-11-03 (Daniel Rakos)+--+--     -   Added allocation callbacks to vkCreateWaylandSurfaceKHR.+--+-- -   Revision 5, 2015-11-28 (Daniel Rakos)+--+--     -   Updated the surface create function to take a pCreateInfo+--         structure.+--+-- -   Revision 6, 2017-02-08 (Jason Ekstrand)+--+--     -   Added the requirement that implementations support+--         'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR'.+--+--     -   Added wording about interactions between+--         'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' and the+--         Wayland requests sent to the compositor.+--+-- = See Also+--+-- 'WaylandSurfaceCreateFlagsKHR', 'WaylandSurfaceCreateInfoKHR',+-- 'createWaylandSurfaceKHR',+-- 'getPhysicalDeviceWaylandPresentationSupportKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_wayland_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_wayland_surface  ( createWaylandSurfaceKHR                                                  , getPhysicalDeviceWaylandPresentationSupportKHR                                                  , WaylandSurfaceCreateInfoKHR(..)@@ -12,6 +199,8 @@                                                  , SurfaceKHR(..)                                                  ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -23,15 +212,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -49,8 +231,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.Core10.FundamentalTypes (bool32ToBool)@@ -292,17 +474,27 @@   +conNameWaylandSurfaceCreateFlagsKHR :: String+conNameWaylandSurfaceCreateFlagsKHR = "WaylandSurfaceCreateFlagsKHR"++enumPrefixWaylandSurfaceCreateFlagsKHR :: String+enumPrefixWaylandSurfaceCreateFlagsKHR = ""++showTableWaylandSurfaceCreateFlagsKHR :: [(WaylandSurfaceCreateFlagsKHR, String)]+showTableWaylandSurfaceCreateFlagsKHR = []+ instance Show WaylandSurfaceCreateFlagsKHR where-  showsPrec p = \case-    WaylandSurfaceCreateFlagsKHR x -> showParen (p >= 11) (showString "WaylandSurfaceCreateFlagsKHR 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixWaylandSurfaceCreateFlagsKHR+                            showTableWaylandSurfaceCreateFlagsKHR+                            conNameWaylandSurfaceCreateFlagsKHR+                            (\(WaylandSurfaceCreateFlagsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read WaylandSurfaceCreateFlagsKHR where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "WaylandSurfaceCreateFlagsKHR")-                       v <- step readPrec-                       pure (WaylandSurfaceCreateFlagsKHR v)))+  readPrec = enumReadPrec enumPrefixWaylandSurfaceCreateFlagsKHR+                          showTableWaylandSurfaceCreateFlagsKHR+                          conNameWaylandSurfaceCreateFlagsKHR+                          WaylandSurfaceCreateFlagsKHR   type KHR_WAYLAND_SURFACE_SPEC_VERSION = 6
src/Vulkan/Extensions/VK_KHR_wayland_surface.hs-boot view
@@ -1,4 +1,191 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_wayland_surface - instance extension+--+-- == VK_KHR_wayland_surface+--+-- [__Name String__]+--     @VK_KHR_wayland_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     7+--+-- [__Revision__]+--     6+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_wayland_surface:%20&body=@critsec%20 >+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_wayland_surface:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2015-11-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Patrick Doane, Blizzard+--+--     -   Jason Ekstrand, Intel+--+--     -   Ian Elliott, LunarG+--+--     -   Courtney Goeltzenleuchter, LunarG+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Antoine Labour, Google+--+--     -   Jon Leech, Khronos+--+--     -   David Mao, AMD+--+--     -   Norbert Nopper, Freescale+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Ray Smith, ARM+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Chia-I Wu, LunarG+--+-- == Description+--+-- The @VK_KHR_wayland_surface@ extension is an instance extension. It+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'+-- object (defined by the @VK_KHR_surface@ extension) that refers to a+-- Wayland @wl_surface@, as well as a query to determine support for+-- rendering to a Wayland compositor.+--+-- == New Commands+--+-- -   'createWaylandSurfaceKHR'+--+-- -   'getPhysicalDeviceWaylandPresentationSupportKHR'+--+-- == New Structures+--+-- -   'WaylandSurfaceCreateInfoKHR'+--+-- == New Bitmasks+--+-- -   'WaylandSurfaceCreateFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_WAYLAND_SURFACE_EXTENSION_NAME'+--+-- -   'KHR_WAYLAND_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) Does Wayland need a way to query for compatibility between a+-- particular physical device and a specific Wayland display? This would be+-- a more general query than+-- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR':+-- if the Wayland-specific query returned+-- 'Vulkan.Core10.FundamentalTypes.TRUE' for a+-- ('Vulkan.Core10.Handles.PhysicalDevice', @struct wl_display*@) pair,+-- then the physical device could be assumed to support presentation to any+-- 'Vulkan.Extensions.Handles.SurfaceKHR' for surfaces on the display.+--+-- __RESOLVED__: Yes. 'getPhysicalDeviceWaylandPresentationSupportKHR' was+-- added to address this issue.+--+-- 2) Should we require surfaces created with 'createWaylandSurfaceKHR' to+-- support the 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR'+-- present mode?+--+-- __RESOLVED__: Yes. Wayland is an inherently mailbox window system and+-- mailbox support is required for some Wayland compositor interactions to+-- work as expected. While handling these interactions may be possible with+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR', it is much+-- more difficult to do without deadlock and requiring all Wayland+-- applications to be able to support implementations which only support+-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_FIFO_KHR' would be an+-- onerous restriction on application developers.+--+-- == Version History+--+-- -   Revision 1, 2015-09-23 (Jesse Hall)+--+--     -   Initial draft, based on the previous contents of+--         VK_EXT_KHR_swapchain (later renamed VK_EXT_KHR_surface).+--+-- -   Revision 2, 2015-10-02 (James Jones)+--+--     -   Added vkGetPhysicalDeviceWaylandPresentationSupportKHR() to+--         resolve issue #1.+--+--     -   Adjusted wording of issue #1 to match the agreed-upon solution.+--+--     -   Renamed \"window\" parameters to \"surface\" to match Wayland+--         conventions.+--+-- -   Revision 3, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_wayland_surface to+--         VK_KHR_wayland_surface.+--+-- -   Revision 4, 2015-11-03 (Daniel Rakos)+--+--     -   Added allocation callbacks to vkCreateWaylandSurfaceKHR.+--+-- -   Revision 5, 2015-11-28 (Daniel Rakos)+--+--     -   Updated the surface create function to take a pCreateInfo+--         structure.+--+-- -   Revision 6, 2017-02-08 (Jason Ekstrand)+--+--     -   Added the requirement that implementations support+--         'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR'.+--+--     -   Added wording about interactions between+--         'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' and the+--         Wayland requests sent to the compositor.+--+-- = See Also+--+-- 'WaylandSurfaceCreateFlagsKHR', 'WaylandSurfaceCreateInfoKHR',+-- 'createWaylandSurfaceKHR',+-- 'getPhysicalDeviceWaylandPresentationSupportKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_wayland_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_wayland_surface  ( WaylandSurfaceCreateInfoKHR                                                  , Wl_display                                                  ) where
src/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs view
@@ -1,4 +1,91 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_win32_keyed_mutex - device extension+--+-- == VK_KHR_win32_keyed_mutex+--+-- [__Name String__]+--     @VK_KHR_win32_keyed_mutex@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     76+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_memory_win32@+--+-- [__Contact__]+--+--     -   Carsten Rohde+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_win32_keyed_mutex:%20&body=@crohde%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- Applications that wish to import Direct3D 11 memory objects into the+-- Vulkan API may wish to use the native keyed mutex mechanism to+-- synchronize access to the memory between Vulkan and Direct3D. This+-- extension provides a way for an application to access the keyed mutex+-- associated with an imported Vulkan memory object when submitting command+-- buffers to a queue.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Queue.SubmitInfo':+--+--     -   'Win32KeyedMutexAcquireReleaseInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME'+--+-- -   'KHR_WIN32_KEYED_MUTEX_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR'+--+-- == Version History+--+-- -   Revision 1, 2016-10-21 (James Jones)+--+--     -   Initial revision+--+-- = See Also+--+-- 'Win32KeyedMutexAcquireReleaseInfoKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_win32_keyed_mutex Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_win32_keyed_mutex  ( Win32KeyedMutexAcquireReleaseInfoKHR(..)                                                    , KHR_WIN32_KEYED_MUTEX_SPEC_VERSION                                                    , pattern KHR_WIN32_KEYED_MUTEX_SPEC_VERSION
src/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs-boot view
@@ -1,4 +1,91 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_win32_keyed_mutex - device extension+--+-- == VK_KHR_win32_keyed_mutex+--+-- [__Name String__]+--     @VK_KHR_win32_keyed_mutex@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     76+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_memory_win32@+--+-- [__Contact__]+--+--     -   Carsten Rohde+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_win32_keyed_mutex:%20&body=@crohde%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-10-21+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Jeff Juliano, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- Applications that wish to import Direct3D 11 memory objects into the+-- Vulkan API may wish to use the native keyed mutex mechanism to+-- synchronize access to the memory between Vulkan and Direct3D. This+-- extension provides a way for an application to access the keyed mutex+-- associated with an imported Vulkan memory object when submitting command+-- buffers to a queue.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Queue.SubmitInfo':+--+--     -   'Win32KeyedMutexAcquireReleaseInfoKHR'+--+-- == New Enum Constants+--+-- -   'KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME'+--+-- -   'KHR_WIN32_KEYED_MUTEX_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR'+--+-- == Version History+--+-- -   Revision 1, 2016-10-21 (James Jones)+--+--     -   Initial revision+--+-- = See Also+--+-- 'Win32KeyedMutexAcquireReleaseInfoKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_win32_keyed_mutex Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_win32_keyed_mutex  (Win32KeyedMutexAcquireReleaseInfoKHR) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_KHR_win32_surface.hs view
@@ -1,4 +1,217 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_win32_surface - instance extension+--+-- == VK_KHR_win32_surface+--+-- [__Name String__]+--     @VK_KHR_win32_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     10+--+-- [__Revision__]+--     6+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_win32_surface:%20&body=@critsec%20 >+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_win32_surface:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-04-24+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Patrick Doane, Blizzard+--+--     -   Jason Ekstrand, Intel+--+--     -   Ian Elliott, LunarG+--+--     -   Courtney Goeltzenleuchter, LunarG+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Antoine Labour, Google+--+--     -   Jon Leech, Khronos+--+--     -   David Mao, AMD+--+--     -   Norbert Nopper, Freescale+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Ray Smith, ARM+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Chia-I Wu, LunarG+--+-- == Description+--+-- The @VK_KHR_win32_surface@ extension is an instance extension. It+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'+-- object (defined by the @VK_KHR_surface@ extension) that refers to a+-- Win32 'HWND', as well as a query to determine support for rendering to+-- the windows desktop.+--+-- == New Commands+--+-- -   'createWin32SurfaceKHR'+--+-- -   'getPhysicalDeviceWin32PresentationSupportKHR'+--+-- == New Structures+--+-- -   'Win32SurfaceCreateInfoKHR'+--+-- == New Bitmasks+--+-- -   'Win32SurfaceCreateFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_WIN32_SURFACE_EXTENSION_NAME'+--+-- -   'KHR_WIN32_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) Does Win32 need a way to query for compatibility between a particular+-- physical device and a specific screen? Compatibility between a physical+-- device and a window generally only depends on what screen the window is+-- on. However, there is not an obvious way to identify a screen without+-- already having a window on the screen.+--+-- __RESOLVED__: No. While it may be useful, there is not a clear way to do+-- this on Win32. However, a method was added to query support for+-- presenting to the windows desktop as a whole.+--+-- 2) If a native window object ('HWND') is used by one graphics API, and+-- then is later used by a different graphics API (one of which is Vulkan),+-- can these uses interfere with each other?+--+-- __RESOLVED__: Yes.+--+-- Uses of a window object by multiple graphics APIs results in undefined+-- behavior. Such behavior may succeed when using one Vulkan implementation+-- but fail when using a different Vulkan implementation. Potential+-- failures include:+--+-- -   Creating then destroying a flip presentation model DXGI swapchain on+--     a window object can prevent+--     'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR' from+--     succeeding on the same window object.+--+-- -   Creating then destroying a 'Vulkan.Extensions.Handles.SwapchainKHR'+--     on a window object can prevent creation of a bitblt model DXGI+--     swapchain on the same window object.+--+-- -   Creating then destroying a 'Vulkan.Extensions.Handles.SwapchainKHR'+--     on a window object can effectively @SetPixelFormat@ to a different+--     format than the format chosen by an OpenGL application.+--+-- -   Creating then destroying a 'Vulkan.Extensions.Handles.SwapchainKHR'+--     on a window object on one 'Vulkan.Core10.Handles.PhysicalDevice' can+--     prevent 'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR' from+--     succeeding on the same window object, but on a different+--     'Vulkan.Core10.Handles.PhysicalDevice' that is associated with a+--     different Vulkan ICD.+--+-- In all cases the problem can be worked around by creating a new window+-- object.+--+-- Technical details include:+--+-- -   Creating a DXGI swapchain over a window object can alter the object+--     for the remainder of its lifetime. The alteration persists even+--     after the DXGI swapchain has been destroyed. This alteration can+--     make it impossible for a conformant Vulkan implementation to create+--     a 'Vulkan.Extensions.Handles.SwapchainKHR' over the same window+--     object. Mention of this alteration can be found in the remarks+--     section of the MSDN documentation for @DXGI_SWAP_EFFECT@.+--+-- -   Calling GDI’s @SetPixelFormat@ (needed by OpenGL’s WGL layer) on a+--     window object alters the object for the remainder of its lifetime.+--     The MSDN documentation for @SetPixelFormat@ explains that a window+--     object’s pixel format can be set only one time.+--+-- -   Creating a 'Vulkan.Extensions.Handles.SwapchainKHR' over a window+--     object can alter the object for the remaining life of its lifetime.+--     Either of the above alterations may occur as a side-effect of+--     'Vulkan.Extensions.Handles.SwapchainKHR'.+--+-- == Version History+--+-- -   Revision 1, 2015-09-23 (Jesse Hall)+--+--     -   Initial draft, based on the previous contents of+--         VK_EXT_KHR_swapchain (later renamed VK_EXT_KHR_surface).+--+-- -   Revision 2, 2015-10-02 (James Jones)+--+--     -   Added presentation support query for win32 desktops.+--+-- -   Revision 3, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_win32_surface to VK_KHR_win32_surface.+--+-- -   Revision 4, 2015-11-03 (Daniel Rakos)+--+--     -   Added allocation callbacks to vkCreateWin32SurfaceKHR.+--+-- -   Revision 5, 2015-11-28 (Daniel Rakos)+--+--     -   Updated the surface create function to take a pCreateInfo+--         structure.+--+-- -   Revision 6, 2017-04-24 (Jeff Juliano)+--+--     -   Add issue 2 addressing reuse of a native window object in a+--         different Graphics API, or by a different Vulkan ICD.+--+-- = See Also+--+-- 'Win32SurfaceCreateFlagsKHR', 'Win32SurfaceCreateInfoKHR',+-- 'createWin32SurfaceKHR', 'getPhysicalDeviceWin32PresentationSupportKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_win32_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_win32_surface  ( createWin32SurfaceKHR                                                , getPhysicalDeviceWin32PresentationSupportKHR                                                , Win32SurfaceCreateInfoKHR(..)@@ -12,6 +225,8 @@                                                , SurfaceKHR(..)                                                ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -23,15 +238,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -49,8 +257,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.Core10.FundamentalTypes (bool32ToBool)@@ -287,17 +495,27 @@   +conNameWin32SurfaceCreateFlagsKHR :: String+conNameWin32SurfaceCreateFlagsKHR = "Win32SurfaceCreateFlagsKHR"++enumPrefixWin32SurfaceCreateFlagsKHR :: String+enumPrefixWin32SurfaceCreateFlagsKHR = ""++showTableWin32SurfaceCreateFlagsKHR :: [(Win32SurfaceCreateFlagsKHR, String)]+showTableWin32SurfaceCreateFlagsKHR = []+ instance Show Win32SurfaceCreateFlagsKHR where-  showsPrec p = \case-    Win32SurfaceCreateFlagsKHR x -> showParen (p >= 11) (showString "Win32SurfaceCreateFlagsKHR 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixWin32SurfaceCreateFlagsKHR+                            showTableWin32SurfaceCreateFlagsKHR+                            conNameWin32SurfaceCreateFlagsKHR+                            (\(Win32SurfaceCreateFlagsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read Win32SurfaceCreateFlagsKHR where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "Win32SurfaceCreateFlagsKHR")-                       v <- step readPrec-                       pure (Win32SurfaceCreateFlagsKHR v)))+  readPrec = enumReadPrec enumPrefixWin32SurfaceCreateFlagsKHR+                          showTableWin32SurfaceCreateFlagsKHR+                          conNameWin32SurfaceCreateFlagsKHR+                          Win32SurfaceCreateFlagsKHR   type KHR_WIN32_SURFACE_SPEC_VERSION = 6
src/Vulkan/Extensions/VK_KHR_win32_surface.hs-boot view
@@ -1,4 +1,217 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_win32_surface - instance extension+--+-- == VK_KHR_win32_surface+--+-- [__Name String__]+--     @VK_KHR_win32_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     10+--+-- [__Revision__]+--     6+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_win32_surface:%20&body=@critsec%20 >+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_win32_surface:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-04-24+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Patrick Doane, Blizzard+--+--     -   Jason Ekstrand, Intel+--+--     -   Ian Elliott, LunarG+--+--     -   Courtney Goeltzenleuchter, LunarG+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Antoine Labour, Google+--+--     -   Jon Leech, Khronos+--+--     -   David Mao, AMD+--+--     -   Norbert Nopper, Freescale+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Ray Smith, ARM+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Chia-I Wu, LunarG+--+-- == Description+--+-- The @VK_KHR_win32_surface@ extension is an instance extension. It+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'+-- object (defined by the @VK_KHR_surface@ extension) that refers to a+-- Win32 'HWND', as well as a query to determine support for rendering to+-- the windows desktop.+--+-- == New Commands+--+-- -   'createWin32SurfaceKHR'+--+-- -   'getPhysicalDeviceWin32PresentationSupportKHR'+--+-- == New Structures+--+-- -   'Win32SurfaceCreateInfoKHR'+--+-- == New Bitmasks+--+-- -   'Win32SurfaceCreateFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_WIN32_SURFACE_EXTENSION_NAME'+--+-- -   'KHR_WIN32_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) Does Win32 need a way to query for compatibility between a particular+-- physical device and a specific screen? Compatibility between a physical+-- device and a window generally only depends on what screen the window is+-- on. However, there is not an obvious way to identify a screen without+-- already having a window on the screen.+--+-- __RESOLVED__: No. While it may be useful, there is not a clear way to do+-- this on Win32. However, a method was added to query support for+-- presenting to the windows desktop as a whole.+--+-- 2) If a native window object ('HWND') is used by one graphics API, and+-- then is later used by a different graphics API (one of which is Vulkan),+-- can these uses interfere with each other?+--+-- __RESOLVED__: Yes.+--+-- Uses of a window object by multiple graphics APIs results in undefined+-- behavior. Such behavior may succeed when using one Vulkan implementation+-- but fail when using a different Vulkan implementation. Potential+-- failures include:+--+-- -   Creating then destroying a flip presentation model DXGI swapchain on+--     a window object can prevent+--     'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR' from+--     succeeding on the same window object.+--+-- -   Creating then destroying a 'Vulkan.Extensions.Handles.SwapchainKHR'+--     on a window object can prevent creation of a bitblt model DXGI+--     swapchain on the same window object.+--+-- -   Creating then destroying a 'Vulkan.Extensions.Handles.SwapchainKHR'+--     on a window object can effectively @SetPixelFormat@ to a different+--     format than the format chosen by an OpenGL application.+--+-- -   Creating then destroying a 'Vulkan.Extensions.Handles.SwapchainKHR'+--     on a window object on one 'Vulkan.Core10.Handles.PhysicalDevice' can+--     prevent 'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR' from+--     succeeding on the same window object, but on a different+--     'Vulkan.Core10.Handles.PhysicalDevice' that is associated with a+--     different Vulkan ICD.+--+-- In all cases the problem can be worked around by creating a new window+-- object.+--+-- Technical details include:+--+-- -   Creating a DXGI swapchain over a window object can alter the object+--     for the remainder of its lifetime. The alteration persists even+--     after the DXGI swapchain has been destroyed. This alteration can+--     make it impossible for a conformant Vulkan implementation to create+--     a 'Vulkan.Extensions.Handles.SwapchainKHR' over the same window+--     object. Mention of this alteration can be found in the remarks+--     section of the MSDN documentation for @DXGI_SWAP_EFFECT@.+--+-- -   Calling GDI’s @SetPixelFormat@ (needed by OpenGL’s WGL layer) on a+--     window object alters the object for the remainder of its lifetime.+--     The MSDN documentation for @SetPixelFormat@ explains that a window+--     object’s pixel format can be set only one time.+--+-- -   Creating a 'Vulkan.Extensions.Handles.SwapchainKHR' over a window+--     object can alter the object for the remaining life of its lifetime.+--     Either of the above alterations may occur as a side-effect of+--     'Vulkan.Extensions.Handles.SwapchainKHR'.+--+-- == Version History+--+-- -   Revision 1, 2015-09-23 (Jesse Hall)+--+--     -   Initial draft, based on the previous contents of+--         VK_EXT_KHR_swapchain (later renamed VK_EXT_KHR_surface).+--+-- -   Revision 2, 2015-10-02 (James Jones)+--+--     -   Added presentation support query for win32 desktops.+--+-- -   Revision 3, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_win32_surface to VK_KHR_win32_surface.+--+-- -   Revision 4, 2015-11-03 (Daniel Rakos)+--+--     -   Added allocation callbacks to vkCreateWin32SurfaceKHR.+--+-- -   Revision 5, 2015-11-28 (Daniel Rakos)+--+--     -   Updated the surface create function to take a pCreateInfo+--         structure.+--+-- -   Revision 6, 2017-04-24 (Jeff Juliano)+--+--     -   Add issue 2 addressing reuse of a native window object in a+--         different Graphics API, or by a different Vulkan ICD.+--+-- = See Also+--+-- 'Win32SurfaceCreateFlagsKHR', 'Win32SurfaceCreateInfoKHR',+-- 'createWin32SurfaceKHR', 'getPhysicalDeviceWin32PresentationSupportKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_win32_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_win32_surface  (Win32SurfaceCreateInfoKHR) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_KHR_xcb_surface.hs view
@@ -1,4 +1,173 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_xcb_surface - instance extension+--+-- == VK_KHR_xcb_surface+--+-- [__Name String__]+--     @VK_KHR_xcb_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     6+--+-- [__Revision__]+--     6+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_xcb_surface:%20&body=@critsec%20 >+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_xcb_surface:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2015-11-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Patrick Doane, Blizzard+--+--     -   Jason Ekstrand, Intel+--+--     -   Ian Elliott, LunarG+--+--     -   Courtney Goeltzenleuchter, LunarG+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Antoine Labour, Google+--+--     -   Jon Leech, Khronos+--+--     -   David Mao, AMD+--+--     -   Norbert Nopper, Freescale+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Ray Smith, ARM+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Chia-I Wu, LunarG+--+-- == Description+--+-- The @VK_KHR_xcb_surface@ extension is an instance extension. It provides+-- a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR' object+-- (defined by the @VK_KHR_surface@ extension) that refers to an X11+-- 'Vulkan.Extensions.VK_KHR_xlib_surface.Window', using the XCB+-- client-side library, as well as a query to determine support for+-- rendering via XCB.+--+-- == New Commands+--+-- -   'createXcbSurfaceKHR'+--+-- -   'getPhysicalDeviceXcbPresentationSupportKHR'+--+-- == New Structures+--+-- -   'XcbSurfaceCreateInfoKHR'+--+-- == New Bitmasks+--+-- -   'XcbSurfaceCreateFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_XCB_SURFACE_EXTENSION_NAME'+--+-- -   'KHR_XCB_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) Does XCB need a way to query for compatibility between a particular+-- physical device and a specific screen? This would be a more general+-- query than+-- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR':+-- If it returned 'Vulkan.Core10.FundamentalTypes.TRUE', then the physical+-- device could be assumed to support presentation to any window on that+-- screen.+--+-- __RESOLVED__: Yes, this is needed for toolkits that want to create a+-- 'Vulkan.Core10.Handles.Device' before creating a window. To ensure the+-- query is reliable, it must be made against a particular X visual rather+-- than the screen in general.+--+-- == Version History+--+-- -   Revision 1, 2015-09-23 (Jesse Hall)+--+--     -   Initial draft, based on the previous contents of+--         VK_EXT_KHR_swapchain (later renamed VK_EXT_KHR_surface).+--+-- -   Revision 2, 2015-10-02 (James Jones)+--+--     -   Added presentation support query for an (xcb_connection_t*,+--         xcb_visualid_t) pair.+--+--     -   Removed \"root\" parameter from CreateXcbSurfaceKHR(), as it is+--         redundant when a window on the same screen is specified as well.+--+--     -   Adjusted wording of issue #1 and added agreed upon resolution.+--+-- -   Revision 3, 2015-10-14 (Ian Elliott)+--+--     -   Removed \"root\" parameter from CreateXcbSurfaceKHR() in one+--         more place.+--+-- -   Revision 4, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_xcb_surface to VK_KHR_xcb_surface.+--+-- -   Revision 5, 2015-10-23 (Daniel Rakos)+--+--     -   Added allocation callbacks to vkCreateXcbSurfaceKHR.+--+-- -   Revision 6, 2015-11-28 (Daniel Rakos)+--+--     -   Updated the surface create function to take a pCreateInfo+--         structure.+--+-- = See Also+--+-- 'XcbSurfaceCreateFlagsKHR', 'XcbSurfaceCreateInfoKHR',+-- 'createXcbSurfaceKHR', 'getPhysicalDeviceXcbPresentationSupportKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_xcb_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_xcb_surface  ( createXcbSurfaceKHR                                              , getPhysicalDeviceXcbPresentationSupportKHR                                              , XcbSurfaceCreateInfoKHR(..)@@ -13,6 +182,8 @@                                              , SurfaceKHR(..)                                              ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -24,15 +195,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -50,8 +214,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.Core10.FundamentalTypes (bool32ToBool)@@ -293,17 +457,27 @@   +conNameXcbSurfaceCreateFlagsKHR :: String+conNameXcbSurfaceCreateFlagsKHR = "XcbSurfaceCreateFlagsKHR"++enumPrefixXcbSurfaceCreateFlagsKHR :: String+enumPrefixXcbSurfaceCreateFlagsKHR = ""++showTableXcbSurfaceCreateFlagsKHR :: [(XcbSurfaceCreateFlagsKHR, String)]+showTableXcbSurfaceCreateFlagsKHR = []+ instance Show XcbSurfaceCreateFlagsKHR where-  showsPrec p = \case-    XcbSurfaceCreateFlagsKHR x -> showParen (p >= 11) (showString "XcbSurfaceCreateFlagsKHR 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixXcbSurfaceCreateFlagsKHR+                            showTableXcbSurfaceCreateFlagsKHR+                            conNameXcbSurfaceCreateFlagsKHR+                            (\(XcbSurfaceCreateFlagsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read XcbSurfaceCreateFlagsKHR where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "XcbSurfaceCreateFlagsKHR")-                       v <- step readPrec-                       pure (XcbSurfaceCreateFlagsKHR v)))+  readPrec = enumReadPrec enumPrefixXcbSurfaceCreateFlagsKHR+                          showTableXcbSurfaceCreateFlagsKHR+                          conNameXcbSurfaceCreateFlagsKHR+                          XcbSurfaceCreateFlagsKHR   type KHR_XCB_SURFACE_SPEC_VERSION = 6
src/Vulkan/Extensions/VK_KHR_xcb_surface.hs-boot view
@@ -1,4 +1,173 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_xcb_surface - instance extension+--+-- == VK_KHR_xcb_surface+--+-- [__Name String__]+--     @VK_KHR_xcb_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     6+--+-- [__Revision__]+--     6+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_xcb_surface:%20&body=@critsec%20 >+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_xcb_surface:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2015-11-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Patrick Doane, Blizzard+--+--     -   Jason Ekstrand, Intel+--+--     -   Ian Elliott, LunarG+--+--     -   Courtney Goeltzenleuchter, LunarG+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Antoine Labour, Google+--+--     -   Jon Leech, Khronos+--+--     -   David Mao, AMD+--+--     -   Norbert Nopper, Freescale+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Ray Smith, ARM+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Chia-I Wu, LunarG+--+-- == Description+--+-- The @VK_KHR_xcb_surface@ extension is an instance extension. It provides+-- a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR' object+-- (defined by the @VK_KHR_surface@ extension) that refers to an X11+-- 'Vulkan.Extensions.VK_KHR_xlib_surface.Window', using the XCB+-- client-side library, as well as a query to determine support for+-- rendering via XCB.+--+-- == New Commands+--+-- -   'createXcbSurfaceKHR'+--+-- -   'getPhysicalDeviceXcbPresentationSupportKHR'+--+-- == New Structures+--+-- -   'XcbSurfaceCreateInfoKHR'+--+-- == New Bitmasks+--+-- -   'XcbSurfaceCreateFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_XCB_SURFACE_EXTENSION_NAME'+--+-- -   'KHR_XCB_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) Does XCB need a way to query for compatibility between a particular+-- physical device and a specific screen? This would be a more general+-- query than+-- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR':+-- If it returned 'Vulkan.Core10.FundamentalTypes.TRUE', then the physical+-- device could be assumed to support presentation to any window on that+-- screen.+--+-- __RESOLVED__: Yes, this is needed for toolkits that want to create a+-- 'Vulkan.Core10.Handles.Device' before creating a window. To ensure the+-- query is reliable, it must be made against a particular X visual rather+-- than the screen in general.+--+-- == Version History+--+-- -   Revision 1, 2015-09-23 (Jesse Hall)+--+--     -   Initial draft, based on the previous contents of+--         VK_EXT_KHR_swapchain (later renamed VK_EXT_KHR_surface).+--+-- -   Revision 2, 2015-10-02 (James Jones)+--+--     -   Added presentation support query for an (xcb_connection_t*,+--         xcb_visualid_t) pair.+--+--     -   Removed \"root\" parameter from CreateXcbSurfaceKHR(), as it is+--         redundant when a window on the same screen is specified as well.+--+--     -   Adjusted wording of issue #1 and added agreed upon resolution.+--+-- -   Revision 3, 2015-10-14 (Ian Elliott)+--+--     -   Removed \"root\" parameter from CreateXcbSurfaceKHR() in one+--         more place.+--+-- -   Revision 4, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_xcb_surface to VK_KHR_xcb_surface.+--+-- -   Revision 5, 2015-10-23 (Daniel Rakos)+--+--     -   Added allocation callbacks to vkCreateXcbSurfaceKHR.+--+-- -   Revision 6, 2015-11-28 (Daniel Rakos)+--+--     -   Updated the surface create function to take a pCreateInfo+--         structure.+--+-- = See Also+--+-- 'XcbSurfaceCreateFlagsKHR', 'XcbSurfaceCreateInfoKHR',+-- 'createXcbSurfaceKHR', 'getPhysicalDeviceXcbPresentationSupportKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_xcb_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_xcb_surface  ( XcbSurfaceCreateInfoKHR                                              , Xcb_connection_t                                              , Xcb_visualid_t
src/Vulkan/Extensions/VK_KHR_xlib_surface.hs view
@@ -1,4 +1,173 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_xlib_surface - instance extension+--+-- == VK_KHR_xlib_surface+--+-- [__Name String__]+--     @VK_KHR_xlib_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     5+--+-- [__Revision__]+--     6+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_xlib_surface:%20&body=@critsec%20 >+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_xlib_surface:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2015-11-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Patrick Doane, Blizzard+--+--     -   Jason Ekstrand, Intel+--+--     -   Ian Elliott, LunarG+--+--     -   Courtney Goeltzenleuchter, LunarG+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Antoine Labour, Google+--+--     -   Jon Leech, Khronos+--+--     -   David Mao, AMD+--+--     -   Norbert Nopper, Freescale+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Ray Smith, ARM+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Chia-I Wu, LunarG+--+-- == Description+--+-- The @VK_KHR_xlib_surface@ extension is an instance extension. It+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'+-- object (defined by the @VK_KHR_surface@ extension) that refers to an X11+-- 'Window', using the Xlib client-side library, as well as a query to+-- determine support for rendering via Xlib.+--+-- == New Commands+--+-- -   'createXlibSurfaceKHR'+--+-- -   'getPhysicalDeviceXlibPresentationSupportKHR'+--+-- == New Structures+--+-- -   'XlibSurfaceCreateInfoKHR'+--+-- == New Bitmasks+--+-- -   'XlibSurfaceCreateFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_XLIB_SURFACE_EXTENSION_NAME'+--+-- -   'KHR_XLIB_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) Does X11 need a way to query for compatibility between a particular+-- physical device and a specific screen? This would be a more general+-- query than+-- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR';+-- if it returned 'Vulkan.Core10.FundamentalTypes.TRUE', then the physical+-- device could be assumed to support presentation to any window on that+-- screen.+--+-- __RESOLVED__: Yes, this is needed for toolkits that want to create a+-- 'Vulkan.Core10.Handles.Device' before creating a window. To ensure the+-- query is reliable, it must be made against a particular X visual rather+-- than the screen in general.+--+-- == Version History+--+-- -   Revision 1, 2015-09-23 (Jesse Hall)+--+--     -   Initial draft, based on the previous contents of+--         VK_EXT_KHR_swapchain (later renamed VK_EXT_KHR_surface).+--+-- -   Revision 2, 2015-10-02 (James Jones)+--+--     -   Added presentation support query for (Display*, VisualID) pair.+--+--     -   Removed \"root\" parameter from CreateXlibSurfaceKHR(), as it is+--         redundant when a window on the same screen is specified as well.+--+--     -   Added appropriate X errors.+--+--     -   Adjusted wording of issue #1 and added agreed upon resolution.+--+-- -   Revision 3, 2015-10-14 (Ian Elliott)+--+--     -   Renamed this extension from VK_EXT_KHR_x11_surface to+--         VK_EXT_KHR_xlib_surface.+--+-- -   Revision 4, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_xlib_surface to VK_KHR_xlib_surface.+--+-- -   Revision 5, 2015-11-03 (Daniel Rakos)+--+--     -   Added allocation callbacks to vkCreateXlibSurfaceKHR.+--+-- -   Revision 6, 2015-11-28 (Daniel Rakos)+--+--     -   Updated the surface create function to take a pCreateInfo+--         structure.+--+-- = See Also+--+-- 'XlibSurfaceCreateFlagsKHR', 'XlibSurfaceCreateInfoKHR',+-- 'createXlibSurfaceKHR', 'getPhysicalDeviceXlibPresentationSupportKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_xlib_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_xlib_surface  ( createXlibSurfaceKHR                                               , getPhysicalDeviceXlibPresentationSupportKHR                                               , XlibSurfaceCreateInfoKHR(..)@@ -13,6 +182,8 @@                                               , SurfaceKHR(..)                                               ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -24,15 +195,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -50,9 +214,9 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32) import Data.Word (Word64)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.Core10.FundamentalTypes (bool32ToBool)@@ -295,17 +459,27 @@   +conNameXlibSurfaceCreateFlagsKHR :: String+conNameXlibSurfaceCreateFlagsKHR = "XlibSurfaceCreateFlagsKHR"++enumPrefixXlibSurfaceCreateFlagsKHR :: String+enumPrefixXlibSurfaceCreateFlagsKHR = ""++showTableXlibSurfaceCreateFlagsKHR :: [(XlibSurfaceCreateFlagsKHR, String)]+showTableXlibSurfaceCreateFlagsKHR = []+ instance Show XlibSurfaceCreateFlagsKHR where-  showsPrec p = \case-    XlibSurfaceCreateFlagsKHR x -> showParen (p >= 11) (showString "XlibSurfaceCreateFlagsKHR 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixXlibSurfaceCreateFlagsKHR+                            showTableXlibSurfaceCreateFlagsKHR+                            conNameXlibSurfaceCreateFlagsKHR+                            (\(XlibSurfaceCreateFlagsKHR x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read XlibSurfaceCreateFlagsKHR where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "XlibSurfaceCreateFlagsKHR")-                       v <- step readPrec-                       pure (XlibSurfaceCreateFlagsKHR v)))+  readPrec = enumReadPrec enumPrefixXlibSurfaceCreateFlagsKHR+                          showTableXlibSurfaceCreateFlagsKHR+                          conNameXlibSurfaceCreateFlagsKHR+                          XlibSurfaceCreateFlagsKHR   type KHR_XLIB_SURFACE_SPEC_VERSION = 6
src/Vulkan/Extensions/VK_KHR_xlib_surface.hs-boot view
@@ -1,4 +1,173 @@ {-# language CPP #-}+-- | = Name+--+-- VK_KHR_xlib_surface - instance extension+--+-- == VK_KHR_xlib_surface+--+-- [__Name String__]+--     @VK_KHR_xlib_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     5+--+-- [__Revision__]+--     6+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Jesse Hall+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_xlib_surface:%20&body=@critsec%20 >+--+--     -   Ian Elliott+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_xlib_surface:%20&body=@ianelliottus%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2015-11-28+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Patrick Doane, Blizzard+--+--     -   Jason Ekstrand, Intel+--+--     -   Ian Elliott, LunarG+--+--     -   Courtney Goeltzenleuchter, LunarG+--+--     -   Jesse Hall, Google+--+--     -   James Jones, NVIDIA+--+--     -   Antoine Labour, Google+--+--     -   Jon Leech, Khronos+--+--     -   David Mao, AMD+--+--     -   Norbert Nopper, Freescale+--+--     -   Alon Or-bach, Samsung+--+--     -   Daniel Rakos, AMD+--+--     -   Graham Sellers, AMD+--+--     -   Ray Smith, ARM+--+--     -   Jeff Vigil, Qualcomm+--+--     -   Chia-I Wu, LunarG+--+-- == Description+--+-- The @VK_KHR_xlib_surface@ extension is an instance extension. It+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'+-- object (defined by the @VK_KHR_surface@ extension) that refers to an X11+-- 'Window', using the Xlib client-side library, as well as a query to+-- determine support for rendering via Xlib.+--+-- == New Commands+--+-- -   'createXlibSurfaceKHR'+--+-- -   'getPhysicalDeviceXlibPresentationSupportKHR'+--+-- == New Structures+--+-- -   'XlibSurfaceCreateInfoKHR'+--+-- == New Bitmasks+--+-- -   'XlibSurfaceCreateFlagsKHR'+--+-- == New Enum Constants+--+-- -   'KHR_XLIB_SURFACE_EXTENSION_NAME'+--+-- -   'KHR_XLIB_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR'+--+-- == Issues+--+-- 1) Does X11 need a way to query for compatibility between a particular+-- physical device and a specific screen? This would be a more general+-- query than+-- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR';+-- if it returned 'Vulkan.Core10.FundamentalTypes.TRUE', then the physical+-- device could be assumed to support presentation to any window on that+-- screen.+--+-- __RESOLVED__: Yes, this is needed for toolkits that want to create a+-- 'Vulkan.Core10.Handles.Device' before creating a window. To ensure the+-- query is reliable, it must be made against a particular X visual rather+-- than the screen in general.+--+-- == Version History+--+-- -   Revision 1, 2015-09-23 (Jesse Hall)+--+--     -   Initial draft, based on the previous contents of+--         VK_EXT_KHR_swapchain (later renamed VK_EXT_KHR_surface).+--+-- -   Revision 2, 2015-10-02 (James Jones)+--+--     -   Added presentation support query for (Display*, VisualID) pair.+--+--     -   Removed \"root\" parameter from CreateXlibSurfaceKHR(), as it is+--         redundant when a window on the same screen is specified as well.+--+--     -   Added appropriate X errors.+--+--     -   Adjusted wording of issue #1 and added agreed upon resolution.+--+-- -   Revision 3, 2015-10-14 (Ian Elliott)+--+--     -   Renamed this extension from VK_EXT_KHR_x11_surface to+--         VK_EXT_KHR_xlib_surface.+--+-- -   Revision 4, 2015-10-26 (Ian Elliott)+--+--     -   Renamed from VK_EXT_KHR_xlib_surface to VK_KHR_xlib_surface.+--+-- -   Revision 5, 2015-11-03 (Daniel Rakos)+--+--     -   Added allocation callbacks to vkCreateXlibSurfaceKHR.+--+-- -   Revision 6, 2015-11-28 (Daniel Rakos)+--+--     -   Updated the surface create function to take a pCreateInfo+--         structure.+--+-- = See Also+--+-- 'XlibSurfaceCreateFlagsKHR', 'XlibSurfaceCreateInfoKHR',+-- 'createXlibSurfaceKHR', 'getPhysicalDeviceXlibPresentationSupportKHR'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_xlib_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_KHR_xlib_surface  ( XlibSurfaceCreateInfoKHR                                               , Display                                               , VisualID
src/Vulkan/Extensions/VK_MVK_ios_surface.hs view
@@ -1,4 +1,115 @@ {-# language CPP #-}+-- | = Name+--+-- VK_MVK_ios_surface - instance extension+--+-- == VK_MVK_ios_surface+--+-- [__Name String__]+--     @VK_MVK_ios_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     123+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_EXT_metal_surface@ extension+--+-- [__Contact__]+--+--     -   Bill Hollings+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_MVK_ios_surface:%20&body=@billhollings%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-07-31+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Bill Hollings, The Brenwill Workshop Ltd.+--+-- == Description+--+-- The @VK_MVK_ios_surface@ extension is an instance extension. It provides+-- a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR' object+-- (defined by the @VK_KHR_surface@ extension) based on a @UIView@, the+-- native surface type of iOS, which is underpinned by a+-- 'Vulkan.Extensions.VK_EXT_metal_surface.CAMetalLayer', to support+-- rendering to the surface using Apple’s Metal framework.+--+-- == Deprecation by @VK_EXT_metal_surface@+--+-- The @VK_MVK_ios_surface@ extension is considered deprecated and has been+-- superseded by the @VK_EXT_metal_surface@ extension.+--+-- == New Commands+--+-- -   'createIOSSurfaceMVK'+--+-- == New Structures+--+-- -   'IOSSurfaceCreateInfoMVK'+--+-- == New Bitmasks+--+-- -   'IOSSurfaceCreateFlagsMVK'+--+-- == New Enum Constants+--+-- -   'MVK_IOS_SURFACE_EXTENSION_NAME'+--+-- -   'MVK_IOS_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK'+--+-- == Version History+--+-- -   Revision 1, 2017-02-15 (Bill Hollings)+--+--     -   Initial draft.+--+-- -   Revision 2, 2017-02-24 (Bill Hollings)+--+--     -   Minor syntax fix to emphasize firm requirement for @UIView@ to+--         be backed by a+--         'Vulkan.Extensions.VK_EXT_metal_surface.CAMetalLayer'.+--+-- -   Revision 3, 2020-07-31 (Bill Hollings)+--+--     -   Update documentation on requirements for UIView.+--+--     -   Mark as deprecated by @VK_EXT_metal_surface@.+--+-- = See Also+--+-- 'IOSSurfaceCreateFlagsMVK', 'IOSSurfaceCreateInfoMVK',+-- 'createIOSSurfaceMVK'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_MVK_ios_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_MVK_ios_surface  ( createIOSSurfaceMVK                                              , IOSSurfaceCreateInfoMVK(..)                                              , IOSSurfaceCreateFlagsMVK(..)@@ -9,6 +120,8 @@                                              , SurfaceKHR(..)                                              ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -20,15 +133,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -46,7 +152,7 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.NamedType ((:::))@@ -259,17 +365,27 @@   +conNameIOSSurfaceCreateFlagsMVK :: String+conNameIOSSurfaceCreateFlagsMVK = "IOSSurfaceCreateFlagsMVK"++enumPrefixIOSSurfaceCreateFlagsMVK :: String+enumPrefixIOSSurfaceCreateFlagsMVK = ""++showTableIOSSurfaceCreateFlagsMVK :: [(IOSSurfaceCreateFlagsMVK, String)]+showTableIOSSurfaceCreateFlagsMVK = []+ instance Show IOSSurfaceCreateFlagsMVK where-  showsPrec p = \case-    IOSSurfaceCreateFlagsMVK x -> showParen (p >= 11) (showString "IOSSurfaceCreateFlagsMVK 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixIOSSurfaceCreateFlagsMVK+                            showTableIOSSurfaceCreateFlagsMVK+                            conNameIOSSurfaceCreateFlagsMVK+                            (\(IOSSurfaceCreateFlagsMVK x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read IOSSurfaceCreateFlagsMVK where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "IOSSurfaceCreateFlagsMVK")-                       v <- step readPrec-                       pure (IOSSurfaceCreateFlagsMVK v)))+  readPrec = enumReadPrec enumPrefixIOSSurfaceCreateFlagsMVK+                          showTableIOSSurfaceCreateFlagsMVK+                          conNameIOSSurfaceCreateFlagsMVK+                          IOSSurfaceCreateFlagsMVK   type MVK_IOS_SURFACE_SPEC_VERSION = 3
src/Vulkan/Extensions/VK_MVK_ios_surface.hs-boot view
@@ -1,4 +1,115 @@ {-# language CPP #-}+-- | = Name+--+-- VK_MVK_ios_surface - instance extension+--+-- == VK_MVK_ios_surface+--+-- [__Name String__]+--     @VK_MVK_ios_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     123+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_EXT_metal_surface@ extension+--+-- [__Contact__]+--+--     -   Bill Hollings+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_MVK_ios_surface:%20&body=@billhollings%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-07-31+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Bill Hollings, The Brenwill Workshop Ltd.+--+-- == Description+--+-- The @VK_MVK_ios_surface@ extension is an instance extension. It provides+-- a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR' object+-- (defined by the @VK_KHR_surface@ extension) based on a @UIView@, the+-- native surface type of iOS, which is underpinned by a+-- 'Vulkan.Extensions.VK_EXT_metal_surface.CAMetalLayer', to support+-- rendering to the surface using Apple’s Metal framework.+--+-- == Deprecation by @VK_EXT_metal_surface@+--+-- The @VK_MVK_ios_surface@ extension is considered deprecated and has been+-- superseded by the @VK_EXT_metal_surface@ extension.+--+-- == New Commands+--+-- -   'createIOSSurfaceMVK'+--+-- == New Structures+--+-- -   'IOSSurfaceCreateInfoMVK'+--+-- == New Bitmasks+--+-- -   'IOSSurfaceCreateFlagsMVK'+--+-- == New Enum Constants+--+-- -   'MVK_IOS_SURFACE_EXTENSION_NAME'+--+-- -   'MVK_IOS_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK'+--+-- == Version History+--+-- -   Revision 1, 2017-02-15 (Bill Hollings)+--+--     -   Initial draft.+--+-- -   Revision 2, 2017-02-24 (Bill Hollings)+--+--     -   Minor syntax fix to emphasize firm requirement for @UIView@ to+--         be backed by a+--         'Vulkan.Extensions.VK_EXT_metal_surface.CAMetalLayer'.+--+-- -   Revision 3, 2020-07-31 (Bill Hollings)+--+--     -   Update documentation on requirements for UIView.+--+--     -   Mark as deprecated by @VK_EXT_metal_surface@.+--+-- = See Also+--+-- 'IOSSurfaceCreateFlagsMVK', 'IOSSurfaceCreateInfoMVK',+-- 'createIOSSurfaceMVK'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_MVK_ios_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_MVK_ios_surface  (IOSSurfaceCreateInfoMVK) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_MVK_macos_surface.hs view
@@ -1,4 +1,115 @@ {-# language CPP #-}+-- | = Name+--+-- VK_MVK_macos_surface - instance extension+--+-- == VK_MVK_macos_surface+--+-- [__Name String__]+--     @VK_MVK_macos_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     124+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_EXT_metal_surface@ extension+--+-- [__Contact__]+--+--     -   Bill Hollings+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_MVK_macos_surface:%20&body=@billhollings%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-07-31+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Bill Hollings, The Brenwill Workshop Ltd.+--+-- == Description+--+-- The @VK_MVK_macos_surface@ extension is an instance extension. It+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'+-- object (defined by the @VK_KHR_surface@ extension) based on an @NSView@,+-- the native surface type of macOS, which is underpinned by a+-- 'Vulkan.Extensions.VK_EXT_metal_surface.CAMetalLayer', to support+-- rendering to the surface using Apple’s Metal framework.+--+-- == Deprecation by @VK_EXT_metal_surface@+--+-- The @VK_MVK_macos_surface@ extension is considered deprecated and has+-- been superseded by the @VK_EXT_metal_surface@ extension.+--+-- == New Commands+--+-- -   'createMacOSSurfaceMVK'+--+-- == New Structures+--+-- -   'MacOSSurfaceCreateInfoMVK'+--+-- == New Bitmasks+--+-- -   'MacOSSurfaceCreateFlagsMVK'+--+-- == New Enum Constants+--+-- -   'MVK_MACOS_SURFACE_EXTENSION_NAME'+--+-- -   'MVK_MACOS_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK'+--+-- == Version History+--+-- -   Revision 1, 2017-02-15 (Bill Hollings)+--+--     -   Initial draft.+--+-- -   Revision 2, 2017-02-24 (Bill Hollings)+--+--     -   Minor syntax fix to emphasize firm requirement for @NSView@ to+--         be backed by a+--         'Vulkan.Extensions.VK_EXT_metal_surface.CAMetalLayer'.+--+-- -   Revision 3, 2020-07-31 (Bill Hollings)+--+--     -   Update documentation on requirements for @NSView@.+--+--     -   Mark as deprecated by @VK_EXT_metal_surface@.+--+-- = See Also+--+-- 'MacOSSurfaceCreateFlagsMVK', 'MacOSSurfaceCreateInfoMVK',+-- 'createMacOSSurfaceMVK'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_MVK_macos_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_MVK_macos_surface  ( createMacOSSurfaceMVK                                                , MacOSSurfaceCreateInfoMVK(..)                                                , MacOSSurfaceCreateFlagsMVK(..)@@ -9,6 +120,8 @@                                                , SurfaceKHR(..)                                                ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -20,15 +133,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -46,7 +152,7 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.NamedType ((:::))@@ -263,17 +369,27 @@   +conNameMacOSSurfaceCreateFlagsMVK :: String+conNameMacOSSurfaceCreateFlagsMVK = "MacOSSurfaceCreateFlagsMVK"++enumPrefixMacOSSurfaceCreateFlagsMVK :: String+enumPrefixMacOSSurfaceCreateFlagsMVK = ""++showTableMacOSSurfaceCreateFlagsMVK :: [(MacOSSurfaceCreateFlagsMVK, String)]+showTableMacOSSurfaceCreateFlagsMVK = []+ instance Show MacOSSurfaceCreateFlagsMVK where-  showsPrec p = \case-    MacOSSurfaceCreateFlagsMVK x -> showParen (p >= 11) (showString "MacOSSurfaceCreateFlagsMVK 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixMacOSSurfaceCreateFlagsMVK+                            showTableMacOSSurfaceCreateFlagsMVK+                            conNameMacOSSurfaceCreateFlagsMVK+                            (\(MacOSSurfaceCreateFlagsMVK x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read MacOSSurfaceCreateFlagsMVK where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "MacOSSurfaceCreateFlagsMVK")-                       v <- step readPrec-                       pure (MacOSSurfaceCreateFlagsMVK v)))+  readPrec = enumReadPrec enumPrefixMacOSSurfaceCreateFlagsMVK+                          showTableMacOSSurfaceCreateFlagsMVK+                          conNameMacOSSurfaceCreateFlagsMVK+                          MacOSSurfaceCreateFlagsMVK   type MVK_MACOS_SURFACE_SPEC_VERSION = 3
src/Vulkan/Extensions/VK_MVK_macos_surface.hs-boot view
@@ -1,4 +1,115 @@ {-# language CPP #-}+-- | = Name+--+-- VK_MVK_macos_surface - instance extension+--+-- == VK_MVK_macos_surface+--+-- [__Name String__]+--     @VK_MVK_macos_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     124+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_EXT_metal_surface@ extension+--+-- [__Contact__]+--+--     -   Bill Hollings+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_MVK_macos_surface:%20&body=@billhollings%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-07-31+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Bill Hollings, The Brenwill Workshop Ltd.+--+-- == Description+--+-- The @VK_MVK_macos_surface@ extension is an instance extension. It+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'+-- object (defined by the @VK_KHR_surface@ extension) based on an @NSView@,+-- the native surface type of macOS, which is underpinned by a+-- 'Vulkan.Extensions.VK_EXT_metal_surface.CAMetalLayer', to support+-- rendering to the surface using Apple’s Metal framework.+--+-- == Deprecation by @VK_EXT_metal_surface@+--+-- The @VK_MVK_macos_surface@ extension is considered deprecated and has+-- been superseded by the @VK_EXT_metal_surface@ extension.+--+-- == New Commands+--+-- -   'createMacOSSurfaceMVK'+--+-- == New Structures+--+-- -   'MacOSSurfaceCreateInfoMVK'+--+-- == New Bitmasks+--+-- -   'MacOSSurfaceCreateFlagsMVK'+--+-- == New Enum Constants+--+-- -   'MVK_MACOS_SURFACE_EXTENSION_NAME'+--+-- -   'MVK_MACOS_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK'+--+-- == Version History+--+-- -   Revision 1, 2017-02-15 (Bill Hollings)+--+--     -   Initial draft.+--+-- -   Revision 2, 2017-02-24 (Bill Hollings)+--+--     -   Minor syntax fix to emphasize firm requirement for @NSView@ to+--         be backed by a+--         'Vulkan.Extensions.VK_EXT_metal_surface.CAMetalLayer'.+--+-- -   Revision 3, 2020-07-31 (Bill Hollings)+--+--     -   Update documentation on requirements for @NSView@.+--+--     -   Mark as deprecated by @VK_EXT_metal_surface@.+--+-- = See Also+--+-- 'MacOSSurfaceCreateFlagsMVK', 'MacOSSurfaceCreateInfoMVK',+-- 'createMacOSSurfaceMVK'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_MVK_macos_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_MVK_macos_surface  (MacOSSurfaceCreateInfoMVK) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_NN_vi_surface.hs view
@@ -1,4 +1,114 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NN_vi_surface - instance extension+--+-- == VK_NN_vi_surface+--+-- [__Name String__]+--     @VK_NN_vi_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     63+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Mathias Heyer <<data:image/png;base64, GitLab>>mheyer+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-12-02+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Mathias Heyer, NVIDIA+--+--     -   Michael Chock, NVIDIA+--+--     -   Yasuhiro Yoshioka, Nintendo+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- The @VK_NN_vi_surface@ extension is an instance extension. It provides a+-- mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR' object+-- (defined by the @VK_KHR_surface@ extension) associated with an+-- @nn@::@vi@::@Layer@.+--+-- == New Commands+--+-- -   'createViSurfaceNN'+--+-- == New Structures+--+-- -   'ViSurfaceCreateInfoNN'+--+-- == New Bitmasks+--+-- -   'ViSurfaceCreateFlagsNN'+--+-- == New Enum Constants+--+-- -   'NN_VI_SURFACE_EXTENSION_NAME'+--+-- -   'NN_VI_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN'+--+-- == Issues+--+-- 1) Does VI need a way to query for compatibility between a particular+-- physical device (and queue family?) and a specific VI display?+--+-- __RESOLVED__: No. It is currently always assumed that the device and+-- display will always be compatible.+--+-- 2) 'ViSurfaceCreateInfoNN'::@pWindow@ is intended to store an+-- @nn@::@vi@::@NativeWindowHandle@, but its declared type is a bare+-- @void@* to store the window handle. Why the discrepancy?+--+-- __RESOLVED__: It is for C compatibility. The definition for the VI+-- native window handle type is defined inside the @nn@::@vi@ C+++-- namespace. This prevents its use in C source files.+-- @nn@::@vi@::@NativeWindowHandle@ is always defined to be @void@*, so+-- this extension uses @void@* to match.+--+-- == Version History+--+-- -   Revision 1, 2016-12-2 (Michael Chock)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'ViSurfaceCreateFlagsNN', 'ViSurfaceCreateInfoNN', 'createViSurfaceNN'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NN_vi_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NN_vi_surface  ( createViSurfaceNN                                            , ViSurfaceCreateInfoNN(..)                                            , ViSurfaceCreateFlagsNN(..)@@ -9,6 +119,8 @@                                            , SurfaceKHR(..)                                            ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -20,15 +132,8 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -46,7 +151,7 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.NamedType ((:::))@@ -237,17 +342,27 @@   +conNameViSurfaceCreateFlagsNN :: String+conNameViSurfaceCreateFlagsNN = "ViSurfaceCreateFlagsNN"++enumPrefixViSurfaceCreateFlagsNN :: String+enumPrefixViSurfaceCreateFlagsNN = ""++showTableViSurfaceCreateFlagsNN :: [(ViSurfaceCreateFlagsNN, String)]+showTableViSurfaceCreateFlagsNN = []+ instance Show ViSurfaceCreateFlagsNN where-  showsPrec p = \case-    ViSurfaceCreateFlagsNN x -> showParen (p >= 11) (showString "ViSurfaceCreateFlagsNN 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixViSurfaceCreateFlagsNN+                            showTableViSurfaceCreateFlagsNN+                            conNameViSurfaceCreateFlagsNN+                            (\(ViSurfaceCreateFlagsNN x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ViSurfaceCreateFlagsNN where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "ViSurfaceCreateFlagsNN")-                       v <- step readPrec-                       pure (ViSurfaceCreateFlagsNN v)))+  readPrec = enumReadPrec enumPrefixViSurfaceCreateFlagsNN+                          showTableViSurfaceCreateFlagsNN+                          conNameViSurfaceCreateFlagsNN+                          ViSurfaceCreateFlagsNN   type NN_VI_SURFACE_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_NN_vi_surface.hs-boot view
@@ -1,4 +1,114 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NN_vi_surface - instance extension+--+-- == VK_NN_vi_surface+--+-- [__Name String__]+--     @VK_NN_vi_surface@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     63+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Mathias Heyer <<data:image/png;base64, GitLab>>mheyer+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-12-02+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Mathias Heyer, NVIDIA+--+--     -   Michael Chock, NVIDIA+--+--     -   Yasuhiro Yoshioka, Nintendo+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- The @VK_NN_vi_surface@ extension is an instance extension. It provides a+-- mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR' object+-- (defined by the @VK_KHR_surface@ extension) associated with an+-- @nn@::@vi@::@Layer@.+--+-- == New Commands+--+-- -   'createViSurfaceNN'+--+-- == New Structures+--+-- -   'ViSurfaceCreateInfoNN'+--+-- == New Bitmasks+--+-- -   'ViSurfaceCreateFlagsNN'+--+-- == New Enum Constants+--+-- -   'NN_VI_SURFACE_EXTENSION_NAME'+--+-- -   'NN_VI_SURFACE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN'+--+-- == Issues+--+-- 1) Does VI need a way to query for compatibility between a particular+-- physical device (and queue family?) and a specific VI display?+--+-- __RESOLVED__: No. It is currently always assumed that the device and+-- display will always be compatible.+--+-- 2) 'ViSurfaceCreateInfoNN'::@pWindow@ is intended to store an+-- @nn@::@vi@::@NativeWindowHandle@, but its declared type is a bare+-- @void@* to store the window handle. Why the discrepancy?+--+-- __RESOLVED__: It is for C compatibility. The definition for the VI+-- native window handle type is defined inside the @nn@::@vi@ C+++-- namespace. This prevents its use in C source files.+-- @nn@::@vi@::@NativeWindowHandle@ is always defined to be @void@*, so+-- this extension uses @void@* to match.+--+-- == Version History+--+-- -   Revision 1, 2016-12-2 (Michael Chock)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'ViSurfaceCreateFlagsNN', 'ViSurfaceCreateInfoNN', 'createViSurfaceNN'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NN_vi_surface Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NN_vi_surface  (ViSurfaceCreateInfoNN) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_NVX_image_view_handle.hs view
@@ -1,4 +1,96 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NVX_image_view_handle - device extension+--+-- == VK_NVX_image_view_handle+--+-- [__Name String__]+--     @VK_NVX_image_view_handle@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     31+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Eric Werness+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NVX_image_view_handle:%20&body=@ewerness%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-04-03+--+-- [__Contributors__]+--+--     -   Eric Werness, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension allows applications to query an opaque handle from an+-- image view for use as a sampled image or storage image. This provides no+-- direct functionality itself.+--+-- == New Commands+--+-- -   'getImageViewAddressNVX'+--+-- -   'getImageViewHandleNVX'+--+-- == New Structures+--+-- -   'ImageViewAddressPropertiesNVX'+--+-- -   'ImageViewHandleInfoNVX'+--+-- == New Enum Constants+--+-- -   'NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME'+--+-- -   'NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX'+--+-- == Version History+--+-- -   Revision 2, 2020-04-03 (Piers Daniell)+--+--     -   Add 'getImageViewAddressNVX'+--+-- -   Revision 1, 2018-12-07 (Eric Werness)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'ImageViewAddressPropertiesNVX', 'ImageViewHandleInfoNVX',+-- 'getImageViewAddressNVX', 'getImageViewHandleNVX'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_image_view_handle Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NVX_image_view_handle  ( getImageViewHandleNVX                                                    , getImageViewAddressNVX                                                    , ImageViewHandleInfoNVX(..)
src/Vulkan/Extensions/VK_NVX_image_view_handle.hs-boot view
@@ -1,4 +1,96 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NVX_image_view_handle - device extension+--+-- == VK_NVX_image_view_handle+--+-- [__Name String__]+--     @VK_NVX_image_view_handle@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     31+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Eric Werness+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NVX_image_view_handle:%20&body=@ewerness%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-04-03+--+-- [__Contributors__]+--+--     -   Eric Werness, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension allows applications to query an opaque handle from an+-- image view for use as a sampled image or storage image. This provides no+-- direct functionality itself.+--+-- == New Commands+--+-- -   'getImageViewAddressNVX'+--+-- -   'getImageViewHandleNVX'+--+-- == New Structures+--+-- -   'ImageViewAddressPropertiesNVX'+--+-- -   'ImageViewHandleInfoNVX'+--+-- == New Enum Constants+--+-- -   'NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME'+--+-- -   'NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX'+--+-- == Version History+--+-- -   Revision 2, 2020-04-03 (Piers Daniell)+--+--     -   Add 'getImageViewAddressNVX'+--+-- -   Revision 1, 2018-12-07 (Eric Werness)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'ImageViewAddressPropertiesNVX', 'ImageViewHandleInfoNVX',+-- 'getImageViewAddressNVX', 'getImageViewHandleNVX'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_image_view_handle Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NVX_image_view_handle  ( ImageViewAddressPropertiesNVX                                                    , ImageViewHandleInfoNVX                                                    ) where
src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs view
@@ -1,4 +1,159 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NVX_multiview_per_view_attributes - device extension+--+-- == VK_NVX_multiview_per_view_attributes+--+-- [__Name String__]+--     @VK_NVX_multiview_per_view_attributes@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     98+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_multiview@+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NVX_multiview_per_view_attributes:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-01-13+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NVX_multiview_per_view_attributes.html SPV_NVX_multiview_per_view_attributes>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nvx/GL_NVX_multiview_per_view_attributes.txt GL_NVX_multiview_per_view_attributes>+--+--     -   This extension interacts with @VK_NV_viewport_array2@.+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension adds a new way to write shaders to be used with multiview+-- subpasses, where the attributes for all views are written out by a+-- single invocation of the vertex processing stages. Related SPIR-V and+-- GLSL extensions @SPV_NVX_multiview_per_view_attributes@ and+-- @GL_NVX_multiview_per_view_attributes@ introduce per-view position and+-- viewport mask attributes arrays, and this extension defines how those+-- per-view attribute arrays are interpreted by Vulkan. Pipelines using+-- per-view attributes /may/ only execute the vertex processing stages once+-- for all views rather than once per-view, which reduces redundant shading+-- work.+--+-- A subpass creation flag controls whether the subpass uses this+-- extension. A subpass /must/ either exclusively use this extension or not+-- use it at all.+--+-- Some Vulkan implementations only support the position attribute varying+-- between views in the X component. A subpass can declare via a second+-- creation flag whether all pipelines compiled for this subpass will obey+-- this restriction.+--+-- Shaders that use the new per-view outputs (e.g. @gl_PositionPerViewNV@)+-- /must/ also write the non-per-view output (@gl_Position@), and the+-- values written /must/ be such that @gl_Position =+-- gl_PositionPerViewNV[gl_ViewIndex]@ for all views in the subpass.+-- Implementations are free to either use the per-view outputs or the+-- non-per-view outputs, whichever would be more efficient.+--+-- If @VK_NV_viewport_array2@ is not also supported and enabled, the+-- per-view viewport mask /must/ not be used.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX'+--+-- == New Enum Constants+--+-- -   'NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME'+--+-- -   'NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX'+--+-- -   Extending+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlagBits':+--+--     -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX'+--+--     -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX'+--+-- == New Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-positionperview PositionPerViewNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-viewportmaskperview ViewportMaskPerViewNV>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-perviewattributes PerViewAttributesNV>+--+-- == Examples+--+-- > #version 450 core+-- >+-- > #extension GL_KHX_multiview : enable+-- > #extension GL_NVX_multiview_per_view_attributes : enable+-- >+-- > layout(location = 0) in vec4 position;+-- > layout(set = 0, binding = 0) uniform Block { mat4 mvpPerView[2]; } buf;+-- >+-- > void main()+-- > {+-- >     // Output both per-view positions and gl_Position as a function+-- >     // of gl_ViewIndex+-- >     gl_PositionPerViewNV[0] = buf.mvpPerView[0] * position;+-- >     gl_PositionPerViewNV[1] = buf.mvpPerView[1] * position;+-- >     gl_Position = buf.mvpPerView[gl_ViewIndex] * position;+-- > }+--+-- == Version History+--+-- -   Revision 1, 2017-01-13 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NVX_multiview_per_view_attributes  ( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(..)                                                                , NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION                                                                , pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION
src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs-boot view
@@ -1,4 +1,159 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NVX_multiview_per_view_attributes - device extension+--+-- == VK_NVX_multiview_per_view_attributes+--+-- [__Name String__]+--     @VK_NVX_multiview_per_view_attributes@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     98+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_multiview@+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NVX_multiview_per_view_attributes:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-01-13+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NVX_multiview_per_view_attributes.html SPV_NVX_multiview_per_view_attributes>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nvx/GL_NVX_multiview_per_view_attributes.txt GL_NVX_multiview_per_view_attributes>+--+--     -   This extension interacts with @VK_NV_viewport_array2@.+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension adds a new way to write shaders to be used with multiview+-- subpasses, where the attributes for all views are written out by a+-- single invocation of the vertex processing stages. Related SPIR-V and+-- GLSL extensions @SPV_NVX_multiview_per_view_attributes@ and+-- @GL_NVX_multiview_per_view_attributes@ introduce per-view position and+-- viewport mask attributes arrays, and this extension defines how those+-- per-view attribute arrays are interpreted by Vulkan. Pipelines using+-- per-view attributes /may/ only execute the vertex processing stages once+-- for all views rather than once per-view, which reduces redundant shading+-- work.+--+-- A subpass creation flag controls whether the subpass uses this+-- extension. A subpass /must/ either exclusively use this extension or not+-- use it at all.+--+-- Some Vulkan implementations only support the position attribute varying+-- between views in the X component. A subpass can declare via a second+-- creation flag whether all pipelines compiled for this subpass will obey+-- this restriction.+--+-- Shaders that use the new per-view outputs (e.g. @gl_PositionPerViewNV@)+-- /must/ also write the non-per-view output (@gl_Position@), and the+-- values written /must/ be such that @gl_Position =+-- gl_PositionPerViewNV[gl_ViewIndex]@ for all views in the subpass.+-- Implementations are free to either use the per-view outputs or the+-- non-per-view outputs, whichever would be more efficient.+--+-- If @VK_NV_viewport_array2@ is not also supported and enabled, the+-- per-view viewport mask /must/ not be used.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX'+--+-- == New Enum Constants+--+-- -   'NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME'+--+-- -   'NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX'+--+-- -   Extending+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlagBits':+--+--     -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX'+--+--     -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX'+--+-- == New Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-positionperview PositionPerViewNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-viewportmaskperview ViewportMaskPerViewNV>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-perviewattributes PerViewAttributesNV>+--+-- == Examples+--+-- > #version 450 core+-- >+-- > #extension GL_KHX_multiview : enable+-- > #extension GL_NVX_multiview_per_view_attributes : enable+-- >+-- > layout(location = 0) in vec4 position;+-- > layout(set = 0, binding = 0) uniform Block { mat4 mvpPerView[2]; } buf;+-- >+-- > void main()+-- > {+-- >     // Output both per-view positions and gl_Position as a function+-- >     // of gl_ViewIndex+-- >     gl_PositionPerViewNV[0] = buf.mvpPerView[0] * position;+-- >     gl_PositionPerViewNV[1] = buf.mvpPerView[1] * position;+-- >     gl_Position = buf.mvpPerView[gl_ViewIndex] * position;+-- > }+--+-- == Version History+--+-- -   Revision 1, 2017-01-13 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NVX_multiview_per_view_attributes  (PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs view
@@ -1,4 +1,208 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_clip_space_w_scaling - device extension+--+-- == VK_NV_clip_space_w_scaling+--+-- [__Name String__]+--     @VK_NV_clip_space_w_scaling@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     88+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Eric Werness+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_clip_space_w_scaling:%20&body=@ewerness-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-02-15+--+-- [__Contributors__]+--+--     -   Eric Werness, NVIDIA+--+--     -   Kedarnath Thangudu, NVIDIA+--+-- == Description+--+-- Virtual Reality (VR) applications often involve a post-processing step+-- to apply a “barrel” distortion to the rendered image to correct the+-- “pincushion” distortion introduced by the optics in a VR device. The+-- barrel distorted image has lower resolution along the edges compared to+-- the center. Since the original image is rendered at high resolution,+-- which is uniform across the complete image, a lot of pixels towards the+-- edges do not make it to the final post-processed image.+--+-- This extension provides a mechanism to render VR scenes at a non-uniform+-- resolution, in particular a resolution that falls linearly from the+-- center towards the edges. This is achieved by scaling the w coordinate+-- of the vertices in the clip space before perspective divide. The clip+-- space w coordinate of the vertices /can/ be offset as of a function of x+-- and y coordinates as follows:+--+-- w\' = w + Ax + By+--+-- In the intended use case for viewport position scaling, an application+-- should use a set of four viewports, one for each of the four quadrants+-- of a Cartesian coordinate system. Each viewport is set to the dimension+-- of the image, but is scissored to the quadrant it represents. The+-- application should specify A and B coefficients of the w-scaling+-- equation above, that have the same value, but different signs, for each+-- of the viewports. The signs of A and B should match the signs of x and y+-- for the quadrant that they represent such that the value of w\' will+-- always be greater than or equal to the original w value for the entire+-- image. Since the offset to w, (Ax + By), is always positive, and+-- increases with the absolute values of x and y, the effective resolution+-- will fall off linearly from the center of the image to its edges.+--+-- == New Commands+--+-- -   'cmdSetViewportWScalingNV'+--+-- == New Structures+--+-- -   'ViewportWScalingNV'+--+-- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':+--+--     -   'PipelineViewportWScalingStateCreateInfoNV'+--+-- == New Enum Constants+--+-- -   'NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME'+--+-- -   'NV_CLIP_SPACE_W_SCALING_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV'+--+-- == Issues+--+-- 1) Is the pipeline struct name too long?+--+-- __RESOLVED__: It fits with the naming convention.+--+-- 2) Separate W scaling section or fold into coordinate transformations?+--+-- __RESOLVED__: Leaving it as its own section for now.+--+-- == Examples+--+-- > VkViewport viewports[4];+-- > VkRect2D scissors[4];+-- > VkViewportWScalingNV scalings[4];+-- >+-- > for (int i = 0; i < 4; i++) {+-- >     int x = (i & 2) ? 0 : currentWindowWidth / 2;+-- >     int y = (i & 1) ? 0 : currentWindowHeight / 2;+-- >+-- >     viewports[i].x = 0;+-- >     viewports[i].y = 0;+-- >     viewports[i].width = currentWindowWidth;+-- >     viewports[i].height = currentWindowHeight;+-- >     viewports[i].minDepth = 0.0f;+-- >     viewports[i].maxDepth = 1.0f;+-- >+-- >     scissors[i].offset.x = x;+-- >     scissors[i].offset.y = y;+-- >     scissors[i].extent.width = currentWindowWidth/2;+-- >     scissors[i].extent.height = currentWindowHeight/2;+-- >+-- >     const float factor = 0.15;+-- >     scalings[i].xcoeff = ((i & 2) ? -1.0 : 1.0) * factor;+-- >     scalings[i].ycoeff = ((i & 1) ? -1.0 : 1.0) * factor;+-- > }+-- >+-- > VkPipelineViewportWScalingStateCreateInfoNV vpWScalingStateInfo = { VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV };+-- >+-- > vpWScalingStateInfo.viewportWScalingEnable = VK_TRUE;+-- > vpWScalingStateInfo.viewportCount = 4;+-- > vpWScalingStateInfo.pViewportWScalings = &scalings[0];+-- >+-- > VkPipelineViewportStateCreateInfo vpStateInfo = { VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO };+-- > vpStateInfo.viewportCount = 4;+-- > vpStateInfo.pViewports = &viewports[0];+-- > vpStateInfo.scissorCount = 4;+-- > vpStateInfo.pScissors = &scissors[0];+-- > vpStateInfo.pNext = &vpWScalingStateInfo;+--+-- Example shader to read from a w-scaled texture:+--+-- > // Vertex Shader+-- > // Draw a triangle that covers the whole screen+-- > const vec4 positions[3] = vec4[3](vec4(-1, -1, 0, 1),+-- >                                   vec4( 3, -1, 0, 1),+-- >                                   vec4(-1,  3, 0, 1));+-- > out vec2 uv;+-- > void main()+-- > {+-- >     vec4 pos = positions[ gl_VertexID ];+-- >     gl_Position = pos;+-- >     uv = pos.xy;+-- > }+-- >+-- > // Fragment Shader+-- > uniform sampler2D tex;+-- > uniform float xcoeff;+-- > uniform float ycoeff;+-- > out vec4 Color;+-- > in vec2 uv;+-- >+-- > void main()+-- > {+-- >     // Handle uv as if upper right quadrant+-- >     vec2 uvabs = abs(uv);+-- >+-- >     // unscale: transform w-scaled image into an unscaled image+-- >     //   scale: transform unscaled image int a w-scaled image+-- >     float unscale = 1.0 / (1 + xcoeff * uvabs.x + xcoeff * uvabs.y);+-- >     //float scale = 1.0 / (1 - xcoeff * uvabs.x - xcoeff * uvabs.y);+-- >+-- >     vec2 P = vec2(unscale * uvabs.x, unscale * uvabs.y);+-- >+-- >     // Go back to the right quadrant+-- >     P *= sign(uv);+-- >+-- >     Color = texture(tex, P * 0.5 + 0.5);+-- > }+--+-- == Version History+--+-- -   Revision 1, 2017-02-15 (Eric Werness)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PipelineViewportWScalingStateCreateInfoNV', 'ViewportWScalingNV',+-- 'cmdSetViewportWScalingNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_clip_space_w_scaling Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_clip_space_w_scaling  ( cmdSetViewportWScalingNV                                                      , ViewportWScalingNV(..)                                                      , PipelineViewportWScalingStateCreateInfoNV(..)@@ -138,7 +342,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetViewportWScalingNV is null" Nothing Nothing   let vkCmdSetViewportWScalingNV' = mkVkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNVPtr   pPViewportWScalings <- ContT $ allocaBytesAligned @ViewportWScalingNV ((Data.Vector.length (viewportWScalings)) * 8) 4-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPViewportWScalings `plusPtr` (8 * (i)) :: Ptr ViewportWScalingNV) (e) . ($ ())) (viewportWScalings)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPViewportWScalings `plusPtr` (8 * (i)) :: Ptr ViewportWScalingNV) (e)) (viewportWScalings)   lift $ vkCmdSetViewportWScalingNV' (commandBufferHandle (commandBuffer)) (firstViewport) ((fromIntegral (Data.Vector.length $ (viewportWScalings)) :: Word32)) (pPViewportWScalings)   pure $ () @@ -243,7 +447,7 @@       then pure nullPtr       else do         pPViewportWScalings <- ContT $ allocaBytesAligned @ViewportWScalingNV (((Data.Vector.length (viewportWScalings))) * 8) 4-        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPViewportWScalings `plusPtr` (8 * (i)) :: Ptr ViewportWScalingNV) (e) . ($ ())) ((viewportWScalings))+        lift $ Data.Vector.imapM_ (\i e -> poke (pPViewportWScalings `plusPtr` (8 * (i)) :: Ptr ViewportWScalingNV) (e)) ((viewportWScalings))         pure $ pPViewportWScalings     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ViewportWScalingNV))) pViewportWScalings''     lift $ f
src/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs-boot view
@@ -1,4 +1,208 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_clip_space_w_scaling - device extension+--+-- == VK_NV_clip_space_w_scaling+--+-- [__Name String__]+--     @VK_NV_clip_space_w_scaling@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     88+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Eric Werness+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_clip_space_w_scaling:%20&body=@ewerness-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-02-15+--+-- [__Contributors__]+--+--     -   Eric Werness, NVIDIA+--+--     -   Kedarnath Thangudu, NVIDIA+--+-- == Description+--+-- Virtual Reality (VR) applications often involve a post-processing step+-- to apply a “barrel” distortion to the rendered image to correct the+-- “pincushion” distortion introduced by the optics in a VR device. The+-- barrel distorted image has lower resolution along the edges compared to+-- the center. Since the original image is rendered at high resolution,+-- which is uniform across the complete image, a lot of pixels towards the+-- edges do not make it to the final post-processed image.+--+-- This extension provides a mechanism to render VR scenes at a non-uniform+-- resolution, in particular a resolution that falls linearly from the+-- center towards the edges. This is achieved by scaling the w coordinate+-- of the vertices in the clip space before perspective divide. The clip+-- space w coordinate of the vertices /can/ be offset as of a function of x+-- and y coordinates as follows:+--+-- w\' = w + Ax + By+--+-- In the intended use case for viewport position scaling, an application+-- should use a set of four viewports, one for each of the four quadrants+-- of a Cartesian coordinate system. Each viewport is set to the dimension+-- of the image, but is scissored to the quadrant it represents. The+-- application should specify A and B coefficients of the w-scaling+-- equation above, that have the same value, but different signs, for each+-- of the viewports. The signs of A and B should match the signs of x and y+-- for the quadrant that they represent such that the value of w\' will+-- always be greater than or equal to the original w value for the entire+-- image. Since the offset to w, (Ax + By), is always positive, and+-- increases with the absolute values of x and y, the effective resolution+-- will fall off linearly from the center of the image to its edges.+--+-- == New Commands+--+-- -   'cmdSetViewportWScalingNV'+--+-- == New Structures+--+-- -   'ViewportWScalingNV'+--+-- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':+--+--     -   'PipelineViewportWScalingStateCreateInfoNV'+--+-- == New Enum Constants+--+-- -   'NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME'+--+-- -   'NV_CLIP_SPACE_W_SCALING_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV'+--+-- == Issues+--+-- 1) Is the pipeline struct name too long?+--+-- __RESOLVED__: It fits with the naming convention.+--+-- 2) Separate W scaling section or fold into coordinate transformations?+--+-- __RESOLVED__: Leaving it as its own section for now.+--+-- == Examples+--+-- > VkViewport viewports[4];+-- > VkRect2D scissors[4];+-- > VkViewportWScalingNV scalings[4];+-- >+-- > for (int i = 0; i < 4; i++) {+-- >     int x = (i & 2) ? 0 : currentWindowWidth / 2;+-- >     int y = (i & 1) ? 0 : currentWindowHeight / 2;+-- >+-- >     viewports[i].x = 0;+-- >     viewports[i].y = 0;+-- >     viewports[i].width = currentWindowWidth;+-- >     viewports[i].height = currentWindowHeight;+-- >     viewports[i].minDepth = 0.0f;+-- >     viewports[i].maxDepth = 1.0f;+-- >+-- >     scissors[i].offset.x = x;+-- >     scissors[i].offset.y = y;+-- >     scissors[i].extent.width = currentWindowWidth/2;+-- >     scissors[i].extent.height = currentWindowHeight/2;+-- >+-- >     const float factor = 0.15;+-- >     scalings[i].xcoeff = ((i & 2) ? -1.0 : 1.0) * factor;+-- >     scalings[i].ycoeff = ((i & 1) ? -1.0 : 1.0) * factor;+-- > }+-- >+-- > VkPipelineViewportWScalingStateCreateInfoNV vpWScalingStateInfo = { VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV };+-- >+-- > vpWScalingStateInfo.viewportWScalingEnable = VK_TRUE;+-- > vpWScalingStateInfo.viewportCount = 4;+-- > vpWScalingStateInfo.pViewportWScalings = &scalings[0];+-- >+-- > VkPipelineViewportStateCreateInfo vpStateInfo = { VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO };+-- > vpStateInfo.viewportCount = 4;+-- > vpStateInfo.pViewports = &viewports[0];+-- > vpStateInfo.scissorCount = 4;+-- > vpStateInfo.pScissors = &scissors[0];+-- > vpStateInfo.pNext = &vpWScalingStateInfo;+--+-- Example shader to read from a w-scaled texture:+--+-- > // Vertex Shader+-- > // Draw a triangle that covers the whole screen+-- > const vec4 positions[3] = vec4[3](vec4(-1, -1, 0, 1),+-- >                                   vec4( 3, -1, 0, 1),+-- >                                   vec4(-1,  3, 0, 1));+-- > out vec2 uv;+-- > void main()+-- > {+-- >     vec4 pos = positions[ gl_VertexID ];+-- >     gl_Position = pos;+-- >     uv = pos.xy;+-- > }+-- >+-- > // Fragment Shader+-- > uniform sampler2D tex;+-- > uniform float xcoeff;+-- > uniform float ycoeff;+-- > out vec4 Color;+-- > in vec2 uv;+-- >+-- > void main()+-- > {+-- >     // Handle uv as if upper right quadrant+-- >     vec2 uvabs = abs(uv);+-- >+-- >     // unscale: transform w-scaled image into an unscaled image+-- >     //   scale: transform unscaled image int a w-scaled image+-- >     float unscale = 1.0 / (1 + xcoeff * uvabs.x + xcoeff * uvabs.y);+-- >     //float scale = 1.0 / (1 - xcoeff * uvabs.x - xcoeff * uvabs.y);+-- >+-- >     vec2 P = vec2(unscale * uvabs.x, unscale * uvabs.y);+-- >+-- >     // Go back to the right quadrant+-- >     P *= sign(uv);+-- >+-- >     Color = texture(tex, P * 0.5 + 0.5);+-- > }+--+-- == Version History+--+-- -   Revision 1, 2017-02-15 (Eric Werness)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PipelineViewportWScalingStateCreateInfoNV', 'ViewportWScalingNV',+-- 'cmdSetViewportWScalingNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_clip_space_w_scaling Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_clip_space_w_scaling  ( PipelineViewportWScalingStateCreateInfoNV                                                      , ViewportWScalingNV                                                      ) where
src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs view
@@ -1,4 +1,122 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_compute_shader_derivatives - device extension+--+-- == VK_NV_compute_shader_derivatives+--+-- [__Name String__]+--     @VK_NV_compute_shader_derivatives@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     202+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Pat Brown+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_compute_shader_derivatives:%20&body=@nvpbrown%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-07-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_compute_shader_derivatives.html SPV_NV_compute_shader_derivatives>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_compute_shader_derivatives.txt GL_NV_compute_shader_derivatives>+--+-- [__Contributors__]+--+--     -   Pat Brown, NVIDIA+--+-- == Description+--+-- This extension adds Vulkan support for the+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_compute_shader_derivatives.html SPV_NV_compute_shader_derivatives>+-- SPIR-V extension.+--+-- The SPIR-V extension provides two new execution modes, both of which+-- allow compute shaders to use built-ins that evaluate compute derivatives+-- explicitly or implicitly. Derivatives will be computed via differencing+-- over a 2x2 group of shader invocations. The @DerivativeGroupQuadsNV@+-- execution mode assembles shader invocations into 2x2 groups, where each+-- group has x and y coordinates of the local invocation ID of the form+-- (2m+{0,1}, 2n+{0,1}). The @DerivativeGroupLinearNV@ execution mode+-- assembles shader invocations into 2x2 groups, where each group has local+-- invocation index values of the form 4m+{0,1,2,3}.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceComputeShaderDerivativesFeaturesNV'+--+-- == New Enum Constants+--+-- -   'NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME'+--+-- -   'NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV'+--+-- == New SPIR-V Capability+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-computederivatives-quads ComputeDerivativeGroupQuadsNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-computederivatives-linear ComputeDerivativeGroupLinearNV>+--+-- == Issues+--+-- (1) Should we specify that the groups of four shader invocations used+-- for derivatives in a compute shader are the same groups of four+-- invocations that form a “quad” in shader subgroups?+--+-- __RESOLVED__: Yes.+--+-- == Examples+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2018-07-19 (Pat Brown)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceComputeShaderDerivativesFeaturesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_compute_shader_derivatives Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_compute_shader_derivatives  ( PhysicalDeviceComputeShaderDerivativesFeaturesNV(..)                                                            , NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION                                                            , pattern NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION
src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs-boot view
@@ -1,4 +1,122 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_compute_shader_derivatives - device extension+--+-- == VK_NV_compute_shader_derivatives+--+-- [__Name String__]+--     @VK_NV_compute_shader_derivatives@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     202+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Pat Brown+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_compute_shader_derivatives:%20&body=@nvpbrown%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-07-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_compute_shader_derivatives.html SPV_NV_compute_shader_derivatives>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_compute_shader_derivatives.txt GL_NV_compute_shader_derivatives>+--+-- [__Contributors__]+--+--     -   Pat Brown, NVIDIA+--+-- == Description+--+-- This extension adds Vulkan support for the+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_compute_shader_derivatives.html SPV_NV_compute_shader_derivatives>+-- SPIR-V extension.+--+-- The SPIR-V extension provides two new execution modes, both of which+-- allow compute shaders to use built-ins that evaluate compute derivatives+-- explicitly or implicitly. Derivatives will be computed via differencing+-- over a 2x2 group of shader invocations. The @DerivativeGroupQuadsNV@+-- execution mode assembles shader invocations into 2x2 groups, where each+-- group has x and y coordinates of the local invocation ID of the form+-- (2m+{0,1}, 2n+{0,1}). The @DerivativeGroupLinearNV@ execution mode+-- assembles shader invocations into 2x2 groups, where each group has local+-- invocation index values of the form 4m+{0,1,2,3}.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceComputeShaderDerivativesFeaturesNV'+--+-- == New Enum Constants+--+-- -   'NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME'+--+-- -   'NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV'+--+-- == New SPIR-V Capability+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-computederivatives-quads ComputeDerivativeGroupQuadsNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-computederivatives-linear ComputeDerivativeGroupLinearNV>+--+-- == Issues+--+-- (1) Should we specify that the groups of four shader invocations used+-- for derivatives in a compute shader are the same groups of four+-- invocations that form a “quad” in shader subgroups?+--+-- __RESOLVED__: Yes.+--+-- == Examples+--+-- None.+--+-- == Version History+--+-- -   Revision 1, 2018-07-19 (Pat Brown)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceComputeShaderDerivativesFeaturesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_compute_shader_derivatives Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_compute_shader_derivatives  (PhysicalDeviceComputeShaderDerivativesFeaturesNV) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs view
@@ -1,4 +1,152 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_cooperative_matrix - device extension+--+-- == VK_NV_cooperative_matrix+--+-- [__Name String__]+--     @VK_NV_cooperative_matrix@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     250+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_cooperative_matrix:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-02-05+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_cooperative_matrix.html SPV_NV_cooperative_matrix>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_cooperative_matrix.txt GL_NV_cooperative_matrix>+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Markus Tavenrath, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension adds support for using cooperative matrix types in+-- SPIR-V. Cooperative matrix types are medium-sized matrices that are+-- primarily supported in compute shaders, where the storage for the matrix+-- is spread across all invocations in some scope (usually a subgroup) and+-- those invocations cooperate to efficiently perform matrix multiplies.+--+-- Cooperative matrix types are defined by the+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_cooperative_matrix.html SPV_NV_cooperative_matrix>+-- SPIR-V extension and can be used with the+-- <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_cooperative_matrix.txt GL_NV_cooperative_matrix>+-- GLSL extension.+--+-- This extension includes support for enumerating the matrix types and+-- dimensions that are supported by the implementation.+--+-- == New Commands+--+-- -   'getPhysicalDeviceCooperativeMatrixPropertiesNV'+--+-- == New Structures+--+-- -   'CooperativeMatrixPropertiesNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceCooperativeMatrixFeaturesNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceCooperativeMatrixPropertiesNV'+--+-- == New Enums+--+-- -   'ComponentTypeNV'+--+-- -   'ScopeNV'+--+-- == New Enum Constants+--+-- -   'NV_COOPERATIVE_MATRIX_EXTENSION_NAME'+--+-- -   'NV_COOPERATIVE_MATRIX_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-cooperativeMatrix CooperativeMatrixNV>+--+-- == Issues+--+-- (1) What matrix properties will be supported in practice?+--+-- RESOLVED: In NVIDIA’s initial implementation, we will support:+--+-- -   AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x16 scope =+--     Subgroup+--+-- -   AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x8 scope =+--     Subgroup+--+-- -   AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x16 scope =+--     Subgroup+--+-- -   AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x8 scope =+--     Subgroup+--+-- == Version History+--+-- -   Revision 1, 2019-02-05 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'ComponentTypeNV', 'CooperativeMatrixPropertiesNV',+-- 'PhysicalDeviceCooperativeMatrixFeaturesNV',+-- 'PhysicalDeviceCooperativeMatrixPropertiesNV', 'ScopeNV',+-- 'getPhysicalDeviceCooperativeMatrixPropertiesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_matrix Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_cooperative_matrix  ( getPhysicalDeviceCooperativeMatrixPropertiesNV                                                    , PhysicalDeviceCooperativeMatrixFeaturesNV(..)                                                    , PhysicalDeviceCooperativeMatrixPropertiesNV(..)@@ -28,6 +176,8 @@                                                    , pattern NV_COOPERATIVE_MATRIX_EXTENSION_NAME                                                    ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -39,15 +189,7 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Data.Vector (generateM)@@ -65,8 +207,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)@@ -453,11 +595,11 @@  -- | 'SCOPE_DEVICE_NV' corresponds to SPIR-V 'Vulkan.Core10.Handles.Device' -- scope.-pattern SCOPE_DEVICE_NV = ScopeNV 1+pattern SCOPE_DEVICE_NV       = ScopeNV 1 -- | 'SCOPE_WORKGROUP_NV' corresponds to SPIR-V @Workgroup@ scope.-pattern SCOPE_WORKGROUP_NV = ScopeNV 2+pattern SCOPE_WORKGROUP_NV    = ScopeNV 2 -- | 'SCOPE_SUBGROUP_NV' corresponds to SPIR-V @Subgroup@ scope.-pattern SCOPE_SUBGROUP_NV = ScopeNV 3+pattern SCOPE_SUBGROUP_NV     = ScopeNV 3 -- | 'SCOPE_QUEUE_FAMILY_NV' corresponds to SPIR-V @QueueFamily@ scope. pattern SCOPE_QUEUE_FAMILY_NV = ScopeNV 5 {-# complete SCOPE_DEVICE_NV,@@ -465,24 +607,25 @@              SCOPE_SUBGROUP_NV,              SCOPE_QUEUE_FAMILY_NV :: ScopeNV #-} +conNameScopeNV :: String+conNameScopeNV = "ScopeNV"++enumPrefixScopeNV :: String+enumPrefixScopeNV = "SCOPE_"++showTableScopeNV :: [(ScopeNV, String)]+showTableScopeNV =+  [ (SCOPE_DEVICE_NV      , "DEVICE_NV")+  , (SCOPE_WORKGROUP_NV   , "WORKGROUP_NV")+  , (SCOPE_SUBGROUP_NV    , "SUBGROUP_NV")+  , (SCOPE_QUEUE_FAMILY_NV, "QUEUE_FAMILY_NV")+  ]+ instance Show ScopeNV where-  showsPrec p = \case-    SCOPE_DEVICE_NV -> showString "SCOPE_DEVICE_NV"-    SCOPE_WORKGROUP_NV -> showString "SCOPE_WORKGROUP_NV"-    SCOPE_SUBGROUP_NV -> showString "SCOPE_SUBGROUP_NV"-    SCOPE_QUEUE_FAMILY_NV -> showString "SCOPE_QUEUE_FAMILY_NV"-    ScopeNV x -> showParen (p >= 11) (showString "ScopeNV " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixScopeNV showTableScopeNV conNameScopeNV (\(ScopeNV x) -> x) (showsPrec 11)  instance Read ScopeNV where-  readPrec = parens (choose [("SCOPE_DEVICE_NV", pure SCOPE_DEVICE_NV)-                            , ("SCOPE_WORKGROUP_NV", pure SCOPE_WORKGROUP_NV)-                            , ("SCOPE_SUBGROUP_NV", pure SCOPE_SUBGROUP_NV)-                            , ("SCOPE_QUEUE_FAMILY_NV", pure SCOPE_QUEUE_FAMILY_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "ScopeNV")-                       v <- step readPrec-                       pure (ScopeNV v)))+  readPrec = enumReadPrec enumPrefixScopeNV showTableScopeNV conNameScopeNV ScopeNV   -- | VkComponentTypeNV - Specify SPIR-V cooperative matrix component type@@ -500,21 +643,21 @@ -- | 'COMPONENT_TYPE_FLOAT64_NV' corresponds to SPIR-V @OpTypeFloat@ 64. pattern COMPONENT_TYPE_FLOAT64_NV = ComponentTypeNV 2 -- | 'COMPONENT_TYPE_SINT8_NV' corresponds to SPIR-V @OpTypeInt@ 8 1.-pattern COMPONENT_TYPE_SINT8_NV = ComponentTypeNV 3+pattern COMPONENT_TYPE_SINT8_NV   = ComponentTypeNV 3 -- | 'COMPONENT_TYPE_SINT16_NV' corresponds to SPIR-V @OpTypeInt@ 16 1.-pattern COMPONENT_TYPE_SINT16_NV = ComponentTypeNV 4+pattern COMPONENT_TYPE_SINT16_NV  = ComponentTypeNV 4 -- | 'COMPONENT_TYPE_SINT32_NV' corresponds to SPIR-V @OpTypeInt@ 32 1.-pattern COMPONENT_TYPE_SINT32_NV = ComponentTypeNV 5+pattern COMPONENT_TYPE_SINT32_NV  = ComponentTypeNV 5 -- | 'COMPONENT_TYPE_SINT64_NV' corresponds to SPIR-V @OpTypeInt@ 64 1.-pattern COMPONENT_TYPE_SINT64_NV = ComponentTypeNV 6+pattern COMPONENT_TYPE_SINT64_NV  = ComponentTypeNV 6 -- | 'COMPONENT_TYPE_UINT8_NV' corresponds to SPIR-V @OpTypeInt@ 8 0.-pattern COMPONENT_TYPE_UINT8_NV = ComponentTypeNV 7+pattern COMPONENT_TYPE_UINT8_NV   = ComponentTypeNV 7 -- | 'COMPONENT_TYPE_UINT16_NV' corresponds to SPIR-V @OpTypeInt@ 16 0.-pattern COMPONENT_TYPE_UINT16_NV = ComponentTypeNV 8+pattern COMPONENT_TYPE_UINT16_NV  = ComponentTypeNV 8 -- | 'COMPONENT_TYPE_UINT32_NV' corresponds to SPIR-V @OpTypeInt@ 32 0.-pattern COMPONENT_TYPE_UINT32_NV = ComponentTypeNV 9+pattern COMPONENT_TYPE_UINT32_NV  = ComponentTypeNV 9 -- | 'COMPONENT_TYPE_UINT64_NV' corresponds to SPIR-V @OpTypeInt@ 64 0.-pattern COMPONENT_TYPE_UINT64_NV = ComponentTypeNV 10+pattern COMPONENT_TYPE_UINT64_NV  = ComponentTypeNV 10 {-# complete COMPONENT_TYPE_FLOAT16_NV,              COMPONENT_TYPE_FLOAT32_NV,              COMPONENT_TYPE_FLOAT64_NV,@@ -527,38 +670,36 @@              COMPONENT_TYPE_UINT32_NV,              COMPONENT_TYPE_UINT64_NV :: ComponentTypeNV #-} +conNameComponentTypeNV :: String+conNameComponentTypeNV = "ComponentTypeNV"++enumPrefixComponentTypeNV :: String+enumPrefixComponentTypeNV = "COMPONENT_TYPE_"++showTableComponentTypeNV :: [(ComponentTypeNV, String)]+showTableComponentTypeNV =+  [ (COMPONENT_TYPE_FLOAT16_NV, "FLOAT16_NV")+  , (COMPONENT_TYPE_FLOAT32_NV, "FLOAT32_NV")+  , (COMPONENT_TYPE_FLOAT64_NV, "FLOAT64_NV")+  , (COMPONENT_TYPE_SINT8_NV  , "SINT8_NV")+  , (COMPONENT_TYPE_SINT16_NV , "SINT16_NV")+  , (COMPONENT_TYPE_SINT32_NV , "SINT32_NV")+  , (COMPONENT_TYPE_SINT64_NV , "SINT64_NV")+  , (COMPONENT_TYPE_UINT8_NV  , "UINT8_NV")+  , (COMPONENT_TYPE_UINT16_NV , "UINT16_NV")+  , (COMPONENT_TYPE_UINT32_NV , "UINT32_NV")+  , (COMPONENT_TYPE_UINT64_NV , "UINT64_NV")+  ]+ instance Show ComponentTypeNV where-  showsPrec p = \case-    COMPONENT_TYPE_FLOAT16_NV -> showString "COMPONENT_TYPE_FLOAT16_NV"-    COMPONENT_TYPE_FLOAT32_NV -> showString "COMPONENT_TYPE_FLOAT32_NV"-    COMPONENT_TYPE_FLOAT64_NV -> showString "COMPONENT_TYPE_FLOAT64_NV"-    COMPONENT_TYPE_SINT8_NV -> showString "COMPONENT_TYPE_SINT8_NV"-    COMPONENT_TYPE_SINT16_NV -> showString "COMPONENT_TYPE_SINT16_NV"-    COMPONENT_TYPE_SINT32_NV -> showString "COMPONENT_TYPE_SINT32_NV"-    COMPONENT_TYPE_SINT64_NV -> showString "COMPONENT_TYPE_SINT64_NV"-    COMPONENT_TYPE_UINT8_NV -> showString "COMPONENT_TYPE_UINT8_NV"-    COMPONENT_TYPE_UINT16_NV -> showString "COMPONENT_TYPE_UINT16_NV"-    COMPONENT_TYPE_UINT32_NV -> showString "COMPONENT_TYPE_UINT32_NV"-    COMPONENT_TYPE_UINT64_NV -> showString "COMPONENT_TYPE_UINT64_NV"-    ComponentTypeNV x -> showParen (p >= 11) (showString "ComponentTypeNV " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixComponentTypeNV+                            showTableComponentTypeNV+                            conNameComponentTypeNV+                            (\(ComponentTypeNV x) -> x)+                            (showsPrec 11)  instance Read ComponentTypeNV where-  readPrec = parens (choose [("COMPONENT_TYPE_FLOAT16_NV", pure COMPONENT_TYPE_FLOAT16_NV)-                            , ("COMPONENT_TYPE_FLOAT32_NV", pure COMPONENT_TYPE_FLOAT32_NV)-                            , ("COMPONENT_TYPE_FLOAT64_NV", pure COMPONENT_TYPE_FLOAT64_NV)-                            , ("COMPONENT_TYPE_SINT8_NV", pure COMPONENT_TYPE_SINT8_NV)-                            , ("COMPONENT_TYPE_SINT16_NV", pure COMPONENT_TYPE_SINT16_NV)-                            , ("COMPONENT_TYPE_SINT32_NV", pure COMPONENT_TYPE_SINT32_NV)-                            , ("COMPONENT_TYPE_SINT64_NV", pure COMPONENT_TYPE_SINT64_NV)-                            , ("COMPONENT_TYPE_UINT8_NV", pure COMPONENT_TYPE_UINT8_NV)-                            , ("COMPONENT_TYPE_UINT16_NV", pure COMPONENT_TYPE_UINT16_NV)-                            , ("COMPONENT_TYPE_UINT32_NV", pure COMPONENT_TYPE_UINT32_NV)-                            , ("COMPONENT_TYPE_UINT64_NV", pure COMPONENT_TYPE_UINT64_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "ComponentTypeNV")-                       v <- step readPrec-                       pure (ComponentTypeNV v)))+  readPrec = enumReadPrec enumPrefixComponentTypeNV showTableComponentTypeNV conNameComponentTypeNV ComponentTypeNV   type NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs-boot view
@@ -1,4 +1,152 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_cooperative_matrix - device extension+--+-- == VK_NV_cooperative_matrix+--+-- [__Name String__]+--     @VK_NV_cooperative_matrix@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     250+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_cooperative_matrix:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-02-05+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_cooperative_matrix.html SPV_NV_cooperative_matrix>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_cooperative_matrix.txt GL_NV_cooperative_matrix>+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Markus Tavenrath, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension adds support for using cooperative matrix types in+-- SPIR-V. Cooperative matrix types are medium-sized matrices that are+-- primarily supported in compute shaders, where the storage for the matrix+-- is spread across all invocations in some scope (usually a subgroup) and+-- those invocations cooperate to efficiently perform matrix multiplies.+--+-- Cooperative matrix types are defined by the+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_cooperative_matrix.html SPV_NV_cooperative_matrix>+-- SPIR-V extension and can be used with the+-- <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_cooperative_matrix.txt GL_NV_cooperative_matrix>+-- GLSL extension.+--+-- This extension includes support for enumerating the matrix types and+-- dimensions that are supported by the implementation.+--+-- == New Commands+--+-- -   'getPhysicalDeviceCooperativeMatrixPropertiesNV'+--+-- == New Structures+--+-- -   'CooperativeMatrixPropertiesNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceCooperativeMatrixFeaturesNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceCooperativeMatrixPropertiesNV'+--+-- == New Enums+--+-- -   'ComponentTypeNV'+--+-- -   'ScopeNV'+--+-- == New Enum Constants+--+-- -   'NV_COOPERATIVE_MATRIX_EXTENSION_NAME'+--+-- -   'NV_COOPERATIVE_MATRIX_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV'+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-cooperativeMatrix CooperativeMatrixNV>+--+-- == Issues+--+-- (1) What matrix properties will be supported in practice?+--+-- RESOLVED: In NVIDIA’s initial implementation, we will support:+--+-- -   AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x16 scope =+--     Subgroup+--+-- -   AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x8 scope =+--     Subgroup+--+-- -   AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x16 scope =+--     Subgroup+--+-- -   AType = BType = fp16 CType = DType = fp32 MxNxK = 16x8x8 scope =+--     Subgroup+--+-- == Version History+--+-- -   Revision 1, 2019-02-05 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'ComponentTypeNV', 'CooperativeMatrixPropertiesNV',+-- 'PhysicalDeviceCooperativeMatrixFeaturesNV',+-- 'PhysicalDeviceCooperativeMatrixPropertiesNV', 'ScopeNV',+-- 'getPhysicalDeviceCooperativeMatrixPropertiesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_matrix Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_cooperative_matrix  ( CooperativeMatrixPropertiesNV                                                    , PhysicalDeviceCooperativeMatrixFeaturesNV                                                    , PhysicalDeviceCooperativeMatrixPropertiesNV
src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs view
@@ -1,4 +1,157 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_corner_sampled_image - device extension+--+-- == VK_NV_corner_sampled_image+--+-- [__Name String__]+--     @VK_NV_corner_sampled_image@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     51+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_corner_sampled_image:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-08-13+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Pat Brown, NVIDIA+--+--     -   Chris Lentini, NVIDIA+--+-- == Description+--+-- This extension adds support for a new image organization, which this+-- extension refers to as “corner-sampled” images. A corner-sampled image+-- differs from a conventional image in the following ways:+--+-- -   Texels are centered on integer coordinates. See+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-unnormalized-to-integer Unnormalized Texel Coordinate Operations>+--+-- -   Normalized coordinates are scaled using coord × (dim - 1) rather+--     than coord × dim, where dim is the size of one dimension of the+--     image. See+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-normalized-to-unnormalized normalized texel coordinate transform>.+--+-- -   Partial derivatives are scaled using coord × (dim - 1) rather than+--     coord × dim. See+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-scale-factor Scale Factor Operation>.+--+-- -   Calculation of the next higher lod size goes according to ⌈dim \/ 2⌉+--     rather than ⌊dim \/ 2⌋. See+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.+--+-- -   The minimum level size is 2x2 for 2D images and 2x2x2 for 3D images.+--     See+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.+--+-- This image organization is designed to facilitate a system like Ptex+-- with separate textures for each face of a subdivision or polygon mesh.+-- Placing sample locations at pixel corners allows applications to+-- maintain continuity between adjacent patches by duplicating values along+-- shared edges. Additionally, using the modified mipmapping logic along+-- with texture dimensions of the form 2n+1 allows continuity across shared+-- edges even if the adjacent patches use different level-of-detail values.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceCornerSampledImageFeaturesNV'+--+-- == New Enum Constants+--+-- -   'NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME'+--+-- -   'NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV'+--+-- == Issues+--+-- 1.  What should this extension be named?+--+--     DISCUSSION: While naming this extension, we chose the most+--     distinctive aspect of the image organization and referred to such+--     images as “corner-sampled images”. As a result, we decided to name+--     the extension NV_corner_sampled_image.+--+-- 2.  Do we need a format feature flag so formats can advertise if they+--     support corner-sampling?+--+--     DISCUSSION: Currently NVIDIA supports this for all 2D and 3D+--     formats, but not for cubemaps or depth-stencil formats. A format+--     feature might be useful if other vendors would only support this on+--     some formats.+--+-- 3.  Do integer texel coordinates have a different range for+--     corner-sampled images?+--+--     RESOLVED: No, these are unchanged.+--+-- 4.  Do unnormalized sampler coordinates work with corner-sampled images?+--     Are there any functional differences?+--+--     RESOLVED: Yes they work. Unnormalized coordinates are treated as+--     already scaled for corner-sample usage.+--+-- 5.  Should we have a diagram in the “Image Operations” chapter+--     demonstrating different texel sampling locations?+--+--     UNRESOLVED: Probaby, but later.+--+-- == Version History+--+-- -   Revision 1, 2018-08-14 (Daniel Koch)+--+--     -   Internal revisions+--+-- -   Revision 2, 2018-08-14 (Daniel Koch)+--+--     -   ???+--+-- = See Also+--+-- 'PhysicalDeviceCornerSampledImageFeaturesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_corner_sampled_image Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_corner_sampled_image  ( PhysicalDeviceCornerSampledImageFeaturesNV(..)                                                      , NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION                                                      , pattern NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION
src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs-boot view
@@ -1,4 +1,157 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_corner_sampled_image - device extension+--+-- == VK_NV_corner_sampled_image+--+-- [__Name String__]+--     @VK_NV_corner_sampled_image@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     51+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_corner_sampled_image:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-08-13+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Pat Brown, NVIDIA+--+--     -   Chris Lentini, NVIDIA+--+-- == Description+--+-- This extension adds support for a new image organization, which this+-- extension refers to as “corner-sampled” images. A corner-sampled image+-- differs from a conventional image in the following ways:+--+-- -   Texels are centered on integer coordinates. See+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-unnormalized-to-integer Unnormalized Texel Coordinate Operations>+--+-- -   Normalized coordinates are scaled using coord × (dim - 1) rather+--     than coord × dim, where dim is the size of one dimension of the+--     image. See+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-normalized-to-unnormalized normalized texel coordinate transform>.+--+-- -   Partial derivatives are scaled using coord × (dim - 1) rather than+--     coord × dim. See+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-scale-factor Scale Factor Operation>.+--+-- -   Calculation of the next higher lod size goes according to ⌈dim \/ 2⌉+--     rather than ⌊dim \/ 2⌋. See+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.+--+-- -   The minimum level size is 2x2 for 2D images and 2x2x2 for 3D images.+--     See+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.+--+-- This image organization is designed to facilitate a system like Ptex+-- with separate textures for each face of a subdivision or polygon mesh.+-- Placing sample locations at pixel corners allows applications to+-- maintain continuity between adjacent patches by duplicating values along+-- shared edges. Additionally, using the modified mipmapping logic along+-- with texture dimensions of the form 2n+1 allows continuity across shared+-- edges even if the adjacent patches use different level-of-detail values.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceCornerSampledImageFeaturesNV'+--+-- == New Enum Constants+--+-- -   'NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME'+--+-- -   'NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV'+--+-- == Issues+--+-- 1.  What should this extension be named?+--+--     DISCUSSION: While naming this extension, we chose the most+--     distinctive aspect of the image organization and referred to such+--     images as “corner-sampled images”. As a result, we decided to name+--     the extension NV_corner_sampled_image.+--+-- 2.  Do we need a format feature flag so formats can advertise if they+--     support corner-sampling?+--+--     DISCUSSION: Currently NVIDIA supports this for all 2D and 3D+--     formats, but not for cubemaps or depth-stencil formats. A format+--     feature might be useful if other vendors would only support this on+--     some formats.+--+-- 3.  Do integer texel coordinates have a different range for+--     corner-sampled images?+--+--     RESOLVED: No, these are unchanged.+--+-- 4.  Do unnormalized sampler coordinates work with corner-sampled images?+--     Are there any functional differences?+--+--     RESOLVED: Yes they work. Unnormalized coordinates are treated as+--     already scaled for corner-sample usage.+--+-- 5.  Should we have a diagram in the “Image Operations” chapter+--     demonstrating different texel sampling locations?+--+--     UNRESOLVED: Probaby, but later.+--+-- == Version History+--+-- -   Revision 1, 2018-08-14 (Daniel Koch)+--+--     -   Internal revisions+--+-- -   Revision 2, 2018-08-14 (Daniel Koch)+--+--     -   ???+--+-- = See Also+--+-- 'PhysicalDeviceCornerSampledImageFeaturesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_corner_sampled_image Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_corner_sampled_image  (PhysicalDeviceCornerSampledImageFeaturesNV) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs view
@@ -1,4 +1,135 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_coverage_reduction_mode - device extension+--+-- == VK_NV_coverage_reduction_mode+--+-- [__Name String__]+--     @VK_NV_coverage_reduction_mode@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     251+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_NV_framebuffer_mixed_samples@+--+-- [__Contact__]+--+--     -   Kedarnath Thangudu+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_coverage_reduction_mode:%20&body=@kthangudu%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-01-29+--+-- [__Contributors__]+--+--     -   Kedarnath Thangudu, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- When using a framebuffer with mixed samples, a per-fragment coverage+-- reduction operation is performed which generates color sample coverage+-- from the pixel coverage. This extension defines the following modes to+-- control how this reduction is performed.+--+-- -   Merge: When there are more samples in the pixel coverage than color+--     samples, there is an implementation dependent association of each+--     pixel coverage sample to a color sample. In the merge mode, the+--     color sample coverage is computed such that only if any associated+--     sample in the pixel coverage is covered, the color sample is+--     covered. This is the default mode.+--+-- -   Truncate: When there are more raster samples (N) than color+--     samples(M), there is one to one association of the first M raster+--     samples to the M color samples; other raster samples are ignored.+--+-- When the number of raster samples is equal to the color samples, there+-- is a one to one mapping between them in either of the above modes.+--+-- The new command+-- 'getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV' can be+-- used to query the various raster, color, depth\/stencil sample count and+-- reduction mode combinations that are supported by the implementation.+-- This extension would allow an implementation to support the behavior of+-- both @VK_NV_framebuffer_mixed_samples@ and+-- @VK_AMD_mixed_attachment_samples@ extensions simultaneously.+--+-- == New Commands+--+-- -   'getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'+--+-- == New Structures+--+-- -   'FramebufferMixedSamplesCombinationNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceCoverageReductionModeFeaturesNV'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':+--+--     -   'PipelineCoverageReductionStateCreateInfoNV'+--+-- == New Enums+--+-- -   'CoverageReductionModeNV'+--+-- == New Bitmasks+--+-- -   'PipelineCoverageReductionStateCreateFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME'+--+-- -   'NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV'+--+-- == Version History+--+-- -   Revision 1, 2019-01-29 (Kedarnath Thangudu)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'CoverageReductionModeNV', 'FramebufferMixedSamplesCombinationNV',+-- 'PhysicalDeviceCoverageReductionModeFeaturesNV',+-- 'PipelineCoverageReductionStateCreateFlagsNV',+-- 'PipelineCoverageReductionStateCreateInfoNV',+-- 'getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_coverage_reduction_mode Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_coverage_reduction_mode  ( getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV                                                         , PhysicalDeviceCoverageReductionModeFeaturesNV(..)                                                         , PipelineCoverageReductionStateCreateInfoNV(..)@@ -14,6 +145,8 @@                                                         , pattern NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME                                                         ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -25,16 +158,9 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import GHC.Show (showsPrec) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Data.Vector (generateM)@@ -54,8 +180,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)@@ -414,17 +540,27 @@   +conNamePipelineCoverageReductionStateCreateFlagsNV :: String+conNamePipelineCoverageReductionStateCreateFlagsNV = "PipelineCoverageReductionStateCreateFlagsNV"++enumPrefixPipelineCoverageReductionStateCreateFlagsNV :: String+enumPrefixPipelineCoverageReductionStateCreateFlagsNV = ""++showTablePipelineCoverageReductionStateCreateFlagsNV :: [(PipelineCoverageReductionStateCreateFlagsNV, String)]+showTablePipelineCoverageReductionStateCreateFlagsNV = []+ instance Show PipelineCoverageReductionStateCreateFlagsNV where-  showsPrec p = \case-    PipelineCoverageReductionStateCreateFlagsNV x -> showParen (p >= 11) (showString "PipelineCoverageReductionStateCreateFlagsNV 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineCoverageReductionStateCreateFlagsNV+                            showTablePipelineCoverageReductionStateCreateFlagsNV+                            conNamePipelineCoverageReductionStateCreateFlagsNV+                            (\(PipelineCoverageReductionStateCreateFlagsNV x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineCoverageReductionStateCreateFlagsNV where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineCoverageReductionStateCreateFlagsNV")-                       v <- step readPrec-                       pure (PipelineCoverageReductionStateCreateFlagsNV v)))+  readPrec = enumReadPrec enumPrefixPipelineCoverageReductionStateCreateFlagsNV+                          showTablePipelineCoverageReductionStateCreateFlagsNV+                          conNamePipelineCoverageReductionStateCreateFlagsNV+                          PipelineCoverageReductionStateCreateFlagsNV   -- | VkCoverageReductionModeNV - Specify the coverage reduction mode@@ -440,7 +576,7 @@ -- be associated with an implementation-dependent subset of samples in the -- pixel coverage. If any of those associated samples are covered, the -- color sample is covered.-pattern COVERAGE_REDUCTION_MODE_MERGE_NV = CoverageReductionModeNV 0+pattern COVERAGE_REDUCTION_MODE_MERGE_NV    = CoverageReductionModeNV 0 -- | 'COVERAGE_REDUCTION_MODE_TRUNCATE_NV' specifies that for color samples -- present in the color attachments, a color sample is covered if the pixel -- coverage sample with the same@@ -450,20 +586,28 @@ {-# complete COVERAGE_REDUCTION_MODE_MERGE_NV,              COVERAGE_REDUCTION_MODE_TRUNCATE_NV :: CoverageReductionModeNV #-} +conNameCoverageReductionModeNV :: String+conNameCoverageReductionModeNV = "CoverageReductionModeNV"++enumPrefixCoverageReductionModeNV :: String+enumPrefixCoverageReductionModeNV = "COVERAGE_REDUCTION_MODE_"++showTableCoverageReductionModeNV :: [(CoverageReductionModeNV, String)]+showTableCoverageReductionModeNV =+  [(COVERAGE_REDUCTION_MODE_MERGE_NV, "MERGE_NV"), (COVERAGE_REDUCTION_MODE_TRUNCATE_NV, "TRUNCATE_NV")]+ instance Show CoverageReductionModeNV where-  showsPrec p = \case-    COVERAGE_REDUCTION_MODE_MERGE_NV -> showString "COVERAGE_REDUCTION_MODE_MERGE_NV"-    COVERAGE_REDUCTION_MODE_TRUNCATE_NV -> showString "COVERAGE_REDUCTION_MODE_TRUNCATE_NV"-    CoverageReductionModeNV x -> showParen (p >= 11) (showString "CoverageReductionModeNV " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixCoverageReductionModeNV+                            showTableCoverageReductionModeNV+                            conNameCoverageReductionModeNV+                            (\(CoverageReductionModeNV x) -> x)+                            (showsPrec 11)  instance Read CoverageReductionModeNV where-  readPrec = parens (choose [("COVERAGE_REDUCTION_MODE_MERGE_NV", pure COVERAGE_REDUCTION_MODE_MERGE_NV)-                            , ("COVERAGE_REDUCTION_MODE_TRUNCATE_NV", pure COVERAGE_REDUCTION_MODE_TRUNCATE_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "CoverageReductionModeNV")-                       v <- step readPrec-                       pure (CoverageReductionModeNV v)))+  readPrec = enumReadPrec enumPrefixCoverageReductionModeNV+                          showTableCoverageReductionModeNV+                          conNameCoverageReductionModeNV+                          CoverageReductionModeNV   type NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs-boot view
@@ -1,4 +1,135 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_coverage_reduction_mode - device extension+--+-- == VK_NV_coverage_reduction_mode+--+-- [__Name String__]+--     @VK_NV_coverage_reduction_mode@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     251+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_NV_framebuffer_mixed_samples@+--+-- [__Contact__]+--+--     -   Kedarnath Thangudu+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_coverage_reduction_mode:%20&body=@kthangudu%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-01-29+--+-- [__Contributors__]+--+--     -   Kedarnath Thangudu, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- When using a framebuffer with mixed samples, a per-fragment coverage+-- reduction operation is performed which generates color sample coverage+-- from the pixel coverage. This extension defines the following modes to+-- control how this reduction is performed.+--+-- -   Merge: When there are more samples in the pixel coverage than color+--     samples, there is an implementation dependent association of each+--     pixel coverage sample to a color sample. In the merge mode, the+--     color sample coverage is computed such that only if any associated+--     sample in the pixel coverage is covered, the color sample is+--     covered. This is the default mode.+--+-- -   Truncate: When there are more raster samples (N) than color+--     samples(M), there is one to one association of the first M raster+--     samples to the M color samples; other raster samples are ignored.+--+-- When the number of raster samples is equal to the color samples, there+-- is a one to one mapping between them in either of the above modes.+--+-- The new command+-- 'getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV' can be+-- used to query the various raster, color, depth\/stencil sample count and+-- reduction mode combinations that are supported by the implementation.+-- This extension would allow an implementation to support the behavior of+-- both @VK_NV_framebuffer_mixed_samples@ and+-- @VK_AMD_mixed_attachment_samples@ extensions simultaneously.+--+-- == New Commands+--+-- -   'getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'+--+-- == New Structures+--+-- -   'FramebufferMixedSamplesCombinationNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceCoverageReductionModeFeaturesNV'+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':+--+--     -   'PipelineCoverageReductionStateCreateInfoNV'+--+-- == New Enums+--+-- -   'CoverageReductionModeNV'+--+-- == New Bitmasks+--+-- -   'PipelineCoverageReductionStateCreateFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME'+--+-- -   'NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV'+--+-- == Version History+--+-- -   Revision 1, 2019-01-29 (Kedarnath Thangudu)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'CoverageReductionModeNV', 'FramebufferMixedSamplesCombinationNV',+-- 'PhysicalDeviceCoverageReductionModeFeaturesNV',+-- 'PipelineCoverageReductionStateCreateFlagsNV',+-- 'PipelineCoverageReductionStateCreateInfoNV',+-- 'getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_coverage_reduction_mode Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_coverage_reduction_mode  ( FramebufferMixedSamplesCombinationNV                                                         , PhysicalDeviceCoverageReductionModeFeaturesNV                                                         , PipelineCoverageReductionStateCreateInfoNV
src/Vulkan/Extensions/VK_NV_dedicated_allocation.hs view
@@ -1,4 +1,180 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_dedicated_allocation - device extension+--+-- == VK_NV_dedicated_allocation+--+-- [__Name String__]+--     @VK_NV_dedicated_allocation@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     27+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_KHR_dedicated_allocation@ extension+--+--         -   Which in turn was /promoted/ to+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_dedicated_allocation:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-05-31+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension allows device memory to be allocated for a particular+-- buffer or image resource, which on some devices can significantly+-- improve the performance of that resource. Normal device memory+-- allocations must support memory aliasing and sparse binding, which could+-- interfere with optimizations like framebuffer compression or efficient+-- page table usage. This is important for render targets and very large+-- resources, but need not (and probably should not) be used for smaller+-- resources that can benefit from suballocation.+--+-- This extension adds a few small structures to resource creation and+-- memory allocation: a new structure that flags whether am image\/buffer+-- will have a dedicated allocation, and a structure indicating the image+-- or buffer that an allocation will be bound to.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Buffer.BufferCreateInfo':+--+--     -   'DedicatedAllocationBufferCreateInfoNV'+--+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo':+--+--     -   'DedicatedAllocationImageCreateInfoNV'+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'DedicatedAllocationMemoryAllocateInfoNV'+--+-- == New Enum Constants+--+-- -   'NV_DEDICATED_ALLOCATION_EXTENSION_NAME'+--+-- -   'NV_DEDICATED_ALLOCATION_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV'+--+-- == Examples+--+-- >     // Create an image with+-- >     // VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocation+-- >     // set to VK_TRUE+-- >+-- >     VkDedicatedAllocationImageCreateInfoNV dedicatedImageInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,            // sType+-- >         NULL,                                                                   // pNext+-- >         VK_TRUE,                                                                // dedicatedAllocation+-- >     };+-- >+-- >     VkImageCreateInfo imageCreateInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,    // sType+-- >         &dedicatedImageInfo                     // pNext+-- >         // Other members set as usual+-- >     };+-- >+-- >     VkImage image;+-- >     VkResult result = vkCreateImage(+-- >         device,+-- >         &imageCreateInfo,+-- >         NULL,                       // pAllocator+-- >         &image);+-- >+-- >     VkMemoryRequirements memoryRequirements;+-- >     vkGetImageMemoryRequirements(+-- >         device,+-- >         image,+-- >         &memoryRequirements);+-- >+-- >     // Allocate memory with VkDedicatedAllocationMemoryAllocateInfoNV::image+-- >     // pointing to the image we are allocating the memory for+-- >+-- >     VkDedicatedAllocationMemoryAllocateInfoNV dedicatedInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,             // sType+-- >         NULL,                                                                       // pNext+-- >         image,                                                                      // image+-- >         VK_NULL_HANDLE,                                                             // buffer+-- >     };+-- >+-- >     VkMemoryAllocateInfo memoryAllocateInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,                 // sType+-- >         &dedicatedInfo,                                         // pNext+-- >         memoryRequirements.size,                                // allocationSize+-- >         FindMemoryTypeIndex(memoryRequirements.memoryTypeBits), // memoryTypeIndex+-- >     };+-- >+-- >     VkDeviceMemory memory;+-- >     vkAllocateMemory(+-- >         device,+-- >         &memoryAllocateInfo,+-- >         NULL,                       // pAllocator+-- >         &memory);+-- >+-- >     // Bind the image to the memory+-- >+-- >     vkBindImageMemory(+-- >         device,+-- >         image,+-- >         memory,+-- >         0);+--+-- == Version History+--+-- -   Revision 1, 2016-05-31 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'DedicatedAllocationBufferCreateInfoNV',+-- 'DedicatedAllocationImageCreateInfoNV',+-- 'DedicatedAllocationMemoryAllocateInfoNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_dedicated_allocation Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_dedicated_allocation  ( DedicatedAllocationImageCreateInfoNV(..)                                                      , DedicatedAllocationBufferCreateInfoNV(..)                                                      , DedicatedAllocationMemoryAllocateInfoNV(..)
src/Vulkan/Extensions/VK_NV_dedicated_allocation.hs-boot view
@@ -1,4 +1,180 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_dedicated_allocation - device extension+--+-- == VK_NV_dedicated_allocation+--+-- [__Name String__]+--     @VK_NV_dedicated_allocation@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     27+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_KHR_dedicated_allocation@ extension+--+--         -   Which in turn was /promoted/ to+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_dedicated_allocation:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-05-31+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension allows device memory to be allocated for a particular+-- buffer or image resource, which on some devices can significantly+-- improve the performance of that resource. Normal device memory+-- allocations must support memory aliasing and sparse binding, which could+-- interfere with optimizations like framebuffer compression or efficient+-- page table usage. This is important for render targets and very large+-- resources, but need not (and probably should not) be used for smaller+-- resources that can benefit from suballocation.+--+-- This extension adds a few small structures to resource creation and+-- memory allocation: a new structure that flags whether am image\/buffer+-- will have a dedicated allocation, and a structure indicating the image+-- or buffer that an allocation will be bound to.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Buffer.BufferCreateInfo':+--+--     -   'DedicatedAllocationBufferCreateInfoNV'+--+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo':+--+--     -   'DedicatedAllocationImageCreateInfoNV'+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'DedicatedAllocationMemoryAllocateInfoNV'+--+-- == New Enum Constants+--+-- -   'NV_DEDICATED_ALLOCATION_EXTENSION_NAME'+--+-- -   'NV_DEDICATED_ALLOCATION_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV'+--+-- == Examples+--+-- >     // Create an image with+-- >     // VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocation+-- >     // set to VK_TRUE+-- >+-- >     VkDedicatedAllocationImageCreateInfoNV dedicatedImageInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,            // sType+-- >         NULL,                                                                   // pNext+-- >         VK_TRUE,                                                                // dedicatedAllocation+-- >     };+-- >+-- >     VkImageCreateInfo imageCreateInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,    // sType+-- >         &dedicatedImageInfo                     // pNext+-- >         // Other members set as usual+-- >     };+-- >+-- >     VkImage image;+-- >     VkResult result = vkCreateImage(+-- >         device,+-- >         &imageCreateInfo,+-- >         NULL,                       // pAllocator+-- >         &image);+-- >+-- >     VkMemoryRequirements memoryRequirements;+-- >     vkGetImageMemoryRequirements(+-- >         device,+-- >         image,+-- >         &memoryRequirements);+-- >+-- >     // Allocate memory with VkDedicatedAllocationMemoryAllocateInfoNV::image+-- >     // pointing to the image we are allocating the memory for+-- >+-- >     VkDedicatedAllocationMemoryAllocateInfoNV dedicatedInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,             // sType+-- >         NULL,                                                                       // pNext+-- >         image,                                                                      // image+-- >         VK_NULL_HANDLE,                                                             // buffer+-- >     };+-- >+-- >     VkMemoryAllocateInfo memoryAllocateInfo =+-- >     {+-- >         VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,                 // sType+-- >         &dedicatedInfo,                                         // pNext+-- >         memoryRequirements.size,                                // allocationSize+-- >         FindMemoryTypeIndex(memoryRequirements.memoryTypeBits), // memoryTypeIndex+-- >     };+-- >+-- >     VkDeviceMemory memory;+-- >     vkAllocateMemory(+-- >         device,+-- >         &memoryAllocateInfo,+-- >         NULL,                       // pAllocator+-- >         &memory);+-- >+-- >     // Bind the image to the memory+-- >+-- >     vkBindImageMemory(+-- >         device,+-- >         image,+-- >         memory,+-- >         0);+--+-- == Version History+--+-- -   Revision 1, 2016-05-31 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'DedicatedAllocationBufferCreateInfoNV',+-- 'DedicatedAllocationImageCreateInfoNV',+-- 'DedicatedAllocationMemoryAllocateInfoNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_dedicated_allocation Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_dedicated_allocation  ( DedicatedAllocationBufferCreateInfoNV                                                      , DedicatedAllocationImageCreateInfoNV                                                      , DedicatedAllocationMemoryAllocateInfoNV
src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs view
@@ -1,4 +1,91 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_dedicated_allocation_image_aliasing - device extension+--+-- == VK_NV_dedicated_allocation_image_aliasing+--+-- [__Name String__]+--     @VK_NV_dedicated_allocation_image_aliasing@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     241+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_dedicated_allocation@+--+-- [__Contact__]+--+--     -   Nuno Subtil+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_dedicated_allocation_image_aliasing:%20&body=@nsubtil%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-01-04+--+-- [__Contributors__]+--+--     -   Nuno Subtil, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+--     -   Axel Gneiting, id Software+--+-- == Description+--+-- This extension allows applications to alias images on dedicated+-- allocations, subject to specific restrictions: the extent and the number+-- of layers in the image being aliased must be smaller than or equal to+-- those of the original image for which the allocation was created, and+-- every other image parameter must match.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV'+--+-- == New Enum Constants+--+-- -   'NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME'+--+-- -   'NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV'+--+-- == Version History+--+-- -   Revision 1, 2019-01-04 (Nuno Subtil)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_dedicated_allocation_image_aliasing Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing  ( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(..)                                                                     , NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION                                                                     , pattern NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION
src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs-boot view
@@ -1,4 +1,91 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_dedicated_allocation_image_aliasing - device extension+--+-- == VK_NV_dedicated_allocation_image_aliasing+--+-- [__Name String__]+--     @VK_NV_dedicated_allocation_image_aliasing@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     241+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_dedicated_allocation@+--+-- [__Contact__]+--+--     -   Nuno Subtil+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_dedicated_allocation_image_aliasing:%20&body=@nsubtil%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-01-04+--+-- [__Contributors__]+--+--     -   Nuno Subtil, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+--     -   Axel Gneiting, id Software+--+-- == Description+--+-- This extension allows applications to alias images on dedicated+-- allocations, subject to specific restrictions: the extent and the number+-- of layers in the image being aliased must be smaller than or equal to+-- those of the original image for which the allocation was created, and+-- every other image parameter must match.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV'+--+-- == New Enum Constants+--+-- -   'NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME'+--+-- -   'NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV'+--+-- == Version History+--+-- -   Revision 1, 2019-01-04 (Nuno Subtil)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_dedicated_allocation_image_aliasing Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing  (PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs view
@@ -1,4 +1,109 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_device_diagnostic_checkpoints - device extension+--+-- == VK_NV_device_diagnostic_checkpoints+--+-- [__Name String__]+--     @VK_NV_device_diagnostic_checkpoints@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     207+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Nuno Subtil+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_device_diagnostic_checkpoints:%20&body=@nsubtil%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-07-16+--+-- [__Contributors__]+--+--     -   Oleg Kuznetsov, NVIDIA+--+--     -   Alex Dunn, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension allows applications to insert markers in the command+-- stream and associate them with custom data.+--+-- If a device lost error occurs, the application /may/ then query the+-- implementation for the last markers to cross specific+-- implementation-defined pipeline stages, in order to narrow down which+-- commands were executing at the time and might have caused the failure.+--+-- == New Commands+--+-- -   'cmdSetCheckpointNV'+--+-- -   'getQueueCheckpointDataNV'+--+-- == New Structures+--+-- -   'CheckpointDataNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2':+--+--     -   'QueueFamilyCheckpointPropertiesNV'+--+-- == New Enum Constants+--+-- -   'NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME'+--+-- -   'NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CHECKPOINT_DATA_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV'+--+-- == Version History+--+-- -   Revision 1, 2018-07-16 (Nuno Subtil)+--+--     -   Internal revisions+--+-- -   Revision 2, 2018-07-16 (Nuno Subtil)+--+--     -   ???+--+-- = See Also+--+-- 'CheckpointDataNV', 'QueueFamilyCheckpointPropertiesNV',+-- 'cmdSetCheckpointNV', 'getQueueCheckpointDataNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints  ( cmdSetCheckpointNV                                                               , getQueueCheckpointDataNV                                                               , QueueFamilyCheckpointPropertiesNV(..)
src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs-boot view
@@ -1,4 +1,109 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_device_diagnostic_checkpoints - device extension+--+-- == VK_NV_device_diagnostic_checkpoints+--+-- [__Name String__]+--     @VK_NV_device_diagnostic_checkpoints@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     207+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Nuno Subtil+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_device_diagnostic_checkpoints:%20&body=@nsubtil%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-07-16+--+-- [__Contributors__]+--+--     -   Oleg Kuznetsov, NVIDIA+--+--     -   Alex Dunn, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension allows applications to insert markers in the command+-- stream and associate them with custom data.+--+-- If a device lost error occurs, the application /may/ then query the+-- implementation for the last markers to cross specific+-- implementation-defined pipeline stages, in order to narrow down which+-- commands were executing at the time and might have caused the failure.+--+-- == New Commands+--+-- -   'cmdSetCheckpointNV'+--+-- -   'getQueueCheckpointDataNV'+--+-- == New Structures+--+-- -   'CheckpointDataNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2':+--+--     -   'QueueFamilyCheckpointPropertiesNV'+--+-- == New Enum Constants+--+-- -   'NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME'+--+-- -   'NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CHECKPOINT_DATA_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV'+--+-- == Version History+--+-- -   Revision 1, 2018-07-16 (Nuno Subtil)+--+--     -   Internal revisions+--+-- -   Revision 2, 2018-07-16 (Nuno Subtil)+--+--     -   ???+--+-- = See Also+--+-- 'CheckpointDataNV', 'QueueFamilyCheckpointPropertiesNV',+-- 'cmdSetCheckpointNV', 'getQueueCheckpointDataNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints  ( CheckpointDataNV                                                               , QueueFamilyCheckpointPropertiesNV                                                               ) where
src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs view
@@ -1,30 +1,122 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_device_diagnostics_config - device extension+--+-- == VK_NV_device_diagnostics_config+--+-- [__Name String__]+--     @VK_NV_device_diagnostics_config@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     301+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Kedarnath Thangudu+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_device_diagnostics_config:%20&body=@kthangudu%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-12-15+--+-- [__Contributors__]+--+--     -   Kedarnath Thangudu, NVIDIA+--+--     -   Thomas Klein, NVIDIA+--+-- == Description+--+-- Applications using Nvidia Nsight™ Aftermath SDK for Vulkan to integrate+-- device crash dumps into their error reporting mechanisms, /may/ use this+-- extension to configure options related to device crash dump creation.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'DeviceDiagnosticsConfigCreateInfoNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceDiagnosticsConfigFeaturesNV'+--+-- == New Enums+--+-- -   'DeviceDiagnosticsConfigFlagBitsNV'+--+-- == New Bitmasks+--+-- -   'DeviceDiagnosticsConfigFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME'+--+-- -   'NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV'+--+-- == Version History+--+-- -   Revision 1, 2019-11-21 (Kedarnath Thangudu)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'DeviceDiagnosticsConfigCreateInfoNV',+-- 'DeviceDiagnosticsConfigFlagBitsNV', 'DeviceDiagnosticsConfigFlagsNV',+-- 'PhysicalDeviceDiagnosticsConfigFeaturesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostics_config Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_device_diagnostics_config  ( PhysicalDeviceDiagnosticsConfigFeaturesNV(..)                                                           , DeviceDiagnosticsConfigCreateInfoNV(..)+                                                          , DeviceDiagnosticsConfigFlagsNV                                                           , DeviceDiagnosticsConfigFlagBitsNV( DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV                                                                                              , DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV                                                                                              , DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV                                                                                              , ..                                                                                              )-                                                          , DeviceDiagnosticsConfigFlagsNV                                                           , NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION                                                           , pattern NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION                                                           , NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME                                                           , pattern NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME                                                           ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Data.String (IsString)@@ -36,7 +128,7 @@ import GHC.Generics (Generic) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Vulkan.Core10.FundamentalTypes (bool32ToBool) import Vulkan.Core10.FundamentalTypes (boolToBool32)@@ -173,6 +265,8 @@            zero  +type DeviceDiagnosticsConfigFlagsNV = DeviceDiagnosticsConfigFlagBitsNV+ -- | VkDeviceDiagnosticsConfigFlagBitsNV - Bitmask specifying diagnostics -- flags --@@ -184,11 +278,11 @@  -- | 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV' enables the -- generation of debug information for shaders.-pattern DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = DeviceDiagnosticsConfigFlagBitsNV 0x00000001+pattern DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV     = DeviceDiagnosticsConfigFlagBitsNV 0x00000001 -- | 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV' enables -- driver side tracking of resources (images, buffers, etc.) used to -- augment the device fault information.-pattern DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = DeviceDiagnosticsConfigFlagBitsNV 0x00000002+pattern DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV     = DeviceDiagnosticsConfigFlagBitsNV 0x00000002 -- | 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV' enables -- automatic insertion of -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-diagnostic-checkpoints diagnostic checkpoints>@@ -197,24 +291,31 @@ -- automatically inserted checkpoints. pattern DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = DeviceDiagnosticsConfigFlagBitsNV 0x00000004 -type DeviceDiagnosticsConfigFlagsNV = DeviceDiagnosticsConfigFlagBitsNV+conNameDeviceDiagnosticsConfigFlagBitsNV :: String+conNameDeviceDiagnosticsConfigFlagBitsNV = "DeviceDiagnosticsConfigFlagBitsNV" +enumPrefixDeviceDiagnosticsConfigFlagBitsNV :: String+enumPrefixDeviceDiagnosticsConfigFlagBitsNV = "DEVICE_DIAGNOSTICS_CONFIG_ENABLE_"++showTableDeviceDiagnosticsConfigFlagBitsNV :: [(DeviceDiagnosticsConfigFlagBitsNV, String)]+showTableDeviceDiagnosticsConfigFlagBitsNV =+  [ (DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV    , "SHADER_DEBUG_INFO_BIT_NV")+  , (DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV    , "RESOURCE_TRACKING_BIT_NV")+  , (DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV, "AUTOMATIC_CHECKPOINTS_BIT_NV")+  ]+ instance Show DeviceDiagnosticsConfigFlagBitsNV where-  showsPrec p = \case-    DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV -> showString "DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV"-    DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV -> showString "DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV"-    DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV -> showString "DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV"-    DeviceDiagnosticsConfigFlagBitsNV x -> showParen (p >= 11) (showString "DeviceDiagnosticsConfigFlagBitsNV 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixDeviceDiagnosticsConfigFlagBitsNV+                            showTableDeviceDiagnosticsConfigFlagBitsNV+                            conNameDeviceDiagnosticsConfigFlagBitsNV+                            (\(DeviceDiagnosticsConfigFlagBitsNV x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read DeviceDiagnosticsConfigFlagBitsNV where-  readPrec = parens (choose [("DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV", pure DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV)-                            , ("DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV", pure DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV)-                            , ("DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV", pure DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "DeviceDiagnosticsConfigFlagBitsNV")-                       v <- step readPrec-                       pure (DeviceDiagnosticsConfigFlagBitsNV v)))+  readPrec = enumReadPrec enumPrefixDeviceDiagnosticsConfigFlagBitsNV+                          showTableDeviceDiagnosticsConfigFlagBitsNV+                          conNameDeviceDiagnosticsConfigFlagBitsNV+                          DeviceDiagnosticsConfigFlagBitsNV   type NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs-boot view
@@ -1,4 +1,101 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_device_diagnostics_config - device extension+--+-- == VK_NV_device_diagnostics_config+--+-- [__Name String__]+--     @VK_NV_device_diagnostics_config@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     301+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Kedarnath Thangudu+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_device_diagnostics_config:%20&body=@kthangudu%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-12-15+--+-- [__Contributors__]+--+--     -   Kedarnath Thangudu, NVIDIA+--+--     -   Thomas Klein, NVIDIA+--+-- == Description+--+-- Applications using Nvidia Nsight™ Aftermath SDK for Vulkan to integrate+-- device crash dumps into their error reporting mechanisms, /may/ use this+-- extension to configure options related to device crash dump creation.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'DeviceDiagnosticsConfigCreateInfoNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceDiagnosticsConfigFeaturesNV'+--+-- == New Enums+--+-- -   'DeviceDiagnosticsConfigFlagBitsNV'+--+-- == New Bitmasks+--+-- -   'DeviceDiagnosticsConfigFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME'+--+-- -   'NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV'+--+-- == Version History+--+-- -   Revision 1, 2019-11-21 (Kedarnath Thangudu)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'DeviceDiagnosticsConfigCreateInfoNV',+-- 'DeviceDiagnosticsConfigFlagBitsNV', 'DeviceDiagnosticsConfigFlagsNV',+-- 'PhysicalDeviceDiagnosticsConfigFeaturesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostics_config Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_device_diagnostics_config  ( DeviceDiagnosticsConfigCreateInfoNV                                                           , PhysicalDeviceDiagnosticsConfigFeaturesNV                                                           ) where
src/Vulkan/Extensions/VK_NV_device_generated_commands.hs view
@@ -1,4 +1,538 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_device_generated_commands - device extension+--+-- == VK_NV_device_generated_commands+--+-- [__Name String__]+--     @VK_NV_device_generated_commands@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     278+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+-- [__Contact__]+--+--     -   Christoph Kubisch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_device_generated_commands:%20&body=@pixeljetstream%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-02-20+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires Vulkan 1.1+--+--     -   This extension requires @VK_EXT_buffer_device_address@ or+--         @VK_KHR_buffer_device_address@ or Vulkan 1.2 for the ability to+--         bind vertex and index buffers on the device.+--+--     -   This extension interacts with @VK_NV_mesh_shader@. If the latter+--         extension is not supported, remove the command token to initiate+--         mesh tasks drawing in this extension.+--+-- [__Contributors__]+--+--     -   Christoph Kubisch, NVIDIA+--+--     -   Pierre Boudier, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+--     -   Yuriy O’Donnell, Epic Games+--+--     -   Baldur Karlsson, Valve+--+--     -   Mathias Schott, NVIDIA+--+--     -   Tyson Smith, NVIDIA+--+--     -   Ingo Esser, NVIDIA+--+-- == Description+--+-- This extension allows the device to generate a number of critical+-- graphics commands for command buffers.+--+-- When rendering a large number of objects, the device can be leveraged to+-- implement a number of critical functions, like updating matrices, or+-- implementing occlusion culling, frustum culling, front to back sorting,+-- etc. Implementing those on the device does not require any special+-- extension, since an application is free to define its own data+-- structures, and just process them using shaders.+--+-- However, if the application desires to quickly kick off the rendering of+-- the final stream of objects, then unextended Vulkan forces the+-- application to read back the processed stream and issue graphics command+-- from the host. For very large scenes, the synchronization overhead and+-- cost to generate the command buffer can become the bottleneck. This+-- extension allows an application to generate a device side stream of+-- state changes and commands, and convert it efficiently into a command+-- buffer without having to read it back to the host.+--+-- Furthermore, it allows incremental changes to such command buffers by+-- manipulating only partial sections of a command stream — for example+-- pipeline bindings. Unextended Vulkan requires re-creation of entire+-- command buffers in such a scenario, or updates synchronized on the host.+--+-- The intended usage for this extension is for the application to:+--+-- -   create 'Vulkan.Core10.Handles.Buffer' objects and retrieve physical+--     addresses from them via+--     'Vulkan.Extensions.VK_EXT_buffer_device_address.getBufferDeviceAddressEXT'+--+-- -   create a graphics pipeline using+--     'GraphicsPipelineShaderGroupsCreateInfoNV' for the ability to change+--     shaders on the device.+--+-- -   create a 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV', which+--     lists the 'IndirectCommandsTokenTypeNV' it wants to dynamically+--     execute as an atomic command sequence. This step likely involves+--     some internal device code compilation, since the intent is for the+--     GPU to generate the command buffer in the pipeline.+--+-- -   fill the input stream buffers with the data for each of the inputs+--     it needs. Each input is an array that will be filled with+--     token-dependent data.+--+-- -   set up a preprocess 'Vulkan.Core10.Handles.Buffer' that uses memory+--     according to the information retrieved via+--     'getGeneratedCommandsMemoryRequirementsNV'.+--+-- -   optionally preprocess the generated content using+--     'cmdPreprocessGeneratedCommandsNV', for example on an asynchronous+--     compute queue, or for the purpose of re-using the data in multiple+--     executions.+--+-- -   call 'cmdExecuteGeneratedCommandsNV' to create and execute the+--     actual device commands for all sequences based on the inputs+--     provided.+--+-- For each draw in a sequence, the following can be specified:+--+-- -   a different shader group+--+-- -   a number of vertex buffer bindings+--+-- -   a different index buffer, with an optional dynamic offset and index+--     type+--+-- -   a number of different push constants+--+-- -   a flag that encodes the primitive winding+--+-- While the GPU can be faster than a CPU to generate the commands, it will+-- not happen asynchronously to the device, therefore the primary use-case+-- is generating “less” total work (occlusion culling, classification to+-- use specialized shaders, etc.).+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV'+--+-- == New Commands+--+-- -   'cmdBindPipelineShaderGroupNV'+--+-- -   'cmdExecuteGeneratedCommandsNV'+--+-- -   'cmdPreprocessGeneratedCommandsNV'+--+-- -   'createIndirectCommandsLayoutNV'+--+-- -   'destroyIndirectCommandsLayoutNV'+--+-- -   'getGeneratedCommandsMemoryRequirementsNV'+--+-- == New Structures+--+-- -   'BindIndexBufferIndirectCommandNV'+--+-- -   'BindShaderGroupIndirectCommandNV'+--+-- -   'BindVertexBufferIndirectCommandNV'+--+-- -   'GeneratedCommandsInfoNV'+--+-- -   'GeneratedCommandsMemoryRequirementsInfoNV'+--+-- -   'GraphicsShaderGroupCreateInfoNV'+--+-- -   'IndirectCommandsLayoutCreateInfoNV'+--+-- -   'IndirectCommandsLayoutTokenNV'+--+-- -   'IndirectCommandsStreamNV'+--+-- -   'SetStateFlagsIndirectCommandNV'+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'GraphicsPipelineShaderGroupsCreateInfoNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'+--+-- == New Enums+--+-- -   'IndirectCommandsLayoutUsageFlagBitsNV'+--+-- -   'IndirectCommandsTokenTypeNV'+--+-- -   'IndirectStateFlagBitsNV'+--+-- == New Bitmasks+--+-- -   'IndirectCommandsLayoutUsageFlagsNV'+--+-- -   'IndirectStateFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME'+--+-- -   'NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV'+--+-- == Issues+--+-- 1) How to name this extension ?+--+-- @VK_NV_device_generated_commands@+--+-- As usual, one of the hardest issues ;)+--+-- Alternatives: @VK_gpu_commands@, @VK_execute_commands@,+-- @VK_device_commands@, @VK_device_execute_commands@, @VK_device_execute@,+-- @VK_device_created_commands@, @VK_device_recorded_commands@,+-- @VK_device_generated_commands@ @VK_indirect_generated_commands@+--+-- 2) Should we use a serial stateful token stream or stateless sequence+-- descriptions?+--+-- Similarly to 'Vulkan.Core10.Handles.Pipeline', fixed layouts have the+-- most likelihood to be cross-vendor adoptable. They also benefit from+-- being processable in parallel. This is a different design choice+-- compared to the serial command stream generated through+-- @GL_NV_command_list@.+--+-- 3) How to name a sequence description?+--+-- @VkIndirectCommandsLayout@ as in the NVX extension predecessor.+--+-- Alternative: @VkGeneratedCommandsLayout@+--+-- 4) Do we want to provide @indirectCommands@ inputs with layout or at+-- @indirectCommands@ time?+--+-- Separate layout from data as Vulkan does. Provide full flexibility for+-- @indirectCommands@.+--+-- 5) Should the input be provided as SoA or AoS?+--+-- Both ways are desireable. AoS can provide portability to other APIs and+-- easier to setup, while SoA allows to update individual inputs in a+-- cache-efficient manner, when others remain static.+--+-- 6) How do we make developers aware of the memory requirements of+-- implementation-dependent data used for the generated commands?+--+-- Make the API explicit and introduce a @preprocess@+-- 'Vulkan.Core10.Handles.Buffer'. Developers have to allocate it using+-- 'getGeneratedCommandsMemoryRequirementsNV'.+--+-- In the NVX version the requirements were hidden implicitly as part of+-- the command buffer reservation process, however as the memory+-- requirements can be substantial, we want to give developers the ability+-- to budget the memory themselves. By lowering the @maxSequencesCount@ the+-- memory consumption can be reduced. Furthermore re-use of the memory is+-- possible, for example for doing explicit preprocessing and execution in+-- a ping-pong fashion.+--+-- The actual buffer size is implementation dependent and may be zero, i.e.+-- not always required.+--+-- When making use of Graphics Shader Groups, the programs should behave+-- similar with regards to vertex inputs, clipping and culling outputs of+-- the geometry stage, as well as sample shading behavior in fragment+-- shaders, to reduce the amount of the worst-case memory approximation.+--+-- 7) Should we allow additional per-sequence dynamic state changes?+--+-- Yes+--+-- Introduced a lightweight indirect state flag 'IndirectStateFlagBitsNV'.+-- So far only switching front face winding state is exposed. Especially in+-- CAD\/DCC mirrored transforms that require such changes are common, and+-- similar flexibility is given in the ray tracing instance description.+--+-- The flag could be extended further, for example to switch between+-- primitive-lists or -strips, or make other state modifications.+--+-- Furthermore, as new tokens can be added easily, future extension could+-- add the ability to change any+-- 'Vulkan.Core10.Enums.DynamicState.DynamicState'.+--+-- 8) How do we allow re-using already “generated” @indirectCommands@?+--+-- Expose a @preprocessBuffer@ to re-use implementation-dependencyFlags+-- data. Set the @isPreprocessed@ to true in+-- 'cmdExecuteGeneratedCommandsNV'.+--+-- 9) Under which conditions is 'cmdExecuteGeneratedCommandsNV' legal?+--+-- It behaves like a regular draw call command.+--+-- 10) Is 'cmdPreprocessGeneratedCommandsNV' copying the input data or+-- referencing it?+--+-- There are multiple implementations possible:+--+-- -   one could have some emulation code that parses the inputs, and+--     generates an output command buffer, therefore copying the inputs.+--+-- -   one could just reference the inputs, and have the processing done in+--     pipe at execution time.+--+-- If the data is mandated to be copied, then it puts a penalty on+-- implementation that could process the inputs directly in pipe. If the+-- data is “referenced”, then it allows both types of implementation.+--+-- The inputs are “referenced”, and /must/ not be modified after the call+-- to 'cmdExecuteGeneratedCommandsNV' has completed.+--+-- 11) Which buffer usage flags are required for the buffers referenced by+-- 'GeneratedCommandsInfoNV' ?+--+-- Reuse existing+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+--+-- -   'GeneratedCommandsInfoNV'::@preprocessBuffer@+--+-- -   'GeneratedCommandsInfoNV'::@sequencesCountBuffer@+--+-- -   'GeneratedCommandsInfoNV'::@sequencesIndexBuffer@+--+-- -   'IndirectCommandsStreamNV'::@buffer@+--+-- 12) In which pipeline stage does the device generated command expansion+-- happen?+--+-- 'cmdPreprocessGeneratedCommandsNV' is treated as if it occurs in a+-- separate logical pipeline from either graphics or compute, and that+-- pipeline only includes+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TOP_OF_PIPE_BIT',+-- a new stage+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV',+-- and+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT'.+-- This new stage has two corresponding new access types,+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'+-- and+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV',+-- used to synchronize reading the buffer inputs and writing the preprocess+-- memory output.+--+-- The generated output written in the preprocess buffer memory by+-- 'cmdExecuteGeneratedCommandsNV' is considered to be consumed by the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'+-- pipeline stage.+--+-- Thus, to synchronize from writing the input buffers to preprocessing via+-- 'cmdPreprocessGeneratedCommandsNV', use:+--+-- -   @dstStageMask@ =+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'+--+-- -   @dstAccessMask@ =+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'+--+-- To synchronize from 'cmdPreprocessGeneratedCommandsNV' to executing the+-- generated commands by 'cmdExecuteGeneratedCommandsNV', use:+--+-- -   @srcStageMask@ =+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'+--+-- -   @srcAccessMask@ =+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'+--+-- -   @dstStageMask@ =+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'+--+-- -   @dstAccessMask@ =+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_INDIRECT_COMMAND_READ_BIT'+--+-- When 'cmdExecuteGeneratedCommandsNV' is used with a @isPreprocessed@ of+-- 'Vulkan.Core10.FundamentalTypes.FALSE', the generated commands are+-- implicitly preprocessed, therefore one only needs to synchronize the+-- inputs via:+--+-- -   @dstStageMask@ =+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'+--+-- -   @dstAccessMask@ =+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_INDIRECT_COMMAND_READ_BIT'+--+-- 13) What if most token data is “static”, but we frequently want to+-- render a subsection?+--+-- Added “sequencesIndexBuffer”. This allows to easier sort and filter what+-- should actually be executed.+--+-- 14) What are the changes compared to the previous NVX extension?+--+-- -   Compute dispatch support was removed (was never implemented in+--     drivers). There are different approaches how dispatching from the+--     device should work, hence we defer this to a future extension.+--+-- -   The @ObjectTableNVX@ was replaced by using physical buffer addresses+--     and introducing Shader Groups for the graphics pipeline.+--+-- -   Less state changes are possible overall, but the important+--     operations are still there (reduces complexity of implementation).+--+-- -   The API was redesigned so all inputs must be passed at both+--     preprocessing and execution time (this was implicit in NVX, now it+--     is explicit)+--+-- -   The reservation of intermediate command space is now mandatory and+--     explicit through a preprocess buffer.+--+-- -   The 'IndirectStateFlagBitsNV' were introduced+--+-- 15) When porting from other APIs, their indirect buffers may use+-- different enums, for example for index buffer types. How to solve this?+--+-- Added “pIndexTypeValues” to map custom @uint32_t@ values to+-- corresponding 'Vulkan.Core10.Enums.IndexType.IndexType'.+--+-- 16) Do we need more shader group state overrides?+--+-- The NVX version allowed all PSO states to be different, however as the+-- goal is not to replace all state setup, but focus on highly-frequent+-- state changes for drawing lots of objects, we reduced the amount of+-- state overrides. Especially VkPipelineLayout as well as VkRenderPass+-- configuration should be left static, the rest is still open for+-- discussion.+--+-- The current focus is just to allow VertexInput changes as well as+-- shaders, while all shader groups use the same shader stages.+--+-- Too much flexibility will increase the test coverage requirement as+-- well. However, further extensions could allow more dynamic state as+-- well.+--+-- 17) Do we need more detailed physical device feature queries\/enables?+--+-- An EXT version would need detailed implementor feedback to come up with+-- a good set of features. Please contact us if you are interested, we are+-- happy to make more features optional, or add further restrictions to+-- reduce the minimum feature set of an EXT.+--+-- 18) Is there an interaction with VK_KHR_pipeline_library planned?+--+-- Yes, a future version of this extension will detail the interaction,+-- once VK_KHR_pipeline_library is no longer provisional.+--+-- == Example Code+--+-- Open-Source samples illustrating the usage of the extension can be found+-- at the following location (may not yet exist at time of writing):+--+-- <https://github.com/nvpro-samples/vk_device_generated_cmds>+--+-- == Version History+--+-- -   Revision 1, 2020-02-20 (Christoph Kubisch)+--+--     -   Initial version+--+-- = See Also+--+-- 'BindIndexBufferIndirectCommandNV', 'BindShaderGroupIndirectCommandNV',+-- 'BindVertexBufferIndirectCommandNV', 'GeneratedCommandsInfoNV',+-- 'GeneratedCommandsMemoryRequirementsInfoNV',+-- 'GraphicsPipelineShaderGroupsCreateInfoNV',+-- 'GraphicsShaderGroupCreateInfoNV', 'IndirectCommandsLayoutCreateInfoNV',+-- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV',+-- 'IndirectCommandsLayoutTokenNV',+-- 'IndirectCommandsLayoutUsageFlagBitsNV',+-- 'IndirectCommandsLayoutUsageFlagsNV', 'IndirectCommandsStreamNV',+-- 'IndirectCommandsTokenTypeNV', 'IndirectStateFlagBitsNV',+-- 'IndirectStateFlagsNV',+-- 'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV',+-- 'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV',+-- 'SetStateFlagsIndirectCommandNV', 'cmdBindPipelineShaderGroupNV',+-- 'cmdExecuteGeneratedCommandsNV', 'cmdPreprocessGeneratedCommandsNV',+-- 'createIndirectCommandsLayoutNV', 'destroyIndirectCommandsLayoutNV',+-- 'getGeneratedCommandsMemoryRequirementsNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_device_generated_commands  ( cmdExecuteGeneratedCommandsNV                                                           , cmdPreprocessGeneratedCommandsNV                                                           , cmdBindPipelineShaderGroupNV@@ -19,16 +553,16 @@                                                           , IndirectCommandsLayoutCreateInfoNV(..)                                                           , GeneratedCommandsInfoNV(..)                                                           , GeneratedCommandsMemoryRequirementsInfoNV(..)+                                                          , IndirectCommandsLayoutUsageFlagsNV                                                           , IndirectCommandsLayoutUsageFlagBitsNV( INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV                                                                                                  , INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV                                                                                                  , INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV                                                                                                  , ..                                                                                                  )-                                                          , IndirectCommandsLayoutUsageFlagsNV+                                                          , IndirectStateFlagsNV                                                           , IndirectStateFlagBitsNV( INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV                                                                                    , ..                                                                                    )-                                                          , IndirectStateFlagsNV                                                           , IndirectCommandsTokenTypeNV( INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV                                                                                        , INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV                                                                                        , INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV@@ -46,6 +580,8 @@                                                           , IndirectCommandsLayoutNV(..)                                                           ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -59,16 +595,9 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import GHC.Show (showsPrec) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Data.Vector (generateM)@@ -90,8 +619,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)@@ -1008,10 +1537,10 @@ -- -- To ensure that 'destroyIndirectCommandsLayoutNV' is always called: pass -- 'Control.Exception.bracket' (or the allocate function from your--- favourite resource management library) as the first argument.--- To just extract the pair pass '(,)' as the first argument.+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument. ---withIndirectCommandsLayoutNV :: forall io r . MonadIO io => Device -> IndirectCommandsLayoutCreateInfoNV -> Maybe AllocationCallbacks -> (io (IndirectCommandsLayoutNV) -> ((IndirectCommandsLayoutNV) -> io ()) -> r) -> r+withIndirectCommandsLayoutNV :: forall io r . MonadIO io => Device -> IndirectCommandsLayoutCreateInfoNV -> Maybe AllocationCallbacks -> (io IndirectCommandsLayoutNV -> (IndirectCommandsLayoutNV -> io ()) -> r) -> r withIndirectCommandsLayoutNV device pCreateInfo pAllocator b =   b (createIndirectCommandsLayoutNV device pCreateInfo pAllocator)     (\(o0) -> destroyIndirectCommandsLayoutNV device o0 pAllocator)@@ -2484,7 +3013,7 @@     lift $ poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV)) (indirectCommandsLayout)     lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (streams)) :: Word32))     pPStreams' <- ContT $ allocaBytesAligned @IndirectCommandsStreamNV ((Data.Vector.length (streams)) * 16) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPStreams' `plusPtr` (16 * (i)) :: Ptr IndirectCommandsStreamNV) (e) . ($ ())) (streams)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPStreams' `plusPtr` (16 * (i)) :: Ptr IndirectCommandsStreamNV) (e)) (streams)     lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr IndirectCommandsStreamNV))) (pPStreams')     lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (sequencesCount)     lift $ poke ((p `plusPtr` 64 :: Ptr Buffer)) (preprocessBuffer)@@ -2504,7 +3033,7 @@     lift $ poke ((p `plusPtr` 24 :: Ptr Pipeline)) (zero)     lift $ poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV)) (zero)     pPStreams' <- ContT $ allocaBytesAligned @IndirectCommandsStreamNV ((Data.Vector.length (mempty)) * 16) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPStreams' `plusPtr` (16 * (i)) :: Ptr IndirectCommandsStreamNV) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPStreams' `plusPtr` (16 * (i)) :: Ptr IndirectCommandsStreamNV) (e)) (mempty)     lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr IndirectCommandsStreamNV))) (pPStreams')     lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)     lift $ poke ((p `plusPtr` 64 :: Ptr Buffer)) (zero)@@ -2655,6 +3184,8 @@            zero  +type IndirectCommandsLayoutUsageFlagsNV = IndirectCommandsLayoutUsageFlagBitsNV+ -- | VkIndirectCommandsLayoutUsageFlagBitsNV - Bitmask specifying allowed -- usage of an indirect commands layout --@@ -2674,33 +3205,42 @@ -- the input data for the sequences is not implicitly indexed from -- 0..sequencesUsed but a user provided 'Vulkan.Core10.Handles.Buffer' -- encoding the index is provided.-pattern INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = IndirectCommandsLayoutUsageFlagBitsNV 0x00000002+pattern INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV   = IndirectCommandsLayoutUsageFlagBitsNV 0x00000002 -- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV' specifies -- that the processing of sequences /can/ happen at an -- implementation-dependent order, which is not: guaranteed to be coherent -- using the same input data. pattern INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = IndirectCommandsLayoutUsageFlagBitsNV 0x00000004 -type IndirectCommandsLayoutUsageFlagsNV = IndirectCommandsLayoutUsageFlagBitsNV+conNameIndirectCommandsLayoutUsageFlagBitsNV :: String+conNameIndirectCommandsLayoutUsageFlagBitsNV = "IndirectCommandsLayoutUsageFlagBitsNV" +enumPrefixIndirectCommandsLayoutUsageFlagBitsNV :: String+enumPrefixIndirectCommandsLayoutUsageFlagBitsNV = "INDIRECT_COMMANDS_LAYOUT_USAGE_"++showTableIndirectCommandsLayoutUsageFlagBitsNV :: [(IndirectCommandsLayoutUsageFlagBitsNV, String)]+showTableIndirectCommandsLayoutUsageFlagBitsNV =+  [ (INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV, "EXPLICIT_PREPROCESS_BIT_NV")+  , (INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV  , "INDEXED_SEQUENCES_BIT_NV")+  , (INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV, "UNORDERED_SEQUENCES_BIT_NV")+  ]+ instance Show IndirectCommandsLayoutUsageFlagBitsNV where-  showsPrec p = \case-    INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV -> showString "INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV"-    INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV -> showString "INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV"-    INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV -> showString "INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV"-    IndirectCommandsLayoutUsageFlagBitsNV x -> showParen (p >= 11) (showString "IndirectCommandsLayoutUsageFlagBitsNV 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixIndirectCommandsLayoutUsageFlagBitsNV+                            showTableIndirectCommandsLayoutUsageFlagBitsNV+                            conNameIndirectCommandsLayoutUsageFlagBitsNV+                            (\(IndirectCommandsLayoutUsageFlagBitsNV x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read IndirectCommandsLayoutUsageFlagBitsNV where-  readPrec = parens (choose [("INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV", pure INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV)-                            , ("INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV", pure INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV)-                            , ("INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV", pure INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "IndirectCommandsLayoutUsageFlagBitsNV")-                       v <- step readPrec-                       pure (IndirectCommandsLayoutUsageFlagBitsNV v)))+  readPrec = enumReadPrec enumPrefixIndirectCommandsLayoutUsageFlagBitsNV+                          showTableIndirectCommandsLayoutUsageFlagBitsNV+                          conNameIndirectCommandsLayoutUsageFlagBitsNV+                          IndirectCommandsLayoutUsageFlagBitsNV  +type IndirectStateFlagsNV = IndirectStateFlagBitsNV+ -- | VkIndirectStateFlagBitsNV - Bitmask specifiying state that can be -- altered on the device --@@ -2715,20 +3255,27 @@ -- subsequent draw operations. pattern INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = IndirectStateFlagBitsNV 0x00000001 -type IndirectStateFlagsNV = IndirectStateFlagBitsNV+conNameIndirectStateFlagBitsNV :: String+conNameIndirectStateFlagBitsNV = "IndirectStateFlagBitsNV" +enumPrefixIndirectStateFlagBitsNV :: String+enumPrefixIndirectStateFlagBitsNV = "INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV"++showTableIndirectStateFlagBitsNV :: [(IndirectStateFlagBitsNV, String)]+showTableIndirectStateFlagBitsNV = [(INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV, "")]+ instance Show IndirectStateFlagBitsNV where-  showsPrec p = \case-    INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV -> showString "INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV"-    IndirectStateFlagBitsNV x -> showParen (p >= 11) (showString "IndirectStateFlagBitsNV 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixIndirectStateFlagBitsNV+                            showTableIndirectStateFlagBitsNV+                            conNameIndirectStateFlagBitsNV+                            (\(IndirectStateFlagBitsNV x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read IndirectStateFlagBitsNV where-  readPrec = parens (choose [("INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV", pure INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "IndirectStateFlagBitsNV")-                       v <- step readPrec-                       pure (IndirectStateFlagBitsNV v)))+  readPrec = enumReadPrec enumPrefixIndirectStateFlagBitsNV+                          showTableIndirectStateFlagBitsNV+                          conNameIndirectStateFlagBitsNV+                          IndirectStateFlagBitsNV   -- | VkIndirectCommandsTokenTypeNV - Enum specifying token commands@@ -2766,21 +3313,21 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV"-pattern INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = IndirectCommandsTokenTypeNV 0+pattern INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV  = IndirectCommandsTokenTypeNV 0 -- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV"-pattern INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = IndirectCommandsTokenTypeNV 1+pattern INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV   = IndirectCommandsTokenTypeNV 1 -- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV"-pattern INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = IndirectCommandsTokenTypeNV 2+pattern INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV  = IndirectCommandsTokenTypeNV 2 -- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV" pattern INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = IndirectCommandsTokenTypeNV 3 -- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV" pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = IndirectCommandsTokenTypeNV 4 -- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV"-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = IndirectCommandsTokenTypeNV 5+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV  = IndirectCommandsTokenTypeNV 5 -- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV"-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = IndirectCommandsTokenTypeNV 6+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV          = IndirectCommandsTokenTypeNV 6 -- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV"-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = IndirectCommandsTokenTypeNV 7+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV    = IndirectCommandsTokenTypeNV 7 {-# complete INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV,              INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV,              INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV,@@ -2790,32 +3337,36 @@              INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV,              INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV :: IndirectCommandsTokenTypeNV #-} +conNameIndirectCommandsTokenTypeNV :: String+conNameIndirectCommandsTokenTypeNV = "IndirectCommandsTokenTypeNV"++enumPrefixIndirectCommandsTokenTypeNV :: String+enumPrefixIndirectCommandsTokenTypeNV = "INDIRECT_COMMANDS_TOKEN_TYPE_"++showTableIndirectCommandsTokenTypeNV :: [(IndirectCommandsTokenTypeNV, String)]+showTableIndirectCommandsTokenTypeNV =+  [ (INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV , "SHADER_GROUP_NV")+  , (INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV  , "STATE_FLAGS_NV")+  , (INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV , "INDEX_BUFFER_NV")+  , (INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV, "VERTEX_BUFFER_NV")+  , (INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV, "PUSH_CONSTANT_NV")+  , (INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV , "DRAW_INDEXED_NV")+  , (INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV         , "DRAW_NV")+  , (INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV   , "DRAW_TASKS_NV")+  ]+ instance Show IndirectCommandsTokenTypeNV where-  showsPrec p = \case-    INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV"-    INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV"-    INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV"-    INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV"-    INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV"-    INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV"-    INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV"-    INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV"-    IndirectCommandsTokenTypeNV x -> showParen (p >= 11) (showString "IndirectCommandsTokenTypeNV " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixIndirectCommandsTokenTypeNV+                            showTableIndirectCommandsTokenTypeNV+                            conNameIndirectCommandsTokenTypeNV+                            (\(IndirectCommandsTokenTypeNV x) -> x)+                            (showsPrec 11)  instance Read IndirectCommandsTokenTypeNV where-  readPrec = parens (choose [("INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV)-                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV)-                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV)-                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV)-                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV)-                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV)-                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV)-                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "IndirectCommandsTokenTypeNV")-                       v <- step readPrec-                       pure (IndirectCommandsTokenTypeNV v)))+  readPrec = enumReadPrec enumPrefixIndirectCommandsTokenTypeNV+                          showTableIndirectCommandsTokenTypeNV+                          conNameIndirectCommandsTokenTypeNV+                          IndirectCommandsTokenTypeNV   type NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3
src/Vulkan/Extensions/VK_NV_device_generated_commands.hs-boot view
@@ -1,4 +1,538 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_device_generated_commands - device extension+--+-- == VK_NV_device_generated_commands+--+-- [__Name String__]+--     @VK_NV_device_generated_commands@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     278+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+-- [__Contact__]+--+--     -   Christoph Kubisch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_device_generated_commands:%20&body=@pixeljetstream%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-02-20+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires Vulkan 1.1+--+--     -   This extension requires @VK_EXT_buffer_device_address@ or+--         @VK_KHR_buffer_device_address@ or Vulkan 1.2 for the ability to+--         bind vertex and index buffers on the device.+--+--     -   This extension interacts with @VK_NV_mesh_shader@. If the latter+--         extension is not supported, remove the command token to initiate+--         mesh tasks drawing in this extension.+--+-- [__Contributors__]+--+--     -   Christoph Kubisch, NVIDIA+--+--     -   Pierre Boudier, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+--     -   Yuriy O’Donnell, Epic Games+--+--     -   Baldur Karlsson, Valve+--+--     -   Mathias Schott, NVIDIA+--+--     -   Tyson Smith, NVIDIA+--+--     -   Ingo Esser, NVIDIA+--+-- == Description+--+-- This extension allows the device to generate a number of critical+-- graphics commands for command buffers.+--+-- When rendering a large number of objects, the device can be leveraged to+-- implement a number of critical functions, like updating matrices, or+-- implementing occlusion culling, frustum culling, front to back sorting,+-- etc. Implementing those on the device does not require any special+-- extension, since an application is free to define its own data+-- structures, and just process them using shaders.+--+-- However, if the application desires to quickly kick off the rendering of+-- the final stream of objects, then unextended Vulkan forces the+-- application to read back the processed stream and issue graphics command+-- from the host. For very large scenes, the synchronization overhead and+-- cost to generate the command buffer can become the bottleneck. This+-- extension allows an application to generate a device side stream of+-- state changes and commands, and convert it efficiently into a command+-- buffer without having to read it back to the host.+--+-- Furthermore, it allows incremental changes to such command buffers by+-- manipulating only partial sections of a command stream — for example+-- pipeline bindings. Unextended Vulkan requires re-creation of entire+-- command buffers in such a scenario, or updates synchronized on the host.+--+-- The intended usage for this extension is for the application to:+--+-- -   create 'Vulkan.Core10.Handles.Buffer' objects and retrieve physical+--     addresses from them via+--     'Vulkan.Extensions.VK_EXT_buffer_device_address.getBufferDeviceAddressEXT'+--+-- -   create a graphics pipeline using+--     'GraphicsPipelineShaderGroupsCreateInfoNV' for the ability to change+--     shaders on the device.+--+-- -   create a 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV', which+--     lists the 'IndirectCommandsTokenTypeNV' it wants to dynamically+--     execute as an atomic command sequence. This step likely involves+--     some internal device code compilation, since the intent is for the+--     GPU to generate the command buffer in the pipeline.+--+-- -   fill the input stream buffers with the data for each of the inputs+--     it needs. Each input is an array that will be filled with+--     token-dependent data.+--+-- -   set up a preprocess 'Vulkan.Core10.Handles.Buffer' that uses memory+--     according to the information retrieved via+--     'getGeneratedCommandsMemoryRequirementsNV'.+--+-- -   optionally preprocess the generated content using+--     'cmdPreprocessGeneratedCommandsNV', for example on an asynchronous+--     compute queue, or for the purpose of re-using the data in multiple+--     executions.+--+-- -   call 'cmdExecuteGeneratedCommandsNV' to create and execute the+--     actual device commands for all sequences based on the inputs+--     provided.+--+-- For each draw in a sequence, the following can be specified:+--+-- -   a different shader group+--+-- -   a number of vertex buffer bindings+--+-- -   a different index buffer, with an optional dynamic offset and index+--     type+--+-- -   a number of different push constants+--+-- -   a flag that encodes the primitive winding+--+-- While the GPU can be faster than a CPU to generate the commands, it will+-- not happen asynchronously to the device, therefore the primary use-case+-- is generating “less” total work (occlusion culling, classification to+-- use specialized shaders, etc.).+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV'+--+-- == New Commands+--+-- -   'cmdBindPipelineShaderGroupNV'+--+-- -   'cmdExecuteGeneratedCommandsNV'+--+-- -   'cmdPreprocessGeneratedCommandsNV'+--+-- -   'createIndirectCommandsLayoutNV'+--+-- -   'destroyIndirectCommandsLayoutNV'+--+-- -   'getGeneratedCommandsMemoryRequirementsNV'+--+-- == New Structures+--+-- -   'BindIndexBufferIndirectCommandNV'+--+-- -   'BindShaderGroupIndirectCommandNV'+--+-- -   'BindVertexBufferIndirectCommandNV'+--+-- -   'GeneratedCommandsInfoNV'+--+-- -   'GeneratedCommandsMemoryRequirementsInfoNV'+--+-- -   'GraphicsShaderGroupCreateInfoNV'+--+-- -   'IndirectCommandsLayoutCreateInfoNV'+--+-- -   'IndirectCommandsLayoutTokenNV'+--+-- -   'IndirectCommandsStreamNV'+--+-- -   'SetStateFlagsIndirectCommandNV'+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'GraphicsPipelineShaderGroupsCreateInfoNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'+--+-- == New Enums+--+-- -   'IndirectCommandsLayoutUsageFlagBitsNV'+--+-- -   'IndirectCommandsTokenTypeNV'+--+-- -   'IndirectStateFlagBitsNV'+--+-- == New Bitmasks+--+-- -   'IndirectCommandsLayoutUsageFlagsNV'+--+-- -   'IndirectStateFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME'+--+-- -   'NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV'+--+-- == Issues+--+-- 1) How to name this extension ?+--+-- @VK_NV_device_generated_commands@+--+-- As usual, one of the hardest issues ;)+--+-- Alternatives: @VK_gpu_commands@, @VK_execute_commands@,+-- @VK_device_commands@, @VK_device_execute_commands@, @VK_device_execute@,+-- @VK_device_created_commands@, @VK_device_recorded_commands@,+-- @VK_device_generated_commands@ @VK_indirect_generated_commands@+--+-- 2) Should we use a serial stateful token stream or stateless sequence+-- descriptions?+--+-- Similarly to 'Vulkan.Core10.Handles.Pipeline', fixed layouts have the+-- most likelihood to be cross-vendor adoptable. They also benefit from+-- being processable in parallel. This is a different design choice+-- compared to the serial command stream generated through+-- @GL_NV_command_list@.+--+-- 3) How to name a sequence description?+--+-- @VkIndirectCommandsLayout@ as in the NVX extension predecessor.+--+-- Alternative: @VkGeneratedCommandsLayout@+--+-- 4) Do we want to provide @indirectCommands@ inputs with layout or at+-- @indirectCommands@ time?+--+-- Separate layout from data as Vulkan does. Provide full flexibility for+-- @indirectCommands@.+--+-- 5) Should the input be provided as SoA or AoS?+--+-- Both ways are desireable. AoS can provide portability to other APIs and+-- easier to setup, while SoA allows to update individual inputs in a+-- cache-efficient manner, when others remain static.+--+-- 6) How do we make developers aware of the memory requirements of+-- implementation-dependent data used for the generated commands?+--+-- Make the API explicit and introduce a @preprocess@+-- 'Vulkan.Core10.Handles.Buffer'. Developers have to allocate it using+-- 'getGeneratedCommandsMemoryRequirementsNV'.+--+-- In the NVX version the requirements were hidden implicitly as part of+-- the command buffer reservation process, however as the memory+-- requirements can be substantial, we want to give developers the ability+-- to budget the memory themselves. By lowering the @maxSequencesCount@ the+-- memory consumption can be reduced. Furthermore re-use of the memory is+-- possible, for example for doing explicit preprocessing and execution in+-- a ping-pong fashion.+--+-- The actual buffer size is implementation dependent and may be zero, i.e.+-- not always required.+--+-- When making use of Graphics Shader Groups, the programs should behave+-- similar with regards to vertex inputs, clipping and culling outputs of+-- the geometry stage, as well as sample shading behavior in fragment+-- shaders, to reduce the amount of the worst-case memory approximation.+--+-- 7) Should we allow additional per-sequence dynamic state changes?+--+-- Yes+--+-- Introduced a lightweight indirect state flag 'IndirectStateFlagBitsNV'.+-- So far only switching front face winding state is exposed. Especially in+-- CAD\/DCC mirrored transforms that require such changes are common, and+-- similar flexibility is given in the ray tracing instance description.+--+-- The flag could be extended further, for example to switch between+-- primitive-lists or -strips, or make other state modifications.+--+-- Furthermore, as new tokens can be added easily, future extension could+-- add the ability to change any+-- 'Vulkan.Core10.Enums.DynamicState.DynamicState'.+--+-- 8) How do we allow re-using already “generated” @indirectCommands@?+--+-- Expose a @preprocessBuffer@ to re-use implementation-dependencyFlags+-- data. Set the @isPreprocessed@ to true in+-- 'cmdExecuteGeneratedCommandsNV'.+--+-- 9) Under which conditions is 'cmdExecuteGeneratedCommandsNV' legal?+--+-- It behaves like a regular draw call command.+--+-- 10) Is 'cmdPreprocessGeneratedCommandsNV' copying the input data or+-- referencing it?+--+-- There are multiple implementations possible:+--+-- -   one could have some emulation code that parses the inputs, and+--     generates an output command buffer, therefore copying the inputs.+--+-- -   one could just reference the inputs, and have the processing done in+--     pipe at execution time.+--+-- If the data is mandated to be copied, then it puts a penalty on+-- implementation that could process the inputs directly in pipe. If the+-- data is “referenced”, then it allows both types of implementation.+--+-- The inputs are “referenced”, and /must/ not be modified after the call+-- to 'cmdExecuteGeneratedCommandsNV' has completed.+--+-- 11) Which buffer usage flags are required for the buffers referenced by+-- 'GeneratedCommandsInfoNV' ?+--+-- Reuse existing+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+--+-- -   'GeneratedCommandsInfoNV'::@preprocessBuffer@+--+-- -   'GeneratedCommandsInfoNV'::@sequencesCountBuffer@+--+-- -   'GeneratedCommandsInfoNV'::@sequencesIndexBuffer@+--+-- -   'IndirectCommandsStreamNV'::@buffer@+--+-- 12) In which pipeline stage does the device generated command expansion+-- happen?+--+-- 'cmdPreprocessGeneratedCommandsNV' is treated as if it occurs in a+-- separate logical pipeline from either graphics or compute, and that+-- pipeline only includes+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TOP_OF_PIPE_BIT',+-- a new stage+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV',+-- and+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT'.+-- This new stage has two corresponding new access types,+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'+-- and+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV',+-- used to synchronize reading the buffer inputs and writing the preprocess+-- memory output.+--+-- The generated output written in the preprocess buffer memory by+-- 'cmdExecuteGeneratedCommandsNV' is considered to be consumed by the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'+-- pipeline stage.+--+-- Thus, to synchronize from writing the input buffers to preprocessing via+-- 'cmdPreprocessGeneratedCommandsNV', use:+--+-- -   @dstStageMask@ =+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'+--+-- -   @dstAccessMask@ =+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'+--+-- To synchronize from 'cmdPreprocessGeneratedCommandsNV' to executing the+-- generated commands by 'cmdExecuteGeneratedCommandsNV', use:+--+-- -   @srcStageMask@ =+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'+--+-- -   @srcAccessMask@ =+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'+--+-- -   @dstStageMask@ =+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'+--+-- -   @dstAccessMask@ =+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_INDIRECT_COMMAND_READ_BIT'+--+-- When 'cmdExecuteGeneratedCommandsNV' is used with a @isPreprocessed@ of+-- 'Vulkan.Core10.FundamentalTypes.FALSE', the generated commands are+-- implicitly preprocessed, therefore one only needs to synchronize the+-- inputs via:+--+-- -   @dstStageMask@ =+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'+--+-- -   @dstAccessMask@ =+--     'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_INDIRECT_COMMAND_READ_BIT'+--+-- 13) What if most token data is “static”, but we frequently want to+-- render a subsection?+--+-- Added “sequencesIndexBuffer”. This allows to easier sort and filter what+-- should actually be executed.+--+-- 14) What are the changes compared to the previous NVX extension?+--+-- -   Compute dispatch support was removed (was never implemented in+--     drivers). There are different approaches how dispatching from the+--     device should work, hence we defer this to a future extension.+--+-- -   The @ObjectTableNVX@ was replaced by using physical buffer addresses+--     and introducing Shader Groups for the graphics pipeline.+--+-- -   Less state changes are possible overall, but the important+--     operations are still there (reduces complexity of implementation).+--+-- -   The API was redesigned so all inputs must be passed at both+--     preprocessing and execution time (this was implicit in NVX, now it+--     is explicit)+--+-- -   The reservation of intermediate command space is now mandatory and+--     explicit through a preprocess buffer.+--+-- -   The 'IndirectStateFlagBitsNV' were introduced+--+-- 15) When porting from other APIs, their indirect buffers may use+-- different enums, for example for index buffer types. How to solve this?+--+-- Added “pIndexTypeValues” to map custom @uint32_t@ values to+-- corresponding 'Vulkan.Core10.Enums.IndexType.IndexType'.+--+-- 16) Do we need more shader group state overrides?+--+-- The NVX version allowed all PSO states to be different, however as the+-- goal is not to replace all state setup, but focus on highly-frequent+-- state changes for drawing lots of objects, we reduced the amount of+-- state overrides. Especially VkPipelineLayout as well as VkRenderPass+-- configuration should be left static, the rest is still open for+-- discussion.+--+-- The current focus is just to allow VertexInput changes as well as+-- shaders, while all shader groups use the same shader stages.+--+-- Too much flexibility will increase the test coverage requirement as+-- well. However, further extensions could allow more dynamic state as+-- well.+--+-- 17) Do we need more detailed physical device feature queries\/enables?+--+-- An EXT version would need detailed implementor feedback to come up with+-- a good set of features. Please contact us if you are interested, we are+-- happy to make more features optional, or add further restrictions to+-- reduce the minimum feature set of an EXT.+--+-- 18) Is there an interaction with VK_KHR_pipeline_library planned?+--+-- Yes, a future version of this extension will detail the interaction,+-- once VK_KHR_pipeline_library is no longer provisional.+--+-- == Example Code+--+-- Open-Source samples illustrating the usage of the extension can be found+-- at the following location (may not yet exist at time of writing):+--+-- <https://github.com/nvpro-samples/vk_device_generated_cmds>+--+-- == Version History+--+-- -   Revision 1, 2020-02-20 (Christoph Kubisch)+--+--     -   Initial version+--+-- = See Also+--+-- 'BindIndexBufferIndirectCommandNV', 'BindShaderGroupIndirectCommandNV',+-- 'BindVertexBufferIndirectCommandNV', 'GeneratedCommandsInfoNV',+-- 'GeneratedCommandsMemoryRequirementsInfoNV',+-- 'GraphicsPipelineShaderGroupsCreateInfoNV',+-- 'GraphicsShaderGroupCreateInfoNV', 'IndirectCommandsLayoutCreateInfoNV',+-- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV',+-- 'IndirectCommandsLayoutTokenNV',+-- 'IndirectCommandsLayoutUsageFlagBitsNV',+-- 'IndirectCommandsLayoutUsageFlagsNV', 'IndirectCommandsStreamNV',+-- 'IndirectCommandsTokenTypeNV', 'IndirectStateFlagBitsNV',+-- 'IndirectStateFlagsNV',+-- 'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV',+-- 'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV',+-- 'SetStateFlagsIndirectCommandNV', 'cmdBindPipelineShaderGroupNV',+-- 'cmdExecuteGeneratedCommandsNV', 'cmdPreprocessGeneratedCommandsNV',+-- 'createIndirectCommandsLayoutNV', 'destroyIndirectCommandsLayoutNV',+-- 'getGeneratedCommandsMemoryRequirementsNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_device_generated_commands  ( BindIndexBufferIndirectCommandNV                                                           , BindShaderGroupIndirectCommandNV                                                           , BindVertexBufferIndirectCommandNV
src/Vulkan/Extensions/VK_NV_external_memory.hs view
@@ -1,4 +1,139 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_external_memory - device extension+--+-- == VK_NV_external_memory+--+-- [__Name String__]+--     @VK_NV_external_memory@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     57+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_NV_external_memory_capabilities@+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_KHR_external_memory@ extension+--+--         -   Which in turn was /promoted/ to+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_external_memory:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-08-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- Applications may wish to export memory to other Vulkan instances or+-- other APIs, or import memory from other Vulkan instances or other APIs+-- to enable Vulkan workloads to be split up across application module,+-- process, or API boundaries. This extension enables applications to+-- create exportable Vulkan memory objects such that the underlying+-- resources can be referenced outside the Vulkan instance that created+-- them.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo':+--+--     -   'ExternalMemoryImageCreateInfoNV'+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'ExportMemoryAllocateInfoNV'+--+-- == New Enum Constants+--+-- -   'NV_EXTERNAL_MEMORY_EXTENSION_NAME'+--+-- -   'NV_EXTERNAL_MEMORY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV'+--+-- == Issues+--+-- 1) If memory objects are shared between processes and APIs, is this+-- considered aliasing according to the rules outlined in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>+-- section?+--+-- __RESOLVED__: Yes, but strict exceptions to the rules are added to allow+-- some forms of aliasing in these cases. Further, other extensions may+-- build upon these new aliasing rules to define specific support usage+-- within Vulkan for imported native memory objects, or memory objects from+-- other APIs.+--+-- 2) Are new image layouts or metadata required to specify image layouts+-- and layout transitions compatible with non-Vulkan APIs, or with other+-- instances of the same Vulkan driver?+--+-- __RESOLVED__: No. Separate instances of the same Vulkan driver running+-- on the same GPU should have identical internal layout semantics, so+-- applictions have the tools they need to ensure views of images are+-- consistent between the two instances. Other APIs will fall into two+-- categories: Those that are Vulkan compatible (a term to be defined by+-- subsequent interopability extensions), or Vulkan incompatible. When+-- sharing images with Vulkan incompatible APIs, the Vulkan image must be+-- transitioned to the+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' layout before+-- handing it off to the external API.+--+-- Note this does not attempt to address cross-device transitions, nor+-- transitions to engines on the same device which are not visible within+-- the Vulkan API. Both of these are beyond the scope of this extension.+--+-- == Examples+--+-- >     // TODO: Write some sample code here.+--+-- == Version History+--+-- -   Revision 1, 2016-08-19 (James Jones)+--+--     -   Initial draft+--+-- = See Also+--+-- 'ExportMemoryAllocateInfoNV', 'ExternalMemoryImageCreateInfoNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_external_memory  ( ExternalMemoryImageCreateInfoNV(..)                                                 , ExportMemoryAllocateInfoNV(..)                                                 , NV_EXTERNAL_MEMORY_SPEC_VERSION
src/Vulkan/Extensions/VK_NV_external_memory.hs-boot view
@@ -1,4 +1,139 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_external_memory - device extension+--+-- == VK_NV_external_memory+--+-- [__Name String__]+--     @VK_NV_external_memory@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     57+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_NV_external_memory_capabilities@+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_KHR_external_memory@ extension+--+--         -   Which in turn was /promoted/ to+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_external_memory:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-08-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- Applications may wish to export memory to other Vulkan instances or+-- other APIs, or import memory from other Vulkan instances or other APIs+-- to enable Vulkan workloads to be split up across application module,+-- process, or API boundaries. This extension enables applications to+-- create exportable Vulkan memory objects such that the underlying+-- resources can be referenced outside the Vulkan instance that created+-- them.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo':+--+--     -   'ExternalMemoryImageCreateInfoNV'+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'ExportMemoryAllocateInfoNV'+--+-- == New Enum Constants+--+-- -   'NV_EXTERNAL_MEMORY_EXTENSION_NAME'+--+-- -   'NV_EXTERNAL_MEMORY_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV'+--+-- == Issues+--+-- 1) If memory objects are shared between processes and APIs, is this+-- considered aliasing according to the rules outlined in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>+-- section?+--+-- __RESOLVED__: Yes, but strict exceptions to the rules are added to allow+-- some forms of aliasing in these cases. Further, other extensions may+-- build upon these new aliasing rules to define specific support usage+-- within Vulkan for imported native memory objects, or memory objects from+-- other APIs.+--+-- 2) Are new image layouts or metadata required to specify image layouts+-- and layout transitions compatible with non-Vulkan APIs, or with other+-- instances of the same Vulkan driver?+--+-- __RESOLVED__: No. Separate instances of the same Vulkan driver running+-- on the same GPU should have identical internal layout semantics, so+-- applictions have the tools they need to ensure views of images are+-- consistent between the two instances. Other APIs will fall into two+-- categories: Those that are Vulkan compatible (a term to be defined by+-- subsequent interopability extensions), or Vulkan incompatible. When+-- sharing images with Vulkan incompatible APIs, the Vulkan image must be+-- transitioned to the+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' layout before+-- handing it off to the external API.+--+-- Note this does not attempt to address cross-device transitions, nor+-- transitions to engines on the same device which are not visible within+-- the Vulkan API. Both of these are beyond the scope of this extension.+--+-- == Examples+--+-- >     // TODO: Write some sample code here.+--+-- == Version History+--+-- -   Revision 1, 2016-08-19 (James Jones)+--+--     -   Initial draft+--+-- = See Also+--+-- 'ExportMemoryAllocateInfoNV', 'ExternalMemoryImageCreateInfoNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_external_memory  ( ExportMemoryAllocateInfoNV                                                 , ExternalMemoryImageCreateInfoNV                                                 ) where
src/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs view
@@ -1,25 +1,164 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_external_memory_capabilities - instance extension+--+-- == VK_NV_external_memory_capabilities+--+-- [__Name String__]+--     @VK_NV_external_memory_capabilities@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     56+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_KHR_external_memory_capabilities@ extension+--+--         -   Which in turn was /promoted/ to+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_external_memory_capabilities:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-08-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Interacts with Vulkan 1.1.+--+--     -   Interacts with @VK_KHR_dedicated_allocation@.+--+--     -   Interacts with @VK_NV_dedicated_allocation@.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+-- == Description+--+-- Applications may wish to import memory from the Direct 3D API, or export+-- memory to other Vulkan instances. This extension provides a set of+-- capability queries that allow applications determine what types of win32+-- memory handles an implementation supports for a given set of use cases.+--+-- == New Commands+--+-- -   'getPhysicalDeviceExternalImageFormatPropertiesNV'+--+-- == New Structures+--+-- -   'ExternalImageFormatPropertiesNV'+--+-- == New Enums+--+-- -   'ExternalMemoryFeatureFlagBitsNV'+--+-- -   'ExternalMemoryHandleTypeFlagBitsNV'+--+-- == New Bitmasks+--+-- -   'ExternalMemoryFeatureFlagsNV'+--+-- -   'ExternalMemoryHandleTypeFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME'+--+-- -   'NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION'+--+-- == Issues+--+-- 1) Why do so many external memory capabilities need to be queried on a+-- per-memory-handle-type basis?+--+-- __RESOLVED__: This is because some handle types are based on OS-native+-- objects that have far more limited capabilities than the very generic+-- Vulkan memory objects. Not all memory handle types can name memory+-- objects that support 3D images, for example. Some handle types cannot+-- even support the deferred image and memory binding behavior of Vulkan+-- and require specifying the image when allocating or importing the memory+-- object.+--+-- 2) Does the 'ExternalImageFormatPropertiesNV' struct need to include a+-- list of memory type bits that support the given handle type?+--+-- __RESOLVED__: No. The memory types that do not support the handle types+-- will simply be filtered out of the results returned by+-- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements' when a set+-- of handle types was specified at image creation time.+--+-- 3) Should the non-opaque handle types be moved to their own extension?+--+-- __RESOLVED__: Perhaps. However, defining the handle type bits does very+-- little and does not require any platform-specific types on its own, and+-- it is easier to maintain the bitmask values in a single extension for+-- now. Presumably more handle types could be added by separate extensions+-- though, and it would be midly weird to have some platform-specific ones+-- defined in the core spec and some in extensions+--+-- == Version History+--+-- -   Revision 1, 2016-08-19 (James Jones)+--+--     -   Initial version+--+-- = See Also+--+-- 'ExternalImageFormatPropertiesNV', 'ExternalMemoryFeatureFlagBitsNV',+-- 'ExternalMemoryFeatureFlagsNV', 'ExternalMemoryHandleTypeFlagBitsNV',+-- 'ExternalMemoryHandleTypeFlagsNV',+-- 'getPhysicalDeviceExternalImageFormatPropertiesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_capabilities Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_external_memory_capabilities  ( getPhysicalDeviceExternalImageFormatPropertiesNV                                                              , ExternalImageFormatPropertiesNV(..)+                                                             , ExternalMemoryHandleTypeFlagsNV                                                              , ExternalMemoryHandleTypeFlagBitsNV( EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV                                                                                                  , EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV                                                                                                  , EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV                                                                                                  , EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV                                                                                                  , ..                                                                                                  )-                                                             , ExternalMemoryHandleTypeFlagsNV+                                                             , ExternalMemoryFeatureFlagsNV                                                              , ExternalMemoryFeatureFlagBitsNV( EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV                                                                                               , EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV                                                                                               , EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV                                                                                               , ..                                                                                               )-                                                             , ExternalMemoryFeatureFlagsNV                                                              , NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION                                                              , pattern NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION                                                              , NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME                                                              , pattern NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME                                                              ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -27,15 +166,8 @@ import GHC.IO (throwIO) import GHC.Ptr (nullFunPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -46,13 +178,14 @@ import Foreign.Storable (Storable) import Foreign.Storable (Storable(peek)) import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..)) import GHC.Generics (Generic) import GHC.IO.Exception (IOErrorType(..)) import GHC.IO.Exception (IOException(..)) import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.NamedType ((:::))@@ -235,17 +368,17 @@  instance ToCStruct ExternalImageFormatPropertiesNV where   withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ExternalImageFormatPropertiesNV{..} f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageFormatProperties)) (imageFormatProperties) . ($ ())-    lift $ poke ((p `plusPtr` 32 :: Ptr ExternalMemoryFeatureFlagsNV)) (externalMemoryFeatures)-    lift $ poke ((p `plusPtr` 36 :: Ptr ExternalMemoryHandleTypeFlagsNV)) (exportFromImportedHandleTypes)-    lift $ poke ((p `plusPtr` 40 :: Ptr ExternalMemoryHandleTypeFlagsNV)) (compatibleHandleTypes)-    lift $ f+  pokeCStruct p ExternalImageFormatPropertiesNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr ImageFormatProperties)) (imageFormatProperties)+    poke ((p `plusPtr` 32 :: Ptr ExternalMemoryFeatureFlagsNV)) (externalMemoryFeatures)+    poke ((p `plusPtr` 36 :: Ptr ExternalMemoryHandleTypeFlagsNV)) (exportFromImportedHandleTypes)+    poke ((p `plusPtr` 40 :: Ptr ExternalMemoryHandleTypeFlagsNV)) (compatibleHandleTypes)+    f   cStructSize = 48   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageFormatProperties)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr ImageFormatProperties)) (zero)+    f  instance FromCStruct ExternalImageFormatPropertiesNV where   peekCStruct p = do@@ -256,6 +389,12 @@     pure $ ExternalImageFormatPropertiesNV              imageFormatProperties externalMemoryFeatures exportFromImportedHandleTypes compatibleHandleTypes +instance Storable ExternalImageFormatPropertiesNV where+  sizeOf ~_ = 48+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero ExternalImageFormatPropertiesNV where   zero = ExternalImageFormatPropertiesNV            zero@@ -264,6 +403,8 @@            zero  +type ExternalMemoryHandleTypeFlagsNV = ExternalMemoryHandleTypeFlagBitsNV+ -- | VkExternalMemoryHandleTypeFlagBitsNV - Bitmask specifying external -- memory handle types --@@ -277,7 +418,7 @@ -- memory returned by -- 'Vulkan.Extensions.VK_NV_external_memory_win32.getMemoryWin32HandleNV', -- or one duplicated from such a handle using @DuplicateHandle()@.-pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000001+pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV     = ExternalMemoryHandleTypeFlagBitsNV 0x00000001 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV' specifies a handle -- to memory returned by -- 'Vulkan.Extensions.VK_NV_external_memory_win32.getMemoryWin32HandleNV'.@@ -285,33 +426,41 @@ -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV' specifies a valid NT -- handle to memory returned by @IDXGIResource1::CreateSharedHandle@, or a -- handle duplicated from such a handle using @DuplicateHandle()@.-pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000004+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV      = ExternalMemoryHandleTypeFlagBitsNV 0x00000004 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV' specifies a handle -- to memory returned by @IDXGIResource::GetSharedHandle()@.-pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000008+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV  = ExternalMemoryHandleTypeFlagBitsNV 0x00000008 -type ExternalMemoryHandleTypeFlagsNV = ExternalMemoryHandleTypeFlagBitsNV+conNameExternalMemoryHandleTypeFlagBitsNV :: String+conNameExternalMemoryHandleTypeFlagBitsNV = "ExternalMemoryHandleTypeFlagBitsNV" +enumPrefixExternalMemoryHandleTypeFlagBitsNV :: String+enumPrefixExternalMemoryHandleTypeFlagBitsNV = "EXTERNAL_MEMORY_HANDLE_TYPE_"++showTableExternalMemoryHandleTypeFlagBitsNV :: [(ExternalMemoryHandleTypeFlagBitsNV, String)]+showTableExternalMemoryHandleTypeFlagBitsNV =+  [ (EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV    , "OPAQUE_WIN32_BIT_NV")+  , (EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV, "OPAQUE_WIN32_KMT_BIT_NV")+  , (EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV     , "D3D11_IMAGE_BIT_NV")+  , (EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV , "D3D11_IMAGE_KMT_BIT_NV")+  ]+ instance Show ExternalMemoryHandleTypeFlagBitsNV where-  showsPrec p = \case-    EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"-    EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"-    EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"-    EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"-    ExternalMemoryHandleTypeFlagBitsNV x -> showParen (p >= 11) (showString "ExternalMemoryHandleTypeFlagBitsNV 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixExternalMemoryHandleTypeFlagBitsNV+                            showTableExternalMemoryHandleTypeFlagBitsNV+                            conNameExternalMemoryHandleTypeFlagBitsNV+                            (\(ExternalMemoryHandleTypeFlagBitsNV x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ExternalMemoryHandleTypeFlagBitsNV where-  readPrec = parens (choose [("EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV", pure EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV)-                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV", pure EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV)-                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV", pure EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV)-                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV", pure EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "ExternalMemoryHandleTypeFlagBitsNV")-                       v <- step readPrec-                       pure (ExternalMemoryHandleTypeFlagBitsNV v)))+  readPrec = enumReadPrec enumPrefixExternalMemoryHandleTypeFlagBitsNV+                          showTableExternalMemoryHandleTypeFlagBitsNV+                          conNameExternalMemoryHandleTypeFlagBitsNV+                          ExternalMemoryHandleTypeFlagBitsNV  +type ExternalMemoryFeatureFlagsNV = ExternalMemoryFeatureFlagBitsNV+ -- | VkExternalMemoryFeatureFlagBitsNV - Bitmask specifying external memory -- features --@@ -328,29 +477,36 @@ pattern EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = ExternalMemoryFeatureFlagBitsNV 0x00000001 -- | 'EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV' specifies that the -- implementation supports exporting handles of the specified type.-pattern EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = ExternalMemoryFeatureFlagBitsNV 0x00000002+pattern EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV     = ExternalMemoryFeatureFlagBitsNV 0x00000002 -- | 'EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV' specifies that the -- implementation supports importing handles of the specified type.-pattern EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = ExternalMemoryFeatureFlagBitsNV 0x00000004+pattern EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV     = ExternalMemoryFeatureFlagBitsNV 0x00000004 -type ExternalMemoryFeatureFlagsNV = ExternalMemoryFeatureFlagBitsNV+conNameExternalMemoryFeatureFlagBitsNV :: String+conNameExternalMemoryFeatureFlagBitsNV = "ExternalMemoryFeatureFlagBitsNV" +enumPrefixExternalMemoryFeatureFlagBitsNV :: String+enumPrefixExternalMemoryFeatureFlagBitsNV = "EXTERNAL_MEMORY_FEATURE_"++showTableExternalMemoryFeatureFlagBitsNV :: [(ExternalMemoryFeatureFlagBitsNV, String)]+showTableExternalMemoryFeatureFlagBitsNV =+  [ (EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV, "DEDICATED_ONLY_BIT_NV")+  , (EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV    , "EXPORTABLE_BIT_NV")+  , (EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV    , "IMPORTABLE_BIT_NV")+  ]+ instance Show ExternalMemoryFeatureFlagBitsNV where-  showsPrec p = \case-    EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV -> showString "EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"-    EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV -> showString "EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"-    EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV -> showString "EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"-    ExternalMemoryFeatureFlagBitsNV x -> showParen (p >= 11) (showString "ExternalMemoryFeatureFlagBitsNV 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixExternalMemoryFeatureFlagBitsNV+                            showTableExternalMemoryFeatureFlagBitsNV+                            conNameExternalMemoryFeatureFlagBitsNV+                            (\(ExternalMemoryFeatureFlagBitsNV x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read ExternalMemoryFeatureFlagBitsNV where-  readPrec = parens (choose [("EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV", pure EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV)-                            , ("EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV", pure EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV)-                            , ("EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV", pure EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "ExternalMemoryFeatureFlagBitsNV")-                       v <- step readPrec-                       pure (ExternalMemoryFeatureFlagBitsNV v)))+  readPrec = enumReadPrec enumPrefixExternalMemoryFeatureFlagBitsNV+                          showTableExternalMemoryFeatureFlagBitsNV+                          conNameExternalMemoryFeatureFlagBitsNV+                          ExternalMemoryFeatureFlagBitsNV   type NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs-boot view
@@ -1,7 +1,144 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_external_memory_capabilities - instance extension+--+-- == VK_NV_external_memory_capabilities+--+-- [__Name String__]+--     @VK_NV_external_memory_capabilities@+--+-- [__Extension Type__]+--     Instance extension+--+-- [__Registered Extension Number__]+--     56+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_KHR_external_memory_capabilities@ extension+--+--         -   Which in turn was /promoted/ to+--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_external_memory_capabilities:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-08-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   Interacts with Vulkan 1.1.+--+--     -   Interacts with @VK_KHR_dedicated_allocation@.+--+--     -   Interacts with @VK_NV_dedicated_allocation@.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+-- == Description+--+-- Applications may wish to import memory from the Direct 3D API, or export+-- memory to other Vulkan instances. This extension provides a set of+-- capability queries that allow applications determine what types of win32+-- memory handles an implementation supports for a given set of use cases.+--+-- == New Commands+--+-- -   'getPhysicalDeviceExternalImageFormatPropertiesNV'+--+-- == New Structures+--+-- -   'ExternalImageFormatPropertiesNV'+--+-- == New Enums+--+-- -   'ExternalMemoryFeatureFlagBitsNV'+--+-- -   'ExternalMemoryHandleTypeFlagBitsNV'+--+-- == New Bitmasks+--+-- -   'ExternalMemoryFeatureFlagsNV'+--+-- -   'ExternalMemoryHandleTypeFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME'+--+-- -   'NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION'+--+-- == Issues+--+-- 1) Why do so many external memory capabilities need to be queried on a+-- per-memory-handle-type basis?+--+-- __RESOLVED__: This is because some handle types are based on OS-native+-- objects that have far more limited capabilities than the very generic+-- Vulkan memory objects. Not all memory handle types can name memory+-- objects that support 3D images, for example. Some handle types cannot+-- even support the deferred image and memory binding behavior of Vulkan+-- and require specifying the image when allocating or importing the memory+-- object.+--+-- 2) Does the 'ExternalImageFormatPropertiesNV' struct need to include a+-- list of memory type bits that support the given handle type?+--+-- __RESOLVED__: No. The memory types that do not support the handle types+-- will simply be filtered out of the results returned by+-- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements' when a set+-- of handle types was specified at image creation time.+--+-- 3) Should the non-opaque handle types be moved to their own extension?+--+-- __RESOLVED__: Perhaps. However, defining the handle type bits does very+-- little and does not require any platform-specific types on its own, and+-- it is easier to maintain the bitmask values in a single extension for+-- now. Presumably more handle types could be added by separate extensions+-- though, and it would be midly weird to have some platform-specific ones+-- defined in the core spec and some in extensions+--+-- == Version History+--+-- -   Revision 1, 2016-08-19 (James Jones)+--+--     -   Initial version+--+-- = See Also+--+-- 'ExternalImageFormatPropertiesNV', 'ExternalMemoryFeatureFlagBitsNV',+-- 'ExternalMemoryFeatureFlagsNV', 'ExternalMemoryHandleTypeFlagBitsNV',+-- 'ExternalMemoryHandleTypeFlagsNV',+-- 'getPhysicalDeviceExternalImageFormatPropertiesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_capabilities Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_external_memory_capabilities  ( ExternalImageFormatPropertiesNV-                                                             , ExternalMemoryHandleTypeFlagBitsNV                                                              , ExternalMemoryHandleTypeFlagsNV+                                                             , ExternalMemoryHandleTypeFlagBitsNV                                                              ) where  import Data.Kind (Type)@@ -15,7 +152,7 @@ instance FromCStruct ExternalImageFormatPropertiesNV  -data ExternalMemoryHandleTypeFlagBitsNV- type ExternalMemoryHandleTypeFlagsNV = ExternalMemoryHandleTypeFlagBitsNV++data ExternalMemoryHandleTypeFlagBitsNV 
src/Vulkan/Extensions/VK_NV_external_memory_win32.hs view
@@ -1,4 +1,280 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_external_memory_win32 - device extension+--+-- == VK_NV_external_memory_win32+--+-- [__Name String__]+--     @VK_NV_external_memory_win32@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     58+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_NV_external_memory@+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_KHR_external_memory_win32@ extension+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_external_memory_win32:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-08-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- Applications may wish to export memory to other Vulkan instances or+-- other APIs, or import memory from other Vulkan instances or other APIs+-- to enable Vulkan workloads to be split up across application module,+-- process, or API boundaries. This extension enables win32 applications to+-- export win32 handles from Vulkan memory objects such that the underlying+-- resources can be referenced outside the Vulkan instance that created+-- them, and import win32 handles created in the Direct3D API to Vulkan+-- memory objects.+--+-- == New Commands+--+-- -   'getMemoryWin32HandleNV'+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'ExportMemoryWin32HandleInfoNV'+--+--     -   'ImportMemoryWin32HandleInfoNV'+--+-- == New Enum Constants+--+-- -   'NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME'+--+-- -   'NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV'+--+-- == Issues+--+-- 1) If memory objects are shared between processes and APIs, is this+-- considered aliasing according to the rules outlined in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>+-- section?+--+-- __RESOLVED__: Yes, but strict exceptions to the rules are added to allow+-- some forms of aliasing in these cases. Further, other extensions may+-- build upon these new aliasing rules to define specific support usage+-- within Vulkan for imported native memory objects, or memory objects from+-- other APIs.+--+-- 2) Are new image layouts or metadata required to specify image layouts+-- and layout transitions compatible with non-Vulkan APIs, or with other+-- instances of the same Vulkan driver?+--+-- __RESOLVED__: No. Separate instances of the same Vulkan driver running+-- on the same GPU should have identical internal layout semantics, so+-- applictions have the tools they need to ensure views of images are+-- consistent between the two instances. Other APIs will fall into two+-- categories: Those that are Vulkan compatible (a term to be defined by+-- subsequent interopability extensions), or Vulkan incompatible. When+-- sharing images with Vulkan incompatible APIs, the Vulkan image must be+-- transitioned to the+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' layout before+-- handing it off to the external API.+--+-- Note this does not attempt to address cross-device transitions, nor+-- transitions to engines on the same device which are not visible within+-- the Vulkan API. Both of these are beyond the scope of this extension.+--+-- 3) Do applications need to call @CloseHandle@() on the values returned+-- from 'getMemoryWin32HandleNV' when @handleType@ is+-- 'Vulkan.Extensions.VK_NV_external_memory_capabilities.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV'?+--+-- __RESOLVED__: Yes, unless it is passed back in to another driver+-- instance to import the object. A successful get call transfers ownership+-- of the handle to the application, while an import transfers ownership to+-- the associated driver. Destroying the memory object will not destroy the+-- handle or the handle’s reference to the underlying memory resource.+--+-- == Examples+--+-- >     //+-- >     // Create an exportable memory object and export an external+-- >     // handle from it.+-- >     //+-- >+-- >     // Pick an external format and handle type.+-- >     static const VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;+-- >     static const VkExternalMemoryHandleTypeFlagsNV handleType =+-- >         VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV;+-- >+-- >     extern VkPhysicalDevice physicalDevice;+-- >     extern VkDevice device;+-- >+-- >     VkPhysicalDeviceMemoryProperties memoryProperties;+-- >     VkExternalImageFormatPropertiesNV properties;+-- >     VkExternalMemoryImageCreateInfoNV externalMemoryImageCreateInfo;+-- >     VkDedicatedAllocationImageCreateInfoNV dedicatedImageCreateInfo;+-- >     VkImageCreateInfo imageCreateInfo;+-- >     VkImage image;+-- >     VkMemoryRequirements imageMemoryRequirements;+-- >     uint32_t numMemoryTypes;+-- >     uint32_t memoryType;+-- >     VkExportMemoryAllocateInfoNV exportMemoryAllocateInfo;+-- >     VkDedicatedAllocationMemoryAllocateInfoNV dedicatedAllocationInfo;+-- >     VkMemoryAllocateInfo memoryAllocateInfo;+-- >     VkDeviceMemory memory;+-- >     VkResult result;+-- >     HANDLE memoryHnd;+-- >+-- >     // Figure out how many memory types the device supports+-- >     vkGetPhysicalDeviceMemoryProperties(physicalDevice,+-- >                                         &memoryProperties);+-- >     numMemoryTypes = memoryProperties.memoryTypeCount;+-- >+-- >     // Check the external handle type capabilities for the chosen format+-- >     // Exportable 2D image support with at least 1 mip level, 1 array+-- >     // layer, and VK_SAMPLE_COUNT_1_BIT using optimal tiling and supporting+-- >     // texturing and color rendering is required.+-- >     result = vkGetPhysicalDeviceExternalImageFormatPropertiesNV(+-- >         physicalDevice,+-- >         format,+-- >         VK_IMAGE_TYPE_2D,+-- >         VK_IMAGE_TILING_OPTIMAL,+-- >         VK_IMAGE_USAGE_SAMPLED_BIT |+-- >         VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,+-- >         0,+-- >         handleType,+-- >         &properties);+-- >+-- >     if ((result != VK_SUCCESS) ||+-- >         !(properties.externalMemoryFeatures &+-- >           VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV)) {+-- >         abort();+-- >     }+-- >+-- >     // Set up the external memory image creation info+-- >     memset(&externalMemoryImageCreateInfo,+-- >            0, sizeof(externalMemoryImageCreateInfo));+-- >     externalMemoryImageCreateInfo.sType =+-- >         VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV;+-- >     externalMemoryImageCreateInfo.handleTypes = handleType;+-- >     if (properties.externalMemoryFeatures &+-- >         VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV) {+-- >         memset(&dedicatedImageCreateInfo, 0, sizeof(dedicatedImageCreateInfo));+-- >         dedicatedImageCreateInfo.sType =+-- >             VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV;+-- >         dedicatedImageCreateInfo.dedicatedAllocation = VK_TRUE;+-- >         externalMemoryImageCreateInfo.pNext = &dedicatedImageCreateInfo;+-- >     }+-- >     // Set up the  core image creation info+-- >     memset(&imageCreateInfo, 0, sizeof(imageCreateInfo));+-- >     imageCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;+-- >     imageCreateInfo.pNext = &externalMemoryImageCreateInfo;+-- >     imageCreateInfo.format = format;+-- >     imageCreateInfo.extent.width = 64;+-- >     imageCreateInfo.extent.height = 64;+-- >     imageCreateInfo.extent.depth = 1;+-- >     imageCreateInfo.mipLevels = 1;+-- >     imageCreateInfo.arrayLayers = 1;+-- >     imageCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;+-- >     imageCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;+-- >     imageCreateInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT |+-- >         VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;+-- >     imageCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;+-- >     imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;+-- >+-- >     vkCreateImage(device, &imageCreateInfo, NULL, &image);+-- >+-- >     vkGetImageMemoryRequirements(device,+-- >                                  image,+-- >                                  &imageMemoryRequirements);+-- >+-- >     // For simplicity, just pick the first compatible memory type.+-- >     for (memoryType = 0; memoryType < numMemoryTypes; memoryType++) {+-- >         if ((1 << memoryType) & imageMemoryRequirements.memoryTypeBits) {+-- >             break;+-- >         }+-- >     }+-- >+-- >     // At least one memory type must be supported given the prior external+-- >     // handle capability check.+-- >     assert(memoryType < numMemoryTypes);+-- >+-- >     // Allocate the external memory object.+-- >     memset(&exportMemoryAllocateInfo, 0, sizeof(exportMemoryAllocateInfo));+-- >     exportMemoryAllocateInfo.sType =+-- >         VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV;+-- >     exportMemoryAllocateInfo.handleTypes = handleType;+-- >     if (properties.externalMemoryFeatures &+-- >         VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV) {+-- >         memset(&dedicatedAllocationInfo, 0, sizeof(dedicatedAllocationInfo));+-- >         dedicatedAllocationInfo.sType =+-- >             VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV;+-- >         dedicatedAllocationInfo.image = image;+-- >         exportMemoryAllocateInfo.pNext = &dedicatedAllocationInfo;+-- >     }+-- >     memset(&memoryAllocateInfo, 0, sizeof(memoryAllocateInfo));+-- >     memoryAllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;+-- >     memoryAllocateInfo.pNext = &exportMemoryAllocateInfo;+-- >     memoryAllocateInfo.allocationSize = imageMemoryRequirements.size;+-- >     memoryAllocateInfo.memoryTypeIndex = memoryType;+-- >+-- >     vkAllocateMemory(device, &memoryAllocateInfo, NULL, &memory);+-- >+-- >     if (!(properties.externalMemoryFeatures &+-- >           VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV)) {+-- >         vkBindImageMemory(device, image, memory, 0);+-- >     }+-- >+-- >     // Get the external memory opaque FD handle+-- >     vkGetMemoryWin32HandleNV(device, memory, &memoryHnd);+--+-- == Version History+--+-- -   Revision 1, 2016-08-11 (James Jones)+--+--     -   Initial draft+--+-- = See Also+--+-- 'ExportMemoryWin32HandleInfoNV', 'ImportMemoryWin32HandleInfoNV',+-- 'getMemoryWin32HandleNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_win32 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_external_memory_win32  ( getMemoryWin32HandleNV                                                       , ImportMemoryWin32HandleInfoNV(..)                                                       , ExportMemoryWin32HandleInfoNV(..)
src/Vulkan/Extensions/VK_NV_external_memory_win32.hs-boot view
@@ -1,4 +1,280 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_external_memory_win32 - device extension+--+-- == VK_NV_external_memory_win32+--+-- [__Name String__]+--     @VK_NV_external_memory_win32@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     58+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_NV_external_memory@+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ by @VK_KHR_external_memory_win32@ extension+--+-- [__Contact__]+--+--     -   James Jones+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_external_memory_win32:%20&body=@cubanismo%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-08-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- Applications may wish to export memory to other Vulkan instances or+-- other APIs, or import memory from other Vulkan instances or other APIs+-- to enable Vulkan workloads to be split up across application module,+-- process, or API boundaries. This extension enables win32 applications to+-- export win32 handles from Vulkan memory objects such that the underlying+-- resources can be referenced outside the Vulkan instance that created+-- them, and import win32 handles created in the Direct3D API to Vulkan+-- memory objects.+--+-- == New Commands+--+-- -   'getMemoryWin32HandleNV'+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':+--+--     -   'ExportMemoryWin32HandleInfoNV'+--+--     -   'ImportMemoryWin32HandleInfoNV'+--+-- == New Enum Constants+--+-- -   'NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME'+--+-- -   'NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV'+--+-- == Issues+--+-- 1) If memory objects are shared between processes and APIs, is this+-- considered aliasing according to the rules outlined in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>+-- section?+--+-- __RESOLVED__: Yes, but strict exceptions to the rules are added to allow+-- some forms of aliasing in these cases. Further, other extensions may+-- build upon these new aliasing rules to define specific support usage+-- within Vulkan for imported native memory objects, or memory objects from+-- other APIs.+--+-- 2) Are new image layouts or metadata required to specify image layouts+-- and layout transitions compatible with non-Vulkan APIs, or with other+-- instances of the same Vulkan driver?+--+-- __RESOLVED__: No. Separate instances of the same Vulkan driver running+-- on the same GPU should have identical internal layout semantics, so+-- applictions have the tools they need to ensure views of images are+-- consistent between the two instances. Other APIs will fall into two+-- categories: Those that are Vulkan compatible (a term to be defined by+-- subsequent interopability extensions), or Vulkan incompatible. When+-- sharing images with Vulkan incompatible APIs, the Vulkan image must be+-- transitioned to the+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' layout before+-- handing it off to the external API.+--+-- Note this does not attempt to address cross-device transitions, nor+-- transitions to engines on the same device which are not visible within+-- the Vulkan API. Both of these are beyond the scope of this extension.+--+-- 3) Do applications need to call @CloseHandle@() on the values returned+-- from 'getMemoryWin32HandleNV' when @handleType@ is+-- 'Vulkan.Extensions.VK_NV_external_memory_capabilities.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV'?+--+-- __RESOLVED__: Yes, unless it is passed back in to another driver+-- instance to import the object. A successful get call transfers ownership+-- of the handle to the application, while an import transfers ownership to+-- the associated driver. Destroying the memory object will not destroy the+-- handle or the handle’s reference to the underlying memory resource.+--+-- == Examples+--+-- >     //+-- >     // Create an exportable memory object and export an external+-- >     // handle from it.+-- >     //+-- >+-- >     // Pick an external format and handle type.+-- >     static const VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;+-- >     static const VkExternalMemoryHandleTypeFlagsNV handleType =+-- >         VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV;+-- >+-- >     extern VkPhysicalDevice physicalDevice;+-- >     extern VkDevice device;+-- >+-- >     VkPhysicalDeviceMemoryProperties memoryProperties;+-- >     VkExternalImageFormatPropertiesNV properties;+-- >     VkExternalMemoryImageCreateInfoNV externalMemoryImageCreateInfo;+-- >     VkDedicatedAllocationImageCreateInfoNV dedicatedImageCreateInfo;+-- >     VkImageCreateInfo imageCreateInfo;+-- >     VkImage image;+-- >     VkMemoryRequirements imageMemoryRequirements;+-- >     uint32_t numMemoryTypes;+-- >     uint32_t memoryType;+-- >     VkExportMemoryAllocateInfoNV exportMemoryAllocateInfo;+-- >     VkDedicatedAllocationMemoryAllocateInfoNV dedicatedAllocationInfo;+-- >     VkMemoryAllocateInfo memoryAllocateInfo;+-- >     VkDeviceMemory memory;+-- >     VkResult result;+-- >     HANDLE memoryHnd;+-- >+-- >     // Figure out how many memory types the device supports+-- >     vkGetPhysicalDeviceMemoryProperties(physicalDevice,+-- >                                         &memoryProperties);+-- >     numMemoryTypes = memoryProperties.memoryTypeCount;+-- >+-- >     // Check the external handle type capabilities for the chosen format+-- >     // Exportable 2D image support with at least 1 mip level, 1 array+-- >     // layer, and VK_SAMPLE_COUNT_1_BIT using optimal tiling and supporting+-- >     // texturing and color rendering is required.+-- >     result = vkGetPhysicalDeviceExternalImageFormatPropertiesNV(+-- >         physicalDevice,+-- >         format,+-- >         VK_IMAGE_TYPE_2D,+-- >         VK_IMAGE_TILING_OPTIMAL,+-- >         VK_IMAGE_USAGE_SAMPLED_BIT |+-- >         VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,+-- >         0,+-- >         handleType,+-- >         &properties);+-- >+-- >     if ((result != VK_SUCCESS) ||+-- >         !(properties.externalMemoryFeatures &+-- >           VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV)) {+-- >         abort();+-- >     }+-- >+-- >     // Set up the external memory image creation info+-- >     memset(&externalMemoryImageCreateInfo,+-- >            0, sizeof(externalMemoryImageCreateInfo));+-- >     externalMemoryImageCreateInfo.sType =+-- >         VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV;+-- >     externalMemoryImageCreateInfo.handleTypes = handleType;+-- >     if (properties.externalMemoryFeatures &+-- >         VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV) {+-- >         memset(&dedicatedImageCreateInfo, 0, sizeof(dedicatedImageCreateInfo));+-- >         dedicatedImageCreateInfo.sType =+-- >             VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV;+-- >         dedicatedImageCreateInfo.dedicatedAllocation = VK_TRUE;+-- >         externalMemoryImageCreateInfo.pNext = &dedicatedImageCreateInfo;+-- >     }+-- >     // Set up the  core image creation info+-- >     memset(&imageCreateInfo, 0, sizeof(imageCreateInfo));+-- >     imageCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;+-- >     imageCreateInfo.pNext = &externalMemoryImageCreateInfo;+-- >     imageCreateInfo.format = format;+-- >     imageCreateInfo.extent.width = 64;+-- >     imageCreateInfo.extent.height = 64;+-- >     imageCreateInfo.extent.depth = 1;+-- >     imageCreateInfo.mipLevels = 1;+-- >     imageCreateInfo.arrayLayers = 1;+-- >     imageCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;+-- >     imageCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;+-- >     imageCreateInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT |+-- >         VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;+-- >     imageCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;+-- >     imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;+-- >+-- >     vkCreateImage(device, &imageCreateInfo, NULL, &image);+-- >+-- >     vkGetImageMemoryRequirements(device,+-- >                                  image,+-- >                                  &imageMemoryRequirements);+-- >+-- >     // For simplicity, just pick the first compatible memory type.+-- >     for (memoryType = 0; memoryType < numMemoryTypes; memoryType++) {+-- >         if ((1 << memoryType) & imageMemoryRequirements.memoryTypeBits) {+-- >             break;+-- >         }+-- >     }+-- >+-- >     // At least one memory type must be supported given the prior external+-- >     // handle capability check.+-- >     assert(memoryType < numMemoryTypes);+-- >+-- >     // Allocate the external memory object.+-- >     memset(&exportMemoryAllocateInfo, 0, sizeof(exportMemoryAllocateInfo));+-- >     exportMemoryAllocateInfo.sType =+-- >         VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV;+-- >     exportMemoryAllocateInfo.handleTypes = handleType;+-- >     if (properties.externalMemoryFeatures &+-- >         VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV) {+-- >         memset(&dedicatedAllocationInfo, 0, sizeof(dedicatedAllocationInfo));+-- >         dedicatedAllocationInfo.sType =+-- >             VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV;+-- >         dedicatedAllocationInfo.image = image;+-- >         exportMemoryAllocateInfo.pNext = &dedicatedAllocationInfo;+-- >     }+-- >     memset(&memoryAllocateInfo, 0, sizeof(memoryAllocateInfo));+-- >     memoryAllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;+-- >     memoryAllocateInfo.pNext = &exportMemoryAllocateInfo;+-- >     memoryAllocateInfo.allocationSize = imageMemoryRequirements.size;+-- >     memoryAllocateInfo.memoryTypeIndex = memoryType;+-- >+-- >     vkAllocateMemory(device, &memoryAllocateInfo, NULL, &memory);+-- >+-- >     if (!(properties.externalMemoryFeatures &+-- >           VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV)) {+-- >         vkBindImageMemory(device, image, memory, 0);+-- >     }+-- >+-- >     // Get the external memory opaque FD handle+-- >     vkGetMemoryWin32HandleNV(device, memory, &memoryHnd);+--+-- == Version History+--+-- -   Revision 1, 2016-08-11 (James Jones)+--+--     -   Initial draft+--+-- = See Also+--+-- 'ExportMemoryWin32HandleInfoNV', 'ImportMemoryWin32HandleInfoNV',+-- 'getMemoryWin32HandleNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_win32 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_external_memory_win32  ( ExportMemoryWin32HandleInfoNV                                                       , ImportMemoryWin32HandleInfoNV                                                       , HANDLE
src/Vulkan/Extensions/VK_NV_fill_rectangle.hs view
@@ -1,4 +1,77 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_fill_rectangle - device extension+--+-- == VK_NV_fill_rectangle+--+-- [__Name String__]+--     @VK_NV_fill_rectangle@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     154+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_fill_rectangle:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-05-22+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension adds a new 'Vulkan.Core10.Enums.PolygonMode.PolygonMode'+-- @enum@ where a triangle is rasterized by computing and filling its+-- axis-aligned screen-space bounding box, disregarding the actual triangle+-- edges. This can be useful for drawing a rectangle without being split+-- into two triangles with an internal edge. It is also useful to minimize+-- the number of primitives that need to be drawn, particularly for a user+-- interface.+--+-- == New Enum Constants+--+-- -   'NV_FILL_RECTANGLE_EXTENSION_NAME'+--+-- -   'NV_FILL_RECTANGLE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.PolygonMode.PolygonMode':+--+--     -   'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV'+--+-- == Version History+--+-- -   Revision 1, 2017-05-22 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fill_rectangle Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_fill_rectangle  ( NV_FILL_RECTANGLE_SPEC_VERSION                                                , pattern NV_FILL_RECTANGLE_SPEC_VERSION                                                , NV_FILL_RECTANGLE_EXTENSION_NAME
src/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs view
@@ -1,4 +1,95 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_fragment_coverage_to_color - device extension+--+-- == VK_NV_fragment_coverage_to_color+--+-- [__Name String__]+--     @VK_NV_fragment_coverage_to_color@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     150+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_fragment_coverage_to_color:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-05-21+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension allows the fragment coverage value, represented as an+-- integer bitmask, to be substituted for a color output being written to a+-- single-component color attachment with integer components (e.g.+-- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT'). The functionality provided+-- by this extension is different from simply writing the+-- 'Vulkan.Core10.FundamentalTypes.SampleMask' fragment shader output, in+-- that the coverage value written to the framebuffer is taken after+-- stencil test and depth test, as well as after fragment operations such+-- as alpha-to-coverage.+--+-- This functionality may be useful for deferred rendering algorithms,+-- where the second pass needs to know which samples belong to which+-- original fragments.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':+--+--     -   'PipelineCoverageToColorStateCreateInfoNV'+--+-- == New Bitmasks+--+-- -   'PipelineCoverageToColorStateCreateFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME'+--+-- -   'NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV'+--+-- == Version History+--+-- -   Revision 1, 2017-05-21 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PipelineCoverageToColorStateCreateFlagsNV',+-- 'PipelineCoverageToColorStateCreateInfoNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_coverage_to_color Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_fragment_coverage_to_color  ( PipelineCoverageToColorStateCreateInfoNV(..)                                                            , PipelineCoverageToColorStateCreateFlagsNV(..)                                                            , NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION@@ -7,18 +98,13 @@                                                            , pattern NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME                                                            ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Data.Bits (FiniteBits) import Data.String (IsString)@@ -30,8 +116,8 @@ import GHC.Generics (Generic) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Vulkan.Core10.FundamentalTypes (bool32ToBool) import Vulkan.Core10.FundamentalTypes (boolToBool32)@@ -170,17 +256,27 @@   +conNamePipelineCoverageToColorStateCreateFlagsNV :: String+conNamePipelineCoverageToColorStateCreateFlagsNV = "PipelineCoverageToColorStateCreateFlagsNV"++enumPrefixPipelineCoverageToColorStateCreateFlagsNV :: String+enumPrefixPipelineCoverageToColorStateCreateFlagsNV = ""++showTablePipelineCoverageToColorStateCreateFlagsNV :: [(PipelineCoverageToColorStateCreateFlagsNV, String)]+showTablePipelineCoverageToColorStateCreateFlagsNV = []+ instance Show PipelineCoverageToColorStateCreateFlagsNV where-  showsPrec p = \case-    PipelineCoverageToColorStateCreateFlagsNV x -> showParen (p >= 11) (showString "PipelineCoverageToColorStateCreateFlagsNV 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineCoverageToColorStateCreateFlagsNV+                            showTablePipelineCoverageToColorStateCreateFlagsNV+                            conNamePipelineCoverageToColorStateCreateFlagsNV+                            (\(PipelineCoverageToColorStateCreateFlagsNV x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineCoverageToColorStateCreateFlagsNV where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineCoverageToColorStateCreateFlagsNV")-                       v <- step readPrec-                       pure (PipelineCoverageToColorStateCreateFlagsNV v)))+  readPrec = enumReadPrec enumPrefixPipelineCoverageToColorStateCreateFlagsNV+                          showTablePipelineCoverageToColorStateCreateFlagsNV+                          conNamePipelineCoverageToColorStateCreateFlagsNV+                          PipelineCoverageToColorStateCreateFlagsNV   type NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs-boot view
@@ -1,4 +1,95 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_fragment_coverage_to_color - device extension+--+-- == VK_NV_fragment_coverage_to_color+--+-- [__Name String__]+--     @VK_NV_fragment_coverage_to_color@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     150+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_fragment_coverage_to_color:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-05-21+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension allows the fragment coverage value, represented as an+-- integer bitmask, to be substituted for a color output being written to a+-- single-component color attachment with integer components (e.g.+-- 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT'). The functionality provided+-- by this extension is different from simply writing the+-- 'Vulkan.Core10.FundamentalTypes.SampleMask' fragment shader output, in+-- that the coverage value written to the framebuffer is taken after+-- stencil test and depth test, as well as after fragment operations such+-- as alpha-to-coverage.+--+-- This functionality may be useful for deferred rendering algorithms,+-- where the second pass needs to know which samples belong to which+-- original fragments.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':+--+--     -   'PipelineCoverageToColorStateCreateInfoNV'+--+-- == New Bitmasks+--+-- -   'PipelineCoverageToColorStateCreateFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME'+--+-- -   'NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV'+--+-- == Version History+--+-- -   Revision 1, 2017-05-21 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PipelineCoverageToColorStateCreateFlagsNV',+-- 'PipelineCoverageToColorStateCreateInfoNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_coverage_to_color Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_fragment_coverage_to_color  (PipelineCoverageToColorStateCreateInfoNV) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs view
@@ -1,4 +1,185 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_fragment_shader_barycentric - device extension+--+-- == VK_NV_fragment_shader_barycentric+--+-- [__Name String__]+--     @VK_NV_fragment_shader_barycentric@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     204+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Pat Brown+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_fragment_shader_barycentric:%20&body=@nvpbrown%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-08-03+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_fragment_shader_barycentric.html SPV_NV_fragment_shader_barycentric>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_fragment_shader_barycentric.txt GL_NV_fragment_shader_barycentric>+--+-- [__Contributors__]+--+--     -   Pat Brown, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_fragment_shader_barycentric.html SPV_NV_fragment_shader_barycentric>+--+-- The extension provides access to three additional fragment shader+-- variable decorations in SPIR-V:+--+-- -   @PerVertexNV@, which indicates that a fragment shader input will not+--     have interpolated values, but instead must be accessed with an extra+--     array index that identifies one of the vertices of the primitive+--     producing the fragment+--+-- -   @BaryCoordNV@, which indicates that the variable is a+--     three-component floating-point vector holding barycentric weights+--     for the fragment produced using perspective interpolation+--+-- -   @BaryCoordNoPerspNV@, which indicates that the variable is a+--     three-component floating-point vector holding barycentric weights+--     for the fragment produced using linear interpolation+--+-- When using GLSL source-based shader languages, the following variables+-- from @GL_NV_fragment_shader_barycentric@ maps to these SPIR-V built-in+-- decorations:+--+-- -   @in vec3 gl_BaryCoordNV;@ → @BaryCoordNV@+--+-- -   @in vec3 gl_BaryCoordNoPerspNV;@ → @BaryCoordNoPerspNV@+--+-- GLSL variables declared using the @__pervertexNV@ GLSL qualifier are+-- expected to be decorated with @PerVertexNV@ in SPIR-V.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceFragmentShaderBarycentricFeaturesNV'+--+-- == New Enum Constants+--+-- -   'NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME'+--+-- -   'NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV'+--+-- == New Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordnv BaryCoordNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordnoperspnv BaryCoordNoPerspNV>+--+-- == New SPIR-V Decorations+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-interpolation-decorations-pervertexnv PerVertexNV>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-fragment-barycentric FragmentBarycentricNV>+--+-- == Issues+--+-- (1) The AMD_shader_explicit_vertex_parameter extension provides similar+-- functionality. Why write a new extension, and how is this extension+-- different?+--+-- __RESOLVED__: For the purposes of Vulkan\/SPIR-V, we chose to implement+-- a separate extension due to several functional differences.+--+-- First, the hardware supporting this extension can provide a+-- three-component barycentric weight vector for variables decorated with+-- @BaryCoordNV@, while variables decorated with @BaryCoordSmoothAMD@+-- provide only two components. In some cases, it may be more efficient to+-- explicitly interpolate an attribute via:+--+-- > float value = (baryCoordNV.x * v[0].attrib ++-- >                baryCoordNV.y * v[1].attrib ++-- >                baryCoordNV.z * v[2].attrib);+--+-- instead of+--+-- > float value = (baryCoordSmoothAMD.x * (v[0].attrib - v[2].attrib) ++-- >                baryCoordSmoothAMD.y * (v[1].attrib - v[2].attrib) ++-- >                v[2].attrib);+--+-- Additionally, the semantics of the decoration @BaryCoordPullModelAMD@ do+-- not appear to map to anything supported by the initial hardware+-- implementation of this extension.+--+-- This extension provides a smaller number of decorations than the AMD+-- extension, as we expect that shaders could derive variables decorated+-- with things like @BaryCoordNoPerspCentroidAMD@ with explicit attribute+-- interpolation instructions. One other relevant difference is that+-- explicit per-vertex attribute access using this extension does not+-- require a constant vertex number.+--+-- (2) Why do the built-in SPIR-V decorations for this extension include+-- two separate built-ins @BaryCoordNV@ and @BaryCoordNoPerspNV@ when a “no+-- perspective” variable could be decorated with @BaryCoordNV@ and+-- @NoPerspective@?+--+-- __RESOLVED__: The SPIR-V extension for this feature chose to mirror the+-- behavior of the GLSL extension, which provides two built-in variables.+-- Additionally, it’s not clear that its a good idea (or even legal) to+-- have two variables using the “same attribute”, but with different+-- interpolation modifiers.+--+-- == Version History+--+-- -   Revision 1, 2018-08-03 (Pat Brown)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceFragmentShaderBarycentricFeaturesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_shader_barycentric Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_fragment_shader_barycentric  ( PhysicalDeviceFragmentShaderBarycentricFeaturesNV(..)                                                             , NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION                                                             , pattern NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION
src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs-boot view
@@ -1,4 +1,185 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_fragment_shader_barycentric - device extension+--+-- == VK_NV_fragment_shader_barycentric+--+-- [__Name String__]+--     @VK_NV_fragment_shader_barycentric@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     204+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Pat Brown+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_fragment_shader_barycentric:%20&body=@nvpbrown%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-08-03+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_fragment_shader_barycentric.html SPV_NV_fragment_shader_barycentric>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_fragment_shader_barycentric.txt GL_NV_fragment_shader_barycentric>+--+-- [__Contributors__]+--+--     -   Pat Brown, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_fragment_shader_barycentric.html SPV_NV_fragment_shader_barycentric>+--+-- The extension provides access to three additional fragment shader+-- variable decorations in SPIR-V:+--+-- -   @PerVertexNV@, which indicates that a fragment shader input will not+--     have interpolated values, but instead must be accessed with an extra+--     array index that identifies one of the vertices of the primitive+--     producing the fragment+--+-- -   @BaryCoordNV@, which indicates that the variable is a+--     three-component floating-point vector holding barycentric weights+--     for the fragment produced using perspective interpolation+--+-- -   @BaryCoordNoPerspNV@, which indicates that the variable is a+--     three-component floating-point vector holding barycentric weights+--     for the fragment produced using linear interpolation+--+-- When using GLSL source-based shader languages, the following variables+-- from @GL_NV_fragment_shader_barycentric@ maps to these SPIR-V built-in+-- decorations:+--+-- -   @in vec3 gl_BaryCoordNV;@ → @BaryCoordNV@+--+-- -   @in vec3 gl_BaryCoordNoPerspNV;@ → @BaryCoordNoPerspNV@+--+-- GLSL variables declared using the @__pervertexNV@ GLSL qualifier are+-- expected to be decorated with @PerVertexNV@ in SPIR-V.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceFragmentShaderBarycentricFeaturesNV'+--+-- == New Enum Constants+--+-- -   'NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME'+--+-- -   'NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV'+--+-- == New Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordnv BaryCoordNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordnoperspnv BaryCoordNoPerspNV>+--+-- == New SPIR-V Decorations+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-interpolation-decorations-pervertexnv PerVertexNV>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-fragment-barycentric FragmentBarycentricNV>+--+-- == Issues+--+-- (1) The AMD_shader_explicit_vertex_parameter extension provides similar+-- functionality. Why write a new extension, and how is this extension+-- different?+--+-- __RESOLVED__: For the purposes of Vulkan\/SPIR-V, we chose to implement+-- a separate extension due to several functional differences.+--+-- First, the hardware supporting this extension can provide a+-- three-component barycentric weight vector for variables decorated with+-- @BaryCoordNV@, while variables decorated with @BaryCoordSmoothAMD@+-- provide only two components. In some cases, it may be more efficient to+-- explicitly interpolate an attribute via:+--+-- > float value = (baryCoordNV.x * v[0].attrib ++-- >                baryCoordNV.y * v[1].attrib ++-- >                baryCoordNV.z * v[2].attrib);+--+-- instead of+--+-- > float value = (baryCoordSmoothAMD.x * (v[0].attrib - v[2].attrib) ++-- >                baryCoordSmoothAMD.y * (v[1].attrib - v[2].attrib) ++-- >                v[2].attrib);+--+-- Additionally, the semantics of the decoration @BaryCoordPullModelAMD@ do+-- not appear to map to anything supported by the initial hardware+-- implementation of this extension.+--+-- This extension provides a smaller number of decorations than the AMD+-- extension, as we expect that shaders could derive variables decorated+-- with things like @BaryCoordNoPerspCentroidAMD@ with explicit attribute+-- interpolation instructions. One other relevant difference is that+-- explicit per-vertex attribute access using this extension does not+-- require a constant vertex number.+--+-- (2) Why do the built-in SPIR-V decorations for this extension include+-- two separate built-ins @BaryCoordNV@ and @BaryCoordNoPerspNV@ when a “no+-- perspective” variable could be decorated with @BaryCoordNV@ and+-- @NoPerspective@?+--+-- __RESOLVED__: The SPIR-V extension for this feature chose to mirror the+-- behavior of the GLSL extension, which provides two built-in variables.+-- Additionally, it’s not clear that its a good idea (or even legal) to+-- have two variables using the “same attribute”, but with different+-- interpolation modifiers.+--+-- == Version History+--+-- -   Revision 1, 2018-08-03 (Pat Brown)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceFragmentShaderBarycentricFeaturesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_shader_barycentric Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_fragment_shader_barycentric  (PhysicalDeviceFragmentShaderBarycentricFeaturesNV) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs view
@@ -1,4 +1,178 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_fragment_shading_rate_enums - device extension+--+-- == VK_NV_fragment_shading_rate_enums+--+-- [__Name String__]+--     @VK_NV_fragment_shading_rate_enums@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     327+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_fragment_shading_rate@+--+-- [__Contact__]+--+--     -   Pat Brown+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_fragment_shading_rate_enums:%20&body=@nvpbrown%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-09-02+--+-- [__Contributors__]+--+--     -   Pat Brown, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension builds on the fragment shading rate functionality+-- provided by the VK_KHR_fragment_shading_rate extension, adding support+-- for \"supersample\" fragment shading rates that trigger multiple+-- fragment shader invocations per pixel as well as a \"no invocations\"+-- shading rate that discards any portions of a primitive that would use+-- that shading rate.+--+-- == New Commands+--+-- -   'cmdSetFragmentShadingRateEnumNV'+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'PipelineFragmentShadingRateEnumStateCreateInfoNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceFragmentShadingRateEnumsFeaturesNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceFragmentShadingRateEnumsPropertiesNV'+--+-- == New Enums+--+-- -   'FragmentShadingRateNV'+--+-- -   'FragmentShadingRateTypeNV'+--+-- == New Enum Constants+--+-- -   'NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME'+--+-- -   'NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV'+--+-- == Issues+--+-- 1.  Why was this extension created? How should it be named?+--+--     RESOLVED: The primary goal of this extension was to expose support+--     for supersample and \"no invocations\" shading rates, which are+--     supported by the VK_NV_shading_rate_image extension but not by+--     VK_KHR_fragment_shading_rate. Because VK_KHR_fragment_shading_rate+--     specifies the primitive shading rate using a fragment size in+--     pixels, it lacks a good way to specify supersample rates. To deal+--     with this, we defined enums covering shading rates supported by the+--     KHR extension as well as the new shading rates and added structures+--     and APIs accepting shading rate enums instead of fragment sizes.+--+--     Since this extension adds two different types of shading rates, both+--     expressed using enums, we chose the extension name+--     VK_NV_fragment_shading_rate_enums.+--+-- 2.  Is this a standalone extension?+--+--     RESOLVED: No, this extension requires VK_KHR_fragment_shading_rate.+--     In order to use the features of this extension, applications must+--     enable the relevant features of KHR extension.+--+-- 3.  How are the shading rate enums used, and how were the enum values+--     assigned?+--+--     RESOLVED: The shading rates supported by the enums in this extension+--     are accepted as pipeline, primitive, and attachment shading rates+--     and behave identically. For the shading rates also supported by the+--     KHR extension, the values assigned to the corresponding enums are+--     identical to the values already used for the primitive and+--     attachment shading rates in the KHR extension. For those enums, bits+--     0 and 1 specify the base two logarithm of the fragment height and+--     bits 2 and 3 specify the base two logarithm of the fragment width.+--     For the new shading rates added by this extension, we chose to use+--     11 through 14 (10 plus the base two logarithm of the invocation+--     count) for the supersample rates and 15 for the \"no invocations\"+--     rate. None of those values are supported as primitive or attachment+--     shading rates by the KHR extension.+--+-- 4.  Between this extension, VK_KHR_fragment_shading_rate, and+--     VK_NV_shading_rate_image, there are three different ways to specify+--     shading rate state in a pipeline. How should we handle this?+--+--     RESOLVED: We don’t allow the concurrent use of+--     VK_NV_shading_rate_image and VK_KHR_fragment_shading_rate; it is an+--     error to enable shading rate features from both extensions. But we+--     do allow applications to enable this extension together with+--     VK_KHR_fragment_shading_rate together. While we expect that+--     applications will never attach pipeline CreateInfo structures for+--     both this extension and the KHR extension concurrently, Vulkan+--     doesn’t have any precedent forbidding such behavior and instead+--     typically treats a pipeline created without an extension-specific+--     CreateInfo structure as equivalent to one containing default values+--     specified by the extension. Rather than adding such a rule+--     considering the presence or absence of our new CreateInfo structure,+--     we instead included a @shadingRateType@ member to+--     'PipelineFragmentShadingRateEnumStateCreateInfoNV' that selects+--     between using state specified by that structure and state specified+--     by+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'.+--+-- == Version History+--+-- -   Revision 1, 2020-09-02 (pbrown)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'FragmentShadingRateNV', 'FragmentShadingRateTypeNV',+-- 'PhysicalDeviceFragmentShadingRateEnumsFeaturesNV',+-- 'PhysicalDeviceFragmentShadingRateEnumsPropertiesNV',+-- 'PipelineFragmentShadingRateEnumStateCreateInfoNV',+-- 'cmdSetFragmentShadingRateEnumNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_shading_rate_enums Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_fragment_shading_rate_enums  ( cmdSetFragmentShadingRateEnumNV                                                             , PhysicalDeviceFragmentShadingRateEnumsFeaturesNV(..)                                                             , PhysicalDeviceFragmentShadingRateEnumsPropertiesNV(..)@@ -29,6 +203,8 @@                                                             ) where  import Vulkan.CStruct.Utils (FixedArray)+import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -36,15 +212,7 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Control.Monad.IO.Class (MonadIO)@@ -61,7 +229,7 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))+import GHC.Show (Show(showsPrec)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.CStruct.Utils (advancePtrBytes)@@ -533,7 +701,7 @@  -- | 'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV' specifies a fragment -- size of 1x1 pixels.-pattern FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV = FragmentShadingRateNV 0+pattern FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV      = FragmentShadingRateNV 0 -- | 'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV' specifies a -- fragment size of 1x2 pixels. pattern FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = FragmentShadingRateNV 1@@ -554,21 +722,21 @@ pattern FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV = FragmentShadingRateNV 10 -- | 'FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV' specifies a fragment -- size of 1x1 pixels, with two fragment shader invocations per fragment.-pattern FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV = FragmentShadingRateNV 11+pattern FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV     = FragmentShadingRateNV 11 -- | 'FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV' specifies a fragment -- size of 1x1 pixels, with four fragment shader invocations per fragment.-pattern FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV = FragmentShadingRateNV 12+pattern FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV     = FragmentShadingRateNV 12 -- | 'FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV' specifies a fragment -- size of 1x1 pixels, with eight fragment shader invocations per fragment.-pattern FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV = FragmentShadingRateNV 13+pattern FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV     = FragmentShadingRateNV 13 -- | 'FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV' specifies a fragment -- size of 1x1 pixels, with sixteen fragment shader invocations per -- fragment.-pattern FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV = FragmentShadingRateNV 14+pattern FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV    = FragmentShadingRateNV 14 -- | 'FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV' specifies that any portions of -- a primitive that use that shading rate should be discarded without -- invoking any fragment shader.-pattern FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV = FragmentShadingRateNV 15+pattern FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV              = FragmentShadingRateNV 15 {-# complete FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV,              FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV,              FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV,@@ -582,40 +750,40 @@              FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV,              FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV :: FragmentShadingRateNV #-} +conNameFragmentShadingRateNV :: String+conNameFragmentShadingRateNV = "FragmentShadingRateNV"++enumPrefixFragmentShadingRateNV :: String+enumPrefixFragmentShadingRateNV = "FRAGMENT_SHADING_RATE_"++showTableFragmentShadingRateNV :: [(FragmentShadingRateNV, String)]+showTableFragmentShadingRateNV =+  [ (FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV     , "1_INVOCATION_PER_PIXEL_NV")+  , (FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV, "1_INVOCATION_PER_1X2_PIXELS_NV")+  , (FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV, "1_INVOCATION_PER_2X1_PIXELS_NV")+  , (FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV, "1_INVOCATION_PER_2X2_PIXELS_NV")+  , (FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV, "1_INVOCATION_PER_2X4_PIXELS_NV")+  , (FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV, "1_INVOCATION_PER_4X2_PIXELS_NV")+  , (FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV, "1_INVOCATION_PER_4X4_PIXELS_NV")+  , (FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV    , "2_INVOCATIONS_PER_PIXEL_NV")+  , (FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV    , "4_INVOCATIONS_PER_PIXEL_NV")+  , (FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV    , "8_INVOCATIONS_PER_PIXEL_NV")+  , (FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV   , "16_INVOCATIONS_PER_PIXEL_NV")+  , (FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV             , "NO_INVOCATIONS_NV")+  ]+ instance Show FragmentShadingRateNV where-  showsPrec p = \case-    FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV -> showString "FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV"-    FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV -> showString "FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV"-    FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV -> showString "FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV"-    FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV -> showString "FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV"-    FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV -> showString "FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV"-    FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV -> showString "FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV"-    FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV -> showString "FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV"-    FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV -> showString "FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV"-    FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV -> showString "FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV"-    FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV -> showString "FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV"-    FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV -> showString "FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV"-    FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV -> showString "FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV"-    FragmentShadingRateNV x -> showParen (p >= 11) (showString "FragmentShadingRateNV " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixFragmentShadingRateNV+                            showTableFragmentShadingRateNV+                            conNameFragmentShadingRateNV+                            (\(FragmentShadingRateNV x) -> x)+                            (showsPrec 11)  instance Read FragmentShadingRateNV where-  readPrec = parens (choose [("FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV", pure FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV)-                            , ("FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV", pure FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV)-                            , ("FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV", pure FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV)-                            , ("FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV", pure FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV)-                            , ("FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV", pure FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV)-                            , ("FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV", pure FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV)-                            , ("FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV", pure FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV)-                            , ("FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV", pure FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV)-                            , ("FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV", pure FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV)-                            , ("FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV", pure FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV)-                            , ("FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV", pure FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV)-                            , ("FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV", pure FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "FragmentShadingRateNV")-                       v <- step readPrec-                       pure (FragmentShadingRateNV v)))+  readPrec = enumReadPrec enumPrefixFragmentShadingRateNV+                          showTableFragmentShadingRateNV+                          conNameFragmentShadingRateNV+                          FragmentShadingRateNV   -- | VkFragmentShadingRateTypeNV - Enumeration with fragment shading rate@@ -642,24 +810,32 @@ -- any state specified by the -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR' -- structure should be ignored.-pattern FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV = FragmentShadingRateTypeNV 1+pattern FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV         = FragmentShadingRateTypeNV 1 {-# complete FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV,              FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV :: FragmentShadingRateTypeNV #-} +conNameFragmentShadingRateTypeNV :: String+conNameFragmentShadingRateTypeNV = "FragmentShadingRateTypeNV"++enumPrefixFragmentShadingRateTypeNV :: String+enumPrefixFragmentShadingRateTypeNV = "FRAGMENT_SHADING_RATE_TYPE_"++showTableFragmentShadingRateTypeNV :: [(FragmentShadingRateTypeNV, String)]+showTableFragmentShadingRateTypeNV =+  [(FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV, "FRAGMENT_SIZE_NV"), (FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV, "ENUMS_NV")]+ instance Show FragmentShadingRateTypeNV where-  showsPrec p = \case-    FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV -> showString "FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV"-    FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV -> showString "FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV"-    FragmentShadingRateTypeNV x -> showParen (p >= 11) (showString "FragmentShadingRateTypeNV " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixFragmentShadingRateTypeNV+                            showTableFragmentShadingRateTypeNV+                            conNameFragmentShadingRateTypeNV+                            (\(FragmentShadingRateTypeNV x) -> x)+                            (showsPrec 11)  instance Read FragmentShadingRateTypeNV where-  readPrec = parens (choose [("FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV", pure FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV)-                            , ("FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV", pure FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "FragmentShadingRateTypeNV")-                       v <- step readPrec-                       pure (FragmentShadingRateTypeNV v)))+  readPrec = enumReadPrec enumPrefixFragmentShadingRateTypeNV+                          showTableFragmentShadingRateTypeNV+                          conNameFragmentShadingRateTypeNV+                          FragmentShadingRateTypeNV   type NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs-boot view
@@ -1,4 +1,178 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_fragment_shading_rate_enums - device extension+--+-- == VK_NV_fragment_shading_rate_enums+--+-- [__Name String__]+--     @VK_NV_fragment_shading_rate_enums@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     327+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_fragment_shading_rate@+--+-- [__Contact__]+--+--     -   Pat Brown+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_fragment_shading_rate_enums:%20&body=@nvpbrown%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-09-02+--+-- [__Contributors__]+--+--     -   Pat Brown, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension builds on the fragment shading rate functionality+-- provided by the VK_KHR_fragment_shading_rate extension, adding support+-- for \"supersample\" fragment shading rates that trigger multiple+-- fragment shader invocations per pixel as well as a \"no invocations\"+-- shading rate that discards any portions of a primitive that would use+-- that shading rate.+--+-- == New Commands+--+-- -   'cmdSetFragmentShadingRateEnumNV'+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'PipelineFragmentShadingRateEnumStateCreateInfoNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceFragmentShadingRateEnumsFeaturesNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceFragmentShadingRateEnumsPropertiesNV'+--+-- == New Enums+--+-- -   'FragmentShadingRateNV'+--+-- -   'FragmentShadingRateTypeNV'+--+-- == New Enum Constants+--+-- -   'NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME'+--+-- -   'NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV'+--+-- == Issues+--+-- 1.  Why was this extension created? How should it be named?+--+--     RESOLVED: The primary goal of this extension was to expose support+--     for supersample and \"no invocations\" shading rates, which are+--     supported by the VK_NV_shading_rate_image extension but not by+--     VK_KHR_fragment_shading_rate. Because VK_KHR_fragment_shading_rate+--     specifies the primitive shading rate using a fragment size in+--     pixels, it lacks a good way to specify supersample rates. To deal+--     with this, we defined enums covering shading rates supported by the+--     KHR extension as well as the new shading rates and added structures+--     and APIs accepting shading rate enums instead of fragment sizes.+--+--     Since this extension adds two different types of shading rates, both+--     expressed using enums, we chose the extension name+--     VK_NV_fragment_shading_rate_enums.+--+-- 2.  Is this a standalone extension?+--+--     RESOLVED: No, this extension requires VK_KHR_fragment_shading_rate.+--     In order to use the features of this extension, applications must+--     enable the relevant features of KHR extension.+--+-- 3.  How are the shading rate enums used, and how were the enum values+--     assigned?+--+--     RESOLVED: The shading rates supported by the enums in this extension+--     are accepted as pipeline, primitive, and attachment shading rates+--     and behave identically. For the shading rates also supported by the+--     KHR extension, the values assigned to the corresponding enums are+--     identical to the values already used for the primitive and+--     attachment shading rates in the KHR extension. For those enums, bits+--     0 and 1 specify the base two logarithm of the fragment height and+--     bits 2 and 3 specify the base two logarithm of the fragment width.+--     For the new shading rates added by this extension, we chose to use+--     11 through 14 (10 plus the base two logarithm of the invocation+--     count) for the supersample rates and 15 for the \"no invocations\"+--     rate. None of those values are supported as primitive or attachment+--     shading rates by the KHR extension.+--+-- 4.  Between this extension, VK_KHR_fragment_shading_rate, and+--     VK_NV_shading_rate_image, there are three different ways to specify+--     shading rate state in a pipeline. How should we handle this?+--+--     RESOLVED: We don’t allow the concurrent use of+--     VK_NV_shading_rate_image and VK_KHR_fragment_shading_rate; it is an+--     error to enable shading rate features from both extensions. But we+--     do allow applications to enable this extension together with+--     VK_KHR_fragment_shading_rate together. While we expect that+--     applications will never attach pipeline CreateInfo structures for+--     both this extension and the KHR extension concurrently, Vulkan+--     doesn’t have any precedent forbidding such behavior and instead+--     typically treats a pipeline created without an extension-specific+--     CreateInfo structure as equivalent to one containing default values+--     specified by the extension. Rather than adding such a rule+--     considering the presence or absence of our new CreateInfo structure,+--     we instead included a @shadingRateType@ member to+--     'PipelineFragmentShadingRateEnumStateCreateInfoNV' that selects+--     between using state specified by that structure and state specified+--     by+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'.+--+-- == Version History+--+-- -   Revision 1, 2020-09-02 (pbrown)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'FragmentShadingRateNV', 'FragmentShadingRateTypeNV',+-- 'PhysicalDeviceFragmentShadingRateEnumsFeaturesNV',+-- 'PhysicalDeviceFragmentShadingRateEnumsPropertiesNV',+-- 'PipelineFragmentShadingRateEnumStateCreateInfoNV',+-- 'cmdSetFragmentShadingRateEnumNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_shading_rate_enums Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_fragment_shading_rate_enums  ( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV                                                             , PhysicalDeviceFragmentShadingRateEnumsPropertiesNV                                                             , PipelineFragmentShadingRateEnumStateCreateInfoNV
src/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs view
@@ -1,4 +1,125 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_framebuffer_mixed_samples - device extension+--+-- == VK_NV_framebuffer_mixed_samples+--+-- [__Name String__]+--     @VK_NV_framebuffer_mixed_samples@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     153+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_framebuffer_mixed_samples:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-06-04+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension allows multisample rendering with a raster and+-- depth\/stencil sample count that is larger than the color sample count.+-- Rasterization and the results of the depth and stencil tests together+-- determine the portion of a pixel that is “covered”. It can be useful to+-- evaluate coverage at a higher frequency than color samples are stored.+-- This coverage is then “reduced” to a collection of covered color+-- samples, each having an opacity value corresponding to the fraction of+-- the color sample covered. The opacity can optionally be blended into+-- individual color samples.+--+-- Rendering with fewer color samples than depth\/stencil samples greatly+-- reduces the amount of memory and bandwidth consumed by the color buffer.+-- However, converting the coverage values into opacity introduces+-- artifacts where triangles share edges and /may/ not be suitable for+-- normal triangle mesh rendering.+--+-- One expected use case for this functionality is Stencil-then-Cover path+-- rendering (similar to the OpenGL GL_NV_path_rendering extension). The+-- stencil step determines the coverage (in the stencil buffer) for an+-- entire path at the higher sample frequency, and then the cover step+-- draws the path into the lower frequency color buffer using the coverage+-- information to antialias path edges. With this two-step process,+-- internal edges are fully covered when antialiasing is applied and there+-- is no corruption on these edges.+--+-- The key features of this extension are:+--+-- -   It allows render pass and framebuffer objects to be created where+--     the number of samples in the depth\/stencil attachment in a subpass+--     is a multiple of the number of samples in the color attachments in+--     the subpass.+--+-- -   A coverage reduction step is added to Fragment Operations which+--     converts a set of covered raster\/depth\/stencil samples to a set of+--     color samples that perform blending and color writes. The coverage+--     reduction step also includes an optional coverage modulation step,+--     multiplying color values by a fractional opacity corresponding to+--     the number of associated raster\/depth\/stencil samples covered.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':+--+--     -   'PipelineCoverageModulationStateCreateInfoNV'+--+-- == New Enums+--+-- -   'CoverageModulationModeNV'+--+-- == New Bitmasks+--+-- -   'PipelineCoverageModulationStateCreateFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME'+--+-- -   'NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV'+--+-- == Version History+--+-- -   Revision 1, 2017-06-04 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'CoverageModulationModeNV',+-- 'PipelineCoverageModulationStateCreateFlagsNV',+-- 'PipelineCoverageModulationStateCreateInfoNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_framebuffer_mixed_samples  ( PipelineCoverageModulationStateCreateInfoNV(..)                                                           , PipelineCoverageModulationStateCreateFlagsNV(..)                                                           , CoverageModulationModeNV( COVERAGE_MODULATION_MODE_NONE_NV@@ -13,21 +134,16 @@                                                           , pattern NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME                                                           ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Monad (unless) import Foreign.Marshal.Alloc (allocaBytesAligned) import GHC.IO (throwIO) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import GHC.Show (showsPrec) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Data.Vector (generateM)@@ -49,8 +165,8 @@ import Data.Int (Int32) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)@@ -237,17 +353,27 @@   +conNamePipelineCoverageModulationStateCreateFlagsNV :: String+conNamePipelineCoverageModulationStateCreateFlagsNV = "PipelineCoverageModulationStateCreateFlagsNV"++enumPrefixPipelineCoverageModulationStateCreateFlagsNV :: String+enumPrefixPipelineCoverageModulationStateCreateFlagsNV = ""++showTablePipelineCoverageModulationStateCreateFlagsNV :: [(PipelineCoverageModulationStateCreateFlagsNV, String)]+showTablePipelineCoverageModulationStateCreateFlagsNV = []+ instance Show PipelineCoverageModulationStateCreateFlagsNV where-  showsPrec p = \case-    PipelineCoverageModulationStateCreateFlagsNV x -> showParen (p >= 11) (showString "PipelineCoverageModulationStateCreateFlagsNV 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineCoverageModulationStateCreateFlagsNV+                            showTablePipelineCoverageModulationStateCreateFlagsNV+                            conNamePipelineCoverageModulationStateCreateFlagsNV+                            (\(PipelineCoverageModulationStateCreateFlagsNV x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineCoverageModulationStateCreateFlagsNV where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineCoverageModulationStateCreateFlagsNV")-                       v <- step readPrec-                       pure (PipelineCoverageModulationStateCreateFlagsNV v)))+  readPrec = enumReadPrec enumPrefixPipelineCoverageModulationStateCreateFlagsNV+                          showTablePipelineCoverageModulationStateCreateFlagsNV+                          conNamePipelineCoverageModulationStateCreateFlagsNV+                          PipelineCoverageModulationStateCreateFlagsNV   -- | VkCoverageModulationModeNV - Specify the coverage modulation mode@@ -260,39 +386,47 @@  -- | 'COVERAGE_MODULATION_MODE_NONE_NV' specifies that no components are -- multiplied by the modulation factor.-pattern COVERAGE_MODULATION_MODE_NONE_NV = CoverageModulationModeNV 0+pattern COVERAGE_MODULATION_MODE_NONE_NV  = CoverageModulationModeNV 0 -- | 'COVERAGE_MODULATION_MODE_RGB_NV' specifies that the red, green, and -- blue components are multiplied by the modulation factor.-pattern COVERAGE_MODULATION_MODE_RGB_NV = CoverageModulationModeNV 1+pattern COVERAGE_MODULATION_MODE_RGB_NV   = CoverageModulationModeNV 1 -- | 'COVERAGE_MODULATION_MODE_ALPHA_NV' specifies that the alpha component -- is multiplied by the modulation factor. pattern COVERAGE_MODULATION_MODE_ALPHA_NV = CoverageModulationModeNV 2 -- | 'COVERAGE_MODULATION_MODE_RGBA_NV' specifies that all components are -- multiplied by the modulation factor.-pattern COVERAGE_MODULATION_MODE_RGBA_NV = CoverageModulationModeNV 3+pattern COVERAGE_MODULATION_MODE_RGBA_NV  = CoverageModulationModeNV 3 {-# complete COVERAGE_MODULATION_MODE_NONE_NV,              COVERAGE_MODULATION_MODE_RGB_NV,              COVERAGE_MODULATION_MODE_ALPHA_NV,              COVERAGE_MODULATION_MODE_RGBA_NV :: CoverageModulationModeNV #-} +conNameCoverageModulationModeNV :: String+conNameCoverageModulationModeNV = "CoverageModulationModeNV"++enumPrefixCoverageModulationModeNV :: String+enumPrefixCoverageModulationModeNV = "COVERAGE_MODULATION_MODE_"++showTableCoverageModulationModeNV :: [(CoverageModulationModeNV, String)]+showTableCoverageModulationModeNV =+  [ (COVERAGE_MODULATION_MODE_NONE_NV , "NONE_NV")+  , (COVERAGE_MODULATION_MODE_RGB_NV  , "RGB_NV")+  , (COVERAGE_MODULATION_MODE_ALPHA_NV, "ALPHA_NV")+  , (COVERAGE_MODULATION_MODE_RGBA_NV , "RGBA_NV")+  ]+ instance Show CoverageModulationModeNV where-  showsPrec p = \case-    COVERAGE_MODULATION_MODE_NONE_NV -> showString "COVERAGE_MODULATION_MODE_NONE_NV"-    COVERAGE_MODULATION_MODE_RGB_NV -> showString "COVERAGE_MODULATION_MODE_RGB_NV"-    COVERAGE_MODULATION_MODE_ALPHA_NV -> showString "COVERAGE_MODULATION_MODE_ALPHA_NV"-    COVERAGE_MODULATION_MODE_RGBA_NV -> showString "COVERAGE_MODULATION_MODE_RGBA_NV"-    CoverageModulationModeNV x -> showParen (p >= 11) (showString "CoverageModulationModeNV " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixCoverageModulationModeNV+                            showTableCoverageModulationModeNV+                            conNameCoverageModulationModeNV+                            (\(CoverageModulationModeNV x) -> x)+                            (showsPrec 11)  instance Read CoverageModulationModeNV where-  readPrec = parens (choose [("COVERAGE_MODULATION_MODE_NONE_NV", pure COVERAGE_MODULATION_MODE_NONE_NV)-                            , ("COVERAGE_MODULATION_MODE_RGB_NV", pure COVERAGE_MODULATION_MODE_RGB_NV)-                            , ("COVERAGE_MODULATION_MODE_ALPHA_NV", pure COVERAGE_MODULATION_MODE_ALPHA_NV)-                            , ("COVERAGE_MODULATION_MODE_RGBA_NV", pure COVERAGE_MODULATION_MODE_RGBA_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "CoverageModulationModeNV")-                       v <- step readPrec-                       pure (CoverageModulationModeNV v)))+  readPrec = enumReadPrec enumPrefixCoverageModulationModeNV+                          showTableCoverageModulationModeNV+                          conNameCoverageModulationModeNV+                          CoverageModulationModeNV   type NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs-boot view
@@ -1,4 +1,125 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_framebuffer_mixed_samples - device extension+--+-- == VK_NV_framebuffer_mixed_samples+--+-- [__Name String__]+--     @VK_NV_framebuffer_mixed_samples@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     153+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_framebuffer_mixed_samples:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-06-04+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension allows multisample rendering with a raster and+-- depth\/stencil sample count that is larger than the color sample count.+-- Rasterization and the results of the depth and stencil tests together+-- determine the portion of a pixel that is “covered”. It can be useful to+-- evaluate coverage at a higher frequency than color samples are stored.+-- This coverage is then “reduced” to a collection of covered color+-- samples, each having an opacity value corresponding to the fraction of+-- the color sample covered. The opacity can optionally be blended into+-- individual color samples.+--+-- Rendering with fewer color samples than depth\/stencil samples greatly+-- reduces the amount of memory and bandwidth consumed by the color buffer.+-- However, converting the coverage values into opacity introduces+-- artifacts where triangles share edges and /may/ not be suitable for+-- normal triangle mesh rendering.+--+-- One expected use case for this functionality is Stencil-then-Cover path+-- rendering (similar to the OpenGL GL_NV_path_rendering extension). The+-- stencil step determines the coverage (in the stencil buffer) for an+-- entire path at the higher sample frequency, and then the cover step+-- draws the path into the lower frequency color buffer using the coverage+-- information to antialias path edges. With this two-step process,+-- internal edges are fully covered when antialiasing is applied and there+-- is no corruption on these edges.+--+-- The key features of this extension are:+--+-- -   It allows render pass and framebuffer objects to be created where+--     the number of samples in the depth\/stencil attachment in a subpass+--     is a multiple of the number of samples in the color attachments in+--     the subpass.+--+-- -   A coverage reduction step is added to Fragment Operations which+--     converts a set of covered raster\/depth\/stencil samples to a set of+--     color samples that perform blending and color writes. The coverage+--     reduction step also includes an optional coverage modulation step,+--     multiplying color values by a fractional opacity corresponding to+--     the number of associated raster\/depth\/stencil samples covered.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo':+--+--     -   'PipelineCoverageModulationStateCreateInfoNV'+--+-- == New Enums+--+-- -   'CoverageModulationModeNV'+--+-- == New Bitmasks+--+-- -   'PipelineCoverageModulationStateCreateFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME'+--+-- -   'NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV'+--+-- == Version History+--+-- -   Revision 1, 2017-06-04 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'CoverageModulationModeNV',+-- 'PipelineCoverageModulationStateCreateFlagsNV',+-- 'PipelineCoverageModulationStateCreateInfoNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_framebuffer_mixed_samples  (PipelineCoverageModulationStateCreateInfoNV) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_NV_geometry_shader_passthrough.hs view
@@ -1,4 +1,210 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_geometry_shader_passthrough - device extension+--+-- == VK_NV_geometry_shader_passthrough+--+-- [__Name String__]+--     @VK_NV_geometry_shader_passthrough@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     96+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_geometry_shader_passthrough:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-02-15+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_geometry_shader_passthrough.html SPV_NV_geometry_shader_passthrough>+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/NV/NV_geometry_shader_passthrough.txt GL_NV_geometry_shader_passthrough>+--+--     -   This extension requires the @geometryShader@ feature.+--+-- [__Contributors__]+--+--     -   Piers Daniell, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   @SPV_NV_geometry_shader_passthrough@+--+-- Geometry shaders provide the ability for applications to process each+-- primitive sent through the graphics pipeline using a programmable+-- shader. However, one common use case treats them largely as a+-- “passthrough”. In this use case, the bulk of the geometry shader code+-- simply copies inputs from each vertex of the input primitive to+-- corresponding outputs in the vertices of the output primitive. Such+-- shaders might also compute values for additional built-in or+-- user-defined per-primitive attributes (e.g., @Layer@) to be assigned to+-- all the vertices of the output primitive.+--+-- This extension provides access to the @PassthroughNV@ decoration under+-- the @GeometryShaderPassthroughNV@ capability. Adding this to a geometry+-- shader input variable specifies that the values of this input are copied+-- to the corresponding vertex of the output primitive.+--+-- When using GLSL source-based shading languages, the @passthrough@ layout+-- qualifier from @GL_NV_geometry_shader_passthrough@ maps to the+-- @PassthroughNV@ decoration. To use the @passthrough@ layout, in GLSL the+-- @GL_NV_geometry_shader_passthrough@ extension must be enabled. Behaviour+-- is described in the @GL_NV_geometry_shader_passthrough@ extension+-- specification.+--+-- == New Enum Constants+--+-- -   'NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME'+--+-- -   'NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION'+--+-- == New Variable Decoration+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry-passthrough-passthrough PassthroughNV>+--     in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry-passthrough Geometry Shader Passthrough>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-geometryshaderpassthrough GeometryShaderPassthroughNV>+--+-- == Issues+--+-- 1) Should we require or allow a passthrough geometry shader to specify+-- the output layout qualifiers for the output primitive type and maximum+-- vertex count in the SPIR-V?+--+-- __RESOLVED__: Yes they should be required in the SPIR-V. Per+-- GL_NV_geometry_shader_passthrough they are not permitted in the GLSL+-- source shader, but SPIR-V is lower-level. It is straightforward for the+-- GLSL compiler to infer them from the input primitive type and to+-- explicitly emit them in the SPIR-V according to the following table.+--+-- +-----------------------------------+------------------------------------------++-- | Input Layout                      | Implied Output Layout                    |+-- +===================================+==========================================++-- | points                            | @layout(points, max_vertices=1)@         |+-- +-----------------------------------+------------------------------------------++-- | lines                             | @layout(line_strip, max_vertices=2)@     |+-- +-----------------------------------+------------------------------------------++-- | triangles                         | @layout(triangle_strip, max_vertices=3)@ |+-- +-----------------------------------+------------------------------------------++--+-- 2) How does interface matching work with passthrough geometry shaders?+--+-- __RESOLVED__: This is described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry-passthrough-interface Passthrough Interface Matching>.+-- In GL when using passthough geometry shaders in separable mode, all+-- inputs must also be explicitly assigned location layout qualifiers. In+-- Vulkan all SPIR-V shader inputs (except built-ins) must also have+-- location decorations specified. Redeclarations of built-in varables that+-- add the passthrough layout qualifier are exempted from the rule+-- requiring location assignment because built-in variables do not have+-- locations and are matched by @BuiltIn@ decoration.+--+-- == Sample Code+--+-- Consider the following simple geometry shader in unextended GLSL:+--+-- > layout(triangles) in;+-- > layout(triangle_strip) out;+-- > layout(max_vertices=3) out;+-- >+-- > in Inputs {+-- >     vec2 texcoord;+-- >     vec4 baseColor;+-- > } v_in[];+-- > out Outputs {+-- >     vec2 texcoord;+-- >     vec4 baseColor;+-- > };+-- >+-- > void main()+-- > {+-- >     int layer = compute_layer();+-- >     for (int i = 0; i < 3; i++) {+-- >         gl_Position = gl_in[i].gl_Position;+-- >         texcoord = v_in[i].texcoord;+-- >         baseColor = v_in[i].baseColor;+-- >         gl_Layer = layer;+-- >         EmitVertex();+-- >     }+-- > }+--+-- In this shader, the inputs @gl_Position@, @Inputs.texcoord@, and+-- @Inputs.baseColor@ are simply copied from the input vertex to the+-- corresponding output vertex. The only “interesting” work done by the+-- geometry shader is computing and emitting a @gl_Layer@ value for the+-- primitive.+--+-- The following geometry shader, using this extension, is equivalent:+--+-- > #extension GL_NV_geometry_shader_passthrough : require+-- >+-- > layout(triangles) in;+-- > // No output primitive layout qualifiers required.+-- >+-- > // Redeclare gl_PerVertex to pass through "gl_Position".+-- > layout(passthrough) in gl_PerVertex {+-- >     vec4 gl_Position;+-- > } gl_in[];+-- >+-- > // Declare "Inputs" with "passthrough" to automatically copy members.+-- > layout(passthrough) in Inputs {+-- >     vec2 texcoord;+-- >     vec4 baseColor;+-- > } v_in[];+-- >+-- > // No output block declaration required.+-- >+-- > void main()+-- > {+-- >     // The shader simply computes and writes gl_Layer.  We don't+-- >     // loop over three vertices or call EmitVertex().+-- >     gl_Layer = compute_layer();+-- > }+--+-- == Version History+--+-- -   Revision 1, 2017-02-15 (Daniel Koch)+--+--     -   Internal revisions+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_geometry_shader_passthrough Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_geometry_shader_passthrough  ( NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION                                                             , pattern NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION                                                             , NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME
src/Vulkan/Extensions/VK_NV_glsl_shader.hs view
@@ -1,4 +1,112 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_glsl_shader - device extension+--+-- == VK_NV_glsl_shader+--+-- [__Name String__]+--     @VK_NV_glsl_shader@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     13+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Deprecation state__]+--+--     -   /Deprecated/ without replacement+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_glsl_shader:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-02-14+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Piers Daniell, NVIDIA+--+-- == Description+--+-- This extension allows GLSL shaders written to the @GL_KHR_vulkan_glsl@+-- extension specification to be used instead of SPIR-V. The implementation+-- will automatically detect whether the shader is SPIR-V or GLSL, and+-- compile it appropriately.+--+-- == Deprecation+--+-- Functionality in this extension is outside of the scope of Vulkan and is+-- better served by a compiler library such as+-- <https://github.com/KhronosGroup/glslang glslang>. No new+-- implementations will support this extension, so applications /should/+-- not use it.+--+-- == New Enum Constants+--+-- -   'NV_GLSL_SHADER_EXTENSION_NAME'+--+-- -   'NV_GLSL_SHADER_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'+--+-- == Examples+--+-- __Example 1__+--+-- Passing in GLSL code+--+-- >     char const vss[] =+-- >         "#version 450 core\n"+-- >         "layout(location = 0) in vec2 aVertex;\n"+-- >         "layout(location = 1) in vec4 aColor;\n"+-- >         "out vec4 vColor;\n"+-- >         "void main()\n"+-- >         "{\n"+-- >         "    vColor = aColor;\n"+-- >         "    gl_Position = vec4(aVertex, 0, 1);\n"+-- >         "}\n"+-- >     ;+-- >     VkShaderModuleCreateInfo vertexShaderInfo = { VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO };+-- >     vertexShaderInfo.codeSize = sizeof vss;+-- >     vertexShaderInfo.pCode = vss;+-- >     VkShaderModule vertexShader;+-- >     vkCreateShaderModule(device, &vertexShaderInfo, 0, &vertexShader);+--+-- == Version History+--+-- -   Revision 1, 2016-02-14 (Piers Daniell)+--+--     -   Initial draft+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_glsl_shader Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_glsl_shader  ( NV_GLSL_SHADER_SPEC_VERSION                                             , pattern NV_GLSL_SHADER_SPEC_VERSION                                             , NV_GLSL_SHADER_EXTENSION_NAME
src/Vulkan/Extensions/VK_NV_mesh_shader.hs view
@@ -1,4 +1,260 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_mesh_shader - device extension+--+-- == VK_NV_mesh_shader+--+-- [__Name String__]+--     @VK_NV_mesh_shader@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     203+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Christoph Kubisch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_mesh_shader:%20&body=@pixeljetstream%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-07-19+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_mesh_shader.html SPV_NV_mesh_shader>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_mesh_shader.txt GLSL_NV_mesh_shader>+--+-- [__Contributors__]+--+--     -   Pat Brown, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Piers Daniell, NVIDIA+--+--     -   Pierre Boudier, NVIDIA+--+-- == Description+--+-- This extension provides a new mechanism allowing applications to+-- generate collections of geometric primitives via programmable mesh+-- shading. It is an alternative to the existing programmable primitive+-- shading pipeline, which relied on generating input primitives by a fixed+-- function assembler as well as fixed function vertex fetch.+--+-- There are new programmable shader types — the task and mesh shader — to+-- generate these collections to be processed by fixed-function primitive+-- assembly and rasterization logic. When the task and mesh shaders are+-- dispatched, they replace the standard programmable vertex processing+-- pipeline, including vertex array attribute fetching, vertex shader+-- processing, tessellation, and the geometry shader processing.+--+-- This extension also adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_mesh_shader.html SPV_NV_mesh_shader>+--+-- == New Commands+--+-- -   'cmdDrawMeshTasksIndirectCountNV'+--+-- -   'cmdDrawMeshTasksIndirectNV'+--+-- -   'cmdDrawMeshTasksNV'+--+-- == New Structures+--+-- -   'DrawMeshTasksIndirectCommandNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceMeshShaderFeaturesNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceMeshShaderPropertiesNV'+--+-- == New Enum Constants+--+-- -   'NV_MESH_SHADER_EXTENSION_NAME'+--+-- -   'NV_MESH_SHADER_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV'+--+-- == New or Modified Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-taskcount TaskCountNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-primitivecount PrimitiveCountNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-primitiveindices PrimitiveIndicesNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-clipdistancepv ClipDistancePerViewNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-culldistancepv CullDistancePerViewNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-layerpv LayerPerViewNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewcount MeshViewCountNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewindices MeshViewIndicesNV>+--+-- -   (modified)@Position@+--+-- -   (modified)@PointSize@+--+-- -   (modified)@ClipDistance@+--+-- -   (modified)@CullDistance@+--+-- -   (modified)@PrimitiveId@+--+-- -   (modified)@Layer@+--+-- -   (modified)@ViewportIndex@+--+-- -   (modified)@WorkgroupSize@+--+-- -   (modified)@WorkgroupId@+--+-- -   (modified)@LocalInvocationId@+--+-- -   (modified)@GlobalInvocationId@+--+-- -   (modified)@LocalInvocationIndex@+--+-- -   (modified)@DrawIndex@+--+-- -   (modified)@ViewportMaskNV@+--+-- -   (modified)@PositionPerViewNV@+--+-- -   (modified)@ViewportMaskPerViewNV@+--+-- == New SPIR-V Capability+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-meshshading MeshShadingNV>+--+-- == Issues+--+-- 1.  How to name this extension?+--+--     RESOLVED: VK_NV_mesh_shader+--+--     Other options considered:+--+--     -   VK_NV_mesh_shading+--+--     -   VK_NV_programmable_mesh_shading+--+--     -   VK_NV_primitive_group_shading+--+--     -   VK_NV_grouped_drawing+--+-- 2.  Do we need a new VkPrimitiveTopology?+--+--     RESOLVED: NO, we skip the InputAssembler stage+--+-- 3.  Should we allow Instancing?+--+--     RESOLVED: NO, there is no fixed function input, other than the IDs.+--     However, allow offsetting with a \"first\" value.+--+-- 4.  Should we use existing vkCmdDraw or introduce new functions?+--+--     RESOLVED: Introduce new functions.+--+--     New functions make it easier to separate from \"programmable+--     primitive shading\" chapter, less \"dual use\" language about+--     existing functions having alternative behavior. The text around the+--     existing \"draws\" is heavily based around emitting vertices.+--+-- 5.  If new functions, how to name?+--+--     RESOLVED: CmdDrawMeshTasks*+--+--     Other options considered:+--+--     -   CmdDrawMeshed+--+--     -   CmdDrawTasked+--+--     -   CmdDrawGrouped+--+-- 6.  Should VK_SHADER_STAGE_ALL_GRAPHICS be updated to include the new+--     stages?+--+--     RESOLVED: No. If an application were to be recompiled with headers+--     that include additional shader stage bits in+--     VK_SHADER_STAGE_ALL_GRAPHICS, then the previously valid application+--     would no longer be valid on implementations that don’t support mesh+--     or task shaders. This means the change would not be backwards+--     compatible. It’s too bad VkShaderStageFlagBits doesn’t have a+--     dedicated \"all supported graphics stages\" bit like+--     VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, which would have avoided this+--     problem.+--+-- == Version History+--+-- -   Revision 1, 2018-07-19 (Christoph Kubisch, Daniel Koch)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'DrawMeshTasksIndirectCommandNV', 'PhysicalDeviceMeshShaderFeaturesNV',+-- 'PhysicalDeviceMeshShaderPropertiesNV',+-- 'cmdDrawMeshTasksIndirectCountNV', 'cmdDrawMeshTasksIndirectNV',+-- 'cmdDrawMeshTasksNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_mesh_shader  ( cmdDrawMeshTasksNV                                             , cmdDrawMeshTasksIndirectNV                                             , cmdDrawMeshTasksIndirectCountNV
src/Vulkan/Extensions/VK_NV_mesh_shader.hs-boot view
@@ -1,4 +1,260 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_mesh_shader - device extension+--+-- == VK_NV_mesh_shader+--+-- [__Name String__]+--     @VK_NV_mesh_shader@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     203+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Christoph Kubisch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_mesh_shader:%20&body=@pixeljetstream%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-07-19+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_mesh_shader.html SPV_NV_mesh_shader>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_mesh_shader.txt GLSL_NV_mesh_shader>+--+-- [__Contributors__]+--+--     -   Pat Brown, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Piers Daniell, NVIDIA+--+--     -   Pierre Boudier, NVIDIA+--+-- == Description+--+-- This extension provides a new mechanism allowing applications to+-- generate collections of geometric primitives via programmable mesh+-- shading. It is an alternative to the existing programmable primitive+-- shading pipeline, which relied on generating input primitives by a fixed+-- function assembler as well as fixed function vertex fetch.+--+-- There are new programmable shader types — the task and mesh shader — to+-- generate these collections to be processed by fixed-function primitive+-- assembly and rasterization logic. When the task and mesh shaders are+-- dispatched, they replace the standard programmable vertex processing+-- pipeline, including vertex array attribute fetching, vertex shader+-- processing, tessellation, and the geometry shader processing.+--+-- This extension also adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_mesh_shader.html SPV_NV_mesh_shader>+--+-- == New Commands+--+-- -   'cmdDrawMeshTasksIndirectCountNV'+--+-- -   'cmdDrawMeshTasksIndirectNV'+--+-- -   'cmdDrawMeshTasksNV'+--+-- == New Structures+--+-- -   'DrawMeshTasksIndirectCommandNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceMeshShaderFeaturesNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceMeshShaderPropertiesNV'+--+-- == New Enum Constants+--+-- -   'NV_MESH_SHADER_EXTENSION_NAME'+--+-- -   'NV_MESH_SHADER_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'+--+--     -   'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV'+--+-- == New or Modified Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-taskcount TaskCountNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-primitivecount PrimitiveCountNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-primitiveindices PrimitiveIndicesNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-clipdistancepv ClipDistancePerViewNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-culldistancepv CullDistancePerViewNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-layerpv LayerPerViewNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewcount MeshViewCountNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewindices MeshViewIndicesNV>+--+-- -   (modified)@Position@+--+-- -   (modified)@PointSize@+--+-- -   (modified)@ClipDistance@+--+-- -   (modified)@CullDistance@+--+-- -   (modified)@PrimitiveId@+--+-- -   (modified)@Layer@+--+-- -   (modified)@ViewportIndex@+--+-- -   (modified)@WorkgroupSize@+--+-- -   (modified)@WorkgroupId@+--+-- -   (modified)@LocalInvocationId@+--+-- -   (modified)@GlobalInvocationId@+--+-- -   (modified)@LocalInvocationIndex@+--+-- -   (modified)@DrawIndex@+--+-- -   (modified)@ViewportMaskNV@+--+-- -   (modified)@PositionPerViewNV@+--+-- -   (modified)@ViewportMaskPerViewNV@+--+-- == New SPIR-V Capability+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-meshshading MeshShadingNV>+--+-- == Issues+--+-- 1.  How to name this extension?+--+--     RESOLVED: VK_NV_mesh_shader+--+--     Other options considered:+--+--     -   VK_NV_mesh_shading+--+--     -   VK_NV_programmable_mesh_shading+--+--     -   VK_NV_primitive_group_shading+--+--     -   VK_NV_grouped_drawing+--+-- 2.  Do we need a new VkPrimitiveTopology?+--+--     RESOLVED: NO, we skip the InputAssembler stage+--+-- 3.  Should we allow Instancing?+--+--     RESOLVED: NO, there is no fixed function input, other than the IDs.+--     However, allow offsetting with a \"first\" value.+--+-- 4.  Should we use existing vkCmdDraw or introduce new functions?+--+--     RESOLVED: Introduce new functions.+--+--     New functions make it easier to separate from \"programmable+--     primitive shading\" chapter, less \"dual use\" language about+--     existing functions having alternative behavior. The text around the+--     existing \"draws\" is heavily based around emitting vertices.+--+-- 5.  If new functions, how to name?+--+--     RESOLVED: CmdDrawMeshTasks*+--+--     Other options considered:+--+--     -   CmdDrawMeshed+--+--     -   CmdDrawTasked+--+--     -   CmdDrawGrouped+--+-- 6.  Should VK_SHADER_STAGE_ALL_GRAPHICS be updated to include the new+--     stages?+--+--     RESOLVED: No. If an application were to be recompiled with headers+--     that include additional shader stage bits in+--     VK_SHADER_STAGE_ALL_GRAPHICS, then the previously valid application+--     would no longer be valid on implementations that don’t support mesh+--     or task shaders. This means the change would not be backwards+--     compatible. It’s too bad VkShaderStageFlagBits doesn’t have a+--     dedicated \"all supported graphics stages\" bit like+--     VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, which would have avoided this+--     problem.+--+-- == Version History+--+-- -   Revision 1, 2018-07-19 (Christoph Kubisch, Daniel Koch)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'DrawMeshTasksIndirectCommandNV', 'PhysicalDeviceMeshShaderFeaturesNV',+-- 'PhysicalDeviceMeshShaderPropertiesNV',+-- 'cmdDrawMeshTasksIndirectCountNV', 'cmdDrawMeshTasksIndirectNV',+-- 'cmdDrawMeshTasksNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_mesh_shader  ( DrawMeshTasksIndirectCommandNV                                             , PhysicalDeviceMeshShaderFeaturesNV                                             , PhysicalDeviceMeshShaderPropertiesNV
src/Vulkan/Extensions/VK_NV_ray_tracing.hs view
@@ -1,2948 +1,3961 @@ {-# language CPP #-}-module Vulkan.Extensions.VK_NV_ray_tracing  ( compileDeferredNV-                                            , createAccelerationStructureNV-                                            , getAccelerationStructureMemoryRequirementsNV-                                            , cmdCopyAccelerationStructureNV-                                            , cmdBuildAccelerationStructureNV-                                            , cmdTraceRaysNV-                                            , getAccelerationStructureHandleNV-                                            , createRayTracingPipelinesNV-                                            , pattern STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV-                                            , pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV-                                            , pattern SHADER_STAGE_RAYGEN_BIT_NV-                                            , pattern SHADER_STAGE_ANY_HIT_BIT_NV-                                            , pattern SHADER_STAGE_CLOSEST_HIT_BIT_NV-                                            , pattern SHADER_STAGE_MISS_BIT_NV-                                            , pattern SHADER_STAGE_INTERSECTION_BIT_NV-                                            , pattern SHADER_STAGE_CALLABLE_BIT_NV-                                            , pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV-                                            , pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV-                                            , pattern BUFFER_USAGE_RAY_TRACING_BIT_NV-                                            , pattern PIPELINE_BIND_POINT_RAY_TRACING_NV-                                            , pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV-                                            , pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV-                                            , pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV-                                            , pattern QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV-                                            , pattern OBJECT_TYPE_ACCELERATION_STRUCTURE_NV-                                            , pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT-                                            , pattern INDEX_TYPE_NONE_NV-                                            , pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV-                                            , pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV-                                            , pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV-                                            , pattern GEOMETRY_TYPE_TRIANGLES_NV-                                            , pattern GEOMETRY_TYPE_AABBS_NV-                                            , pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV-                                            , pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV-                                            , pattern GEOMETRY_OPAQUE_BIT_NV-                                            , pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV-                                            , pattern GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV-                                            , pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV-                                            , pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV-                                            , pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV-                                            , pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV-                                            , pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV-                                            , pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV-                                            , pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV-                                            , pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV-                                            , pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV-                                            , pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV-                                            , pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV-                                            , pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV-                                            , pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV-                                            , pattern SHADER_UNUSED_NV-                                            , destroyAccelerationStructureNV-                                            , bindAccelerationStructureMemoryNV-                                            , cmdWriteAccelerationStructuresPropertiesNV-                                            , getRayTracingShaderGroupHandlesNV-                                            , RayTracingShaderGroupCreateInfoNV(..)-                                            , RayTracingPipelineCreateInfoNV(..)-                                            , GeometryTrianglesNV(..)-                                            , GeometryAABBNV(..)-                                            , GeometryDataNV(..)-                                            , GeometryNV(..)-                                            , AccelerationStructureInfoNV(..)-                                            , AccelerationStructureCreateInfoNV(..)-                                            , AccelerationStructureMemoryRequirementsInfoNV(..)-                                            , PhysicalDeviceRayTracingPropertiesNV(..)-                                            , GeometryFlagsNV-                                            , GeometryInstanceFlagsNV-                                            , BuildAccelerationStructureFlagsNV-                                            , AccelerationStructureNV-                                            , GeometryFlagBitsNV-                                            , GeometryInstanceFlagBitsNV-                                            , BuildAccelerationStructureFlagBitsNV-                                            , CopyAccelerationStructureModeNV-                                            , AccelerationStructureTypeNV-                                            , GeometryTypeNV-                                            , RayTracingShaderGroupTypeNV-                                            , AccelerationStructureMemoryRequirementsTypeNV-                                            , BindAccelerationStructureMemoryInfoNV-                                            , WriteDescriptorSetAccelerationStructureNV-                                            , AabbPositionsNV-                                            , TransformMatrixNV-                                            , AccelerationStructureInstanceNV-                                            , NV_RAY_TRACING_SPEC_VERSION-                                            , pattern NV_RAY_TRACING_SPEC_VERSION-                                            , NV_RAY_TRACING_EXTENSION_NAME-                                            , pattern NV_RAY_TRACING_EXTENSION_NAME-                                            , AccelerationStructureKHR(..)-                                            , BindAccelerationStructureMemoryInfoKHR(..)-                                            , WriteDescriptorSetAccelerationStructureKHR(..)-                                            , AabbPositionsKHR(..)-                                            , TransformMatrixKHR(..)-                                            , AccelerationStructureInstanceKHR(..)-                                            , destroyAccelerationStructureKHR-                                            , bindAccelerationStructureMemoryKHR-                                            , cmdWriteAccelerationStructuresPropertiesKHR-                                            , getRayTracingShaderGroupHandlesKHR-                                            , DebugReportObjectTypeEXT(..)-                                            , GeometryInstanceFlagBitsKHR(..)-                                            , GeometryInstanceFlagsKHR-                                            , GeometryFlagBitsKHR(..)-                                            , GeometryFlagsKHR-                                            , BuildAccelerationStructureFlagBitsKHR(..)-                                            , BuildAccelerationStructureFlagsKHR-                                            , CopyAccelerationStructureModeKHR(..)-                                            , AccelerationStructureTypeKHR(..)-                                            , GeometryTypeKHR(..)-                                            , AccelerationStructureMemoryRequirementsTypeKHR(..)-                                            , RayTracingShaderGroupTypeKHR(..)-                                            , MemoryRequirements2KHR-                                            , SHADER_UNUSED_KHR-                                            , pattern SHADER_UNUSED_KHR-                                            ) where--import Control.Exception.Base (bracket)-import Control.Monad (unless)-import Control.Monad.IO.Class (liftIO)-import Data.Typeable (eqT)-import Foreign.Marshal.Alloc (allocaBytesAligned)-import Foreign.Marshal.Alloc (callocBytes)-import Foreign.Marshal.Alloc (free)-import GHC.Base (when)-import GHC.IO (throwIO)-import GHC.Ptr (castPtr)-import GHC.Ptr (nullFunPtr)-import Foreign.Ptr (nullPtr)-import Foreign.Ptr (plusPtr)-import Control.Monad.Trans.Class (lift)-import Control.Monad.Trans.Cont (evalContT)-import Data.Vector (generateM)-import qualified Data.Vector (imapM_)-import qualified Data.Vector (length)-import Foreign.C.Types (CSize(..))-import Control.Monad.IO.Class (MonadIO)-import Data.String (IsString)-import Data.Type.Equality ((:~:)(Refl))-import Data.Typeable (Typeable)-import Foreign.C.Types (CSize)-import Foreign.C.Types (CSize(CSize))-import Foreign.Storable (Storable)-import Foreign.Storable (Storable(peek))-import Foreign.Storable (Storable(poke))-import qualified Foreign.Storable (Storable(..))-import GHC.Generics (Generic)-import GHC.IO.Exception (IOErrorType(..))-import GHC.IO.Exception (IOException(..))-import Data.Int (Int32)-import Foreign.Ptr (FunPtr)-import Foreign.Ptr (Ptr)-import Data.Word (Word32)-import Data.Word (Word64)-import Data.Kind (Type)-import Control.Monad.Trans.Cont (ContT(..))-import Data.Vector (Vector)-import Vulkan.CStruct.Utils (advancePtrBytes)-import Vulkan.Extensions.VK_KHR_ray_tracing (bindAccelerationStructureMemoryKHR)-import Vulkan.Core10.FundamentalTypes (boolToBool32)-import Vulkan.Extensions.VK_KHR_ray_tracing (cmdWriteAccelerationStructuresPropertiesKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (destroyAccelerationStructureKHR)-import Vulkan.CStruct.Extends (forgetExtensions)-import Vulkan.Extensions.VK_KHR_ray_tracing (getRayTracingShaderGroupHandlesKHR)-import Vulkan.CStruct.Extends (peekSomeCStruct)-import Vulkan.CStruct.Extends (pokeSomeCStruct)-import Vulkan.NamedType ((:::))-import Vulkan.Extensions.VK_KHR_ray_tracing (AabbPositionsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureInstanceKHR)-import Vulkan.Extensions.Handles (AccelerationStructureKHR)-import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsTypeKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureTypeKHR)-import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)-import Vulkan.Extensions.VK_KHR_ray_tracing (BindAccelerationStructureMemoryInfoKHR)-import Vulkan.Core10.FundamentalTypes (Bool32)-import Vulkan.Core10.FundamentalTypes (Bool32(..))-import Vulkan.Core10.Handles (Buffer)-import Vulkan.Core10.Handles (Buffer(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)-import Vulkan.CStruct.Extends (Chain)-import Vulkan.Core10.Handles (CommandBuffer)-import Vulkan.Core10.Handles (CommandBuffer(..))-import Vulkan.Core10.Handles (CommandBuffer_T)-import Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR(..))-import Vulkan.Core10.Handles (Device)-import Vulkan.Core10.Handles (Device(..))-import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructureNV))-import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureNV))-import Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysNV))-import Vulkan.Dynamic (DeviceCmds(pVkCompileDeferredNV))-import Vulkan.Dynamic (DeviceCmds(pVkCreateAccelerationStructureNV))-import Vulkan.Dynamic (DeviceCmds(pVkCreateRayTracingPipelinesNV))-import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureHandleNV))-import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureMemoryRequirementsNV))-import Vulkan.Core10.FundamentalTypes (DeviceSize)-import Vulkan.Core10.Handles (Device_T)-import Vulkan.CStruct.Extends (Extends)-import Vulkan.CStruct.Extends (Extendss)-import Vulkan.CStruct.Extends (Extensible(..))-import Vulkan.Core10.Enums.Format (Format)-import Vulkan.CStruct (FromCStruct)-import Vulkan.CStruct (FromCStruct(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagBitsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryTypeKHR)-import Vulkan.Core10.Enums.IndexType (IndexType)-import Vulkan.Extensions.VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)-import Vulkan.CStruct.Extends (PeekChain)-import Vulkan.CStruct.Extends (PeekChain(..))-import Vulkan.Core10.Handles (Pipeline)-import Vulkan.Core10.Handles (Pipeline(..))-import Vulkan.Core10.Handles (PipelineCache)-import Vulkan.Core10.Handles (PipelineCache(..))-import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfoEXT)-import Vulkan.Core10.Handles (PipelineLayout)-import Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)-import Vulkan.CStruct.Extends (PokeChain)-import Vulkan.CStruct.Extends (PokeChain(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR)-import Vulkan.Core10.Enums.Result (Result)-import Vulkan.Core10.Enums.Result (Result(..))-import Vulkan.CStruct.Extends (SomeStruct)-import Vulkan.Core10.Enums.StructureType (StructureType)-import Vulkan.CStruct (ToCStruct)-import Vulkan.CStruct (ToCStruct(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (TransformMatrixKHR)-import Vulkan.Exception (VulkanException(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (WriteDescriptorSetAccelerationStructureKHR)-import Vulkan.Zero (Zero(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsTypeKHR(ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsTypeKHR(ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsTypeKHR(ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureTypeKHR(ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureTypeKHR(ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR))-import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)-import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR))-import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)-import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR))-import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)-import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlagBits(BUFFER_USAGE_RAY_TRACING_BIT_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR(COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR(COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR))-import Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT))-import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagBitsKHR(GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagBitsKHR(GEOMETRY_OPAQUE_BIT_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryTypeKHR(GEOMETRY_TYPE_AABBS_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryTypeKHR(GEOMETRY_TYPE_TRIANGLES_KHR))-import Vulkan.Core10.Enums.IndexType (IndexType(INDEX_TYPE_NONE_KHR))-import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR))-import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(PIPELINE_BIND_POINT_RAY_TRACING_KHR))-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR))-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR))-import Vulkan.Core10.Enums.QueryType (QueryType(QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR))-import Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR))-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_ANY_HIT_BIT_KHR))-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_CALLABLE_BIT_KHR))-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_CLOSEST_HIT_BIT_KHR))-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_INTERSECTION_BIT_KHR))-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_MISS_BIT_KHR))-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_RAYGEN_BIT_KHR))-import Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_AABB_NV))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_NV))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV))-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR))-import Vulkan.Core10.Enums.Result (Result(SUCCESS))-import Vulkan.Extensions.VK_KHR_ray_tracing (bindAccelerationStructureMemoryKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (cmdWriteAccelerationStructuresPropertiesKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (destroyAccelerationStructureKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (getRayTracingShaderGroupHandlesKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (AabbPositionsKHR(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureInstanceKHR(..))-import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsTypeKHR(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureTypeKHR(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (BindAccelerationStructureMemoryInfoKHR(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR(..))-import Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagBitsKHR(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryTypeKHR(..))-import Vulkan.Extensions.VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR(..))-import Vulkan.Core10.APIConstants (SHADER_UNUSED_KHR)-import Vulkan.Extensions.VK_KHR_ray_tracing (TransformMatrixKHR(..))-import Vulkan.Extensions.VK_KHR_ray_tracing (WriteDescriptorSetAccelerationStructureKHR(..))-import Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCompileDeferredNV-  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> IO Result---- | vkCompileDeferredNV - Deferred compilation of shaders------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'-compileDeferredNV :: forall io-                   . (MonadIO io)-                  => -- | @device@ is the logical device containing the ray tracing pipeline.-                     ---                     -- #VUID-vkCompileDeferredNV-device-parameter# @device@ /must/ be a valid-                     -- 'Vulkan.Core10.Handles.Device' handle-                     Device-                  -> -- | @pipeline@ is the ray tracing pipeline object containing the shaders.-                     ---                     -- #VUID-vkCompileDeferredNV-pipeline-02237# @pipeline@ /must/ have been-                     -- created with-                     -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'-                     ---                     -- #VUID-vkCompileDeferredNV-pipeline-parameter# @pipeline@ /must/ be a-                     -- valid 'Vulkan.Core10.Handles.Pipeline' handle-                     ---                     -- #VUID-vkCompileDeferredNV-pipeline-parent# @pipeline@ /must/ have been-                     -- created, allocated, or retrieved from @device@-                     Pipeline-                  -> -- | @shader@ is the index of the shader to compile.-                     ---                     -- #VUID-vkCompileDeferredNV-shader-02238# @shader@ /must/ not have been-                     -- called as a deferred compile before-                     ("shader" ::: Word32)-                  -> io ()-compileDeferredNV device pipeline shader = liftIO $ do-  let vkCompileDeferredNVPtr = pVkCompileDeferredNV (deviceCmds (device :: Device))-  unless (vkCompileDeferredNVPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCompileDeferredNV is null" Nothing Nothing-  let vkCompileDeferredNV' = mkVkCompileDeferredNV vkCompileDeferredNVPtr-  r <- vkCompileDeferredNV' (deviceHandle (device)) (pipeline) (shader)-  when (r < SUCCESS) (throwIO (VulkanException r))---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCreateAccelerationStructureNV-  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureCreateInfoNV -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result) -> Ptr Device_T -> Ptr AccelerationStructureCreateInfoNV -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result---- | vkCreateAccelerationStructureNV - Create a new acceleration structure--- object------ = Description------ Similar to other objects in Vulkan, the acceleration structure creation--- merely creates an object with a specific “shape” as specified by the--- information in 'AccelerationStructureInfoNV' and @compactedSize@ in--- @pCreateInfo@. Populating the data in the object after allocating and--- binding memory is done with 'cmdBuildAccelerationStructureNV' and--- 'cmdCopyAccelerationStructureNV'.------ Acceleration structure creation uses the count and type information from--- the geometries, but does not use the data references in the structures.------ == Valid Usage (Implicit)------ -   #VUID-vkCreateAccelerationStructureNV-device-parameter# @device@---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter#---     @pCreateInfo@ /must/ be a valid pointer to a valid---     'AccelerationStructureCreateInfoNV' structure------ -   #VUID-vkCreateAccelerationStructureNV-pAllocator-parameter# If---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     structure------ -   #VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter#---     @pAccelerationStructure@ /must/ be a valid pointer to a---     'AccelerationStructureNV' handle------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------ = See Also------ 'AccelerationStructureCreateInfoNV', 'AccelerationStructureNV',--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Vulkan.Core10.Handles.Device'-createAccelerationStructureNV :: forall io-                               . (MonadIO io)-                              => -- | @device@ is the logical device that creates the buffer object.-                                 Device-                              -> -- | @pCreateInfo@ is a pointer to a 'AccelerationStructureCreateInfoNV'-                                 -- structure containing parameters affecting creation of the acceleration-                                 -- structure.-                                 AccelerationStructureCreateInfoNV-                              -> -- | @pAllocator@ controls host memory allocation as described in the-                                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>-                                 -- chapter.-                                 ("allocator" ::: Maybe AllocationCallbacks)-                              -> io (AccelerationStructureNV)-createAccelerationStructureNV device createInfo allocator = liftIO . evalContT $ do-  let vkCreateAccelerationStructureNVPtr = pVkCreateAccelerationStructureNV (deviceCmds (device :: Device))-  lift $ unless (vkCreateAccelerationStructureNVPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateAccelerationStructureNV is null" Nothing Nothing-  let vkCreateAccelerationStructureNV' = mkVkCreateAccelerationStructureNV vkCreateAccelerationStructureNVPtr-  pCreateInfo <- ContT $ withCStruct (createInfo)-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  pPAccelerationStructure <- ContT $ bracket (callocBytes @AccelerationStructureNV 8) free-  r <- lift $ vkCreateAccelerationStructureNV' (deviceHandle (device)) pCreateInfo pAllocator (pPAccelerationStructure)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pAccelerationStructure <- lift $ peek @AccelerationStructureNV pPAccelerationStructure-  pure $ (pAccelerationStructure)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkGetAccelerationStructureMemoryRequirementsNV-  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (SomeStruct MemoryRequirements2KHR) -> IO ()) -> Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (SomeStruct MemoryRequirements2KHR) -> IO ()---- | vkGetAccelerationStructureMemoryRequirementsNV - Get acceleration--- structure memory requirements------ == Valid Usage (Implicit)------ = See Also------ 'AccelerationStructureMemoryRequirementsInfoNV',--- 'Vulkan.Core10.Handles.Device',--- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.MemoryRequirements2KHR'-getAccelerationStructureMemoryRequirementsNV :: forall a io-                                              . (Extendss MemoryRequirements2KHR a, PokeChain a, PeekChain a, MonadIO io)-                                             => -- | @device@ is the logical device on which the acceleration structure was-                                                -- created.-                                                ---                                                -- #VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter#-                                                -- @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle-                                                Device-                                             -> -- | @pInfo@ specifies the acceleration structure to get memory requirements-                                                -- for.-                                                ---                                                -- #VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter#-                                                -- @pInfo@ /must/ be a valid pointer to a valid-                                                -- 'AccelerationStructureMemoryRequirementsInfoNV' structure-                                                AccelerationStructureMemoryRequirementsInfoNV-                                             -> io (MemoryRequirements2KHR a)-getAccelerationStructureMemoryRequirementsNV device info = liftIO . evalContT $ do-  let vkGetAccelerationStructureMemoryRequirementsNVPtr = pVkGetAccelerationStructureMemoryRequirementsNV (deviceCmds (device :: Device))-  lift $ unless (vkGetAccelerationStructureMemoryRequirementsNVPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureMemoryRequirementsNV is null" Nothing Nothing-  let vkGetAccelerationStructureMemoryRequirementsNV' = mkVkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNVPtr-  pInfo <- ContT $ withCStruct (info)-  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2KHR _))-  lift $ vkGetAccelerationStructureMemoryRequirementsNV' (deviceHandle (device)) pInfo (forgetExtensions (pPMemoryRequirements))-  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2KHR _) pPMemoryRequirements-  pure $ (pMemoryRequirements)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdCopyAccelerationStructureNV-  :: FunPtr (Ptr CommandBuffer_T -> AccelerationStructureKHR -> AccelerationStructureKHR -> CopyAccelerationStructureModeKHR -> IO ()) -> Ptr CommandBuffer_T -> AccelerationStructureKHR -> AccelerationStructureKHR -> CopyAccelerationStructureModeKHR -> IO ()---- | vkCmdCopyAccelerationStructureNV - Copy an acceleration structure------ == Valid Usage------ -   #VUID-vkCmdCopyAccelerationStructureNV-mode-03410# @mode@ /must/ be---     'Vulkan.Extensions.VK_KHR_ray_tracing.COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR'---     or---     'Vulkan.Extensions.VK_KHR_ray_tracing.COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR'------ -   #VUID-vkCmdCopyAccelerationStructureNV-src-03411# @src@ /must/ have---     been built with---     'Vulkan.Extensions.VK_KHR_ray_tracing.BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR'---     if @mode@ is---     'Vulkan.Extensions.VK_KHR_ray_tracing.COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR'------ == Valid Usage (Implicit)------ -   #VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdCopyAccelerationStructureNV-dst-parameter# @dst@ /must/---     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureKHR'---     handle------ -   #VUID-vkCmdCopyAccelerationStructureNV-src-parameter# @src@ /must/---     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureKHR'---     handle------ -   #VUID-vkCmdCopyAccelerationStructureNV-mode-parameter# @mode@ /must/---     be a valid---     'Vulkan.Extensions.VK_KHR_ray_tracing.CopyAccelerationStructureModeKHR'---     value------ -   #VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording#---     @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   #VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support compute operations------ -   #VUID-vkCmdCopyAccelerationStructureNV-renderpass# This command---     /must/ only be called outside of a render pass instance------ -   #VUID-vkCmdCopyAccelerationStructureNV-commonparent# Each of---     @commandBuffer@, @dst@, and @src@ /must/ have been created,---     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'------ == Host Synchronization------ -   Host access to @commandBuffer@ /must/ be externally synchronized------ -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Vulkan.Extensions.Handles.AccelerationStructureKHR',--- 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.CopyAccelerationStructureModeKHR'-cmdCopyAccelerationStructureNV :: forall io-                                . (MonadIO io)-                               => -- | @commandBuffer@ is the command buffer into which the command will be-                                  -- recorded.-                                  CommandBuffer-                               -> -- | @dst@ is a pointer to the target acceleration structure for the copy.-                                  ("dst" ::: AccelerationStructureKHR)-                               -> -- | @src@ is a pointer to the source acceleration structure for the copy.-                                  ("src" ::: AccelerationStructureKHR)-                               -> -- | @mode@ is a-                                  -- 'Vulkan.Extensions.VK_KHR_ray_tracing.CopyAccelerationStructureModeKHR'-                                  -- value specifying additional operations to perform during the copy.-                                  CopyAccelerationStructureModeKHR-                               -> io ()-cmdCopyAccelerationStructureNV commandBuffer dst src mode = liftIO $ do-  let vkCmdCopyAccelerationStructureNVPtr = pVkCmdCopyAccelerationStructureNV (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdCopyAccelerationStructureNVPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyAccelerationStructureNV is null" Nothing Nothing-  let vkCmdCopyAccelerationStructureNV' = mkVkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNVPtr-  vkCmdCopyAccelerationStructureNV' (commandBufferHandle (commandBuffer)) (dst) (src) (mode)-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdBuildAccelerationStructureNV-  :: FunPtr (Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureKHR -> AccelerationStructureKHR -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureKHR -> AccelerationStructureKHR -> Buffer -> DeviceSize -> IO ()---- | vkCmdBuildAccelerationStructureNV - Build an acceleration structure------ = Description------ Accesses to @scratch@ /must/ be--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>--- with the--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>--- and an--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>--- of--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'--- or--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'.------ == Valid Usage------ -   #VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241#---     @geometryCount@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesNV'::@maxGeometryCount@------ -   #VUID-vkCmdBuildAccelerationStructureNV-dst-02488# @dst@ /must/ have---     been created with compatible 'AccelerationStructureInfoNV' where---     'AccelerationStructureInfoNV'::@type@ and---     'AccelerationStructureInfoNV'::@flags@ are identical,---     'AccelerationStructureInfoNV'::@instanceCount@ and---     'AccelerationStructureInfoNV'::@geometryCount@ for @dst@ are greater---     than or equal to the build size and each geometry in---     'AccelerationStructureInfoNV'::@pGeometries@ for @dst@ has greater---     than or equal to the number of vertices, indices, and AABBs------ -   #VUID-vkCmdBuildAccelerationStructureNV-update-02489# If @update@ is---     'Vulkan.Core10.FundamentalTypes.TRUE', @src@ /must/ not be---     'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-vkCmdBuildAccelerationStructureNV-update-02490# If @update@ is---     'Vulkan.Core10.FundamentalTypes.TRUE', @src@ /must/ have been built---     before with 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV' set---     in 'AccelerationStructureInfoNV'::@flags@------ -   #VUID-vkCmdBuildAccelerationStructureNV-update-02491# If @update@ is---     'Vulkan.Core10.FundamentalTypes.FALSE', the @size@ member of the---     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure---     returned from a call to---     'getAccelerationStructureMemoryRequirementsNV' with---     'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@---     set to @dst@ and---     'AccelerationStructureMemoryRequirementsInfoNV'::@type@ set to---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'---     /must/ be less than or equal to the size of @scratch@ minus---     @scratchOffset@------ -   #VUID-vkCmdBuildAccelerationStructureNV-update-02492# If @update@ is---     'Vulkan.Core10.FundamentalTypes.TRUE', the @size@ member of the---     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure---     returned from a call to---     'getAccelerationStructureMemoryRequirementsNV' with---     'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@---     set to @dst@ and---     'AccelerationStructureMemoryRequirementsInfoNV'::@type@ set to---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'---     /must/ be less than or equal to the size of @scratch@ minus---     @scratchOffset@------ -   #VUID-vkCmdBuildAccelerationStructureNV-scratch-03522# @scratch@---     /must/ have been created with 'BUFFER_USAGE_RAY_TRACING_BIT_NV'---     usage flag------ -   #VUID-vkCmdBuildAccelerationStructureNV-instanceData-03523# If---     @instanceData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',---     @instanceData@ /must/ have been created with---     'BUFFER_USAGE_RAY_TRACING_BIT_NV' usage flag------ -   #VUID-vkCmdBuildAccelerationStructureNV-update-03524# If @update@ is---     'Vulkan.Core10.FundamentalTypes.TRUE', then objects that were---     previously active /must/ not be made inactive as per---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims>------ -   #VUID-vkCmdBuildAccelerationStructureNV-update-03525# If @update@ is---     'Vulkan.Core10.FundamentalTypes.TRUE', then objects that were---     previously inactive /must/ not be made active as per---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims>------ -   #VUID-vkCmdBuildAccelerationStructureNV-update-03526# If @update@ is---     'Vulkan.Core10.FundamentalTypes.TRUE', the @src@ and @dst@ objects---     /must/ either be the same object or not have any---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>------ == Valid Usage (Implicit)------ -   #VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter#---     @commandBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter# @pInfo@---     /must/ be a valid pointer to a valid 'AccelerationStructureInfoNV'---     structure------ -   #VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter# If---     @instanceData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',---     @instanceData@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'---     handle------ -   #VUID-vkCmdBuildAccelerationStructureNV-dst-parameter# @dst@ /must/---     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureKHR'---     handle------ -   #VUID-vkCmdBuildAccelerationStructureNV-src-parameter# If @src@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @src@ /must/ be a---     valid 'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle------ -   #VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter# @scratch@---     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording#---     @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   #VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support compute operations------ -   #VUID-vkCmdBuildAccelerationStructureNV-renderpass# This command---     /must/ only be called outside of a render pass instance------ -   #VUID-vkCmdBuildAccelerationStructureNV-commonparent# Each of---     @commandBuffer@, @dst@, @instanceData@, @scratch@, and @src@ that---     are valid handles of non-ignored parameters /must/ have been---     created, allocated, or retrieved from the same---     'Vulkan.Core10.Handles.Device'------ == Host Synchronization------ -   Host access to @commandBuffer@ /must/ be externally synchronized------ -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'AccelerationStructureInfoNV',--- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',--- 'Vulkan.Core10.FundamentalTypes.Bool32', 'Vulkan.Core10.Handles.Buffer',--- 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'-cmdBuildAccelerationStructureNV :: forall io-                                 . (MonadIO io)-                                => -- | @commandBuffer@ is the command buffer into which the command will be-                                   -- recorded.-                                   CommandBuffer-                                -> -- | @pInfo@ contains the shared information for the acceleration structure’s-                                   -- structure.-                                   AccelerationStructureInfoNV-                                -> -- | @instanceData@ is the buffer containing an array of-                                   -- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureInstanceKHR'-                                   -- structures defining acceleration structures. This parameter /must/ be-                                   -- @NULL@ for bottom level acceleration structures.-                                   ("instanceData" ::: Buffer)-                                -> -- | @instanceOffset@ is the offset in bytes (relative to the start of-                                   -- @instanceData@) at which the instance data is located.-                                   ("instanceOffset" ::: DeviceSize)-                                -> -- | @update@ specifies whether to update the @dst@ acceleration structure-                                   -- with the data in @src@.-                                   ("update" ::: Bool)-                                -> -- | @dst@ is a pointer to the target acceleration structure for the build.-                                   ("dst" ::: AccelerationStructureKHR)-                                -> -- | @src@ is a pointer to an existing acceleration structure that is to be-                                   -- used to update the @dst@ acceleration structure.-                                   ("src" ::: AccelerationStructureKHR)-                                -> -- | @scratch@ is the 'Vulkan.Core10.Handles.Buffer' that will be used as-                                   -- scratch memory for the build.-                                   ("scratch" ::: Buffer)-                                -> -- | @scratchOffset@ is the offset in bytes relative to the start of-                                   -- @scratch@ that will be used as a scratch memory.-                                   ("scratchOffset" ::: DeviceSize)-                                -> io ()-cmdBuildAccelerationStructureNV commandBuffer info instanceData instanceOffset update dst src scratch scratchOffset = liftIO . evalContT $ do-  let vkCmdBuildAccelerationStructureNVPtr = pVkCmdBuildAccelerationStructureNV (deviceCmds (commandBuffer :: CommandBuffer))-  lift $ unless (vkCmdBuildAccelerationStructureNVPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBuildAccelerationStructureNV is null" Nothing Nothing-  let vkCmdBuildAccelerationStructureNV' = mkVkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNVPtr-  pInfo <- ContT $ withCStruct (info)-  lift $ vkCmdBuildAccelerationStructureNV' (commandBufferHandle (commandBuffer)) pInfo (instanceData) (instanceOffset) (boolToBool32 (update)) (dst) (src) (scratch) (scratchOffset)-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdTraceRaysNV-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()---- | vkCmdTraceRaysNV - Initialize a ray tracing dispatch------ = Description------ When the command is executed, a ray generation group of @width@ ×--- @height@ × @depth@ rays is assembled.------ == Valid Usage------ -   #VUID-vkCmdTraceRaysNV-magFilter-04553# If a---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and---     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is---     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of---     this command, then the image view’s---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>---     /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'------ -   #VUID-vkCmdTraceRaysNV-None-02691# If a---     'Vulkan.Core10.Handles.ImageView' is accessed using atomic---     operations as a result of this command, then the image view’s---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>---     /must/ contain---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'------ -   #VUID-vkCmdTraceRaysNV-None-02692# If a---     'Vulkan.Core10.Handles.ImageView' is sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result---     of this command, then the image view’s---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>---     /must/ contain---     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'------ -   #VUID-vkCmdTraceRaysNV-filterCubic-02694# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result---     of this command /must/ have a---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that---     supports cubic filtering, as specified by---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@---     returned by---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'------ -   #VUID-vkCmdTraceRaysNV-filterCubicMinmax-02695# Any---     'Vulkan.Core10.Handles.ImageView' being sampled with---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a---     reduction mode of either---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'---     or---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'---     as a result of this command /must/ have a---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that---     supports cubic filtering together with minmax filtering, as---     specified by---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@---     returned by---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'------ -   #VUID-vkCmdTraceRaysNV-flags-02696# Any---     'Vulkan.Core10.Handles.Image' created with a---     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'---     sampled as a result of this command /must/ only be sampled using a---     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of---     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'------ -   #VUID-vkCmdTraceRaysNV-None-02697# For each set /n/ that is---     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the---     pipeline bind point used by this command, a descriptor set /must/---     have been bound to /n/ at the same pipeline bind point, with a---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set---     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to create---     the current 'Vulkan.Core10.Handles.Pipeline', as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>------ -   #VUID-vkCmdTraceRaysNV-None-02698# For each push constant that is---     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the---     pipeline bind point used by this command, a push constant value---     /must/ have been set for the same pipeline bind point, with a---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push---     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to---     create the current 'Vulkan.Core10.Handles.Pipeline', as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>------ -   #VUID-vkCmdTraceRaysNV-None-02699# Descriptors in each bound---     descriptor set, specified via---     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/---     be valid if they are statically used by the---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point---     used by this command------ -   #VUID-vkCmdTraceRaysNV-None-02700# A valid pipeline /must/ be bound---     to the pipeline bind point used by this command------ -   #VUID-vkCmdTraceRaysNV-commandBuffer-02701# If the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command requires any dynamic state, that state---     /must/ have been set for @commandBuffer@, and done so after any---     previously bound pipeline with the corresponding state not specified---     as dynamic------ -   #VUID-vkCmdTraceRaysNV-None-02859# There /must/ not have been any---     calls to dynamic state setting commands for any state not specified---     as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object bound to---     the pipeline bind point used by this command, since that pipeline---     was bound------ -   #VUID-vkCmdTraceRaysNV-None-02702# If the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command accesses a---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized---     coordinates, that sampler /must/ not be used to sample from any---     'Vulkan.Core10.Handles.Image' with a---     'Vulkan.Core10.Handles.ImageView' of the type---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in---     any shader stage------ -   #VUID-vkCmdTraceRaysNV-None-02703# If the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command accesses a---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized---     coordinates, that sampler /must/ not be used with any of the SPIR-V---     @OpImageSample*@ or @OpImageSparseSample*@ instructions with---     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ -   #VUID-vkCmdTraceRaysNV-None-02704# If the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command accesses a---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized---     coordinates, that sampler /must/ not be used with any of the SPIR-V---     @OpImageSample*@ or @OpImageSparseSample*@ instructions that---     includes a LOD bias or any offset values, in any shader stage------ -   #VUID-vkCmdTraceRaysNV-None-02705# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a uniform buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdTraceRaysNV-None-02706# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'---     object bound to the pipeline bind point used by this command---     accesses a storage buffer, it /must/ not access values outside of---     the range of the buffer as specified in the descriptor set bound to---     the same pipeline bind point------ -   #VUID-vkCmdTraceRaysNV-commandBuffer-02707# If @commandBuffer@ is an---     unprotected command buffer, any resource accessed by the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command /must/ not be a protected resource------ -   #VUID-vkCmdTraceRaysNV-None-04115# If a---     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@---     as a result of this command, then the @Type@ of the @Texel@ operand---     of that instruction /must/ have at least as many components as the---     image view’s format.------ -   #VUID-vkCmdTraceRaysNV-OpImageWrite-04469# If a---     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@---     as a result of this command, then the @Type@ of the @Texel@ operand---     of that instruction /must/ have at least as many components as the---     image view’s format.------ -   #VUID-vkCmdTraceRaysNV-SampledType-04470# If a---     'Vulkan.Core10.Handles.ImageView' with a---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width---     is accessed as a result of this command, the @SampledType@ of the---     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of---     64.------ -   #VUID-vkCmdTraceRaysNV-SampledType-04471# If a---     'Vulkan.Core10.Handles.ImageView' with a---     'Vulkan.Core10.Enums.Format.Format' that has a channel width less---     than 64-bit is accessed as a result of this command, the---     @SampledType@ of the @OpTypeImage@ operand of that instruction---     /must/ have a @Width@ of 32.------ -   #VUID-vkCmdTraceRaysNV-SampledType-04472# If a---     'Vulkan.Core10.Handles.BufferView' with a---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width---     is accessed as a result of this command, the @SampledType@ of the---     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of---     64.------ -   #VUID-vkCmdTraceRaysNV-SampledType-04473# If a---     'Vulkan.Core10.Handles.BufferView' with a---     'Vulkan.Core10.Enums.Format.Format' that has a channel width less---     than 64-bit is accessed as a result of this command, the---     @SampledType@ of the @OpTypeImage@ operand of that instruction---     /must/ have a @Width@ of 32.------ -   #VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04474# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>---     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects---     created with the---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'---     flag /must/ not be accessed by atomic instructions through an---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this---     command.------ -   #VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04475# If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>---     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects---     created with the---     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'---     flag /must/ not be accessed by atomic instructions through an---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this---     command.------ -   #VUID-vkCmdTraceRaysNV-None-03429# Any shader group handle---     referenced by this call /must/ have been queried from the currently---     bound ray tracing shader pipeline------ -   #VUID-vkCmdTraceRaysNV-maxRecursionDepth-03430# This command /must/---     not cause a shader call instruction to be executed from a shader---     invocation with a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth recursion depth>---     greater than the value of @maxRecursionDepth@ used to create the---     bound ray tracing pipeline------ -   #VUID-vkCmdTraceRaysNV-commandBuffer-02712# If @commandBuffer@ is a---     protected command buffer, any resource written to by the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point used by this command /must/ not be an unprotected resource------ -   #VUID-vkCmdTraceRaysNV-commandBuffer-02713# If @commandBuffer@ is a---     protected command buffer, pipeline stages other than the---     framebuffer-space and compute stages in the---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind---     point /must/ not write to any resource------ -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-04042# If---     @raygenShaderBindingTableBuffer@ is non-sparse then it /must/ be---     bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455#---     @raygenShaderBindingOffset@ /must/ be less than the size of---     @raygenShaderBindingTableBuffer@------ -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456#---     @raygenShaderBindingOffset@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@------ -   #VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-04043# If---     @missShaderBindingTableBuffer@ is non-sparse then it /must/ be bound---     completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457#---     @missShaderBindingOffset@ /must/ be less than the size of---     @missShaderBindingTableBuffer@------ -   #VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458#---     @missShaderBindingOffset@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@------ -   #VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-04044# If---     @hitShaderBindingTableBuffer@ is non-sparse then it /must/ be bound---     completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459#---     @hitShaderBindingOffset@ /must/ be less than the size of---     @hitShaderBindingTableBuffer@------ -   #VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460#---     @hitShaderBindingOffset@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@------ -   #VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-04045# If---     @callableShaderBindingTableBuffer@ is non-sparse then it /must/ be---     bound completely and contiguously to a single---     'Vulkan.Core10.Handles.DeviceMemory' object------ -   #VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461#---     @callableShaderBindingOffset@ /must/ be less than the size of---     @callableShaderBindingTableBuffer@------ -   #VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462#---     @callableShaderBindingOffset@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@------ -   #VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463#---     @missShaderBindingStride@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@------ -   #VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464#---     @hitShaderBindingStride@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@------ -   #VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465#---     @callableShaderBindingStride@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@------ -   #VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466#---     @missShaderBindingStride@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@------ -   #VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467#---     @hitShaderBindingStride@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@------ -   #VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468#---     @callableShaderBindingStride@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@------ -   #VUID-vkCmdTraceRaysNV-width-02469# @width@ /must/ be less than or---     equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]------ -   #VUID-vkCmdTraceRaysNV-height-02470# @height@ /must/ be less than or---     equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]------ -   #VUID-vkCmdTraceRaysNV-depth-02471# @depth@ /must/ be less than or---     equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]------ == Valid Usage (Implicit)------ -   #VUID-vkCmdTraceRaysNV-commandBuffer-parameter# @commandBuffer@---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle------ -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter#---     @raygenShaderBindingTableBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter# If---     @missShaderBindingTableBuffer@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE',---     @missShaderBindingTableBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter# If---     @hitShaderBindingTableBuffer@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE',---     @hitShaderBindingTableBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter#---     If @callableShaderBindingTableBuffer@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE',---     @callableShaderBindingTableBuffer@ /must/ be a valid---     'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-vkCmdTraceRaysNV-commandBuffer-recording# @commandBuffer@---     /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   #VUID-vkCmdTraceRaysNV-commandBuffer-cmdpool# The---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was---     allocated from /must/ support compute operations------ -   #VUID-vkCmdTraceRaysNV-renderpass# This command /must/ only be---     called outside of a render pass instance------ -   #VUID-vkCmdTraceRaysNV-commonparent# Each of---     @callableShaderBindingTableBuffer@, @commandBuffer@,---     @hitShaderBindingTableBuffer@, @missShaderBindingTableBuffer@, and---     @raygenShaderBindingTableBuffer@ that are valid handles of---     non-ignored parameters /must/ have been created, allocated, or---     retrieved from the same 'Vulkan.Core10.Handles.Device'------ == Host Synchronization------ -   Host access to @commandBuffer@ /must/ be externally synchronized------ -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'-cmdTraceRaysNV :: forall io-                . (MonadIO io)-               => -- | @commandBuffer@ is the command buffer into which the command will be-                  -- recorded.-                  CommandBuffer-               -> -- | @raygenShaderBindingTableBuffer@ is the buffer object that holds the-                  -- shader binding table data for the ray generation shader stage.-                  ("raygenShaderBindingTableBuffer" ::: Buffer)-               -> -- | @raygenShaderBindingOffset@ is the offset in bytes (relative to-                  -- @raygenShaderBindingTableBuffer@) of the ray generation shader being-                  -- used for the trace.-                  ("raygenShaderBindingOffset" ::: DeviceSize)-               -> -- | @missShaderBindingTableBuffer@ is the buffer object that holds the-                  -- shader binding table data for the miss shader stage.-                  ("missShaderBindingTableBuffer" ::: Buffer)-               -> -- | @missShaderBindingOffset@ is the offset in bytes (relative to-                  -- @missShaderBindingTableBuffer@) of the miss shader being used for the-                  -- trace.-                  ("missShaderBindingOffset" ::: DeviceSize)-               -> -- | @missShaderBindingStride@ is the size in bytes of each shader binding-                  -- table record in @missShaderBindingTableBuffer@.-                  ("missShaderBindingStride" ::: DeviceSize)-               -> -- | @hitShaderBindingTableBuffer@ is the buffer object that holds the shader-                  -- binding table data for the hit shader stages.-                  ("hitShaderBindingTableBuffer" ::: Buffer)-               -> -- | @hitShaderBindingOffset@ is the offset in bytes (relative to-                  -- @hitShaderBindingTableBuffer@) of the hit shader group being used for-                  -- the trace.-                  ("hitShaderBindingOffset" ::: DeviceSize)-               -> -- | @hitShaderBindingStride@ is the size in bytes of each shader binding-                  -- table record in @hitShaderBindingTableBuffer@.-                  ("hitShaderBindingStride" ::: DeviceSize)-               -> -- | @callableShaderBindingTableBuffer@ is the buffer object that holds the-                  -- shader binding table data for the callable shader stage.-                  ("callableShaderBindingTableBuffer" ::: Buffer)-               -> -- | @callableShaderBindingOffset@ is the offset in bytes (relative to-                  -- @callableShaderBindingTableBuffer@) of the callable shader being used-                  -- for the trace.-                  ("callableShaderBindingOffset" ::: DeviceSize)-               -> -- | @callableShaderBindingStride@ is the size in bytes of each shader-                  -- binding table record in @callableShaderBindingTableBuffer@.-                  ("callableShaderBindingStride" ::: DeviceSize)-               -> -- | @width@ is the width of the ray trace query dimensions.-                  ("width" ::: Word32)-               -> -- | @height@ is height of the ray trace query dimensions.-                  ("height" ::: Word32)-               -> -- | @depth@ is depth of the ray trace query dimensions.-                  ("depth" ::: Word32)-               -> io ()-cmdTraceRaysNV commandBuffer raygenShaderBindingTableBuffer raygenShaderBindingOffset missShaderBindingTableBuffer missShaderBindingOffset missShaderBindingStride hitShaderBindingTableBuffer hitShaderBindingOffset hitShaderBindingStride callableShaderBindingTableBuffer callableShaderBindingOffset callableShaderBindingStride width height depth = liftIO $ do-  let vkCmdTraceRaysNVPtr = pVkCmdTraceRaysNV (deviceCmds (commandBuffer :: CommandBuffer))-  unless (vkCmdTraceRaysNVPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdTraceRaysNV is null" Nothing Nothing-  let vkCmdTraceRaysNV' = mkVkCmdTraceRaysNV vkCmdTraceRaysNVPtr-  vkCmdTraceRaysNV' (commandBufferHandle (commandBuffer)) (raygenShaderBindingTableBuffer) (raygenShaderBindingOffset) (missShaderBindingTableBuffer) (missShaderBindingOffset) (missShaderBindingStride) (hitShaderBindingTableBuffer) (hitShaderBindingOffset) (hitShaderBindingStride) (callableShaderBindingTableBuffer) (callableShaderBindingOffset) (callableShaderBindingStride) (width) (height) (depth)-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkGetAccelerationStructureHandleNV-  :: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> AccelerationStructureKHR -> CSize -> Ptr () -> IO Result---- | vkGetAccelerationStructureHandleNV - Get opaque acceleration structure--- handle------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'Vulkan.Extensions.Handles.AccelerationStructureKHR',--- 'Vulkan.Core10.Handles.Device'-getAccelerationStructureHandleNV :: forall io-                                  . (MonadIO io)-                                 => -- | @device@ is the logical device that owns the acceleration structures.-                                    ---                                    -- #VUID-vkGetAccelerationStructureHandleNV-device-parameter# @device@-                                    -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle-                                    Device-                                 -> -- | @accelerationStructure@ is the acceleration structure.-                                    ---                                    -- #VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-02787#-                                    -- @accelerationStructure@ /must/ be bound completely and contiguously to a-                                    -- single 'Vulkan.Core10.Handles.DeviceMemory' object via-                                    -- 'Vulkan.Extensions.VK_KHR_ray_tracing.bindAccelerationStructureMemoryKHR'-                                    ---                                    -- #VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter#-                                    -- @accelerationStructure@ /must/ be a valid-                                    -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle-                                    ---                                    -- #VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent#-                                    -- @accelerationStructure@ /must/ have been created, allocated, or-                                    -- retrieved from @device@-                                    AccelerationStructureKHR-                                 -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.-                                    ---                                    -- #VUID-vkGetAccelerationStructureHandleNV-dataSize-02240# @dataSize@-                                    -- /must/ be large enough to contain the result of the query, as described-                                    -- above-                                    ---                                    -- #VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength#-                                    -- @dataSize@ /must/ be greater than @0@-                                    ("dataSize" ::: Word64)-                                 -> -- | @pData@ is a pointer to a user-allocated buffer where the results will-                                    -- be written.-                                    ---                                    -- #VUID-vkGetAccelerationStructureHandleNV-pData-parameter# @pData@ /must/-                                    -- be a valid pointer to an array of @dataSize@ bytes-                                    ("data" ::: Ptr ())-                                 -> io ()-getAccelerationStructureHandleNV device accelerationStructure dataSize data' = liftIO $ do-  let vkGetAccelerationStructureHandleNVPtr = pVkGetAccelerationStructureHandleNV (deviceCmds (device :: Device))-  unless (vkGetAccelerationStructureHandleNVPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureHandleNV is null" Nothing Nothing-  let vkGetAccelerationStructureHandleNV' = mkVkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNVPtr-  r <- vkGetAccelerationStructureHandleNV' (deviceHandle (device)) (accelerationStructure) (CSize (dataSize)) (data')-  when (r < SUCCESS) (throwIO (VulkanException r))---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCreateRayTracingPipelinesNV-  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoNV) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoNV) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result---- | vkCreateRayTracingPipelinesNV - Creates a new ray tracing pipeline--- object------ == Valid Usage------ -   #VUID-vkCreateRayTracingPipelinesNV-flags-03415# If the @flags@---     member of any element of @pCreateInfos@ contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and the @basePipelineIndex@ member of that same element is not---     @-1@, @basePipelineIndex@ /must/ be less than the index into---     @pCreateInfos@ that corresponds to that element------ -   #VUID-vkCreateRayTracingPipelinesNV-flags-03416# If the @flags@---     member of any element of @pCreateInfos@ contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, the base pipeline /must/ have been created with the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'---     flag set------ -   #VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903# If---     @pipelineCache@ was created with---     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT',---     host access to @pipelineCache@ /must/ be---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>------ == Valid Usage (Implicit)------ -   #VUID-vkCreateRayTracingPipelinesNV-device-parameter# @device@---     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle------ -   #VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter# If---     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',---     @pipelineCache@ /must/ be a valid---     'Vulkan.Core10.Handles.PipelineCache' handle------ -   #VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter#---     @pCreateInfos@ /must/ be a valid pointer to an array of---     @createInfoCount@ valid 'RayTracingPipelineCreateInfoNV' structures------ -   #VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter# If---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     structure------ -   #VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter#---     @pPipelines@ /must/ be a valid pointer to an array of---     @createInfoCount@ 'Vulkan.Core10.Handles.Pipeline' handles------ -   #VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength#---     @createInfoCount@ /must/ be greater than @0@------ -   #VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent# If---     @pipelineCache@ is a valid handle, it /must/ have been created,---     allocated, or retrieved from @device@------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Vulkan.Core10.Enums.Result.SUCCESS'------     -   'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'------ = See Also------ 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline',--- 'Vulkan.Core10.Handles.PipelineCache', 'RayTracingPipelineCreateInfoNV'-createRayTracingPipelinesNV :: forall io-                             . (MonadIO io)-                            => -- | @device@ is the logical device that creates the ray tracing pipelines.-                               Device-                            -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',-                               -- indicating that pipeline caching is disabled, or the handle of a valid-                               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache pipeline cache>-                               -- object, in which case use of that cache is enabled for the duration of-                               -- the command.-                               PipelineCache-                            -> -- | @pCreateInfos@ is a pointer to an array of-                               -- 'RayTracingPipelineCreateInfoNV' structures.-                               ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))-                            -> -- | @pAllocator@ controls host memory allocation as described in the-                               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>-                               -- chapter.-                               ("allocator" ::: Maybe AllocationCallbacks)-                            -> io (Result, ("pipelines" ::: Vector Pipeline))-createRayTracingPipelinesNV device pipelineCache createInfos allocator = liftIO . evalContT $ do-  let vkCreateRayTracingPipelinesNVPtr = pVkCreateRayTracingPipelinesNV (deviceCmds (device :: Device))-  lift $ unless (vkCreateRayTracingPipelinesNVPtr /= nullFunPtr) $-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateRayTracingPipelinesNV is null" Nothing Nothing-  let vkCreateRayTracingPipelinesNV' = mkVkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNVPtr-  pPCreateInfos <- ContT $ allocaBytesAligned @(RayTracingPipelineCreateInfoNV _) ((Data.Vector.length (createInfos)) * 80) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (80 * (i)) :: Ptr (RayTracingPipelineCreateInfoNV _))) (e) . ($ ())) (createInfos)-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free-  r <- lift $ vkCreateRayTracingPipelinesNV' (deviceHandle (device)) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (forgetExtensions (pPCreateInfos)) pAllocator (pPPipelines)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))-  pure $ (r, pPipelines)----- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"-pattern STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR----- No documentation found for TopLevel "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"-pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR----- No documentation found for TopLevel "VK_SHADER_STAGE_RAYGEN_BIT_NV"-pattern SHADER_STAGE_RAYGEN_BIT_NV = SHADER_STAGE_RAYGEN_BIT_KHR----- No documentation found for TopLevel "VK_SHADER_STAGE_ANY_HIT_BIT_NV"-pattern SHADER_STAGE_ANY_HIT_BIT_NV = SHADER_STAGE_ANY_HIT_BIT_KHR----- No documentation found for TopLevel "VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV"-pattern SHADER_STAGE_CLOSEST_HIT_BIT_NV = SHADER_STAGE_CLOSEST_HIT_BIT_KHR----- No documentation found for TopLevel "VK_SHADER_STAGE_MISS_BIT_NV"-pattern SHADER_STAGE_MISS_BIT_NV = SHADER_STAGE_MISS_BIT_KHR----- No documentation found for TopLevel "VK_SHADER_STAGE_INTERSECTION_BIT_NV"-pattern SHADER_STAGE_INTERSECTION_BIT_NV = SHADER_STAGE_INTERSECTION_BIT_KHR----- No documentation found for TopLevel "VK_SHADER_STAGE_CALLABLE_BIT_NV"-pattern SHADER_STAGE_CALLABLE_BIT_NV = SHADER_STAGE_CALLABLE_BIT_KHR----- No documentation found for TopLevel "VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV"-pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR----- No documentation found for TopLevel "VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV"-pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR----- No documentation found for TopLevel "VK_BUFFER_USAGE_RAY_TRACING_BIT_NV"-pattern BUFFER_USAGE_RAY_TRACING_BIT_NV = BUFFER_USAGE_RAY_TRACING_BIT_KHR----- No documentation found for TopLevel "VK_PIPELINE_BIND_POINT_RAY_TRACING_NV"-pattern PIPELINE_BIND_POINT_RAY_TRACING_NV = PIPELINE_BIND_POINT_RAY_TRACING_KHR----- No documentation found for TopLevel "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV"-pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR----- No documentation found for TopLevel "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV"-pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR----- No documentation found for TopLevel "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV"-pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR----- No documentation found for TopLevel "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV"-pattern QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR----- No documentation found for TopLevel "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV"-pattern OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR----- No documentation found for TopLevel "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT----- No documentation found for TopLevel "VK_INDEX_TYPE_NONE_NV"-pattern INDEX_TYPE_NONE_NV = INDEX_TYPE_NONE_KHR----- No documentation found for TopLevel "VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV"-pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR----- No documentation found for TopLevel "VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV"-pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR----- No documentation found for TopLevel "VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV"-pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR----- No documentation found for TopLevel "VK_GEOMETRY_TYPE_TRIANGLES_NV"-pattern GEOMETRY_TYPE_TRIANGLES_NV = GEOMETRY_TYPE_TRIANGLES_KHR----- No documentation found for TopLevel "VK_GEOMETRY_TYPE_AABBS_NV"-pattern GEOMETRY_TYPE_AABBS_NV = GEOMETRY_TYPE_AABBS_KHR----- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV"-pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR----- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV"-pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR----- No documentation found for TopLevel "VK_GEOMETRY_OPAQUE_BIT_NV"-pattern GEOMETRY_OPAQUE_BIT_NV = GEOMETRY_OPAQUE_BIT_KHR----- No documentation found for TopLevel "VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV"-pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR----- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV"-pattern GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR----- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV"-pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR----- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV"-pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR----- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV"-pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR----- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV"-pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR----- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV"-pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR----- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV"-pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR----- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV"-pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR----- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV"-pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR----- No documentation found for TopLevel "VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV"-pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR----- No documentation found for TopLevel "VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV"-pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR----- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV"-pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR----- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV"-pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR----- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV"-pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR----- No documentation found for TopLevel "VK_SHADER_UNUSED_NV"-pattern SHADER_UNUSED_NV = SHADER_UNUSED_KHR----- No documentation found for TopLevel "vkDestroyAccelerationStructureNV"-destroyAccelerationStructureNV = destroyAccelerationStructureKHR----- No documentation found for TopLevel "vkBindAccelerationStructureMemoryNV"-bindAccelerationStructureMemoryNV = bindAccelerationStructureMemoryKHR----- No documentation found for TopLevel "vkCmdWriteAccelerationStructuresPropertiesNV"-cmdWriteAccelerationStructuresPropertiesNV = cmdWriteAccelerationStructuresPropertiesKHR----- No documentation found for TopLevel "vkGetRayTracingShaderGroupHandlesNV"-getRayTracingShaderGroupHandlesNV = getRayTracingShaderGroupHandlesKHR----- | VkRayTracingShaderGroupCreateInfoNV - Structure specifying shaders in a--- shader group------ == Valid Usage------ -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413# If @type@ is---     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' then @generalShader@---     /must/ be a valid index into---     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of---     'SHADER_STAGE_RAYGEN_BIT_NV', 'SHADER_STAGE_MISS_BIT_NV', or---     'SHADER_STAGE_CALLABLE_BIT_NV'------ -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414# If @type@ is---     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' then @closestHitShader@,---     @anyHitShader@, and @intersectionShader@ /must/ be---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'------ -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415# If @type@ is---     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV' then---     @intersectionShader@ /must/ be a valid index into---     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of---     'SHADER_STAGE_INTERSECTION_BIT_NV'------ -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416# If @type@ is---     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' then---     @intersectionShader@ /must/ be---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'------ -   #VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417#---     @closestHitShader@ /must/ be either---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' or a valid index into---     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of---     'SHADER_STAGE_CLOSEST_HIT_BIT_NV'------ -   #VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418#---     @anyHitShader@ /must/ be either---     'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' or a valid index into---     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of---     'SHADER_STAGE_ANY_HIT_BIT_NV'------ == Valid Usage (Implicit)------ -   #VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType# @sType@---     /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV'------ -   #VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext# @pNext@---     /must/ be @NULL@------ -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter# @type@---     /must/ be a valid---     'Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingShaderGroupTypeKHR'---     value------ = See Also------ 'RayTracingPipelineCreateInfoNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingShaderGroupTypeKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data RayTracingShaderGroupCreateInfoNV = RayTracingShaderGroupCreateInfoNV-  { -- | @type@ is the type of hit group specified in this structure.-    type' :: RayTracingShaderGroupTypeKHR-  , -- | @generalShader@ is the index of the ray generation, miss, or callable-    -- shader from 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if-    -- the shader group has @type@ of-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV', and-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.-    generalShader :: Word32-  , -- | @closestHitShader@ is the optional index of the closest hit shader from-    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader-    -- group has @type@ of-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' or-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV', and-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.-    closestHitShader :: Word32-  , -- | @anyHitShader@ is the optional index of the any-hit shader from-    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader-    -- group has @type@ of-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' or-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV', and-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.-    anyHitShader :: Word32-  , -- | @intersectionShader@ is the index of the intersection shader from-    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader-    -- group has @type@ of-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV', and-    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.-    intersectionShader :: Word32-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (RayTracingShaderGroupCreateInfoNV)-#endif-deriving instance Show RayTracingShaderGroupCreateInfoNV--instance ToCStruct RayTracingShaderGroupCreateInfoNV where-  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p RayTracingShaderGroupCreateInfoNV{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (type')-    poke ((p `plusPtr` 20 :: Ptr Word32)) (generalShader)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (closestHitShader)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (anyHitShader)-    poke ((p `plusPtr` 32 :: Ptr Word32)) (intersectionShader)-    f-  cStructSize = 40-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (zero)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)-    f--instance FromCStruct RayTracingShaderGroupCreateInfoNV where-  peekCStruct p = do-    type' <- peek @RayTracingShaderGroupTypeKHR ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR))-    generalShader <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    closestHitShader <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))-    anyHitShader <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))-    intersectionShader <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    pure $ RayTracingShaderGroupCreateInfoNV-             type' generalShader closestHitShader anyHitShader intersectionShader--instance Storable RayTracingShaderGroupCreateInfoNV where-  sizeOf ~_ = 40-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero RayTracingShaderGroupCreateInfoNV where-  zero = RayTracingShaderGroupCreateInfoNV-           zero-           zero-           zero-           zero-           zero----- | VkRayTracingPipelineCreateInfoNV - Structure specifying parameters of a--- newly created ray tracing pipeline------ = Description------ The parameters @basePipelineHandle@ and @basePipelineIndex@ are--- described in more detail in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.------ == Valid Usage------ -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03421# If @flags@---     contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineIndex@ is @-1@, @basePipelineHandle@ /must/---     be a valid handle to a ray tracing 'Vulkan.Core10.Handles.Pipeline'------ -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03422# If @flags@---     contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineHandle@ is---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/---     be a valid index into the calling command’s @pCreateInfos@ parameter------ -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03423# If @flags@---     contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineIndex@ is not @-1@, @basePipelineHandle@---     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03424# If @flags@---     contains the---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineHandle@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/---     be @-1@------ -   #VUID-VkRayTracingPipelineCreateInfoNV-stage-03425# The @stage@---     member of at least one element of @pStages@ /must/ be---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR'------ -   #VUID-VkRayTracingPipelineCreateInfoNV-pStages-03426# The shader---     code for the entry points identified by @pStages@, and the rest of---     the state identified by this structure /must/ adhere to the pipeline---     linking rules described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>---     chapter------ -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-03427# @layout@ /must/---     be---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>---     with all shaders specified in @pStages@------ -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-03428# The number of---     resources in @layout@ accessible to each shader stage that is used---     by the pipeline /must/ be less than or equal to---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@------ -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-02904# @flags@ /must/---     not include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'------ -   #VUID-VkRayTracingPipelineCreateInfoNV-pipelineCreationCacheControl-02905#---     If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>---     feature is not enabled, @flags@ /must/ not include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'---     or---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'------ -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03456# @flags@ /must/---     not include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'------ -   #VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-03457#---     @maxRecursionDepth@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesNV'::@maxRecursionDepth@------ -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03458# @flags@ /must/---     not include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'------ -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03459# @flags@ /must/---     not include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'------ -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03460# @flags@ /must/---     not include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'------ -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03461# @flags@ /must/---     not include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'------ -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03462# @flags@ /must/---     not include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'------ -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03463# @flags@ /must/---     not include---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'------ -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-02957# @flags@ /must/---     not include both---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'---     and---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'---     at the same time------ == Valid Usage (Implicit)------ -   #VUID-VkRayTracingPipelineCreateInfoNV-sType-sType# @sType@ /must/---     be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV'------ -   #VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext# @pNext@ /must/---     be @NULL@ or a pointer to a valid instance of---     'Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT'------ -   #VUID-VkRayTracingPipelineCreateInfoNV-sType-unique# The @sType@---     value of each struct in the @pNext@ chain /must/ be unique------ -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter# @flags@---     /must/ be a valid combination of---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'---     values------ -   #VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter# @pStages@---     /must/ be a valid pointer to an array of @stageCount@ valid---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures------ -   #VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter# @pGroups@---     /must/ be a valid pointer to an array of @groupCount@ valid---     'RayTracingShaderGroupCreateInfoNV' structures------ -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter# @layout@---     /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle------ -   #VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength#---     @stageCount@ /must/ be greater than @0@------ -   #VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength#---     @groupCount@ /must/ be greater than @0@------ -   #VUID-VkRayTracingPipelineCreateInfoNV-commonparent# Both of---     @basePipelineHandle@, and @layout@ that are valid handles of---     non-ignored parameters /must/ have been created, allocated, or---     retrieved from the same 'Vulkan.Core10.Handles.Device'------ = See Also------ 'Vulkan.Core10.Handles.Pipeline',--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',--- 'Vulkan.Core10.Handles.PipelineLayout',--- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',--- 'RayTracingShaderGroupCreateInfoNV',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'createRayTracingPipelinesNV'-data RayTracingPipelineCreateInfoNV (es :: [Type]) = RayTracingPipelineCreateInfoNV-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.-    next :: Chain es-  , -- | @flags@ is a bitmask of-    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'-    -- specifying how the pipeline will be generated.-    flags :: PipelineCreateFlags-  , -- | @pStages@ is an array of size @stageCount@ structures of type-    -- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' describing the-    -- set of the shader stages to be included in the ray tracing pipeline.-    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)-  , -- | @pGroups@ is an array of size @groupCount@ structures of type-    -- 'RayTracingShaderGroupCreateInfoNV' describing the set of the shader-    -- stages to be included in each shader group in the ray tracing pipeline.-    groups :: Vector RayTracingShaderGroupCreateInfoNV-  , -- | @maxRecursionDepth@ is the-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth maximum recursion depth>-    -- of shaders executed by this pipeline.-    maxRecursionDepth :: Word32-  , -- | @layout@ is the description of binding locations used by both the-    -- pipeline and descriptor sets used with the pipeline.-    layout :: PipelineLayout-  , -- | @basePipelineHandle@ is a pipeline to derive from.-    basePipelineHandle :: Pipeline-  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use-    -- as a pipeline to derive from.-    basePipelineIndex :: Int32-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (RayTracingPipelineCreateInfoNV (es :: [Type]))-#endif-deriving instance Show (Chain es) => Show (RayTracingPipelineCreateInfoNV es)--instance Extensible RayTracingPipelineCreateInfoNV where-  extensibleType = STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV-  setNext x next = x{next = next}-  getNext RayTracingPipelineCreateInfoNV{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoNV e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfoEXT = Just f-    | otherwise = Nothing--instance (Extendss RayTracingPipelineCreateInfoNV es, PokeChain es) => ToCStruct (RayTracingPipelineCreateInfoNV es) where-  withCStruct x f = allocaBytesAligned 80 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p RayTracingPipelineCreateInfoNV{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))-    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (groups)) :: Word32))-    pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoNV ((Data.Vector.length (groups)) * 40) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV) (e) . ($ ())) (groups)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV))) (pPGroups')-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxRecursionDepth)-    lift $ poke ((p `plusPtr` 56 :: Ptr PipelineLayout)) (layout)-    lift $ poke ((p `plusPtr` 64 :: Ptr Pipeline)) (basePipelineHandle)-    lift $ poke ((p `plusPtr` 72 :: Ptr Int32)) (basePipelineIndex)-    lift $ f-  cStructSize = 80-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (mempty)) * 48) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (mempty)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')-    pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoNV ((Data.Vector.length (mempty)) * 40) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV) (e) . ($ ())) (mempty)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV))) (pPGroups')-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 56 :: Ptr PipelineLayout)) (zero)-    lift $ poke ((p `plusPtr` 72 :: Ptr Int32)) (zero)-    lift $ f--instance (Extendss RayTracingPipelineCreateInfoNV es, PeekChain es) => FromCStruct (RayTracingPipelineCreateInfoNV es) where-  peekCStruct p = do-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))-    next <- peekChain (castPtr pNext)-    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))-    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo a))))-    pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))-    groupCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    pGroups <- peek @(Ptr RayTracingShaderGroupCreateInfoNV) ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV)))-    pGroups' <- generateM (fromIntegral groupCount) (\i -> peekCStruct @RayTracingShaderGroupCreateInfoNV ((pGroups `advancePtrBytes` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV)))-    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))-    layout <- peek @PipelineLayout ((p `plusPtr` 56 :: Ptr PipelineLayout))-    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 64 :: Ptr Pipeline))-    basePipelineIndex <- peek @Int32 ((p `plusPtr` 72 :: Ptr Int32))-    pure $ RayTracingPipelineCreateInfoNV-             next flags pStages' pGroups' maxRecursionDepth layout basePipelineHandle basePipelineIndex--instance es ~ '[] => Zero (RayTracingPipelineCreateInfoNV es) where-  zero = RayTracingPipelineCreateInfoNV-           ()-           zero-           mempty-           mempty-           zero-           zero-           zero-           zero----- | VkGeometryTrianglesNV - Structure specifying a triangle geometry in a--- bottom-level acceleration structure------ = Description------ If @indexType@ is 'INDEX_TYPE_NONE_NV', then this structure describes a--- set of triangles determined by @vertexCount@. Otherwise, this structure--- describes a set of indexed triangles determined by @indexCount@.------ == Valid Usage------ -   #VUID-VkGeometryTrianglesNV-vertexOffset-02428# @vertexOffset@---     /must/ be less than the size of @vertexData@------ -   #VUID-VkGeometryTrianglesNV-vertexOffset-02429# @vertexOffset@---     /must/ be a multiple of the component size of @vertexFormat@------ -   #VUID-VkGeometryTrianglesNV-vertexFormat-02430# @vertexFormat@---     /must/ be one of---     'Vulkan.Core10.Enums.Format.FORMAT_R32G32B32_SFLOAT',---     'Vulkan.Core10.Enums.Format.FORMAT_R32G32_SFLOAT',---     'Vulkan.Core10.Enums.Format.FORMAT_R16G16B16_SFLOAT',---     'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SFLOAT',---     'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SNORM', or---     'Vulkan.Core10.Enums.Format.FORMAT_R16G16B16_SNORM'------ -   #VUID-VkGeometryTrianglesNV-indexOffset-02431# @indexOffset@ /must/---     be less than the size of @indexData@------ -   #VUID-VkGeometryTrianglesNV-indexOffset-02432# @indexOffset@ /must/---     be a multiple of the element size of @indexType@------ -   #VUID-VkGeometryTrianglesNV-indexType-02433# @indexType@ /must/ be---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or---     'INDEX_TYPE_NONE_NV'------ -   #VUID-VkGeometryTrianglesNV-indexData-02434# @indexData@ /must/ be---     'Vulkan.Core10.APIConstants.NULL_HANDLE' if @indexType@ is---     'INDEX_TYPE_NONE_NV'------ -   #VUID-VkGeometryTrianglesNV-indexData-02435# @indexData@ /must/ be a---     valid 'Vulkan.Core10.Handles.Buffer' handle if @indexType@ is not---     'INDEX_TYPE_NONE_NV'------ -   #VUID-VkGeometryTrianglesNV-indexCount-02436# @indexCount@ /must/ be---     @0@ if @indexType@ is 'INDEX_TYPE_NONE_NV'------ -   #VUID-VkGeometryTrianglesNV-transformOffset-02437# @transformOffset@---     /must/ be less than the size of @transformData@------ -   #VUID-VkGeometryTrianglesNV-transformOffset-02438# @transformOffset@---     /must/ be a multiple of @16@------ == Valid Usage (Implicit)------ -   #VUID-VkGeometryTrianglesNV-sType-sType# @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV'------ -   #VUID-VkGeometryTrianglesNV-pNext-pNext# @pNext@ /must/ be @NULL@------ -   #VUID-VkGeometryTrianglesNV-vertexData-parameter# If @vertexData@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @vertexData@ /must/ be---     a valid 'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-VkGeometryTrianglesNV-vertexFormat-parameter# @vertexFormat@---     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value------ -   #VUID-VkGeometryTrianglesNV-indexData-parameter# If @indexData@ is---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @indexData@ /must/ be---     a valid 'Vulkan.Core10.Handles.Buffer' handle------ -   #VUID-VkGeometryTrianglesNV-indexType-parameter# @indexType@ /must/---     be a valid 'Vulkan.Core10.Enums.IndexType.IndexType' value------ -   #VUID-VkGeometryTrianglesNV-transformData-parameter# If---     @transformData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',---     @transformData@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'---     handle------ -   #VUID-VkGeometryTrianglesNV-commonparent# Each of @indexData@,---     @transformData@, and @vertexData@ that are valid handles of---     non-ignored parameters /must/ have been created, allocated, or---     retrieved from the same 'Vulkan.Core10.Handles.Device'------ = See Also------ 'Vulkan.Core10.Handles.Buffer',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',--- 'Vulkan.Core10.Enums.Format.Format', 'GeometryDataNV',--- 'Vulkan.Core10.Enums.IndexType.IndexType',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data GeometryTrianglesNV = GeometryTrianglesNV-  { -- | @vertexData@ is the buffer containing vertex data for this geometry.-    vertexData :: Buffer-  , -- | @vertexOffset@ is the offset in bytes within @vertexData@ containing-    -- vertex data for this geometry.-    vertexOffset :: DeviceSize-  , -- | @vertexCount@ is the number of valid vertices.-    vertexCount :: Word32-  , -- | @vertexStride@ is the stride in bytes between each vertex.-    vertexStride :: DeviceSize-  , -- | @vertexFormat@ is a 'Vulkan.Core10.Enums.Format.Format' describing the-    -- format of each vertex element.-    vertexFormat :: Format-  , -- | @indexData@ is the buffer containing index data for this geometry.-    indexData :: Buffer-  , -- | @indexOffset@ is the offset in bytes within @indexData@ containing index-    -- data for this geometry.-    indexOffset :: DeviceSize-  , -- | @indexCount@ is the number of indices to include in this geometry.-    indexCount :: Word32-  , -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' describing-    -- the format of each index.-    indexType :: IndexType-  , -- | @transformData@ is an optional buffer containing an 'TransformMatrixNV'-    -- structure defining a transformation to be applied to this geometry.-    transformData :: Buffer-  , -- | @transformOffset@ is the offset in bytes in @transformData@ of the-    -- transform information described above.-    transformOffset :: DeviceSize-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (GeometryTrianglesNV)-#endif-deriving instance Show GeometryTrianglesNV--instance ToCStruct GeometryTrianglesNV where-  withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p GeometryTrianglesNV{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Buffer)) (vertexData)-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (vertexOffset)-    poke ((p `plusPtr` 32 :: Ptr Word32)) (vertexCount)-    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (vertexStride)-    poke ((p `plusPtr` 48 :: Ptr Format)) (vertexFormat)-    poke ((p `plusPtr` 56 :: Ptr Buffer)) (indexData)-    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (indexOffset)-    poke ((p `plusPtr` 72 :: Ptr Word32)) (indexCount)-    poke ((p `plusPtr` 76 :: Ptr IndexType)) (indexType)-    poke ((p `plusPtr` 80 :: Ptr Buffer)) (transformData)-    poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (transformOffset)-    f-  cStructSize = 96-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)-    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)-    poke ((p `plusPtr` 48 :: Ptr Format)) (zero)-    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (zero)-    poke ((p `plusPtr` 72 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 76 :: Ptr IndexType)) (zero)-    poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (zero)-    f--instance FromCStruct GeometryTrianglesNV where-  peekCStruct p = do-    vertexData <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))-    vertexOffset <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))-    vertexCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    vertexStride <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))-    vertexFormat <- peek @Format ((p `plusPtr` 48 :: Ptr Format))-    indexData <- peek @Buffer ((p `plusPtr` 56 :: Ptr Buffer))-    indexOffset <- peek @DeviceSize ((p `plusPtr` 64 :: Ptr DeviceSize))-    indexCount <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))-    indexType <- peek @IndexType ((p `plusPtr` 76 :: Ptr IndexType))-    transformData <- peek @Buffer ((p `plusPtr` 80 :: Ptr Buffer))-    transformOffset <- peek @DeviceSize ((p `plusPtr` 88 :: Ptr DeviceSize))-    pure $ GeometryTrianglesNV-             vertexData vertexOffset vertexCount vertexStride vertexFormat indexData indexOffset indexCount indexType transformData transformOffset--instance Storable GeometryTrianglesNV where-  sizeOf ~_ = 96-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero GeometryTrianglesNV where-  zero = GeometryTrianglesNV-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero----- | VkGeometryAABBNV - Structure specifying axis-aligned bounding box--- geometry in a bottom-level acceleration structure------ = Description------ The AABB data in memory is six 32-bit floats consisting of the minimum--- x, y, and z values followed by the maximum x, y, and z values.------ == Valid Usage------ -   #VUID-VkGeometryAABBNV-offset-02439# @offset@ /must/ be less than---     the size of @aabbData@------ -   #VUID-VkGeometryAABBNV-offset-02440# @offset@ /must/ be a multiple---     of @8@------ -   #VUID-VkGeometryAABBNV-stride-02441# @stride@ /must/ be a multiple---     of @8@------ == Valid Usage (Implicit)------ -   #VUID-VkGeometryAABBNV-sType-sType# @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_AABB_NV'------ -   #VUID-VkGeometryAABBNV-pNext-pNext# @pNext@ /must/ be @NULL@------ -   #VUID-VkGeometryAABBNV-aabbData-parameter# If @aabbData@ is not---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @aabbData@ /must/ be a---     valid 'Vulkan.Core10.Handles.Buffer' handle------ = See Also------ 'Vulkan.Core10.Handles.Buffer',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'GeometryDataNV',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data GeometryAABBNV = GeometryAABBNV-  { -- | @aabbData@ is the buffer containing axis-aligned bounding box data.-    aabbData :: Buffer-  , -- | @numAABBs@ is the number of AABBs in this geometry.-    numAABBs :: Word32-  , -- | @stride@ is the stride in bytes between AABBs in @aabbData@.-    stride :: Word32-  , -- | @offset@ is the offset in bytes of the first AABB in @aabbData@.-    offset :: DeviceSize-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (GeometryAABBNV)-#endif-deriving instance Show GeometryAABBNV--instance ToCStruct GeometryAABBNV where-  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p GeometryAABBNV{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_AABB_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Buffer)) (aabbData)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (numAABBs)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (stride)-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)-    f-  cStructSize = 40-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_AABB_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)-    f--instance FromCStruct GeometryAABBNV where-  peekCStruct p = do-    aabbData <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))-    numAABBs <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))-    stride <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))-    offset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))-    pure $ GeometryAABBNV-             aabbData numAABBs stride offset--instance Storable GeometryAABBNV where-  sizeOf ~_ = 40-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero GeometryAABBNV where-  zero = GeometryAABBNV-           zero-           zero-           zero-           zero----- | VkGeometryDataNV - Structure specifying geometry in a bottom-level--- acceleration structure------ == Valid Usage (Implicit)------ = See Also------ 'GeometryAABBNV', 'GeometryNV', 'GeometryTrianglesNV'-data GeometryDataNV = GeometryDataNV-  { -- | @triangles@ contains triangle data if 'GeometryNV'::@geometryType@ is-    -- 'GEOMETRY_TYPE_TRIANGLES_NV'.-    ---    -- #VUID-VkGeometryDataNV-triangles-parameter# @triangles@ /must/ be a-    -- valid 'GeometryTrianglesNV' structure-    triangles :: GeometryTrianglesNV-  , -- | @aabbs@ contains axis-aligned bounding box data if-    -- 'GeometryNV'::@geometryType@ is 'GEOMETRY_TYPE_AABBS_NV'.-    ---    -- #VUID-VkGeometryDataNV-aabbs-parameter# @aabbs@ /must/ be a valid-    -- 'GeometryAABBNV' structure-    aabbs :: GeometryAABBNV-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (GeometryDataNV)-#endif-deriving instance Show GeometryDataNV--instance ToCStruct GeometryDataNV where-  withCStruct x f = allocaBytesAligned 136 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p GeometryDataNV{..} f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV)) (triangles) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 96 :: Ptr GeometryAABBNV)) (aabbs) . ($ ())-    lift $ f-  cStructSize = 136-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 96 :: Ptr GeometryAABBNV)) (zero) . ($ ())-    lift $ f--instance FromCStruct GeometryDataNV where-  peekCStruct p = do-    triangles <- peekCStruct @GeometryTrianglesNV ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV))-    aabbs <- peekCStruct @GeometryAABBNV ((p `plusPtr` 96 :: Ptr GeometryAABBNV))-    pure $ GeometryDataNV-             triangles aabbs--instance Zero GeometryDataNV where-  zero = GeometryDataNV-           zero-           zero----- | VkGeometryNV - Structure specifying a geometry in a bottom-level--- acceleration structure------ == Valid Usage (Implicit)------ = See Also------ 'AccelerationStructureInfoNV', 'GeometryDataNV',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.GeometryFlagsKHR',--- 'Vulkan.Extensions.VK_KHR_ray_tracing.GeometryTypeKHR',--- 'Vulkan.Core10.Enums.StructureType.StructureType'-data GeometryNV = GeometryNV-  { -- | @geometryType@ specifies the-    -- 'Vulkan.Extensions.VK_KHR_ray_tracing.GeometryTypeKHR' which this-    -- geometry refers to.-    ---    -- #VUID-VkGeometryNV-geometryType-03503# @geometryType@ /must/ be-    -- 'GEOMETRY_TYPE_TRIANGLES_NV' or 'GEOMETRY_TYPE_AABBS_NV'-    ---    -- #VUID-VkGeometryNV-geometryType-parameter# @geometryType@ /must/ be a-    -- valid 'Vulkan.Extensions.VK_KHR_ray_tracing.GeometryTypeKHR' value-    geometryType :: GeometryTypeKHR-  , -- | @geometry@ contains the geometry data as described in 'GeometryDataNV'.-    ---    -- #VUID-VkGeometryNV-geometry-parameter# @geometry@ /must/ be a valid-    -- 'GeometryDataNV' structure-    geometry :: GeometryDataNV-  , -- | @flags@ has 'Vulkan.Extensions.VK_KHR_ray_tracing.GeometryFlagBitsKHR'-    -- describing options for this geometry.-    ---    -- #VUID-VkGeometryNV-flags-parameter# @flags@ /must/ be a valid-    -- combination of-    -- 'Vulkan.Extensions.VK_KHR_ray_tracing.GeometryFlagBitsKHR' values-    flags :: GeometryFlagsKHR-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (GeometryNV)-#endif-deriving instance Show GeometryNV--instance ToCStruct GeometryNV where-  withCStruct x f = allocaBytesAligned 168 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p GeometryNV{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (geometryType)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr GeometryDataNV)) (geometry) . ($ ())-    lift $ poke ((p `plusPtr` 160 :: Ptr GeometryFlagsKHR)) (flags)-    lift $ f-  cStructSize = 168-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr GeometryDataNV)) (zero) . ($ ())-    lift $ f--instance FromCStruct GeometryNV where-  peekCStruct p = do-    geometryType <- peek @GeometryTypeKHR ((p `plusPtr` 16 :: Ptr GeometryTypeKHR))-    geometry <- peekCStruct @GeometryDataNV ((p `plusPtr` 24 :: Ptr GeometryDataNV))-    flags <- peek @GeometryFlagsKHR ((p `plusPtr` 160 :: Ptr GeometryFlagsKHR))-    pure $ GeometryNV-             geometryType geometry flags--instance Zero GeometryNV where-  zero = GeometryNV-           zero-           zero-           zero----- | VkAccelerationStructureInfoNV - Structure specifying the parameters of--- acceleration structure object------ = Description------ 'AccelerationStructureInfoNV' contains information that is used both for--- acceleration structure creation with 'createAccelerationStructureNV' and--- in combination with the actual geometric data to build the acceleration--- structure with 'cmdBuildAccelerationStructureNV'.------ == Valid Usage------ -   #VUID-VkAccelerationStructureInfoNV-geometryCount-02422#---     @geometryCount@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesNV'::@maxGeometryCount@------ -   #VUID-VkAccelerationStructureInfoNV-instanceCount-02423#---     @instanceCount@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesNV'::@maxInstanceCount@------ -   #VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424# The---     total number of triangles in all geometries /must/ be less than or---     equal to 'PhysicalDeviceRayTracingPropertiesNV'::@maxTriangleCount@------ -   #VUID-VkAccelerationStructureInfoNV-type-02425# If @type@ is---     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV' then @geometryCount@---     /must/ be @0@------ -   #VUID-VkAccelerationStructureInfoNV-type-02426# If @type@ is---     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' then @instanceCount@---     /must/ be @0@------ -   #VUID-VkAccelerationStructureInfoNV-type-02786# If @type@ is---     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' then the---     @geometryType@ member of each geometry in @pGeometries@ /must/ be---     the same------ -   #VUID-VkAccelerationStructureInfoNV-flags-02592# If @flags@ has the---     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV' bit set,---     then it /must/ not have the---     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV' bit set------ -   #VUID-VkAccelerationStructureInfoNV-scratch-02781# @scratch@ /must/---     have been created with 'BUFFER_USAGE_RAY_TRACING_BIT_NV' usage flag------ -   #VUID-VkAccelerationStructureInfoNV-instanceData-02782# If---     @instanceData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',---     @instanceData@ /must/ have been created with---     'BUFFER_USAGE_RAY_TRACING_BIT_NV' usage flag------ == Valid Usage (Implicit)------ -   #VUID-VkAccelerationStructureInfoNV-sType-sType# @sType@ /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV'------ -   #VUID-VkAccelerationStructureInfoNV-pNext-pNext# @pNext@ /must/ be---     @NULL@------ -   #VUID-VkAccelerationStructureInfoNV-type-parameter# @type@ /must/ be---     a valid 'AccelerationStructureTypeNV' value------ -   #VUID-VkAccelerationStructureInfoNV-flags-parameter# @flags@ /must/---     be a valid combination of 'BuildAccelerationStructureFlagBitsNV'---     values------ -   #VUID-VkAccelerationStructureInfoNV-pGeometries-parameter# If---     @geometryCount@ is not @0@, @pGeometries@ /must/ be a valid pointer---     to an array of @geometryCount@ valid 'GeometryNV' structures------ = See Also------ 'AccelerationStructureCreateInfoNV', 'AccelerationStructureTypeNV',--- 'BuildAccelerationStructureFlagsNV', 'GeometryNV',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'cmdBuildAccelerationStructureNV'-data AccelerationStructureInfoNV = AccelerationStructureInfoNV-  { -- | @type@ is a 'AccelerationStructureTypeNV' value specifying the type of-    -- acceleration structure that will be created.-    type' :: AccelerationStructureTypeNV-  , -- | @flags@ is a bitmask of 'BuildAccelerationStructureFlagBitsNV'-    -- specifying additional parameters of the acceleration structure.-    flags :: BuildAccelerationStructureFlagsNV-  , -- | @instanceCount@ specifies the number of instances that will be in the-    -- new acceleration structure.-    instanceCount :: Word32-  , -- | @pGeometries@ is a pointer to an array of @geometryCount@ 'GeometryNV'-    -- structures containing the scene data being passed into the acceleration-    -- structure.-    geometries :: Vector GeometryNV-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureInfoNV)-#endif-deriving instance Show AccelerationStructureInfoNV--instance ToCStruct AccelerationStructureInfoNV where-  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureInfoNV{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (type')-    lift $ poke ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsNV)) (flags)-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (instanceCount)-    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (geometries)) :: Word32))-    pPGeometries' <- ContT $ allocaBytesAligned @GeometryNV ((Data.Vector.length (geometries)) * 168) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGeometries' `plusPtr` (168 * (i)) :: Ptr GeometryNV) (e) . ($ ())) (geometries)-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV))) (pPGeometries')-    lift $ f-  cStructSize = 40-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (zero)-    pPGeometries' <- ContT $ allocaBytesAligned @GeometryNV ((Data.Vector.length (mempty)) * 168) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGeometries' `plusPtr` (168 * (i)) :: Ptr GeometryNV) (e) . ($ ())) (mempty)-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV))) (pPGeometries')-    lift $ f--instance FromCStruct AccelerationStructureInfoNV where-  peekCStruct p = do-    type' <- peek @AccelerationStructureTypeNV ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV))-    flags <- peek @BuildAccelerationStructureFlagsNV ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsNV))-    instanceCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))-    geometryCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))-    pGeometries <- peek @(Ptr GeometryNV) ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV)))-    pGeometries' <- generateM (fromIntegral geometryCount) (\i -> peekCStruct @GeometryNV ((pGeometries `advancePtrBytes` (168 * (i)) :: Ptr GeometryNV)))-    pure $ AccelerationStructureInfoNV-             type' flags instanceCount pGeometries'--instance Zero AccelerationStructureInfoNV where-  zero = AccelerationStructureInfoNV-           zero-           zero-           zero-           mempty----- | VkAccelerationStructureCreateInfoNV - Structure specifying the--- parameters of a newly created acceleration structure object------ == Valid Usage------ -   #VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421# If---     @compactedSize@ is not @0@ then both @info.geometryCount@ and---     @info.instanceCount@ /must/ be @0@------ == Valid Usage (Implicit)------ -   #VUID-VkAccelerationStructureCreateInfoNV-sType-sType# @sType@---     /must/ be---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV'------ -   #VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext# @pNext@---     /must/ be @NULL@------ -   #VUID-VkAccelerationStructureCreateInfoNV-info-parameter# @info@---     /must/ be a valid 'AccelerationStructureInfoNV' structure------ = See Also------ 'AccelerationStructureInfoNV',--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'createAccelerationStructureNV'-data AccelerationStructureCreateInfoNV = AccelerationStructureCreateInfoNV-  { -- | @compactedSize@ is the size from the result of-    -- 'cmdWriteAccelerationStructuresPropertiesNV' if this acceleration-    -- structure is going to be the target of a compacting copy.-    compactedSize :: DeviceSize-  , -- | @info@ is the 'AccelerationStructureInfoNV' structure specifying further-    -- parameters of the created acceleration structure.-    info :: AccelerationStructureInfoNV-  }-  deriving (Typeable)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureCreateInfoNV)-#endif-deriving instance Show AccelerationStructureCreateInfoNV--instance ToCStruct AccelerationStructureCreateInfoNV where-  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureCreateInfoNV{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (compactedSize)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (info) . ($ ())-    lift $ f-  cStructSize = 64-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (zero) . ($ ())-    lift $ f--instance FromCStruct AccelerationStructureCreateInfoNV where-  peekCStruct p = do-    compactedSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))-    info <- peekCStruct @AccelerationStructureInfoNV ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV))-    pure $ AccelerationStructureCreateInfoNV-             compactedSize info--instance Zero AccelerationStructureCreateInfoNV where-  zero = AccelerationStructureCreateInfoNV-           zero-           zero----- | VkAccelerationStructureMemoryRequirementsInfoNV - Structure specifying--- acceleration to query for memory requirements------ == Valid Usage (Implicit)------ = See Also------ 'AccelerationStructureMemoryRequirementsTypeNV',--- 'AccelerationStructureNV',--- 'Vulkan.Core10.Enums.StructureType.StructureType',--- 'getAccelerationStructureMemoryRequirementsNV'-data AccelerationStructureMemoryRequirementsInfoNV = AccelerationStructureMemoryRequirementsInfoNV-  { -- | @type@ selects the type of memory requirement being queried.-    -- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV' returns the-    -- memory requirements for the object itself.-    -- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'-    -- returns the memory requirements for the scratch memory when doing a-    -- build.-    -- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'-    -- returns the memory requirements for the scratch memory when doing an-    -- update.-    ---    -- #VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter#-    -- @type@ /must/ be a valid 'AccelerationStructureMemoryRequirementsTypeNV'-    -- value-    type' :: AccelerationStructureMemoryRequirementsTypeNV-  , -- | @accelerationStructure@ is the acceleration structure to be queried for-    -- memory requirements.-    ---    -- #VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter#-    -- @accelerationStructure@ /must/ be a valid 'AccelerationStructureNV'-    -- handle-    accelerationStructure :: AccelerationStructureNV-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (AccelerationStructureMemoryRequirementsInfoNV)-#endif-deriving instance Show AccelerationStructureMemoryRequirementsInfoNV--instance ToCStruct AccelerationStructureMemoryRequirementsInfoNV where-  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureMemoryRequirementsInfoNV{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (type')-    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureNV)) (accelerationStructure)-    f-  cStructSize = 32-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (zero)-    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureNV)) (zero)-    f--instance FromCStruct AccelerationStructureMemoryRequirementsInfoNV where-  peekCStruct p = do-    type' <- peek @AccelerationStructureMemoryRequirementsTypeNV ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV))-    accelerationStructure <- peek @AccelerationStructureNV ((p `plusPtr` 24 :: Ptr AccelerationStructureNV))-    pure $ AccelerationStructureMemoryRequirementsInfoNV-             type' accelerationStructure--instance Storable AccelerationStructureMemoryRequirementsInfoNV where-  sizeOf ~_ = 32-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero AccelerationStructureMemoryRequirementsInfoNV where-  zero = AccelerationStructureMemoryRequirementsInfoNV-           zero-           zero----- | VkPhysicalDeviceRayTracingPropertiesNV - Properties of the physical--- device for ray tracing------ = Description------ If the 'PhysicalDeviceRayTracingPropertiesNV' structure is included in--- the @pNext@ chain of--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',--- it is filled with the implementation-dependent limits.------ Limits specified by this structure /must/ match those specified with the--- same name in--- 'Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR'.------ == Valid Usage (Implicit)------ = See Also------ 'Vulkan.Core10.Enums.StructureType.StructureType'-data PhysicalDeviceRayTracingPropertiesNV = PhysicalDeviceRayTracingPropertiesNV-  { -- | @shaderGroupHandleSize@ size in bytes of the shader header.-    shaderGroupHandleSize :: Word32-  , -- | @maxRecursionDepth@ is the maximum number of levels of recursion allowed-    -- in a trace command.-    maxRecursionDepth :: Word32-  , -- | @maxShaderGroupStride@ is the maximum stride in bytes allowed between-    -- shader groups in the SBT.-    maxShaderGroupStride :: Word32-  , -- | @shaderGroupBaseAlignment@ is the required alignment in bytes for the-    -- base of the SBTs.-    shaderGroupBaseAlignment :: Word32-  , -- | @maxGeometryCount@ is the maximum number of geometries in the bottom-    -- level acceleration structure.-    maxGeometryCount :: Word64-  , -- | @maxInstanceCount@ is the maximum number of instances in the top level-    -- acceleration structure.-    maxInstanceCount :: Word64-  , -- | @maxTriangleCount@ is the maximum number of triangles in all geometries-    -- in the bottom level acceleration structure.-    maxTriangleCount :: Word64-  , -- | @maxDescriptorSetAccelerationStructures@ is the maximum number of-    -- acceleration structure descriptors that are allowed in a descriptor set.-    maxDescriptorSetAccelerationStructures :: Word32-  }-  deriving (Typeable, Eq)-#if defined(GENERIC_INSTANCES)-deriving instance Generic (PhysicalDeviceRayTracingPropertiesNV)-#endif-deriving instance Show PhysicalDeviceRayTracingPropertiesNV--instance ToCStruct PhysicalDeviceRayTracingPropertiesNV where-  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PhysicalDeviceRayTracingPropertiesNV{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Word32)) (shaderGroupHandleSize)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxRecursionDepth)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxShaderGroupStride)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (shaderGroupBaseAlignment)-    poke ((p `plusPtr` 32 :: Ptr Word64)) (maxGeometryCount)-    poke ((p `plusPtr` 40 :: Ptr Word64)) (maxInstanceCount)-    poke ((p `plusPtr` 48 :: Ptr Word64)) (maxTriangleCount)-    poke ((p `plusPtr` 56 :: Ptr Word32)) (maxDescriptorSetAccelerationStructures)-    f-  cStructSize = 64-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)-    poke ((p `plusPtr` 40 :: Ptr Word64)) (zero)-    poke ((p `plusPtr` 48 :: Ptr Word64)) (zero)-    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)-    f--instance FromCStruct PhysicalDeviceRayTracingPropertiesNV where-  peekCStruct p = do-    shaderGroupHandleSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))-    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    maxShaderGroupStride <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))-    shaderGroupBaseAlignment <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))-    maxGeometryCount <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))-    maxInstanceCount <- peek @Word64 ((p `plusPtr` 40 :: Ptr Word64))-    maxTriangleCount <- peek @Word64 ((p `plusPtr` 48 :: Ptr Word64))-    maxDescriptorSetAccelerationStructures <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))-    pure $ PhysicalDeviceRayTracingPropertiesNV-             shaderGroupHandleSize maxRecursionDepth maxShaderGroupStride shaderGroupBaseAlignment maxGeometryCount maxInstanceCount maxTriangleCount maxDescriptorSetAccelerationStructures--instance Storable PhysicalDeviceRayTracingPropertiesNV where-  sizeOf ~_ = 64-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero PhysicalDeviceRayTracingPropertiesNV where-  zero = PhysicalDeviceRayTracingPropertiesNV-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero----- No documentation found for TopLevel "VkGeometryFlagsNV"-type GeometryFlagsNV = GeometryFlagsKHR----- No documentation found for TopLevel "VkGeometryInstanceFlagsNV"-type GeometryInstanceFlagsNV = GeometryInstanceFlagsKHR----- No documentation found for TopLevel "VkBuildAccelerationStructureFlagsNV"-type BuildAccelerationStructureFlagsNV = BuildAccelerationStructureFlagsKHR----- No documentation found for TopLevel "VkAccelerationStructureNV"-type AccelerationStructureNV = AccelerationStructureKHR----- No documentation found for TopLevel "VkGeometryFlagBitsNV"-type GeometryFlagBitsNV = GeometryFlagBitsKHR----- No documentation found for TopLevel "VkGeometryInstanceFlagBitsNV"-type GeometryInstanceFlagBitsNV = GeometryInstanceFlagBitsKHR----- No documentation found for TopLevel "VkBuildAccelerationStructureFlagBitsNV"-type BuildAccelerationStructureFlagBitsNV = BuildAccelerationStructureFlagBitsKHR----- No documentation found for TopLevel "VkCopyAccelerationStructureModeNV"-type CopyAccelerationStructureModeNV = CopyAccelerationStructureModeKHR----- No documentation found for TopLevel "VkAccelerationStructureTypeNV"-type AccelerationStructureTypeNV = AccelerationStructureTypeKHR----- No documentation found for TopLevel "VkGeometryTypeNV"-type GeometryTypeNV = GeometryTypeKHR----- No documentation found for TopLevel "VkRayTracingShaderGroupTypeNV"-type RayTracingShaderGroupTypeNV = RayTracingShaderGroupTypeKHR----- No documentation found for TopLevel "VkAccelerationStructureMemoryRequirementsTypeNV"-type AccelerationStructureMemoryRequirementsTypeNV = AccelerationStructureMemoryRequirementsTypeKHR----- No documentation found for TopLevel "VkBindAccelerationStructureMemoryInfoNV"-type BindAccelerationStructureMemoryInfoNV = BindAccelerationStructureMemoryInfoKHR----- No documentation found for TopLevel "VkWriteDescriptorSetAccelerationStructureNV"-type WriteDescriptorSetAccelerationStructureNV = WriteDescriptorSetAccelerationStructureKHR+-- | = Name+--+-- VK_NV_ray_tracing - device extension+--+-- == VK_NV_ray_tracing+--+-- [__Name String__]+--     @VK_NV_ray_tracing@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     166+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_get_memory_requirements2@+--+-- [__Contact__]+--+--     -   Eric Werness+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_ray_tracing:%20&body=@ewerness%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-11-20+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_ray_tracing.html SPV_NV_ray_tracing>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_ray_tracing.txt GL_NV_ray_tracing>+--+-- [__Contributors__]+--+--     -   Eric Werness, NVIDIA+--+--     -   Ashwin Lele, NVIDIA+--+--     -   Robert Stepinski, NVIDIA+--+--     -   Nuno Subtil, NVIDIA+--+--     -   Christoph Kubisch, NVIDIA+--+--     -   Martin Stich, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Joshua Barczak, Intel+--+--     -   Tobias Hector, AMD+--+--     -   Henrik Rydgard, NVIDIA+--+--     -   Pascal Gautron, NVIDIA+--+-- == Description+--+-- Rasterization has been the dominant method to produce interactive+-- graphics, but increasing performance of graphics hardware has made ray+-- tracing a viable option for interactive rendering. Being able to+-- integrate ray tracing with traditional rasterization makes it easier for+-- applications to incrementally add ray traced effects to existing+-- applications or to do hybrid approaches with rasterization for primary+-- visibility and ray tracing for secondary queries.+--+-- To enable ray tracing, this extension adds a few different categories of+-- new functionality:+--+-- -   Acceleration structure objects and build commands+--+-- -   A new pipeline type with new shader domains+--+-- -   An indirection table to link shader groups with acceleration+--     structure items+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   @SPV_NV_ray_tracing@+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.AccelerationStructureNV'+--+-- == New Commands+--+-- -   'bindAccelerationStructureMemoryNV'+--+-- -   'cmdBuildAccelerationStructureNV'+--+-- -   'cmdCopyAccelerationStructureNV'+--+-- -   'cmdTraceRaysNV'+--+-- -   'cmdWriteAccelerationStructuresPropertiesNV'+--+-- -   'compileDeferredNV'+--+-- -   'createAccelerationStructureNV'+--+-- -   'createRayTracingPipelinesNV'+--+-- -   'destroyAccelerationStructureNV'+--+-- -   'getAccelerationStructureHandleNV'+--+-- -   'getAccelerationStructureMemoryRequirementsNV'+--+-- -   'getRayTracingShaderGroupHandlesNV'+--+-- == New Structures+--+-- -   'AabbPositionsNV'+--+-- -   'AccelerationStructureCreateInfoNV'+--+-- -   'AccelerationStructureInfoNV'+--+-- -   'AccelerationStructureInstanceNV'+--+-- -   'AccelerationStructureMemoryRequirementsInfoNV'+--+-- -   'BindAccelerationStructureMemoryInfoNV'+--+-- -   'GeometryAABBNV'+--+-- -   'GeometryDataNV'+--+-- -   'GeometryNV'+--+-- -   'GeometryTrianglesNV'+--+-- -   'Vulkan.Extensions.VK_KHR_get_memory_requirements2.MemoryRequirements2KHR'+--+-- -   'RayTracingPipelineCreateInfoNV'+--+-- -   'RayTracingShaderGroupCreateInfoNV'+--+-- -   'TransformMatrixNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceRayTracingPropertiesNV'+--+-- -   Extending 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet':+--+--     -   'WriteDescriptorSetAccelerationStructureNV'+--+-- == New Enums+--+-- -   'AccelerationStructureMemoryRequirementsTypeNV'+--+-- -   'AccelerationStructureTypeNV'+--+-- -   'BuildAccelerationStructureFlagBitsNV'+--+-- -   'CopyAccelerationStructureModeNV'+--+-- -   'GeometryFlagBitsNV'+--+-- -   'GeometryInstanceFlagBitsNV'+--+-- -   'GeometryTypeNV'+--+-- -   'RayTracingShaderGroupTypeNV'+--+-- == New Bitmasks+--+-- -   'BuildAccelerationStructureFlagsNV'+--+-- -   'GeometryFlagsNV'+--+-- -   'GeometryInstanceFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_RAY_TRACING_EXTENSION_NAME'+--+-- -   'NV_RAY_TRACING_SPEC_VERSION'+--+-- -   'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureTypeKHR':+--+--     -   'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV'+--+--     -   'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV'+--+--     -   'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':+--+--     -   'BUFFER_USAGE_RAY_TRACING_BIT_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR':+--+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV'+--+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV'+--+--     -   'BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV'+--+--     -   'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV'+--+--     -   'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureModeKHR':+--+--     -   'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV'+--+--     -   'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT':+--+--     -   'Vulkan.Extensions.VK_EXT_debug_report.DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.DescriptorType.DescriptorType':+--+--     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryFlagBitsKHR':+--+--     -   'GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV'+--+--     -   'GEOMETRY_OPAQUE_BIT_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagBitsKHR':+--+--     -   'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV'+--+--     -   'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV'+--+--     -   'GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV'+--+--     -   'GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR':+--+--     -   'GEOMETRY_TYPE_AABBS_NV'+--+--     -   'GEOMETRY_TYPE_TRIANGLES_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.IndexType.IndexType':+--+--     -   'INDEX_TYPE_NONE_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_ACCELERATION_STRUCTURE_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint':+--+--     -   'PIPELINE_BIND_POINT_RAY_TRACING_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV'+--+--     -   'PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':+--+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingShaderGroupTypeKHR':+--+--     -   'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV'+--+--     -   'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV'+--+--     -   'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':+--+--     -   'SHADER_STAGE_ANY_HIT_BIT_NV'+--+--     -   'SHADER_STAGE_CALLABLE_BIT_NV'+--+--     -   'SHADER_STAGE_CLOSEST_HIT_BIT_NV'+--+--     -   'SHADER_STAGE_INTERSECTION_BIT_NV'+--+--     -   'SHADER_STAGE_MISS_BIT_NV'+--+--     -   'SHADER_STAGE_RAYGEN_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_AABB_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV'+--+-- == New or Modified Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIDNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-hitt HitTNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsNV>+--+-- -   (modified)@PrimitiveId@+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-nv-raytracing RayTracingNV>+--+-- == Issues+--+-- 1) Are there issues?+--+-- __RESOLVED__: Yes.+--+-- == Sample Code+--+-- Example ray generation GLSL shader+--+-- > #version 450 core+-- > #extension GL_NV_ray_tracing : require+-- > layout(set = 0, binding = 0, rgba8) uniform image2D image;+-- > layout(set = 0, binding = 1) uniform accelerationStructureNV as;+-- > layout(location = 0) rayPayloadNV float payload;+-- >+-- > void main()+-- > {+-- >    vec4 col = vec4(0, 0, 0, 1);+-- >+-- >    vec3 origin = vec3(float(gl_LaunchIDNV.x)/float(gl_LaunchSizeNV.x), float(gl_LaunchIDNV.y)/float(gl_LaunchSizeNV.y), 1.0);+-- >    vec3 dir = vec3(0.0, 0.0, -1.0);+-- >+-- >    traceNV(as, 0, 0xff, 0, 1, 0, origin, 0.0, dir, 1000.0, 0);+-- >+-- >    col.y = payload;+-- >+-- >    imageStore(image, ivec2(gl_LaunchIDNV.xy), col);+-- > }+--+-- == Version History+--+-- -   Revision 1, 2018-09-11 (Robert Stepinski, Nuno Subtil, Eric Werness)+--+--     -   Internal revisions+--+-- -   Revision 2, 2018-10-19 (Eric Werness)+--+--     -   rename to VK_NV_ray_tracing, add support for callables.+--+--     -   too many updates to list+--+-- -   Revision 3, 2018-11-20 (Daniel Koch)+--+--     -   update to use InstanceId instead of InstanceIndex as+--         implemented.+--+-- = See Also+--+-- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV', 'AabbPositionsNV',+-- 'AccelerationStructureCreateInfoNV', 'AccelerationStructureInfoNV',+-- 'AccelerationStructureInstanceNV',+-- 'AccelerationStructureMemoryRequirementsInfoNV',+-- 'AccelerationStructureMemoryRequirementsTypeNV',+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'AccelerationStructureTypeNV', 'BindAccelerationStructureMemoryInfoNV',+-- 'BuildAccelerationStructureFlagBitsNV',+-- 'BuildAccelerationStructureFlagsNV', 'CopyAccelerationStructureModeNV',+-- 'GeometryAABBNV', 'GeometryDataNV', 'GeometryFlagBitsNV',+-- 'GeometryFlagsNV', 'GeometryInstanceFlagBitsNV',+-- 'GeometryInstanceFlagsNV', 'GeometryNV', 'GeometryTrianglesNV',+-- 'GeometryTypeNV',+-- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.MemoryRequirements2KHR',+-- 'PhysicalDeviceRayTracingPropertiesNV',+-- 'RayTracingPipelineCreateInfoNV', 'RayTracingShaderGroupCreateInfoNV',+-- 'RayTracingShaderGroupTypeNV', 'TransformMatrixNV',+-- 'WriteDescriptorSetAccelerationStructureNV',+-- 'bindAccelerationStructureMemoryNV', 'cmdBuildAccelerationStructureNV',+-- 'cmdCopyAccelerationStructureNV', 'cmdTraceRaysNV',+-- 'cmdWriteAccelerationStructuresPropertiesNV', 'compileDeferredNV',+-- 'createAccelerationStructureNV', 'createRayTracingPipelinesNV',+-- 'destroyAccelerationStructureNV', 'getAccelerationStructureHandleNV',+-- 'getAccelerationStructureMemoryRequirementsNV',+-- 'getRayTracingShaderGroupHandlesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_NV_ray_tracing  ( compileDeferredNV+                                            , createAccelerationStructureNV+                                            , withAccelerationStructureNV+                                            , destroyAccelerationStructureNV+                                            , getAccelerationStructureMemoryRequirementsNV+                                            , bindAccelerationStructureMemoryNV+                                            , cmdCopyAccelerationStructureNV+                                            , cmdWriteAccelerationStructuresPropertiesNV+                                            , cmdBuildAccelerationStructureNV+                                            , cmdTraceRaysNV+                                            , getAccelerationStructureHandleNV+                                            , createRayTracingPipelinesNV+                                            , withRayTracingPipelinesNV+                                            , pattern SHADER_STAGE_RAYGEN_BIT_NV+                                            , pattern SHADER_STAGE_ANY_HIT_BIT_NV+                                            , pattern SHADER_STAGE_CLOSEST_HIT_BIT_NV+                                            , pattern SHADER_STAGE_MISS_BIT_NV+                                            , pattern SHADER_STAGE_INTERSECTION_BIT_NV+                                            , pattern SHADER_STAGE_CALLABLE_BIT_NV+                                            , pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV+                                            , pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV+                                            , pattern BUFFER_USAGE_RAY_TRACING_BIT_NV+                                            , pattern PIPELINE_BIND_POINT_RAY_TRACING_NV+                                            , pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV+                                            , pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV+                                            , pattern INDEX_TYPE_NONE_NV+                                            , pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV+                                            , pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV+                                            , pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV+                                            , pattern GEOMETRY_TYPE_TRIANGLES_NV+                                            , pattern GEOMETRY_TYPE_AABBS_NV+                                            , pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV+                                            , pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV+                                            , pattern GEOMETRY_OPAQUE_BIT_NV+                                            , pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV+                                            , pattern GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV+                                            , pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV+                                            , pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV+                                            , pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV+                                            , pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV+                                            , pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV+                                            , pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV+                                            , pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV+                                            , pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV+                                            , pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV+                                            , pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV+                                            , pattern SHADER_UNUSED_NV+                                            , getRayTracingShaderGroupHandlesNV+                                            , RayTracingShaderGroupCreateInfoNV(..)+                                            , RayTracingPipelineCreateInfoNV(..)+                                            , GeometryTrianglesNV(..)+                                            , GeometryAABBNV(..)+                                            , GeometryDataNV(..)+                                            , GeometryNV(..)+                                            , AccelerationStructureInfoNV(..)+                                            , AccelerationStructureCreateInfoNV(..)+                                            , BindAccelerationStructureMemoryInfoNV(..)+                                            , WriteDescriptorSetAccelerationStructureNV(..)+                                            , AccelerationStructureMemoryRequirementsInfoNV(..)+                                            , PhysicalDeviceRayTracingPropertiesNV(..)+                                            , AccelerationStructureMemoryRequirementsTypeNV( ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV+                                                                                           , ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV+                                                                                           , ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV+                                                                                           , ..+                                                                                           )+                                            , GeometryFlagsNV+                                            , GeometryInstanceFlagsNV+                                            , BuildAccelerationStructureFlagsNV+                                            , GeometryFlagBitsNV+                                            , GeometryInstanceFlagBitsNV+                                            , BuildAccelerationStructureFlagBitsNV+                                            , CopyAccelerationStructureModeNV+                                            , AccelerationStructureTypeNV+                                            , GeometryTypeNV+                                            , RayTracingShaderGroupTypeNV+                                            , AabbPositionsNV+                                            , TransformMatrixNV+                                            , AccelerationStructureInstanceNV+                                            , NV_RAY_TRACING_SPEC_VERSION+                                            , pattern NV_RAY_TRACING_SPEC_VERSION+                                            , NV_RAY_TRACING_EXTENSION_NAME+                                            , pattern NV_RAY_TRACING_EXTENSION_NAME+                                            , AccelerationStructureNV(..)+                                            , AabbPositionsKHR(..)+                                            , TransformMatrixKHR(..)+                                            , AccelerationStructureInstanceKHR(..)+                                            , getRayTracingShaderGroupHandlesKHR+                                            , DebugReportObjectTypeEXT(..)+                                            , GeometryInstanceFlagBitsKHR(..)+                                            , GeometryInstanceFlagsKHR+                                            , GeometryFlagBitsKHR(..)+                                            , GeometryFlagsKHR+                                            , BuildAccelerationStructureFlagBitsKHR(..)+                                            , BuildAccelerationStructureFlagsKHR+                                            , CopyAccelerationStructureModeKHR(..)+                                            , AccelerationStructureTypeKHR(..)+                                            , GeometryTypeKHR(..)+                                            , RayTracingShaderGroupTypeKHR(..)+                                            , MemoryRequirements2KHR+                                            , SHADER_UNUSED_KHR+                                            , pattern SHADER_UNUSED_KHR+                                            ) where++import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec)+import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Control.Monad.IO.Class (liftIO)+import Data.Foldable (traverse_)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import GHC.Ptr (nullFunPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Show (showsPrec)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Foreign.C.Types (CSize(..))+import Control.Monad.IO.Class (MonadIO)+import Data.String (IsString)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.Generics (Generic)+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Vulkan.CStruct.Utils (advancePtrBytes)+import Vulkan.Core10.FundamentalTypes (boolToBool32)+import Vulkan.Core10.Pipeline (destroyPipeline)+import Vulkan.CStruct.Extends (forgetExtensions)+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (getRayTracingShaderGroupHandlesKHR)+import Vulkan.CStruct.Extends (peekSomeCStruct)+import Vulkan.CStruct.Extends (pokeSomeCStruct)+import Vulkan.NamedType ((:::))+import Vulkan.Extensions.VK_KHR_acceleration_structure (AabbPositionsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureInstanceKHR)+import Vulkan.Extensions.Handles (AccelerationStructureNV)+import Vulkan.Extensions.Handles (AccelerationStructureNV(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureTypeKHR)+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Vulkan.Core10.FundamentalTypes (Bool32)+import Vulkan.Core10.FundamentalTypes (Bool32(..))+import Vulkan.Core10.Handles (Buffer)+import Vulkan.Core10.Handles (Buffer(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)+import Vulkan.CStruct.Extends (Chain)+import Vulkan.Core10.Handles (CommandBuffer)+import Vulkan.Core10.Handles (CommandBuffer(..))+import Vulkan.Core10.Handles (CommandBuffer_T)+import Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR(..))+import Vulkan.Core10.Handles (Device)+import Vulkan.Core10.Handles (Device(..))+import Vulkan.Dynamic (DeviceCmds(pVkBindAccelerationStructureMemoryNV))+import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructureNV))+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureNV))+import Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysNV))+import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteAccelerationStructuresPropertiesNV))+import Vulkan.Dynamic (DeviceCmds(pVkCompileDeferredNV))+import Vulkan.Dynamic (DeviceCmds(pVkCreateAccelerationStructureNV))+import Vulkan.Dynamic (DeviceCmds(pVkCreateRayTracingPipelinesNV))+import Vulkan.Dynamic (DeviceCmds(pVkDestroyAccelerationStructureNV))+import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureHandleNV))+import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureMemoryRequirementsNV))+import Vulkan.Core10.Handles (DeviceMemory)+import Vulkan.Core10.FundamentalTypes (DeviceSize)+import Vulkan.Core10.Handles (Device_T)+import Vulkan.CStruct.Extends (Extends)+import Vulkan.CStruct.Extends (Extendss)+import Vulkan.CStruct.Extends (Extensible(..))+import Vulkan.Core10.Enums.Format (Format)+import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (FromCStruct(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagBitsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR)+import Vulkan.Core10.Enums.IndexType (IndexType)+import Vulkan.Extensions.VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)+import Vulkan.CStruct.Extends (PeekChain)+import Vulkan.CStruct.Extends (PeekChain(..))+import Vulkan.Core10.Handles (Pipeline)+import Vulkan.Core10.Handles (Pipeline(..))+import Vulkan.Core10.Handles (PipelineCache)+import Vulkan.Core10.Handles (PipelineCache(..))+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfoEXT)+import Vulkan.Core10.Handles (PipelineLayout)+import Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)+import Vulkan.CStruct.Extends (PokeChain)+import Vulkan.CStruct.Extends (PokeChain(..))+import Vulkan.Core10.Handles (QueryPool)+import Vulkan.Core10.Handles (QueryPool(..))+import Vulkan.Core10.Enums.QueryType (QueryType)+import Vulkan.Core10.Enums.QueryType (QueryType(..))+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupTypeKHR)+import Vulkan.Core10.Enums.Result (Result)+import Vulkan.Core10.Enums.Result (Result(..))+import Vulkan.CStruct.Extends (SomeStruct)+import Vulkan.Core10.Enums.StructureType (StructureType)+import Vulkan.CStruct (ToCStruct)+import Vulkan.CStruct (ToCStruct(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (TransformMatrixKHR)+import Vulkan.Exception (VulkanException(..))+import Vulkan.Zero (Zero)+import Vulkan.Zero (Zero(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureTypeKHR(ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureTypeKHR(ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR))+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR))+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR))+import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)+import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlagBits(BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR(COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR(COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagBitsKHR(GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagBitsKHR(GEOMETRY_OPAQUE_BIT_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR(GEOMETRY_TYPE_AABBS_KHR))+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR(GEOMETRY_TYPE_TRIANGLES_KHR))+import Vulkan.Core10.Enums.IndexType (IndexType(INDEX_TYPE_NONE_KHR))+import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(PIPELINE_BIND_POINT_RAY_TRACING_KHR))+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR))+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR))+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR))+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR))+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR))+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_ANY_HIT_BIT_KHR))+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_CALLABLE_BIT_KHR))+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_CLOSEST_HIT_BIT_KHR))+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_INTERSECTION_BIT_KHR))+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_MISS_BIT_KHR))+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_RAYGEN_BIT_KHR))+import Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_AABB_NV))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_NV))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV))+import Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (getRayTracingShaderGroupHandlesKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (AabbPositionsKHR(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureInstanceKHR(..))+import Vulkan.Extensions.Handles (AccelerationStructureNV(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureTypeKHR(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagBitsKHR(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (BuildAccelerationStructureFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR(..))+import Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagBitsKHR(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagBitsKHR(..))+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryInstanceFlagsKHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR(..))+import Vulkan.Extensions.VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)+import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingShaderGroupTypeKHR(..))+import Vulkan.Core10.APIConstants (SHADER_UNUSED_KHR)+import Vulkan.Extensions.VK_KHR_acceleration_structure (TransformMatrixKHR(..))+import Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCompileDeferredNV+  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> IO Result++-- | vkCompileDeferredNV - Deferred compilation of shaders+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline'+compileDeferredNV :: forall io+                   . (MonadIO io)+                  => -- | @device@ is the logical device containing the ray tracing pipeline.+                     --+                     -- #VUID-vkCompileDeferredNV-device-parameter# @device@ /must/ be a valid+                     -- 'Vulkan.Core10.Handles.Device' handle+                     Device+                  -> -- | @pipeline@ is the ray tracing pipeline object containing the shaders.+                     --+                     -- #VUID-vkCompileDeferredNV-pipeline-02237# @pipeline@ /must/ have been+                     -- created with+                     -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'+                     --+                     -- #VUID-vkCompileDeferredNV-pipeline-parameter# @pipeline@ /must/ be a+                     -- valid 'Vulkan.Core10.Handles.Pipeline' handle+                     --+                     -- #VUID-vkCompileDeferredNV-pipeline-parent# @pipeline@ /must/ have been+                     -- created, allocated, or retrieved from @device@+                     Pipeline+                  -> -- | @shader@ is the index of the shader to compile.+                     --+                     -- #VUID-vkCompileDeferredNV-shader-02238# @shader@ /must/ not have been+                     -- called as a deferred compile before+                     ("shader" ::: Word32)+                  -> io ()+compileDeferredNV device pipeline shader = liftIO $ do+  let vkCompileDeferredNVPtr = pVkCompileDeferredNV (deviceCmds (device :: Device))+  unless (vkCompileDeferredNVPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCompileDeferredNV is null" Nothing Nothing+  let vkCompileDeferredNV' = mkVkCompileDeferredNV vkCompileDeferredNVPtr+  r <- vkCompileDeferredNV' (deviceHandle (device)) (pipeline) (shader)+  when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCreateAccelerationStructureNV+  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureCreateInfoNV -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result) -> Ptr Device_T -> Ptr AccelerationStructureCreateInfoNV -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result++-- | vkCreateAccelerationStructureNV - Create a new acceleration structure+-- object+--+-- = Description+--+-- Similar to other objects in Vulkan, the acceleration structure creation+-- merely creates an object with a specific “shape” as specified by the+-- information in 'AccelerationStructureInfoNV' and @compactedSize@ in+-- @pCreateInfo@. Populating the data in the object after allocating and+-- binding memory is done with 'cmdBuildAccelerationStructureNV' and+-- 'cmdCopyAccelerationStructureNV'.+--+-- Acceleration structure creation uses the count and type information from+-- the geometries, but does not use the data references in the structures.+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCreateAccelerationStructureNV-device-parameter# @device@+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter#+--     @pCreateInfo@ /must/ be a valid pointer to a valid+--     'AccelerationStructureCreateInfoNV' structure+--+-- -   #VUID-vkCreateAccelerationStructureNV-pAllocator-parameter# If+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   #VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter#+--     @pAccelerationStructure@ /must/ be a valid pointer to a+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- = See Also+--+-- 'AccelerationStructureCreateInfoNV',+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Vulkan.Core10.Handles.Device'+createAccelerationStructureNV :: forall io+                               . (MonadIO io)+                              => -- | @device@ is the logical device that creates the buffer object.+                                 Device+                              -> -- | @pCreateInfo@ is a pointer to a 'AccelerationStructureCreateInfoNV'+                                 -- structure containing parameters affecting creation of the acceleration+                                 -- structure.+                                 AccelerationStructureCreateInfoNV+                              -> -- | @pAllocator@ controls host memory allocation as described in the+                                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+                                 -- chapter.+                                 ("allocator" ::: Maybe AllocationCallbacks)+                              -> io (AccelerationStructureNV)+createAccelerationStructureNV device createInfo allocator = liftIO . evalContT $ do+  let vkCreateAccelerationStructureNVPtr = pVkCreateAccelerationStructureNV (deviceCmds (device :: Device))+  lift $ unless (vkCreateAccelerationStructureNVPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateAccelerationStructureNV is null" Nothing Nothing+  let vkCreateAccelerationStructureNV' = mkVkCreateAccelerationStructureNV vkCreateAccelerationStructureNVPtr+  pCreateInfo <- ContT $ withCStruct (createInfo)+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  pPAccelerationStructure <- ContT $ bracket (callocBytes @AccelerationStructureNV 8) free+  r <- lift $ vkCreateAccelerationStructureNV' (deviceHandle (device)) pCreateInfo pAllocator (pPAccelerationStructure)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pAccelerationStructure <- lift $ peek @AccelerationStructureNV pPAccelerationStructure+  pure $ (pAccelerationStructure)++-- | A convenience wrapper to make a compatible pair of calls to+-- 'createAccelerationStructureNV' and 'destroyAccelerationStructureNV'+--+-- To ensure that 'destroyAccelerationStructureNV' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument.+--+withAccelerationStructureNV :: forall io r . MonadIO io => Device -> AccelerationStructureCreateInfoNV -> Maybe AllocationCallbacks -> (io AccelerationStructureNV -> (AccelerationStructureNV -> io ()) -> r) -> r+withAccelerationStructureNV device pCreateInfo pAllocator b =+  b (createAccelerationStructureNV device pCreateInfo pAllocator)+    (\(o0) -> destroyAccelerationStructureNV device o0 pAllocator)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkDestroyAccelerationStructureNV+  :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> AccelerationStructureNV -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyAccelerationStructureNV - Destroy an acceleration structure+-- object+--+-- == Valid Usage+--+-- -   #VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03752#+--     All submitted commands that refer to @accelerationStructure@ /must/+--     have completed execution+--+-- -   #VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03753#+--     If 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were+--     provided when @accelerationStructure@ was created, a compatible set+--     of callbacks /must/ be provided here+--+-- -   #VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03754#+--     If no 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were+--     provided when @accelerationStructure@ was created, @pAllocator@+--     /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkDestroyAccelerationStructureNV-device-parameter# @device@+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parameter#+--     If @accelerationStructure@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @accelerationStructure@+--     /must/ be a valid+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' handle+--+-- -   #VUID-vkDestroyAccelerationStructureNV-pAllocator-parameter# If+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   #VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent#+--     If @accelerationStructure@ is a valid handle, it /must/ have been+--     created, allocated, or retrieved from @device@+--+-- == Host Synchronization+--+-- -   Host access to @accelerationStructure@ /must/ be externally+--     synchronized+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Vulkan.Core10.Handles.Device'+destroyAccelerationStructureNV :: forall io+                                . (MonadIO io)+                               => -- | @device@ is the logical device that destroys the buffer.+                                  Device+                               -> -- | @accelerationStructure@ is the acceleration structure to destroy.+                                  AccelerationStructureNV+                               -> -- | @pAllocator@ controls host memory allocation as described in the+                                  -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+                                  -- chapter.+                                  ("allocator" ::: Maybe AllocationCallbacks)+                               -> io ()+destroyAccelerationStructureNV device accelerationStructure allocator = liftIO . evalContT $ do+  let vkDestroyAccelerationStructureNVPtr = pVkDestroyAccelerationStructureNV (deviceCmds (device :: Device))+  lift $ unless (vkDestroyAccelerationStructureNVPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyAccelerationStructureNV is null" Nothing Nothing+  let vkDestroyAccelerationStructureNV' = mkVkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNVPtr+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  lift $ vkDestroyAccelerationStructureNV' (deviceHandle (device)) (accelerationStructure) pAllocator+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetAccelerationStructureMemoryRequirementsNV+  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (SomeStruct MemoryRequirements2KHR) -> IO ()) -> Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (SomeStruct MemoryRequirements2KHR) -> IO ()++-- | vkGetAccelerationStructureMemoryRequirementsNV - Get acceleration+-- structure memory requirements+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureMemoryRequirementsInfoNV',+-- 'Vulkan.Core10.Handles.Device',+-- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.MemoryRequirements2KHR'+getAccelerationStructureMemoryRequirementsNV :: forall a io+                                              . (Extendss MemoryRequirements2KHR a, PokeChain a, PeekChain a, MonadIO io)+                                             => -- | @device@ is the logical device on which the acceleration structure was+                                                -- created.+                                                --+                                                -- #VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter#+                                                -- @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+                                                Device+                                             -> -- | @pInfo@ specifies the acceleration structure to get memory requirements+                                                -- for.+                                                --+                                                -- #VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter#+                                                -- @pInfo@ /must/ be a valid pointer to a valid+                                                -- 'AccelerationStructureMemoryRequirementsInfoNV' structure+                                                AccelerationStructureMemoryRequirementsInfoNV+                                             -> io (MemoryRequirements2KHR a)+getAccelerationStructureMemoryRequirementsNV device info = liftIO . evalContT $ do+  let vkGetAccelerationStructureMemoryRequirementsNVPtr = pVkGetAccelerationStructureMemoryRequirementsNV (deviceCmds (device :: Device))+  lift $ unless (vkGetAccelerationStructureMemoryRequirementsNVPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureMemoryRequirementsNV is null" Nothing Nothing+  let vkGetAccelerationStructureMemoryRequirementsNV' = mkVkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNVPtr+  pInfo <- ContT $ withCStruct (info)+  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2KHR _))+  lift $ vkGetAccelerationStructureMemoryRequirementsNV' (deviceHandle (device)) pInfo (forgetExtensions (pPMemoryRequirements))+  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2KHR _) pPMemoryRequirements+  pure $ (pMemoryRequirements)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkBindAccelerationStructureMemoryNV+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr BindAccelerationStructureMemoryInfoNV -> IO Result) -> Ptr Device_T -> Word32 -> Ptr BindAccelerationStructureMemoryInfoNV -> IO Result++-- | vkBindAccelerationStructureMemoryNV - Bind acceleration structure memory+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'BindAccelerationStructureMemoryInfoNV', 'Vulkan.Core10.Handles.Device'+bindAccelerationStructureMemoryNV :: forall io+                                   . (MonadIO io)+                                  => -- | @device@ is the logical device that owns the acceleration structures and+                                     -- memory.+                                     --+                                     -- #VUID-vkBindAccelerationStructureMemoryNV-device-parameter# @device@+                                     -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+                                     Device+                                  -> -- | @pBindInfos@ is a pointer to an array of+                                     -- 'BindAccelerationStructureMemoryInfoNV' structures describing+                                     -- acceleration structures and memory to bind.+                                     --+                                     -- #VUID-vkBindAccelerationStructureMemoryNV-pBindInfos-parameter#+                                     -- @pBindInfos@ /must/ be a valid pointer to an array of @bindInfoCount@+                                     -- valid 'BindAccelerationStructureMemoryInfoNV' structures+                                     ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoNV)+                                  -> io ()+bindAccelerationStructureMemoryNV device bindInfos = liftIO . evalContT $ do+  let vkBindAccelerationStructureMemoryNVPtr = pVkBindAccelerationStructureMemoryNV (deviceCmds (device :: Device))+  lift $ unless (vkBindAccelerationStructureMemoryNVPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkBindAccelerationStructureMemoryNV is null" Nothing Nothing+  let vkBindAccelerationStructureMemoryNV' = mkVkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNVPtr+  pPBindInfos <- ContT $ allocaBytesAligned @BindAccelerationStructureMemoryInfoNV ((Data.Vector.length (bindInfos)) * 56) 8+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBindInfos `plusPtr` (56 * (i)) :: Ptr BindAccelerationStructureMemoryInfoNV) (e) . ($ ())) (bindInfos)+  r <- lift $ vkBindAccelerationStructureMemoryNV' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (bindInfos)) :: Word32)) (pPBindInfos)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdCopyAccelerationStructureNV+  :: FunPtr (Ptr CommandBuffer_T -> AccelerationStructureNV -> AccelerationStructureNV -> CopyAccelerationStructureModeKHR -> IO ()) -> Ptr CommandBuffer_T -> AccelerationStructureNV -> AccelerationStructureNV -> CopyAccelerationStructureModeKHR -> IO ()++-- | vkCmdCopyAccelerationStructureNV - Copy an acceleration structure+--+-- = Description+--+-- Accesses to @src@ and @dst@ /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>+-- with the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>+-- and an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>+-- of+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'+-- or+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'+-- as appropriate.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdCopyAccelerationStructureNV-mode-03410# @mode@ /must/ be+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR'+--     or+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR'+--+-- -   #VUID-vkCmdCopyAccelerationStructureNV-src-03411# If @mode@ is+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR',+--     @src@ /must/ have been built with+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR'+--+-- -   #VUID-vkCmdCopyAccelerationStructureNV-buffer-03718# The @buffer@+--     used to create @src@ /must/ be bound to device memory+--+-- -   #VUID-vkCmdCopyAccelerationStructureNV-buffer-03719# The @buffer@+--     used to create @dst@ /must/ be bound to device memory+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdCopyAccelerationStructureNV-dst-parameter# @dst@ /must/+--     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureNV'+--     handle+--+-- -   #VUID-vkCmdCopyAccelerationStructureNV-src-parameter# @src@ /must/+--     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureNV'+--     handle+--+-- -   #VUID-vkCmdCopyAccelerationStructureNV-mode-parameter# @mode@ /must/+--     be a valid+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureModeKHR'+--     value+--+-- -   #VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording#+--     @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   #VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdCopyAccelerationStructureNV-renderpass# This command+--     /must/ only be called outside of a render pass instance+--+-- -   #VUID-vkCmdCopyAccelerationStructureNV-commonparent# Each of+--     @commandBuffer@, @dst@, and @src@ /must/ have been created,+--     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureModeKHR'+cmdCopyAccelerationStructureNV :: forall io+                                . (MonadIO io)+                               => -- | @commandBuffer@ is the command buffer into which the command will be+                                  -- recorded.+                                  CommandBuffer+                               -> -- | @dst@ is the target acceleration structure for the copy.+                                  ("dst" ::: AccelerationStructureNV)+                               -> -- | @src@ is the source acceleration structure for the copy.+                                  ("src" ::: AccelerationStructureNV)+                               -> -- | @mode@ is a+                                  -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureModeKHR'+                                  -- value specifying additional operations to perform during the copy.+                                  CopyAccelerationStructureModeKHR+                               -> io ()+cmdCopyAccelerationStructureNV commandBuffer dst src mode = liftIO $ do+  let vkCmdCopyAccelerationStructureNVPtr = pVkCmdCopyAccelerationStructureNV (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdCopyAccelerationStructureNVPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyAccelerationStructureNV is null" Nothing Nothing+  let vkCmdCopyAccelerationStructureNV' = mkVkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNVPtr+  vkCmdCopyAccelerationStructureNV' (commandBufferHandle (commandBuffer)) (dst) (src) (mode)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdWriteAccelerationStructuresPropertiesNV+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureNV -> QueryType -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureNV -> QueryType -> QueryPool -> Word32 -> IO ()++-- | vkCmdWriteAccelerationStructuresPropertiesNV - Write acceleration+-- structure result parameters to query results.+--+-- = Description+--+-- Accesses to any of the acceleration structures listed in+-- @pAccelerationStructures@ /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>+-- with the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>+-- and an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>+-- of+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03755#+--     @queryPool@ /must/ have been created with a @queryType@ matching+--     @queryType@+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03756#+--     The queries identified by @queryPool@ and @firstQuery@ /must/ be+--     /unavailable/+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructure-03757#+--     @accelerationStructure@ /must/ be bound completely and contiguously+--     to a single 'Vulkan.Core10.Handles.DeviceMemory' object via+--     'bindAccelerationStructureMemoryNV'+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructures-03431#+--     All acceleration structures in @pAccelerationStructures@ /must/ have+--     been built with+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR'+--     if @queryType@ is+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-03432#+--     @queryType@ /must/ be+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'+--     or+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-parameter#+--     @pAccelerationStructures@ /must/ be a valid pointer to an array of+--     @accelerationStructureCount@ valid+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' handles+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-parameter#+--     @queryType@ /must/ be a valid+--     'Vulkan.Core10.Enums.QueryType.QueryType' value+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-parameter#+--     @queryPool@ /must/ be a valid 'Vulkan.Core10.Handles.QueryPool'+--     handle+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-recording#+--     @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-cmdpool#+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-renderpass# This+--     command /must/ only be called outside of a render pass instance+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructureCount-arraylength#+--     @accelerationStructureCount@ /must/ be greater than @0@+--+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commonparent#+--     Each of @commandBuffer@, @queryPool@, and the elements of+--     @pAccelerationStructures@ /must/ have been created, allocated, or+--     retrieved from the same 'Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.Handles.QueryPool',+-- 'Vulkan.Core10.Enums.QueryType.QueryType'+cmdWriteAccelerationStructuresPropertiesNV :: forall io+                                            . (MonadIO io)+                                           => -- | @commandBuffer@ is the command buffer into which the command will be+                                              -- recorded.+                                              CommandBuffer+                                           -> -- | @pAccelerationStructures@ is a pointer to an array of existing+                                              -- previously built acceleration structures.+                                              ("accelerationStructures" ::: Vector AccelerationStructureNV)+                                           -> -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value+                                              -- specifying the type of queries managed by the pool.+                                              QueryType+                                           -> -- | @queryPool@ is the query pool that will manage the results of the query.+                                              QueryPool+                                           -> -- | @firstQuery@ is the first query index within the query pool that will+                                              -- contain the @accelerationStructureCount@ number of results.+                                              ("firstQuery" ::: Word32)+                                           -> io ()+cmdWriteAccelerationStructuresPropertiesNV commandBuffer accelerationStructures queryType queryPool firstQuery = liftIO . evalContT $ do+  let vkCmdWriteAccelerationStructuresPropertiesNVPtr = pVkCmdWriteAccelerationStructuresPropertiesNV (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdWriteAccelerationStructuresPropertiesNVPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteAccelerationStructuresPropertiesNV is null" Nothing Nothing+  let vkCmdWriteAccelerationStructuresPropertiesNV' = mkVkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNVPtr+  pPAccelerationStructures <- ContT $ allocaBytesAligned @AccelerationStructureNV ((Data.Vector.length (accelerationStructures)) * 8) 8+  lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures `plusPtr` (8 * (i)) :: Ptr AccelerationStructureNV) (e)) (accelerationStructures)+  lift $ vkCmdWriteAccelerationStructuresPropertiesNV' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32)) (pPAccelerationStructures) (queryType) (queryPool) (firstQuery)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdBuildAccelerationStructureNV+  :: FunPtr (Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureNV -> AccelerationStructureNV -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureNV -> AccelerationStructureNV -> Buffer -> DeviceSize -> IO ()++-- | vkCmdBuildAccelerationStructureNV - Build an acceleration structure+--+-- = Description+--+-- Accesses to @dst@, @src@, and @scratch@ /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>+-- with the+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>+-- and an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>+-- of+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'+-- or+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241#+--     @geometryCount@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxGeometryCount@+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-dst-02488# @dst@ /must/ have+--     been created with compatible 'AccelerationStructureInfoNV' where+--     'AccelerationStructureInfoNV'::@type@ and+--     'AccelerationStructureInfoNV'::@flags@ are identical,+--     'AccelerationStructureInfoNV'::@instanceCount@ and+--     'AccelerationStructureInfoNV'::@geometryCount@ for @dst@ are greater+--     than or equal to the build size and each geometry in+--     'AccelerationStructureInfoNV'::@pGeometries@ for @dst@ has greater+--     than or equal to the number of vertices, indices, and AABBs+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-update-02489# If @update@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE', @src@ /must/ not be+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-update-02490# If @update@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE', @src@ /must/ have been built+--     before with 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV' set+--     in 'AccelerationStructureInfoNV'::@flags@+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-update-02491# If @update@ is+--     'Vulkan.Core10.FundamentalTypes.FALSE', the @size@ member of the+--     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure+--     returned from a call to+--     'getAccelerationStructureMemoryRequirementsNV' with+--     'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@+--     set to @dst@ and+--     'AccelerationStructureMemoryRequirementsInfoNV'::@type@ set to+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'+--     /must/ be less than or equal to the size of @scratch@ minus+--     @scratchOffset@+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-update-02492# If @update@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE', the @size@ member of the+--     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure+--     returned from a call to+--     'getAccelerationStructureMemoryRequirementsNV' with+--     'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@+--     set to @dst@ and+--     'AccelerationStructureMemoryRequirementsInfoNV'::@type@ set to+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'+--     /must/ be less than or equal to the size of @scratch@ minus+--     @scratchOffset@+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-scratch-03522# @scratch@+--     /must/ have been created with 'BUFFER_USAGE_RAY_TRACING_BIT_NV'+--     usage flag+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-instanceData-03523# If+--     @instanceData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @instanceData@ /must/ have been created with+--     'BUFFER_USAGE_RAY_TRACING_BIT_NV' usage flag+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-accelerationStructureReference-03786#+--     Each+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureInstanceKHR'::@accelerationStructureReference@+--     value in @instanceData@ /must/ be a valid device address containing+--     a value obtained from 'getAccelerationStructureHandleNV'+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-update-03524# If @update@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE', then objects that were+--     previously active /must/ not be made inactive as per+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims>+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-update-03525# If @update@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE', then objects that were+--     previously inactive /must/ not be made active as per+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims>+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-update-03526# If @update@ is+--     'Vulkan.Core10.FundamentalTypes.TRUE', the @src@ and @dst@ objects+--     /must/ either be the same object or not have any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter#+--     @commandBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter# @pInfo@+--     /must/ be a valid pointer to a valid 'AccelerationStructureInfoNV'+--     structure+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter# If+--     @instanceData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @instanceData@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'+--     handle+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-dst-parameter# @dst@ /must/+--     be a valid 'Vulkan.Extensions.Handles.AccelerationStructureNV'+--     handle+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-src-parameter# If @src@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @src@ /must/ be a+--     valid 'Vulkan.Extensions.Handles.AccelerationStructureNV' handle+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter# @scratch@+--     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording#+--     @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-renderpass# This command+--     /must/ only be called outside of a render pass instance+--+-- -   #VUID-vkCmdBuildAccelerationStructureNV-commonparent# Each of+--     @commandBuffer@, @dst@, @instanceData@, @scratch@, and @src@ that+--     are valid handles of non-ignored parameters /must/ have been+--     created, allocated, or retrieved from the same+--     'Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'AccelerationStructureInfoNV',+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'Vulkan.Core10.Handles.Buffer',+-- 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'+cmdBuildAccelerationStructureNV :: forall io+                                 . (MonadIO io)+                                => -- | @commandBuffer@ is the command buffer into which the command will be+                                   -- recorded.+                                   CommandBuffer+                                -> -- | @pInfo@ contains the shared information for the acceleration structure’s+                                   -- structure.+                                   AccelerationStructureInfoNV+                                -> -- | @instanceData@ is the buffer containing an array of+                                   -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureInstanceKHR'+                                   -- structures defining acceleration structures. This parameter /must/ be+                                   -- @NULL@ for bottom level acceleration structures.+                                   ("instanceData" ::: Buffer)+                                -> -- | @instanceOffset@ is the offset in bytes (relative to the start of+                                   -- @instanceData@) at which the instance data is located.+                                   ("instanceOffset" ::: DeviceSize)+                                -> -- | @update@ specifies whether to update the @dst@ acceleration structure+                                   -- with the data in @src@.+                                   ("update" ::: Bool)+                                -> -- | @dst@ is a pointer to the target acceleration structure for the build.+                                   ("dst" ::: AccelerationStructureNV)+                                -> -- | @src@ is a pointer to an existing acceleration structure that is to be+                                   -- used to update the @dst@ acceleration structure.+                                   ("src" ::: AccelerationStructureNV)+                                -> -- | @scratch@ is the 'Vulkan.Core10.Handles.Buffer' that will be used as+                                   -- scratch memory for the build.+                                   ("scratch" ::: Buffer)+                                -> -- | @scratchOffset@ is the offset in bytes relative to the start of+                                   -- @scratch@ that will be used as a scratch memory.+                                   ("scratchOffset" ::: DeviceSize)+                                -> io ()+cmdBuildAccelerationStructureNV commandBuffer info instanceData instanceOffset update dst src scratch scratchOffset = liftIO . evalContT $ do+  let vkCmdBuildAccelerationStructureNVPtr = pVkCmdBuildAccelerationStructureNV (deviceCmds (commandBuffer :: CommandBuffer))+  lift $ unless (vkCmdBuildAccelerationStructureNVPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBuildAccelerationStructureNV is null" Nothing Nothing+  let vkCmdBuildAccelerationStructureNV' = mkVkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNVPtr+  pInfo <- ContT $ withCStruct (info)+  lift $ vkCmdBuildAccelerationStructureNV' (commandBufferHandle (commandBuffer)) pInfo (instanceData) (instanceOffset) (boolToBool32 (update)) (dst) (src) (scratch) (scratchOffset)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdTraceRaysNV+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()++-- | vkCmdTraceRaysNV - Initialize a ray tracing dispatch+--+-- = Description+--+-- When the command is executed, a ray generation group of @width@ ×+-- @height@ × @depth@ rays is assembled.+--+-- == Valid Usage+--+-- -   #VUID-vkCmdTraceRaysNV-magFilter-04553# If a+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and+--     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is+--     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of+--     this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- -   #VUID-vkCmdTraceRaysNV-None-02691# If a+--     'Vulkan.Core10.Handles.ImageView' is accessed using atomic+--     operations as a result of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- -   #VUID-vkCmdTraceRaysNV-None-02692# If a+--     'Vulkan.Core10.Handles.ImageView' is sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result+--     of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   #VUID-vkCmdTraceRaysNV-filterCubic-02694# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result+--     of this command /must/ have a+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that+--     supports cubic filtering, as specified by+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+--     returned by+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   #VUID-vkCmdTraceRaysNV-filterCubicMinmax-02695# Any+--     'Vulkan.Core10.Handles.ImageView' being sampled with+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a+--     reduction mode of either+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+--     or+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+--     as a result of this command /must/ have a+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that+--     supports cubic filtering together with minmax filtering, as+--     specified by+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+--     returned by+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   #VUID-vkCmdTraceRaysNV-flags-02696# Any+--     'Vulkan.Core10.Handles.Image' created with a+--     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+--     sampled as a result of this command /must/ only be sampled using a+--     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'+--+-- -   #VUID-vkCmdTraceRaysNV-None-02697# For each set /n/ that is+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the+--     pipeline bind point used by this command, a descriptor set /must/+--     have been bound to /n/ at the same pipeline bind point, with a+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set+--     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to create+--     the current 'Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   #VUID-vkCmdTraceRaysNV-None-02698# For each push constant that is+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the+--     pipeline bind point used by this command, a push constant value+--     /must/ have been set for the same pipeline bind point, with a+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push+--     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to+--     create the current 'Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   #VUID-vkCmdTraceRaysNV-None-02699# Descriptors in each bound+--     descriptor set, specified via+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/+--     be valid if they are statically used by the+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point+--     used by this command+--+-- -   #VUID-vkCmdTraceRaysNV-None-02700# A valid pipeline /must/ be bound+--     to the pipeline bind point used by this command+--+-- -   #VUID-vkCmdTraceRaysNV-commandBuffer-02701# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command requires any dynamic state, that state+--     /must/ have been set for @commandBuffer@, and done so after any+--     previously bound pipeline with the corresponding state not specified+--     as dynamic+--+-- -   #VUID-vkCmdTraceRaysNV-None-02859# There /must/ not have been any+--     calls to dynamic state setting commands for any state not specified+--     as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object bound to+--     the pipeline bind point used by this command, since that pipeline+--     was bound+--+-- -   #VUID-vkCmdTraceRaysNV-None-02702# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+--     coordinates, that sampler /must/ not be used to sample from any+--     'Vulkan.Core10.Handles.Image' with a+--     'Vulkan.Core10.Handles.ImageView' of the type+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in+--     any shader stage+--+-- -   #VUID-vkCmdTraceRaysNV-None-02703# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+--     coordinates, that sampler /must/ not be used with any of the SPIR-V+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with+--     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage+--+-- -   #VUID-vkCmdTraceRaysNV-None-02704# If the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command accesses a+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized+--     coordinates, that sampler /must/ not be used with any of the SPIR-V+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that+--     includes a LOD bias or any offset values, in any shader stage+--+-- -   #VUID-vkCmdTraceRaysNV-None-02705# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a uniform buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdTraceRaysNV-None-02706# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'+--     object bound to the pipeline bind point used by this command+--     accesses a storage buffer, it /must/ not access values outside of+--     the range of the buffer as specified in the descriptor set bound to+--     the same pipeline bind point+--+-- -   #VUID-vkCmdTraceRaysNV-commandBuffer-02707# If @commandBuffer@ is an+--     unprotected command buffer, any resource accessed by the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command /must/ not be a protected resource+--+-- -   #VUID-vkCmdTraceRaysNV-None-04115# If a+--     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@+--     as a result of this command, then the @Type@ of the @Texel@ operand+--     of that instruction /must/ have at least as many components as the+--     image view’s format.+--+-- -   #VUID-vkCmdTraceRaysNV-OpImageWrite-04469# If a+--     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@+--     as a result of this command, then the @Type@ of the @Texel@ operand+--     of that instruction /must/ have at least as many components as the+--     image view’s format.+--+-- -   #VUID-vkCmdTraceRaysNV-SampledType-04470# If a+--     'Vulkan.Core10.Handles.ImageView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width+--     is accessed as a result of this command, the @SampledType@ of the+--     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of+--     64.+--+-- -   #VUID-vkCmdTraceRaysNV-SampledType-04471# If a+--     'Vulkan.Core10.Handles.ImageView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a channel width less+--     than 64-bit is accessed as a result of this command, the+--     @SampledType@ of the @OpTypeImage@ operand of that instruction+--     /must/ have a @Width@ of 32.+--+-- -   #VUID-vkCmdTraceRaysNV-SampledType-04472# If a+--     'Vulkan.Core10.Handles.BufferView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit channel width+--     is accessed as a result of this command, the @SampledType@ of the+--     @OpTypeImage@ operand of that instruction /must/ have a @Width@ of+--     64.+--+-- -   #VUID-vkCmdTraceRaysNV-SampledType-04473# If a+--     'Vulkan.Core10.Handles.BufferView' with a+--     'Vulkan.Core10.Enums.Format.Format' that has a channel width less+--     than 64-bit is accessed as a result of this command, the+--     @SampledType@ of the @OpTypeImage@ operand of that instruction+--     /must/ have a @Width@ of 32.+--+-- -   #VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04474# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>+--     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects+--     created with the+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+--     flag /must/ not be accessed by atomic instructions through an+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this+--     command.+--+-- -   #VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04475# If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>+--     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects+--     created with the+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'+--     flag /must/ not be accessed by atomic instructions through an+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this+--     command.+--+-- -   #VUID-vkCmdTraceRaysNV-None-03429# Any shader group handle+--     referenced by this call /must/ have been queried from the currently+--     bound ray tracing shader pipeline+--+-- -   #VUID-vkCmdTraceRaysNV-commandBuffer-02712# If @commandBuffer@ is a+--     protected command buffer, any resource written to by the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point used by this command /must/ not be an unprotected resource+--+-- -   #VUID-vkCmdTraceRaysNV-commandBuffer-02713# If @commandBuffer@ is a+--     protected command buffer, pipeline stages other than the+--     framebuffer-space and compute stages in the+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind+--     point /must/ not write to any resource+--+-- -   #VUID-vkCmdTraceRaysNV-maxRecursionDepth-03625# This command /must/+--     not cause a trace ray instruction to be executed from a shader+--     invocation with a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth recursion depth>+--     greater than the value of @maxRecursionDepth@ used to create the+--     bound ray tracing pipeline+--+-- -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-04042# If+--     @raygenShaderBindingTableBuffer@ is non-sparse then it /must/ be+--     bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455#+--     @raygenShaderBindingOffset@ /must/ be less than the size of+--     @raygenShaderBindingTableBuffer@+--+-- -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456#+--     @raygenShaderBindingOffset@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@+--+-- -   #VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-04043# If+--     @missShaderBindingTableBuffer@ is non-sparse then it /must/ be bound+--     completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457#+--     @missShaderBindingOffset@ /must/ be less than the size of+--     @missShaderBindingTableBuffer@+--+-- -   #VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458#+--     @missShaderBindingOffset@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@+--+-- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-04044# If+--     @hitShaderBindingTableBuffer@ is non-sparse then it /must/ be bound+--     completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459#+--     @hitShaderBindingOffset@ /must/ be less than the size of+--     @hitShaderBindingTableBuffer@+--+-- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460#+--     @hitShaderBindingOffset@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@+--+-- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-04045# If+--     @callableShaderBindingTableBuffer@ is non-sparse then it /must/ be+--     bound completely and contiguously to a single+--     'Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461#+--     @callableShaderBindingOffset@ /must/ be less than the size of+--     @callableShaderBindingTableBuffer@+--+-- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462#+--     @callableShaderBindingOffset@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@+--+-- -   #VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463#+--     @missShaderBindingStride@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@+--+-- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464#+--     @hitShaderBindingStride@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@+--+-- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465#+--     @callableShaderBindingStride@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@+--+-- -   #VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466#+--     @missShaderBindingStride@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@+--+-- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467#+--     @hitShaderBindingStride@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@+--+-- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468#+--     @callableShaderBindingStride@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@+--+-- -   #VUID-vkCmdTraceRaysNV-width-02469# @width@ /must/ be less than or+--     equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]+--+-- -   #VUID-vkCmdTraceRaysNV-height-02470# @height@ /must/ be less than or+--     equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]+--+-- -   #VUID-vkCmdTraceRaysNV-depth-02471# @depth@ /must/ be less than or+--     equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCmdTraceRaysNV-commandBuffer-parameter# @commandBuffer@+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   #VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter#+--     @raygenShaderBindingTableBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter# If+--     @missShaderBindingTableBuffer@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @missShaderBindingTableBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter# If+--     @hitShaderBindingTableBuffer@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @hitShaderBindingTableBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter#+--     If @callableShaderBindingTableBuffer@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @callableShaderBindingTableBuffer@ /must/ be a valid+--     'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-vkCmdTraceRaysNV-commandBuffer-recording# @commandBuffer@+--     /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   #VUID-vkCmdTraceRaysNV-commandBuffer-cmdpool# The+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was+--     allocated from /must/ support compute operations+--+-- -   #VUID-vkCmdTraceRaysNV-renderpass# This command /must/ only be+--     called outside of a render pass instance+--+-- -   #VUID-vkCmdTraceRaysNV-commonparent# Each of+--     @callableShaderBindingTableBuffer@, @commandBuffer@,+--     @hitShaderBindingTableBuffer@, @missShaderBindingTableBuffer@, and+--     @raygenShaderBindingTableBuffer@ that are valid handles of+--     non-ignored parameters /must/ have been created, allocated, or+--     retrieved from the same 'Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'+cmdTraceRaysNV :: forall io+                . (MonadIO io)+               => -- | @commandBuffer@ is the command buffer into which the command will be+                  -- recorded.+                  CommandBuffer+               -> -- | @raygenShaderBindingTableBuffer@ is the buffer object that holds the+                  -- shader binding table data for the ray generation shader stage.+                  ("raygenShaderBindingTableBuffer" ::: Buffer)+               -> -- | @raygenShaderBindingOffset@ is the offset in bytes (relative to+                  -- @raygenShaderBindingTableBuffer@) of the ray generation shader being+                  -- used for the trace.+                  ("raygenShaderBindingOffset" ::: DeviceSize)+               -> -- | @missShaderBindingTableBuffer@ is the buffer object that holds the+                  -- shader binding table data for the miss shader stage.+                  ("missShaderBindingTableBuffer" ::: Buffer)+               -> -- | @missShaderBindingOffset@ is the offset in bytes (relative to+                  -- @missShaderBindingTableBuffer@) of the miss shader being used for the+                  -- trace.+                  ("missShaderBindingOffset" ::: DeviceSize)+               -> -- | @missShaderBindingStride@ is the size in bytes of each shader binding+                  -- table record in @missShaderBindingTableBuffer@.+                  ("missShaderBindingStride" ::: DeviceSize)+               -> -- | @hitShaderBindingTableBuffer@ is the buffer object that holds the shader+                  -- binding table data for the hit shader stages.+                  ("hitShaderBindingTableBuffer" ::: Buffer)+               -> -- | @hitShaderBindingOffset@ is the offset in bytes (relative to+                  -- @hitShaderBindingTableBuffer@) of the hit shader group being used for+                  -- the trace.+                  ("hitShaderBindingOffset" ::: DeviceSize)+               -> -- | @hitShaderBindingStride@ is the size in bytes of each shader binding+                  -- table record in @hitShaderBindingTableBuffer@.+                  ("hitShaderBindingStride" ::: DeviceSize)+               -> -- | @callableShaderBindingTableBuffer@ is the buffer object that holds the+                  -- shader binding table data for the callable shader stage.+                  ("callableShaderBindingTableBuffer" ::: Buffer)+               -> -- | @callableShaderBindingOffset@ is the offset in bytes (relative to+                  -- @callableShaderBindingTableBuffer@) of the callable shader being used+                  -- for the trace.+                  ("callableShaderBindingOffset" ::: DeviceSize)+               -> -- | @callableShaderBindingStride@ is the size in bytes of each shader+                  -- binding table record in @callableShaderBindingTableBuffer@.+                  ("callableShaderBindingStride" ::: DeviceSize)+               -> -- | @width@ is the width of the ray trace query dimensions.+                  ("width" ::: Word32)+               -> -- | @height@ is height of the ray trace query dimensions.+                  ("height" ::: Word32)+               -> -- | @depth@ is depth of the ray trace query dimensions.+                  ("depth" ::: Word32)+               -> io ()+cmdTraceRaysNV commandBuffer raygenShaderBindingTableBuffer raygenShaderBindingOffset missShaderBindingTableBuffer missShaderBindingOffset missShaderBindingStride hitShaderBindingTableBuffer hitShaderBindingOffset hitShaderBindingStride callableShaderBindingTableBuffer callableShaderBindingOffset callableShaderBindingStride width height depth = liftIO $ do+  let vkCmdTraceRaysNVPtr = pVkCmdTraceRaysNV (deviceCmds (commandBuffer :: CommandBuffer))+  unless (vkCmdTraceRaysNVPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdTraceRaysNV is null" Nothing Nothing+  let vkCmdTraceRaysNV' = mkVkCmdTraceRaysNV vkCmdTraceRaysNVPtr+  vkCmdTraceRaysNV' (commandBufferHandle (commandBuffer)) (raygenShaderBindingTableBuffer) (raygenShaderBindingOffset) (missShaderBindingTableBuffer) (missShaderBindingOffset) (missShaderBindingStride) (hitShaderBindingTableBuffer) (hitShaderBindingOffset) (hitShaderBindingStride) (callableShaderBindingTableBuffer) (callableShaderBindingOffset) (callableShaderBindingStride) (width) (height) (depth)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetAccelerationStructureHandleNV+  :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> AccelerationStructureNV -> CSize -> Ptr () -> IO Result++-- | vkGetAccelerationStructureHandleNV - Get opaque acceleration structure+-- handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Vulkan.Core10.Handles.Device'+getAccelerationStructureHandleNV :: forall io+                                  . (MonadIO io)+                                 => -- | @device@ is the logical device that owns the acceleration structures.+                                    --+                                    -- #VUID-vkGetAccelerationStructureHandleNV-device-parameter# @device@+                                    -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+                                    Device+                                 -> -- | @accelerationStructure@ is the acceleration structure.+                                    --+                                    -- #VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-02787#+                                    -- @accelerationStructure@ /must/ be bound completely and contiguously to a+                                    -- single 'Vulkan.Core10.Handles.DeviceMemory' object via+                                    -- 'bindAccelerationStructureMemoryNV'+                                    --+                                    -- #VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter#+                                    -- @accelerationStructure@ /must/ be a valid+                                    -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' handle+                                    --+                                    -- #VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent#+                                    -- @accelerationStructure@ /must/ have been created, allocated, or+                                    -- retrieved from @device@+                                    AccelerationStructureNV+                                 -> -- | @dataSize@ is the size in bytes of the buffer pointed to by @pData@.+                                    --+                                    -- #VUID-vkGetAccelerationStructureHandleNV-dataSize-02240# @dataSize@+                                    -- /must/ be large enough to contain the result of the query, as described+                                    -- above+                                    --+                                    -- #VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength#+                                    -- @dataSize@ /must/ be greater than @0@+                                    ("dataSize" ::: Word64)+                                 -> -- | @pData@ is a pointer to a user-allocated buffer where the results will+                                    -- be written.+                                    --+                                    -- #VUID-vkGetAccelerationStructureHandleNV-pData-parameter# @pData@ /must/+                                    -- be a valid pointer to an array of @dataSize@ bytes+                                    ("data" ::: Ptr ())+                                 -> io ()+getAccelerationStructureHandleNV device accelerationStructure dataSize data' = liftIO $ do+  let vkGetAccelerationStructureHandleNVPtr = pVkGetAccelerationStructureHandleNV (deviceCmds (device :: Device))+  unless (vkGetAccelerationStructureHandleNVPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureHandleNV is null" Nothing Nothing+  let vkGetAccelerationStructureHandleNV' = mkVkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNVPtr+  r <- vkGetAccelerationStructureHandleNV' (deviceHandle (device)) (accelerationStructure) (CSize (dataSize)) (data')+  when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCreateRayTracingPipelinesNV+  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoNV) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (SomeStruct RayTracingPipelineCreateInfoNV) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result++-- | vkCreateRayTracingPipelinesNV - Creates a new ray tracing pipeline+-- object+--+-- == Valid Usage+--+-- -   #VUID-vkCreateRayTracingPipelinesNV-flags-03415# If the @flags@+--     member of any element of @pCreateInfos@ contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and the @basePipelineIndex@ member of that same element is not+--     @-1@, @basePipelineIndex@ /must/ be less than the index into+--     @pCreateInfos@ that corresponds to that element+--+-- -   #VUID-vkCreateRayTracingPipelinesNV-flags-03416# If the @flags@+--     member of any element of @pCreateInfos@ contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, the base pipeline /must/ have been created with the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'+--     flag set+--+-- -   #VUID-vkCreateRayTracingPipelinesNV-flags-03816# @flags@ /must/ not+--     contain the+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.PIPELINE_CREATE_DISPATCH_BASE'+--     flag+--+-- -   #VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903# If+--     @pipelineCache@ was created with+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT',+--     host access to @pipelineCache@ /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-vkCreateRayTracingPipelinesNV-device-parameter# @device@+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle+--+-- -   #VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter# If+--     @pipelineCache@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @pipelineCache@ /must/ be a valid+--     'Vulkan.Core10.Handles.PipelineCache' handle+--+-- -   #VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter#+--     @pCreateInfos@ /must/ be a valid pointer to an array of+--     @createInfoCount@ valid 'RayTracingPipelineCreateInfoNV' structures+--+-- -   #VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter# If+--     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer+--     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   #VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter#+--     @pPipelines@ /must/ be a valid pointer to an array of+--     @createInfoCount@ 'Vulkan.Core10.Handles.Pipeline' handles+--+-- -   #VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength#+--     @createInfoCount@ /must/ be greater than @0@+--+-- -   #VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent# If+--     @pipelineCache@ is a valid handle, it /must/ have been created,+--     allocated, or retrieved from @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'+--+-- = See Also+--+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Pipeline',+-- 'Vulkan.Core10.Handles.PipelineCache', 'RayTracingPipelineCreateInfoNV'+createRayTracingPipelinesNV :: forall io+                             . (MonadIO io)+                            => -- | @device@ is the logical device that creates the ray tracing pipelines.+                               Device+                            -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',+                               -- indicating that pipeline caching is disabled, or the handle of a valid+                               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache pipeline cache>+                               -- object, in which case use of that cache is enabled for the duration of+                               -- the command.+                               PipelineCache+                            -> -- | @pCreateInfos@ is a pointer to an array of+                               -- 'RayTracingPipelineCreateInfoNV' structures.+                               ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))+                            -> -- | @pAllocator@ controls host memory allocation as described in the+                               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+                               -- chapter.+                               ("allocator" ::: Maybe AllocationCallbacks)+                            -> io (Result, ("pipelines" ::: Vector Pipeline))+createRayTracingPipelinesNV device pipelineCache createInfos allocator = liftIO . evalContT $ do+  let vkCreateRayTracingPipelinesNVPtr = pVkCreateRayTracingPipelinesNV (deviceCmds (device :: Device))+  lift $ unless (vkCreateRayTracingPipelinesNVPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateRayTracingPipelinesNV is null" Nothing Nothing+  let vkCreateRayTracingPipelinesNV' = mkVkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNVPtr+  pPCreateInfos <- ContT $ allocaBytesAligned @(RayTracingPipelineCreateInfoNV _) ((Data.Vector.length (createInfos)) * 80) 8+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPCreateInfos `plusPtr` (80 * (i)) :: Ptr (RayTracingPipelineCreateInfoNV _))) (e) . ($ ())) (createInfos)+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free+  r <- lift $ vkCreateRayTracingPipelinesNV' (deviceHandle (device)) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (forgetExtensions (pPCreateInfos)) pAllocator (pPPipelines)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))+  pure $ (r, pPipelines)++-- | A convenience wrapper to make a compatible pair of calls to+-- 'createRayTracingPipelinesNV' and 'destroyPipeline'+--+-- To ensure that 'destroyPipeline' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the last argument.+-- To just extract the pair pass '(,)' as the last argument.+--+withRayTracingPipelinesNV :: forall io r . MonadIO io => Device -> PipelineCache -> Vector (SomeStruct RayTracingPipelineCreateInfoNV) -> Maybe AllocationCallbacks -> (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> r+withRayTracingPipelinesNV device pipelineCache pCreateInfos pAllocator b =+  b (createRayTracingPipelinesNV device pipelineCache pCreateInfos pAllocator)+    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device o1Elem pAllocator) o1)+++-- No documentation found for TopLevel "VK_SHADER_STAGE_RAYGEN_BIT_NV"+pattern SHADER_STAGE_RAYGEN_BIT_NV = SHADER_STAGE_RAYGEN_BIT_KHR+++-- No documentation found for TopLevel "VK_SHADER_STAGE_ANY_HIT_BIT_NV"+pattern SHADER_STAGE_ANY_HIT_BIT_NV = SHADER_STAGE_ANY_HIT_BIT_KHR+++-- No documentation found for TopLevel "VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV"+pattern SHADER_STAGE_CLOSEST_HIT_BIT_NV = SHADER_STAGE_CLOSEST_HIT_BIT_KHR+++-- No documentation found for TopLevel "VK_SHADER_STAGE_MISS_BIT_NV"+pattern SHADER_STAGE_MISS_BIT_NV = SHADER_STAGE_MISS_BIT_KHR+++-- No documentation found for TopLevel "VK_SHADER_STAGE_INTERSECTION_BIT_NV"+pattern SHADER_STAGE_INTERSECTION_BIT_NV = SHADER_STAGE_INTERSECTION_BIT_KHR+++-- No documentation found for TopLevel "VK_SHADER_STAGE_CALLABLE_BIT_NV"+pattern SHADER_STAGE_CALLABLE_BIT_NV = SHADER_STAGE_CALLABLE_BIT_KHR+++-- No documentation found for TopLevel "VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV"+pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR+++-- No documentation found for TopLevel "VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV"+pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR+++-- No documentation found for TopLevel "VK_BUFFER_USAGE_RAY_TRACING_BIT_NV"+pattern BUFFER_USAGE_RAY_TRACING_BIT_NV = BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR+++-- No documentation found for TopLevel "VK_PIPELINE_BIND_POINT_RAY_TRACING_NV"+pattern PIPELINE_BIND_POINT_RAY_TRACING_NV = PIPELINE_BIND_POINT_RAY_TRACING_KHR+++-- No documentation found for TopLevel "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV"+pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR+++-- No documentation found for TopLevel "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV"+pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR+++-- No documentation found for TopLevel "VK_INDEX_TYPE_NONE_NV"+pattern INDEX_TYPE_NONE_NV = INDEX_TYPE_NONE_KHR+++-- No documentation found for TopLevel "VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV"+pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR+++-- No documentation found for TopLevel "VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV"+pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR+++-- No documentation found for TopLevel "VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV"+pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_TYPE_TRIANGLES_NV"+pattern GEOMETRY_TYPE_TRIANGLES_NV = GEOMETRY_TYPE_TRIANGLES_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_TYPE_AABBS_NV"+pattern GEOMETRY_TYPE_AABBS_NV = GEOMETRY_TYPE_AABBS_KHR+++-- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV"+pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR+++-- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV"+pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_OPAQUE_BIT_NV"+pattern GEOMETRY_OPAQUE_BIT_NV = GEOMETRY_OPAQUE_BIT_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV"+pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV"+pattern GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV"+pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV"+pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV"+pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR+++-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV"+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR+++-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV"+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR+++-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV"+pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR+++-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV"+pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR+++-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV"+pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR+++-- No documentation found for TopLevel "VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV"+pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR+++-- No documentation found for TopLevel "VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV"+pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR+++-- No documentation found for TopLevel "VK_SHADER_UNUSED_NV"+pattern SHADER_UNUSED_NV = SHADER_UNUSED_KHR+++-- No documentation found for TopLevel "vkGetRayTracingShaderGroupHandlesNV"+getRayTracingShaderGroupHandlesNV = getRayTracingShaderGroupHandlesKHR+++-- | VkRayTracingShaderGroupCreateInfoNV - Structure specifying shaders in a+-- shader group+--+-- == Valid Usage+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413# If @type@ is+--     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' then @generalShader@+--     /must/ be a valid index into+--     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of+--     'SHADER_STAGE_RAYGEN_BIT_NV', 'SHADER_STAGE_MISS_BIT_NV', or+--     'SHADER_STAGE_CALLABLE_BIT_NV'+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414# If @type@ is+--     'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' then @closestHitShader@,+--     @anyHitShader@, and @intersectionShader@ /must/ be+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415# If @type@ is+--     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV' then+--     @intersectionShader@ /must/ be a valid index into+--     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of+--     'SHADER_STAGE_INTERSECTION_BIT_NV'+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416# If @type@ is+--     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' then+--     @intersectionShader@ /must/ be+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417#+--     @closestHitShader@ /must/ be either+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' or a valid index into+--     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of+--     'SHADER_STAGE_CLOSEST_HIT_BIT_NV'+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418#+--     @anyHitShader@ /must/ be either+--     'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' or a valid index into+--     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of+--     'SHADER_STAGE_ANY_HIT_BIT_NV'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV'+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext# @pNext@+--     /must/ be @NULL@+--+-- -   #VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter# @type@+--     /must/ be a valid+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingShaderGroupTypeKHR'+--     value+--+-- = See Also+--+-- 'RayTracingPipelineCreateInfoNV',+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingShaderGroupTypeKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data RayTracingShaderGroupCreateInfoNV = RayTracingShaderGroupCreateInfoNV+  { -- | @type@ is the type of hit group specified in this structure.+    type' :: RayTracingShaderGroupTypeKHR+  , -- | @generalShader@ is the index of the ray generation, miss, or callable+    -- shader from 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if+    -- the shader group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV', and+    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.+    generalShader :: Word32+  , -- | @closestHitShader@ is the optional index of the closest hit shader from+    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader+    -- group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' or+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV', and+    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.+    closestHitShader :: Word32+  , -- | @anyHitShader@ is the optional index of the any-hit shader from+    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader+    -- group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' or+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV', and+    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.+    anyHitShader :: Word32+  , -- | @intersectionShader@ is the index of the intersection shader from+    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader+    -- group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV', and+    -- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.+    intersectionShader :: Word32+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (RayTracingShaderGroupCreateInfoNV)+#endif+deriving instance Show RayTracingShaderGroupCreateInfoNV++instance ToCStruct RayTracingShaderGroupCreateInfoNV where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p RayTracingShaderGroupCreateInfoNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (type')+    poke ((p `plusPtr` 20 :: Ptr Word32)) (generalShader)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (closestHitShader)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (anyHitShader)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (intersectionShader)+    f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+    f++instance FromCStruct RayTracingShaderGroupCreateInfoNV where+  peekCStruct p = do+    type' <- peek @RayTracingShaderGroupTypeKHR ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR))+    generalShader <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    closestHitShader <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    anyHitShader <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    intersectionShader <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    pure $ RayTracingShaderGroupCreateInfoNV+             type' generalShader closestHitShader anyHitShader intersectionShader++instance Storable RayTracingShaderGroupCreateInfoNV where+  sizeOf ~_ = 40+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero RayTracingShaderGroupCreateInfoNV where+  zero = RayTracingShaderGroupCreateInfoNV+           zero+           zero+           zero+           zero+           zero+++-- | VkRayTracingPipelineCreateInfoNV - Structure specifying parameters of a+-- newly created ray tracing pipeline+--+-- = Description+--+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are+-- described in more detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.+--+-- == Valid Usage+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03421# If @flags@+--     contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineIndex@ is @-1@, @basePipelineHandle@ /must/+--     be a valid handle to a ray tracing 'Vulkan.Core10.Handles.Pipeline'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03422# If @flags@+--     contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineHandle@ is+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/+--     be a valid index into the calling command’s @pCreateInfos@ parameter+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03423# If @flags@+--     contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineIndex@ is not @-1@, @basePipelineHandle@+--     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03424# If @flags@+--     contains the+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineHandle@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @basePipelineIndex@ /must/+--     be @-1@+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-pStages-03426# The shader+--     code for the entry points identified by @pStages@, and the rest of+--     the state identified by this structure /must/ adhere to the pipeline+--     linking rules described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>+--     chapter+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-03427# @layout@ /must/+--     be+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>+--     with all shaders specified in @pStages@+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-03428# The number of+--     resources in @layout@ accessible to each shader stage that is used+--     by the pipeline /must/ be less than or equal to+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-02904# @flags@ /must/+--     not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-pipelineCreationCacheControl-02905#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>+--     feature is not enabled, @flags@ /must/ not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'+--     or+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-stage-03425# The @stage@+--     member of at least one element of @pStages@ /must/ be+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03456# @flags@ /must/+--     not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-03457#+--     @maxRecursionDepth@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxRecursionDepth@+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03458# @flags@ /must/+--     not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03459# @flags@ /must/+--     not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03460# @flags@ /must/+--     not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03461# @flags@ /must/+--     not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03462# @flags@ /must/+--     not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03463# @flags@ /must/+--     not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-03588# @flags@ /must/+--     not include+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-02957# @flags@ /must/+--     not include both+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'+--     and+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'+--     at the same time+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-sType-sType# @sType@ /must/+--     be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext# @pNext@ /must/+--     be @NULL@ or a pointer to a valid instance of+--     'Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT'+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-sType-unique# The @sType@+--     value of each struct in the @pNext@ chain /must/ be unique+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter# @flags@+--     /must/ be a valid combination of+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+--     values+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter# @pStages@+--     /must/ be a valid pointer to an array of @stageCount@ valid+--     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter# @pGroups@+--     /must/ be a valid pointer to an array of @groupCount@ valid+--     'RayTracingShaderGroupCreateInfoNV' structures+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter# @layout@+--     /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength#+--     @stageCount@ /must/ be greater than @0@+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength#+--     @groupCount@ /must/ be greater than @0@+--+-- -   #VUID-VkRayTracingPipelineCreateInfoNV-commonparent# Both of+--     @basePipelineHandle@, and @layout@ that are valid handles of+--     non-ignored parameters /must/ have been created, allocated, or+--     retrieved from the same 'Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.Pipeline',+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',+-- 'Vulkan.Core10.Handles.PipelineLayout',+-- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',+-- 'RayTracingShaderGroupCreateInfoNV',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createRayTracingPipelinesNV'+data RayTracingPipelineCreateInfoNV (es :: [Type]) = RayTracingPipelineCreateInfoNV+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.+    next :: Chain es+  , -- | @flags@ is a bitmask of+    -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+    -- specifying how the pipeline will be generated.+    flags :: PipelineCreateFlags+  , -- | @pStages@ is an array of size @stageCount@ structures of type+    -- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' describing the+    -- set of the shader stages to be included in the ray tracing pipeline.+    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)+  , -- | @pGroups@ is an array of size @groupCount@ structures of type+    -- 'RayTracingShaderGroupCreateInfoNV' describing the set of the shader+    -- stages to be included in each shader group in the ray tracing pipeline.+    groups :: Vector RayTracingShaderGroupCreateInfoNV+  , -- | @maxRecursionDepth@ is the+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth maximum recursion depth>+    -- of shaders executed by this pipeline.+    maxRecursionDepth :: Word32+  , -- | @layout@ is the description of binding locations used by both the+    -- pipeline and descriptor sets used with the pipeline.+    layout :: PipelineLayout+  , -- | @basePipelineHandle@ is a pipeline to derive from.+    basePipelineHandle :: Pipeline+  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use+    -- as a pipeline to derive from.+    basePipelineIndex :: Int32+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (RayTracingPipelineCreateInfoNV (es :: [Type]))+#endif+deriving instance Show (Chain es) => Show (RayTracingPipelineCreateInfoNV es)++instance Extensible RayTracingPipelineCreateInfoNV where+  extensibleType = STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV+  setNext x next = x{next = next}+  getNext RayTracingPipelineCreateInfoNV{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoNV e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfoEXT = Just f+    | otherwise = Nothing++instance (Extendss RayTracingPipelineCreateInfoNV es, PokeChain es) => ToCStruct (RayTracingPipelineCreateInfoNV es) where+  withCStruct x f = allocaBytesAligned 80 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p RayTracingPipelineCreateInfoNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))+    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (groups)) :: Word32))+    pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoNV ((Data.Vector.length (groups)) * 40) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPGroups' `plusPtr` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV) (e)) (groups)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV))) (pPGroups')+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxRecursionDepth)+    lift $ poke ((p `plusPtr` 56 :: Ptr PipelineLayout)) (layout)+    lift $ poke ((p `plusPtr` 64 :: Ptr Pipeline)) (basePipelineHandle)+    lift $ poke ((p `plusPtr` 72 :: Ptr Int32)) (basePipelineIndex)+    lift $ f+  cStructSize = 80+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (mempty)) * 48) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (mempty)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')+    pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoNV ((Data.Vector.length (mempty)) * 40) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPGroups' `plusPtr` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV) (e)) (mempty)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV))) (pPGroups')+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+    lift $ poke ((p `plusPtr` 56 :: Ptr PipelineLayout)) (zero)+    lift $ poke ((p `plusPtr` 72 :: Ptr Int32)) (zero)+    lift $ f++instance (Extendss RayTracingPipelineCreateInfoNV es, PeekChain es) => FromCStruct (RayTracingPipelineCreateInfoNV es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))+    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo a))))+    pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))+    groupCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    pGroups <- peek @(Ptr RayTracingShaderGroupCreateInfoNV) ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV)))+    pGroups' <- generateM (fromIntegral groupCount) (\i -> peekCStruct @RayTracingShaderGroupCreateInfoNV ((pGroups `advancePtrBytes` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV)))+    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+    layout <- peek @PipelineLayout ((p `plusPtr` 56 :: Ptr PipelineLayout))+    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 64 :: Ptr Pipeline))+    basePipelineIndex <- peek @Int32 ((p `plusPtr` 72 :: Ptr Int32))+    pure $ RayTracingPipelineCreateInfoNV+             next flags pStages' pGroups' maxRecursionDepth layout basePipelineHandle basePipelineIndex++instance es ~ '[] => Zero (RayTracingPipelineCreateInfoNV es) where+  zero = RayTracingPipelineCreateInfoNV+           ()+           zero+           mempty+           mempty+           zero+           zero+           zero+           zero+++-- | VkGeometryTrianglesNV - Structure specifying a triangle geometry in a+-- bottom-level acceleration structure+--+-- = Description+--+-- If @indexType@ is 'INDEX_TYPE_NONE_NV', then this structure describes a+-- set of triangles determined by @vertexCount@. Otherwise, this structure+-- describes a set of indexed triangles determined by @indexCount@.+--+-- == Valid Usage+--+-- -   #VUID-VkGeometryTrianglesNV-vertexOffset-02428# @vertexOffset@+--     /must/ be less than the size of @vertexData@+--+-- -   #VUID-VkGeometryTrianglesNV-vertexOffset-02429# @vertexOffset@+--     /must/ be a multiple of the component size of @vertexFormat@+--+-- -   #VUID-VkGeometryTrianglesNV-vertexFormat-02430# @vertexFormat@+--     /must/ be one of+--     'Vulkan.Core10.Enums.Format.FORMAT_R32G32B32_SFLOAT',+--     'Vulkan.Core10.Enums.Format.FORMAT_R32G32_SFLOAT',+--     'Vulkan.Core10.Enums.Format.FORMAT_R16G16B16_SFLOAT',+--     'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SFLOAT',+--     'Vulkan.Core10.Enums.Format.FORMAT_R16G16_SNORM', or+--     'Vulkan.Core10.Enums.Format.FORMAT_R16G16B16_SNORM'+--+-- -   #VUID-VkGeometryTrianglesNV-vertexStride-03818# @vertexStride@+--     /must/ be less than or equal to 232-1+--+-- -   #VUID-VkGeometryTrianglesNV-indexOffset-02431# @indexOffset@ /must/+--     be less than the size of @indexData@+--+-- -   #VUID-VkGeometryTrianglesNV-indexOffset-02432# @indexOffset@ /must/+--     be a multiple of the element size of @indexType@+--+-- -   #VUID-VkGeometryTrianglesNV-indexType-02433# @indexType@ /must/ be+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or+--     'INDEX_TYPE_NONE_NV'+--+-- -   #VUID-VkGeometryTrianglesNV-indexData-02434# @indexData@ /must/ be+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' if @indexType@ is+--     'INDEX_TYPE_NONE_NV'+--+-- -   #VUID-VkGeometryTrianglesNV-indexData-02435# @indexData@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Buffer' handle if @indexType@ is not+--     'INDEX_TYPE_NONE_NV'+--+-- -   #VUID-VkGeometryTrianglesNV-indexCount-02436# @indexCount@ /must/ be+--     @0@ if @indexType@ is 'INDEX_TYPE_NONE_NV'+--+-- -   #VUID-VkGeometryTrianglesNV-transformOffset-02437# @transformOffset@+--     /must/ be less than the size of @transformData@+--+-- -   #VUID-VkGeometryTrianglesNV-transformOffset-02438# @transformOffset@+--     /must/ be a multiple of @16@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkGeometryTrianglesNV-sType-sType# @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV'+--+-- -   #VUID-VkGeometryTrianglesNV-pNext-pNext# @pNext@ /must/ be @NULL@+--+-- -   #VUID-VkGeometryTrianglesNV-vertexData-parameter# If @vertexData@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @vertexData@ /must/ be+--     a valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-VkGeometryTrianglesNV-vertexFormat-parameter# @vertexFormat@+--     /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value+--+-- -   #VUID-VkGeometryTrianglesNV-indexData-parameter# If @indexData@ is+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @indexData@ /must/ be+--     a valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- -   #VUID-VkGeometryTrianglesNV-indexType-parameter# @indexType@ /must/+--     be a valid 'Vulkan.Core10.Enums.IndexType.IndexType' value+--+-- -   #VUID-VkGeometryTrianglesNV-transformData-parameter# If+--     @transformData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @transformData@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer'+--     handle+--+-- -   #VUID-VkGeometryTrianglesNV-commonparent# Each of @indexData@,+--     @transformData@, and @vertexData@ that are valid handles of+--     non-ignored parameters /must/ have been created, allocated, or+--     retrieved from the same 'Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.Buffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',+-- 'Vulkan.Core10.Enums.Format.Format', 'GeometryDataNV',+-- 'Vulkan.Core10.Enums.IndexType.IndexType',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data GeometryTrianglesNV = GeometryTrianglesNV+  { -- | @vertexData@ is the buffer containing vertex data for this geometry.+    vertexData :: Buffer+  , -- | @vertexOffset@ is the offset in bytes within @vertexData@ containing+    -- vertex data for this geometry.+    vertexOffset :: DeviceSize+  , -- | @vertexCount@ is the number of valid vertices.+    vertexCount :: Word32+  , -- | @vertexStride@ is the stride in bytes between each vertex.+    vertexStride :: DeviceSize+  , -- | @vertexFormat@ is a 'Vulkan.Core10.Enums.Format.Format' describing the+    -- format of each vertex element.+    vertexFormat :: Format+  , -- | @indexData@ is the buffer containing index data for this geometry.+    indexData :: Buffer+  , -- | @indexOffset@ is the offset in bytes within @indexData@ containing index+    -- data for this geometry.+    indexOffset :: DeviceSize+  , -- | @indexCount@ is the number of indices to include in this geometry.+    indexCount :: Word32+  , -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' describing+    -- the format of each index.+    indexType :: IndexType+  , -- | @transformData@ is an optional buffer containing an 'TransformMatrixNV'+    -- structure defining a transformation to be applied to this geometry.+    transformData :: Buffer+  , -- | @transformOffset@ is the offset in bytes in @transformData@ of the+    -- transform information described above.+    transformOffset :: DeviceSize+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (GeometryTrianglesNV)+#endif+deriving instance Show GeometryTrianglesNV++instance ToCStruct GeometryTrianglesNV where+  withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p GeometryTrianglesNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Buffer)) (vertexData)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (vertexOffset)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (vertexCount)+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (vertexStride)+    poke ((p `plusPtr` 48 :: Ptr Format)) (vertexFormat)+    poke ((p `plusPtr` 56 :: Ptr Buffer)) (indexData)+    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (indexOffset)+    poke ((p `plusPtr` 72 :: Ptr Word32)) (indexCount)+    poke ((p `plusPtr` 76 :: Ptr IndexType)) (indexType)+    poke ((p `plusPtr` 80 :: Ptr Buffer)) (transformData)+    poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (transformOffset)+    f+  cStructSize = 96+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 48 :: Ptr Format)) (zero)+    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 72 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 76 :: Ptr IndexType)) (zero)+    poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (zero)+    f++instance FromCStruct GeometryTrianglesNV where+  peekCStruct p = do+    vertexData <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))+    vertexOffset <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+    vertexCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    vertexStride <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))+    vertexFormat <- peek @Format ((p `plusPtr` 48 :: Ptr Format))+    indexData <- peek @Buffer ((p `plusPtr` 56 :: Ptr Buffer))+    indexOffset <- peek @DeviceSize ((p `plusPtr` 64 :: Ptr DeviceSize))+    indexCount <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))+    indexType <- peek @IndexType ((p `plusPtr` 76 :: Ptr IndexType))+    transformData <- peek @Buffer ((p `plusPtr` 80 :: Ptr Buffer))+    transformOffset <- peek @DeviceSize ((p `plusPtr` 88 :: Ptr DeviceSize))+    pure $ GeometryTrianglesNV+             vertexData vertexOffset vertexCount vertexStride vertexFormat indexData indexOffset indexCount indexType transformData transformOffset++instance Storable GeometryTrianglesNV where+  sizeOf ~_ = 96+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero GeometryTrianglesNV where+  zero = GeometryTrianglesNV+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkGeometryAABBNV - Structure specifying axis-aligned bounding box+-- geometry in a bottom-level acceleration structure+--+-- = Description+--+-- The AABB data in memory is six 32-bit floats consisting of the minimum+-- x, y, and z values followed by the maximum x, y, and z values.+--+-- == Valid Usage+--+-- -   #VUID-VkGeometryAABBNV-offset-02439# @offset@ /must/ be less than+--     the size of @aabbData@+--+-- -   #VUID-VkGeometryAABBNV-offset-02440# @offset@ /must/ be a multiple+--     of @8@+--+-- -   #VUID-VkGeometryAABBNV-stride-02441# @stride@ /must/ be a multiple+--     of @8@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkGeometryAABBNV-sType-sType# @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_AABB_NV'+--+-- -   #VUID-VkGeometryAABBNV-pNext-pNext# @pNext@ /must/ be @NULL@+--+-- -   #VUID-VkGeometryAABBNV-aabbData-parameter# If @aabbData@ is not+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @aabbData@ /must/ be a+--     valid 'Vulkan.Core10.Handles.Buffer' handle+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.Buffer',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'GeometryDataNV',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data GeometryAABBNV = GeometryAABBNV+  { -- | @aabbData@ is the buffer containing axis-aligned bounding box data.+    aabbData :: Buffer+  , -- | @numAABBs@ is the number of AABBs in this geometry.+    numAABBs :: Word32+  , -- | @stride@ is the stride in bytes between AABBs in @aabbData@.+    stride :: Word32+  , -- | @offset@ is the offset in bytes of the first AABB in @aabbData@.+    offset :: DeviceSize+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (GeometryAABBNV)+#endif+deriving instance Show GeometryAABBNV++instance ToCStruct GeometryAABBNV where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p GeometryAABBNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_AABB_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Buffer)) (aabbData)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (numAABBs)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (stride)+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)+    f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_AABB_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+    f++instance FromCStruct GeometryAABBNV where+  peekCStruct p = do+    aabbData <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))+    numAABBs <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    stride <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    offset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))+    pure $ GeometryAABBNV+             aabbData numAABBs stride offset++instance Storable GeometryAABBNV where+  sizeOf ~_ = 40+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero GeometryAABBNV where+  zero = GeometryAABBNV+           zero+           zero+           zero+           zero+++-- | VkGeometryDataNV - Structure specifying geometry in a bottom-level+-- acceleration structure+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'GeometryAABBNV', 'GeometryNV', 'GeometryTrianglesNV'+data GeometryDataNV = GeometryDataNV+  { -- | @triangles@ contains triangle data if 'GeometryNV'::@geometryType@ is+    -- 'GEOMETRY_TYPE_TRIANGLES_NV'.+    --+    -- #VUID-VkGeometryDataNV-triangles-parameter# @triangles@ /must/ be a+    -- valid 'GeometryTrianglesNV' structure+    triangles :: GeometryTrianglesNV+  , -- | @aabbs@ contains axis-aligned bounding box data if+    -- 'GeometryNV'::@geometryType@ is 'GEOMETRY_TYPE_AABBS_NV'.+    --+    -- #VUID-VkGeometryDataNV-aabbs-parameter# @aabbs@ /must/ be a valid+    -- 'GeometryAABBNV' structure+    aabbs :: GeometryAABBNV+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (GeometryDataNV)+#endif+deriving instance Show GeometryDataNV++instance ToCStruct GeometryDataNV where+  withCStruct x f = allocaBytesAligned 136 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p GeometryDataNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV)) (triangles)+    poke ((p `plusPtr` 96 :: Ptr GeometryAABBNV)) (aabbs)+    f+  cStructSize = 136+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV)) (zero)+    poke ((p `plusPtr` 96 :: Ptr GeometryAABBNV)) (zero)+    f++instance FromCStruct GeometryDataNV where+  peekCStruct p = do+    triangles <- peekCStruct @GeometryTrianglesNV ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV))+    aabbs <- peekCStruct @GeometryAABBNV ((p `plusPtr` 96 :: Ptr GeometryAABBNV))+    pure $ GeometryDataNV+             triangles aabbs++instance Storable GeometryDataNV where+  sizeOf ~_ = 136+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero GeometryDataNV where+  zero = GeometryDataNV+           zero+           zero+++-- | VkGeometryNV - Structure specifying a geometry in a bottom-level+-- acceleration structure+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureInfoNV', 'GeometryDataNV',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryFlagsKHR',+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data GeometryNV = GeometryNV+  { -- | @geometryType@ specifies the+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR' which+    -- this geometry refers to.+    --+    -- #VUID-VkGeometryNV-geometryType-03503# @geometryType@ /must/ be+    -- 'GEOMETRY_TYPE_TRIANGLES_NV' or 'GEOMETRY_TYPE_AABBS_NV'+    --+    -- #VUID-VkGeometryNV-geometryType-parameter# @geometryType@ /must/ be a+    -- valid 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR'+    -- value+    geometryType :: GeometryTypeKHR+  , -- | @geometry@ contains the geometry data as described in 'GeometryDataNV'.+    --+    -- #VUID-VkGeometryNV-geometry-parameter# @geometry@ /must/ be a valid+    -- 'GeometryDataNV' structure+    geometry :: GeometryDataNV+  , -- | @flags@ has+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryFlagBitsKHR'+    -- describing options for this geometry.+    --+    -- #VUID-VkGeometryNV-flags-parameter# @flags@ /must/ be a valid+    -- combination of+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryFlagBitsKHR'+    -- values+    flags :: GeometryFlagsKHR+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (GeometryNV)+#endif+deriving instance Show GeometryNV++instance ToCStruct GeometryNV where+  withCStruct x f = allocaBytesAligned 168 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p GeometryNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (geometryType)+    poke ((p `plusPtr` 24 :: Ptr GeometryDataNV)) (geometry)+    poke ((p `plusPtr` 160 :: Ptr GeometryFlagsKHR)) (flags)+    f+  cStructSize = 168+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (zero)+    poke ((p `plusPtr` 24 :: Ptr GeometryDataNV)) (zero)+    f++instance FromCStruct GeometryNV where+  peekCStruct p = do+    geometryType <- peek @GeometryTypeKHR ((p `plusPtr` 16 :: Ptr GeometryTypeKHR))+    geometry <- peekCStruct @GeometryDataNV ((p `plusPtr` 24 :: Ptr GeometryDataNV))+    flags <- peek @GeometryFlagsKHR ((p `plusPtr` 160 :: Ptr GeometryFlagsKHR))+    pure $ GeometryNV+             geometryType geometry flags++instance Storable GeometryNV where+  sizeOf ~_ = 168+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero GeometryNV where+  zero = GeometryNV+           zero+           zero+           zero+++-- | VkAccelerationStructureInfoNV - Structure specifying the parameters of+-- acceleration structure object+--+-- = Description+--+-- 'AccelerationStructureInfoNV' contains information that is used both for+-- acceleration structure creation with 'createAccelerationStructureNV' and+-- in combination with the actual geometric data to build the acceleration+-- structure with 'cmdBuildAccelerationStructureNV'.+--+-- == Valid Usage+--+-- -   #VUID-VkAccelerationStructureInfoNV-geometryCount-02422#+--     @geometryCount@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxGeometryCount@+--+-- -   #VUID-VkAccelerationStructureInfoNV-instanceCount-02423#+--     @instanceCount@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxInstanceCount@+--+-- -   #VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424# The+--     total number of triangles in all geometries /must/ be less than or+--     equal to 'PhysicalDeviceRayTracingPropertiesNV'::@maxTriangleCount@+--+-- -   #VUID-VkAccelerationStructureInfoNV-type-02425# If @type@ is+--     'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV' then @geometryCount@+--     /must/ be @0@+--+-- -   #VUID-VkAccelerationStructureInfoNV-type-02426# If @type@ is+--     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' then @instanceCount@+--     /must/ be @0@+--+-- -   #VUID-VkAccelerationStructureInfoNV-type-02786# If @type@ is+--     'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' then the+--     @geometryType@ member of each geometry in @pGeometries@ /must/ be+--     the same+--+-- -   #VUID-VkAccelerationStructureInfoNV-flags-02592# If @flags@ has the+--     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV' bit set,+--     then it /must/ not have the+--     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV' bit set+--+-- -   #VUID-VkAccelerationStructureInfoNV-scratch-02781# @scratch@ /must/+--     have been created with 'BUFFER_USAGE_RAY_TRACING_BIT_NV' usage flag+--+-- -   #VUID-VkAccelerationStructureInfoNV-instanceData-02782# If+--     @instanceData@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @instanceData@ /must/ have been created with+--     'BUFFER_USAGE_RAY_TRACING_BIT_NV' usage flag+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkAccelerationStructureInfoNV-sType-sType# @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV'+--+-- -   #VUID-VkAccelerationStructureInfoNV-pNext-pNext# @pNext@ /must/ be+--     @NULL@+--+-- -   #VUID-VkAccelerationStructureInfoNV-type-parameter# @type@ /must/ be+--     a valid 'AccelerationStructureTypeNV' value+--+-- -   #VUID-VkAccelerationStructureInfoNV-flags-parameter# @flags@ /must/+--     be a valid combination of 'BuildAccelerationStructureFlagBitsNV'+--     values+--+-- -   #VUID-VkAccelerationStructureInfoNV-pGeometries-parameter# If+--     @geometryCount@ is not @0@, @pGeometries@ /must/ be a valid pointer+--     to an array of @geometryCount@ valid 'GeometryNV' structures+--+-- = See Also+--+-- 'AccelerationStructureCreateInfoNV', 'AccelerationStructureTypeNV',+-- 'BuildAccelerationStructureFlagsNV', 'GeometryNV',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdBuildAccelerationStructureNV'+data AccelerationStructureInfoNV = AccelerationStructureInfoNV+  { -- | @type@ is a 'AccelerationStructureTypeNV' value specifying the type of+    -- acceleration structure that will be created.+    type' :: AccelerationStructureTypeNV+  , -- | @flags@ is a bitmask of 'BuildAccelerationStructureFlagBitsNV'+    -- specifying additional parameters of the acceleration structure.+    flags :: BuildAccelerationStructureFlagsNV+  , -- | @instanceCount@ specifies the number of instances that will be in the+    -- new acceleration structure.+    instanceCount :: Word32+  , -- | @pGeometries@ is a pointer to an array of @geometryCount@ 'GeometryNV'+    -- structures containing the scene data being passed into the acceleration+    -- structure.+    geometries :: Vector GeometryNV+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureInfoNV)+#endif+deriving instance Show AccelerationStructureInfoNV++instance ToCStruct AccelerationStructureInfoNV where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureInfoNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (type')+    lift $ poke ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsNV)) (flags)+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (instanceCount)+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (geometries)) :: Word32))+    pPGeometries' <- ContT $ allocaBytesAligned @GeometryNV ((Data.Vector.length (geometries)) * 168) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPGeometries' `plusPtr` (168 * (i)) :: Ptr GeometryNV) (e)) (geometries)+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV))) (pPGeometries')+    lift $ f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (zero)+    pPGeometries' <- ContT $ allocaBytesAligned @GeometryNV ((Data.Vector.length (mempty)) * 168) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPGeometries' `plusPtr` (168 * (i)) :: Ptr GeometryNV) (e)) (mempty)+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV))) (pPGeometries')+    lift $ f++instance FromCStruct AccelerationStructureInfoNV where+  peekCStruct p = do+    type' <- peek @AccelerationStructureTypeNV ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV))+    flags <- peek @BuildAccelerationStructureFlagsNV ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsNV))+    instanceCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    geometryCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    pGeometries <- peek @(Ptr GeometryNV) ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV)))+    pGeometries' <- generateM (fromIntegral geometryCount) (\i -> peekCStruct @GeometryNV ((pGeometries `advancePtrBytes` (168 * (i)) :: Ptr GeometryNV)))+    pure $ AccelerationStructureInfoNV+             type' flags instanceCount pGeometries'++instance Zero AccelerationStructureInfoNV where+  zero = AccelerationStructureInfoNV+           zero+           zero+           zero+           mempty+++-- | VkAccelerationStructureCreateInfoNV - Structure specifying the+-- parameters of a newly created acceleration structure object+--+-- == Valid Usage+--+-- -   #VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421# If+--     @compactedSize@ is not @0@ then both @info.geometryCount@ and+--     @info.instanceCount@ /must/ be @0@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkAccelerationStructureCreateInfoNV-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV'+--+-- -   #VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext# @pNext@+--     /must/ be @NULL@+--+-- -   #VUID-VkAccelerationStructureCreateInfoNV-info-parameter# @info@+--     /must/ be a valid 'AccelerationStructureInfoNV' structure+--+-- = See Also+--+-- 'AccelerationStructureInfoNV',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createAccelerationStructureNV'+data AccelerationStructureCreateInfoNV = AccelerationStructureCreateInfoNV+  { -- | @compactedSize@ is the size from the result of+    -- 'cmdWriteAccelerationStructuresPropertiesNV' if this acceleration+    -- structure is going to be the target of a compacting copy.+    compactedSize :: DeviceSize+  , -- | @info@ is the 'AccelerationStructureInfoNV' structure specifying further+    -- parameters of the created acceleration structure.+    info :: AccelerationStructureInfoNV+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureCreateInfoNV)+#endif+deriving instance Show AccelerationStructureCreateInfoNV++instance ToCStruct AccelerationStructureCreateInfoNV where+  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureCreateInfoNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (compactedSize)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (info) . ($ ())+    lift $ f+  cStructSize = 64+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (zero) . ($ ())+    lift $ f++instance FromCStruct AccelerationStructureCreateInfoNV where+  peekCStruct p = do+    compactedSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+    info <- peekCStruct @AccelerationStructureInfoNV ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV))+    pure $ AccelerationStructureCreateInfoNV+             compactedSize info++instance Zero AccelerationStructureCreateInfoNV where+  zero = AccelerationStructureCreateInfoNV+           zero+           zero+++-- | VkBindAccelerationStructureMemoryInfoNV - Structure specifying+-- acceleration structure memory binding+--+-- == Valid Usage+--+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-03620#+--     @accelerationStructure@ /must/ not already be backed by a memory+--     object+--+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03621#+--     @memoryOffset@ /must/ be less than the size of @memory@+--+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-memory-03622# @memory@+--     /must/ have been allocated using one of the memory types allowed in+--     the @memoryTypeBits@ member of the+--     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure+--     returned from a call to+--     'getAccelerationStructureMemoryRequirementsNV' with+--     @accelerationStructure@ and @type@ of+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV'+--+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03623#+--     @memoryOffset@ /must/ be an integer multiple of the @alignment@+--     member of the 'Vulkan.Core10.MemoryManagement.MemoryRequirements'+--     structure returned from a call to+--     'getAccelerationStructureMemoryRequirementsNV' with+--     @accelerationStructure@ and @type@ of+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV'+--+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-size-03624# The @size@+--     member of the 'Vulkan.Core10.MemoryManagement.MemoryRequirements'+--     structure returned from a call to+--     'getAccelerationStructureMemoryRequirementsNV' with+--     @accelerationStructure@ and @type@ of+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV' /must/+--     be less than or equal to the size of @memory@ minus @memoryOffset@+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-sType-sType# @sType@+--     /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV'+--+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-pNext-pNext# @pNext@+--     /must/ be @NULL@+--+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-parameter#+--     @accelerationStructure@ /must/ be a valid+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' handle+--+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-memory-parameter#+--     @memory@ /must/ be a valid 'Vulkan.Core10.Handles.DeviceMemory'+--     handle+--+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-pDeviceIndices-parameter#+--     If @deviceIndexCount@ is not @0@, @pDeviceIndices@ /must/ be a valid+--     pointer to an array of @deviceIndexCount@ @uint32_t@ values+--+-- -   #VUID-VkBindAccelerationStructureMemoryInfoNV-commonparent# Both of+--     @accelerationStructure@, and @memory@ /must/ have been created,+--     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Vulkan.Core10.Handles.DeviceMemory',+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'bindAccelerationStructureMemoryNV'+data BindAccelerationStructureMemoryInfoNV = BindAccelerationStructureMemoryInfoNV+  { -- | @accelerationStructure@ is the acceleration structure to be attached to+    -- memory.+    accelerationStructure :: AccelerationStructureNV+  , -- | @memory@ is a 'Vulkan.Core10.Handles.DeviceMemory' object describing the+    -- device memory to attach.+    memory :: DeviceMemory+  , -- | @memoryOffset@ is the start offset of the region of memory that is to be+    -- bound to the acceleration structure. The number of bytes returned in the+    -- 'Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@ member in+    -- @memory@, starting from @memoryOffset@ bytes, will be bound to the+    -- specified acceleration structure.+    memoryOffset :: DeviceSize+  , -- | @pDeviceIndices@ is a pointer to an array of device indices.+    deviceIndices :: Vector Word32+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (BindAccelerationStructureMemoryInfoNV)+#endif+deriving instance Show BindAccelerationStructureMemoryInfoNV++instance ToCStruct BindAccelerationStructureMemoryInfoNV where+  withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p BindAccelerationStructureMemoryInfoNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureNV)) (accelerationStructure)+    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (memory)+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (memoryOffset)+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (deviceIndices)) :: Word32))+    pPDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (deviceIndices)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (deviceIndices)+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPDeviceIndices')+    lift $ f+  cStructSize = 56+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureNV)) (zero)+    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (zero)+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+    pPDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPDeviceIndices')+    lift $ f++instance FromCStruct BindAccelerationStructureMemoryInfoNV where+  peekCStruct p = do+    accelerationStructure <- peek @AccelerationStructureNV ((p `plusPtr` 16 :: Ptr AccelerationStructureNV))+    memory <- peek @DeviceMemory ((p `plusPtr` 24 :: Ptr DeviceMemory))+    memoryOffset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))+    deviceIndexCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+    pDeviceIndices <- peek @(Ptr Word32) ((p `plusPtr` 48 :: Ptr (Ptr Word32)))+    pDeviceIndices' <- generateM (fromIntegral deviceIndexCount) (\i -> peek @Word32 ((pDeviceIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+    pure $ BindAccelerationStructureMemoryInfoNV+             accelerationStructure memory memoryOffset pDeviceIndices'++instance Zero BindAccelerationStructureMemoryInfoNV where+  zero = BindAccelerationStructureMemoryInfoNV+           zero+           zero+           zero+           mempty+++-- | VkWriteDescriptorSetAccelerationStructureNV - Structure specifying+-- acceleration structure descriptor info+--+-- == Valid Usage+--+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-03747#+--     @accelerationStructureCount@ /must/ be equal to @descriptorCount@ in+--     the extended structure+--+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03748#+--     Each acceleration structure in @pAccelerationStructures@ /must/ have+--     been created with+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR'+--+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03749#+--     If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, each member of @pAccelerationStructures@+--     /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- == Valid Usage (Implicit)+--+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-sType-sType#+--     @sType@ /must/ be+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV'+--+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-parameter#+--     @pAccelerationStructures@ /must/ be a valid pointer to an array of+--     @accelerationStructureCount@ valid or+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' handles+--+-- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-arraylength#+--     @accelerationStructureCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data WriteDescriptorSetAccelerationStructureNV = WriteDescriptorSetAccelerationStructureNV+  { -- | @pAccelerationStructures@ are the acceleration structures to update.+    accelerationStructures :: Vector AccelerationStructureNV }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (WriteDescriptorSetAccelerationStructureNV)+#endif+deriving instance Show WriteDescriptorSetAccelerationStructureNV++instance ToCStruct WriteDescriptorSetAccelerationStructureNV where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p WriteDescriptorSetAccelerationStructureNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))+    pPAccelerationStructures' <- ContT $ allocaBytesAligned @AccelerationStructureNV ((Data.Vector.length (accelerationStructures)) * 8) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureNV) (e)) (accelerationStructures)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureNV))) (pPAccelerationStructures')+    lift $ f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    pPAccelerationStructures' <- ContT $ allocaBytesAligned @AccelerationStructureNV ((Data.Vector.length (mempty)) * 8) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureNV) (e)) (mempty)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureNV))) (pPAccelerationStructures')+    lift $ f++instance FromCStruct WriteDescriptorSetAccelerationStructureNV where+  peekCStruct p = do+    accelerationStructureCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    pAccelerationStructures <- peek @(Ptr AccelerationStructureNV) ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureNV)))+    pAccelerationStructures' <- generateM (fromIntegral accelerationStructureCount) (\i -> peek @AccelerationStructureNV ((pAccelerationStructures `advancePtrBytes` (8 * (i)) :: Ptr AccelerationStructureNV)))+    pure $ WriteDescriptorSetAccelerationStructureNV+             pAccelerationStructures'++instance Zero WriteDescriptorSetAccelerationStructureNV where+  zero = WriteDescriptorSetAccelerationStructureNV+           mempty+++-- | VkAccelerationStructureMemoryRequirementsInfoNV - Structure specifying+-- acceleration to query for memory requirements+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureMemoryRequirementsTypeNV',+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getAccelerationStructureMemoryRequirementsNV'+data AccelerationStructureMemoryRequirementsInfoNV = AccelerationStructureMemoryRequirementsInfoNV+  { -- | @type@ selects the type of memory requirement being queried.+    -- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV' returns the+    -- memory requirements for the object itself.+    -- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'+    -- returns the memory requirements for the scratch memory when doing a+    -- build.+    -- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'+    -- returns the memory requirements for the scratch memory when doing an+    -- update.+    --+    -- #VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter#+    -- @type@ /must/ be a valid 'AccelerationStructureMemoryRequirementsTypeNV'+    -- value+    type' :: AccelerationStructureMemoryRequirementsTypeNV+  , -- | @accelerationStructure@ is the acceleration structure to be queried for+    -- memory requirements.+    --+    -- #VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter#+    -- @accelerationStructure@ /must/ be a valid+    -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' handle+    accelerationStructure :: AccelerationStructureNV+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (AccelerationStructureMemoryRequirementsInfoNV)+#endif+deriving instance Show AccelerationStructureMemoryRequirementsInfoNV++instance ToCStruct AccelerationStructureMemoryRequirementsInfoNV where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureMemoryRequirementsInfoNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (type')+    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureNV)) (accelerationStructure)+    f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (zero)+    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureNV)) (zero)+    f++instance FromCStruct AccelerationStructureMemoryRequirementsInfoNV where+  peekCStruct p = do+    type' <- peek @AccelerationStructureMemoryRequirementsTypeNV ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV))+    accelerationStructure <- peek @AccelerationStructureNV ((p `plusPtr` 24 :: Ptr AccelerationStructureNV))+    pure $ AccelerationStructureMemoryRequirementsInfoNV+             type' accelerationStructure++instance Storable AccelerationStructureMemoryRequirementsInfoNV where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AccelerationStructureMemoryRequirementsInfoNV where+  zero = AccelerationStructureMemoryRequirementsInfoNV+           zero+           zero+++-- | VkPhysicalDeviceRayTracingPropertiesNV - Properties of the physical+-- device for ray tracing+--+-- = Description+--+-- If the 'PhysicalDeviceRayTracingPropertiesNV' structure is included in+-- the @pNext@ chain of+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- Limits specified by this structure /must/ match those specified with the+-- same name in+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR'+-- and+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceRayTracingPropertiesNV = PhysicalDeviceRayTracingPropertiesNV+  { -- | @shaderGroupHandleSize@ size in bytes of the shader header.+    shaderGroupHandleSize :: Word32+  , -- | #limits-maxRecursionDepth# @maxRecursionDepth@ is the maximum number of+    -- levels of recursion allowed in a trace command.+    maxRecursionDepth :: Word32+  , -- | @maxShaderGroupStride@ is the maximum stride in bytes allowed between+    -- shader groups in the shader binding table.+    maxShaderGroupStride :: Word32+  , -- | @shaderGroupBaseAlignment@ is the /required/ alignment in bytes for the+    -- base of the shader binding table.+    shaderGroupBaseAlignment :: Word32+  , -- | @maxGeometryCount@ is the maximum number of geometries in the bottom+    -- level acceleration structure.+    maxGeometryCount :: Word64+  , -- | @maxInstanceCount@ is the maximum number of instances in the top level+    -- acceleration structure.+    maxInstanceCount :: Word64+  , -- | @maxTriangleCount@ is the maximum number of triangles in all geometries+    -- in the bottom level acceleration structure.+    maxTriangleCount :: Word64+  , -- | @maxDescriptorSetAccelerationStructures@ is the maximum number of+    -- acceleration structure descriptors that are allowed in a descriptor set.+    maxDescriptorSetAccelerationStructures :: Word32+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceRayTracingPropertiesNV)+#endif+deriving instance Show PhysicalDeviceRayTracingPropertiesNV++instance ToCStruct PhysicalDeviceRayTracingPropertiesNV where+  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceRayTracingPropertiesNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (shaderGroupHandleSize)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxRecursionDepth)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxShaderGroupStride)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (shaderGroupBaseAlignment)+    poke ((p `plusPtr` 32 :: Ptr Word64)) (maxGeometryCount)+    poke ((p `plusPtr` 40 :: Ptr Word64)) (maxInstanceCount)+    poke ((p `plusPtr` 48 :: Ptr Word64)) (maxTriangleCount)+    poke ((p `plusPtr` 56 :: Ptr Word32)) (maxDescriptorSetAccelerationStructures)+    f+  cStructSize = 64+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)+    poke ((p `plusPtr` 40 :: Ptr Word64)) (zero)+    poke ((p `plusPtr` 48 :: Ptr Word64)) (zero)+    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)+    f++instance FromCStruct PhysicalDeviceRayTracingPropertiesNV where+  peekCStruct p = do+    shaderGroupHandleSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    maxShaderGroupStride <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    shaderGroupBaseAlignment <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    maxGeometryCount <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))+    maxInstanceCount <- peek @Word64 ((p `plusPtr` 40 :: Ptr Word64))+    maxTriangleCount <- peek @Word64 ((p `plusPtr` 48 :: Ptr Word64))+    maxDescriptorSetAccelerationStructures <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))+    pure $ PhysicalDeviceRayTracingPropertiesNV+             shaderGroupHandleSize maxRecursionDepth maxShaderGroupStride shaderGroupBaseAlignment maxGeometryCount maxInstanceCount maxTriangleCount maxDescriptorSetAccelerationStructures++instance Storable PhysicalDeviceRayTracingPropertiesNV where+  sizeOf ~_ = 64+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceRayTracingPropertiesNV where+  zero = PhysicalDeviceRayTracingPropertiesNV+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkAccelerationStructureMemoryRequirementsTypeNV - Acceleration structure+-- memory requirement type+--+-- = See Also+--+-- 'AccelerationStructureMemoryRequirementsInfoNV'+newtype AccelerationStructureMemoryRequirementsTypeNV = AccelerationStructureMemoryRequirementsTypeNV Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV' requests the+-- memory requirement for the+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV' backing store.+pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = AccelerationStructureMemoryRequirementsTypeNV 0+-- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'+-- requests the memory requirement for scratch space during the initial+-- build.+pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV =+  AccelerationStructureMemoryRequirementsTypeNV 1+-- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'+-- requests the memory requirement for scratch space during an update.+pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV =+  AccelerationStructureMemoryRequirementsTypeNV 2+{-# complete ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV,+             ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV,+             ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV :: AccelerationStructureMemoryRequirementsTypeNV #-}++conNameAccelerationStructureMemoryRequirementsTypeNV :: String+conNameAccelerationStructureMemoryRequirementsTypeNV = "AccelerationStructureMemoryRequirementsTypeNV"++enumPrefixAccelerationStructureMemoryRequirementsTypeNV :: String+enumPrefixAccelerationStructureMemoryRequirementsTypeNV = "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_"++showTableAccelerationStructureMemoryRequirementsTypeNV :: [(AccelerationStructureMemoryRequirementsTypeNV, String)]+showTableAccelerationStructureMemoryRequirementsTypeNV =+  [ (ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV        , "OBJECT_NV")+  , (ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV , "BUILD_SCRATCH_NV")+  , (ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV, "UPDATE_SCRATCH_NV")+  ]++instance Show AccelerationStructureMemoryRequirementsTypeNV where+  showsPrec = enumShowsPrec enumPrefixAccelerationStructureMemoryRequirementsTypeNV+                            showTableAccelerationStructureMemoryRequirementsTypeNV+                            conNameAccelerationStructureMemoryRequirementsTypeNV+                            (\(AccelerationStructureMemoryRequirementsTypeNV x) -> x)+                            (showsPrec 11)++instance Read AccelerationStructureMemoryRequirementsTypeNV where+  readPrec = enumReadPrec enumPrefixAccelerationStructureMemoryRequirementsTypeNV+                          showTableAccelerationStructureMemoryRequirementsTypeNV+                          conNameAccelerationStructureMemoryRequirementsTypeNV+                          AccelerationStructureMemoryRequirementsTypeNV+++-- No documentation found for TopLevel "VkGeometryFlagsNV"+type GeometryFlagsNV = GeometryFlagsKHR+++-- No documentation found for TopLevel "VkGeometryInstanceFlagsNV"+type GeometryInstanceFlagsNV = GeometryInstanceFlagsKHR+++-- No documentation found for TopLevel "VkBuildAccelerationStructureFlagsNV"+type BuildAccelerationStructureFlagsNV = BuildAccelerationStructureFlagsKHR+++-- No documentation found for TopLevel "VkGeometryFlagBitsNV"+type GeometryFlagBitsNV = GeometryFlagBitsKHR+++-- No documentation found for TopLevel "VkGeometryInstanceFlagBitsNV"+type GeometryInstanceFlagBitsNV = GeometryInstanceFlagBitsKHR+++-- No documentation found for TopLevel "VkBuildAccelerationStructureFlagBitsNV"+type BuildAccelerationStructureFlagBitsNV = BuildAccelerationStructureFlagBitsKHR+++-- No documentation found for TopLevel "VkCopyAccelerationStructureModeNV"+type CopyAccelerationStructureModeNV = CopyAccelerationStructureModeKHR+++-- No documentation found for TopLevel "VkAccelerationStructureTypeNV"+type AccelerationStructureTypeNV = AccelerationStructureTypeKHR+++-- No documentation found for TopLevel "VkGeometryTypeNV"+type GeometryTypeNV = GeometryTypeKHR+++-- No documentation found for TopLevel "VkRayTracingShaderGroupTypeNV"+type RayTracingShaderGroupTypeNV = RayTracingShaderGroupTypeKHR   -- No documentation found for TopLevel "VkAabbPositionsNV"
src/Vulkan/Extensions/VK_NV_ray_tracing.hs-boot view
@@ -1,7 +1,474 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_ray_tracing - device extension+--+-- == VK_NV_ray_tracing+--+-- [__Name String__]+--     @VK_NV_ray_tracing@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     166+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+--     -   Requires @VK_KHR_get_memory_requirements2@+--+-- [__Contact__]+--+--     -   Eric Werness+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_ray_tracing:%20&body=@ewerness%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-11-20+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_ray_tracing.html SPV_NV_ray_tracing>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_ray_tracing.txt GL_NV_ray_tracing>+--+-- [__Contributors__]+--+--     -   Eric Werness, NVIDIA+--+--     -   Ashwin Lele, NVIDIA+--+--     -   Robert Stepinski, NVIDIA+--+--     -   Nuno Subtil, NVIDIA+--+--     -   Christoph Kubisch, NVIDIA+--+--     -   Martin Stich, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Joshua Barczak, Intel+--+--     -   Tobias Hector, AMD+--+--     -   Henrik Rydgard, NVIDIA+--+--     -   Pascal Gautron, NVIDIA+--+-- == Description+--+-- Rasterization has been the dominant method to produce interactive+-- graphics, but increasing performance of graphics hardware has made ray+-- tracing a viable option for interactive rendering. Being able to+-- integrate ray tracing with traditional rasterization makes it easier for+-- applications to incrementally add ray traced effects to existing+-- applications or to do hybrid approaches with rasterization for primary+-- visibility and ray tracing for secondary queries.+--+-- To enable ray tracing, this extension adds a few different categories of+-- new functionality:+--+-- -   Acceleration structure objects and build commands+--+-- -   A new pipeline type with new shader domains+--+-- -   An indirection table to link shader groups with acceleration+--     structure items+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   @SPV_NV_ray_tracing@+--+-- == New Object Types+--+-- -   'Vulkan.Extensions.Handles.AccelerationStructureNV'+--+-- == New Commands+--+-- -   'bindAccelerationStructureMemoryNV'+--+-- -   'cmdBuildAccelerationStructureNV'+--+-- -   'cmdCopyAccelerationStructureNV'+--+-- -   'cmdTraceRaysNV'+--+-- -   'cmdWriteAccelerationStructuresPropertiesNV'+--+-- -   'compileDeferredNV'+--+-- -   'createAccelerationStructureNV'+--+-- -   'createRayTracingPipelinesNV'+--+-- -   'destroyAccelerationStructureNV'+--+-- -   'getAccelerationStructureHandleNV'+--+-- -   'getAccelerationStructureMemoryRequirementsNV'+--+-- -   'getRayTracingShaderGroupHandlesNV'+--+-- == New Structures+--+-- -   'AabbPositionsNV'+--+-- -   'AccelerationStructureCreateInfoNV'+--+-- -   'AccelerationStructureInfoNV'+--+-- -   'AccelerationStructureInstanceNV'+--+-- -   'AccelerationStructureMemoryRequirementsInfoNV'+--+-- -   'BindAccelerationStructureMemoryInfoNV'+--+-- -   'GeometryAABBNV'+--+-- -   'GeometryDataNV'+--+-- -   'GeometryNV'+--+-- -   'GeometryTrianglesNV'+--+-- -   'Vulkan.Extensions.VK_KHR_get_memory_requirements2.MemoryRequirements2KHR'+--+-- -   'RayTracingPipelineCreateInfoNV'+--+-- -   'RayTracingShaderGroupCreateInfoNV'+--+-- -   'TransformMatrixNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceRayTracingPropertiesNV'+--+-- -   Extending 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet':+--+--     -   'WriteDescriptorSetAccelerationStructureNV'+--+-- == New Enums+--+-- -   'AccelerationStructureMemoryRequirementsTypeNV'+--+-- -   'AccelerationStructureTypeNV'+--+-- -   'BuildAccelerationStructureFlagBitsNV'+--+-- -   'CopyAccelerationStructureModeNV'+--+-- -   'GeometryFlagBitsNV'+--+-- -   'GeometryInstanceFlagBitsNV'+--+-- -   'GeometryTypeNV'+--+-- -   'RayTracingShaderGroupTypeNV'+--+-- == New Bitmasks+--+-- -   'BuildAccelerationStructureFlagsNV'+--+-- -   'GeometryFlagsNV'+--+-- -   'GeometryInstanceFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_RAY_TRACING_EXTENSION_NAME'+--+-- -   'NV_RAY_TRACING_SPEC_VERSION'+--+-- -   'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureTypeKHR':+--+--     -   'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV'+--+--     -   'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV'+--+--     -   'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':+--+--     -   'BUFFER_USAGE_RAY_TRACING_BIT_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.BuildAccelerationStructureFlagBitsKHR':+--+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV'+--+--     -   'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV'+--+--     -   'BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV'+--+--     -   'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV'+--+--     -   'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureModeKHR':+--+--     -   'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV'+--+--     -   'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT':+--+--     -   'Vulkan.Extensions.VK_EXT_debug_report.DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT'+--+-- -   Extending 'Vulkan.Core10.Enums.DescriptorType.DescriptorType':+--+--     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryFlagBitsKHR':+--+--     -   'GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV'+--+--     -   'GEOMETRY_OPAQUE_BIT_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryInstanceFlagBitsKHR':+--+--     -   'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV'+--+--     -   'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV'+--+--     -   'GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV'+--+--     -   'GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.GeometryTypeKHR':+--+--     -   'GEOMETRY_TYPE_AABBS_NV'+--+--     -   'GEOMETRY_TYPE_TRIANGLES_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.IndexType.IndexType':+--+--     -   'INDEX_TYPE_NONE_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':+--+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_ACCELERATION_STRUCTURE_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint':+--+--     -   'PIPELINE_BIND_POINT_RAY_TRACING_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV'+--+--     -   'PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.QueryType.QueryType':+--+--     -   'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingShaderGroupTypeKHR':+--+--     -   'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV'+--+--     -   'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV'+--+--     -   'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':+--+--     -   'SHADER_STAGE_ANY_HIT_BIT_NV'+--+--     -   'SHADER_STAGE_CALLABLE_BIT_NV'+--+--     -   'SHADER_STAGE_CLOSEST_HIT_BIT_NV'+--+--     -   'SHADER_STAGE_INTERSECTION_BIT_NV'+--+--     -   'SHADER_STAGE_MISS_BIT_NV'+--+--     -   'SHADER_STAGE_RAYGEN_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_AABB_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV'+--+-- == New or Modified Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIDNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-hitt HitTNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsNV>+--+-- -   (modified)@PrimitiveId@+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-nv-raytracing RayTracingNV>+--+-- == Issues+--+-- 1) Are there issues?+--+-- __RESOLVED__: Yes.+--+-- == Sample Code+--+-- Example ray generation GLSL shader+--+-- > #version 450 core+-- > #extension GL_NV_ray_tracing : require+-- > layout(set = 0, binding = 0, rgba8) uniform image2D image;+-- > layout(set = 0, binding = 1) uniform accelerationStructureNV as;+-- > layout(location = 0) rayPayloadNV float payload;+-- >+-- > void main()+-- > {+-- >    vec4 col = vec4(0, 0, 0, 1);+-- >+-- >    vec3 origin = vec3(float(gl_LaunchIDNV.x)/float(gl_LaunchSizeNV.x), float(gl_LaunchIDNV.y)/float(gl_LaunchSizeNV.y), 1.0);+-- >    vec3 dir = vec3(0.0, 0.0, -1.0);+-- >+-- >    traceNV(as, 0, 0xff, 0, 1, 0, origin, 0.0, dir, 1000.0, 0);+-- >+-- >    col.y = payload;+-- >+-- >    imageStore(image, ivec2(gl_LaunchIDNV.xy), col);+-- > }+--+-- == Version History+--+-- -   Revision 1, 2018-09-11 (Robert Stepinski, Nuno Subtil, Eric Werness)+--+--     -   Internal revisions+--+-- -   Revision 2, 2018-10-19 (Eric Werness)+--+--     -   rename to VK_NV_ray_tracing, add support for callables.+--+--     -   too many updates to list+--+-- -   Revision 3, 2018-11-20 (Daniel Koch)+--+--     -   update to use InstanceId instead of InstanceIndex as+--         implemented.+--+-- = See Also+--+-- 'Vulkan.Core10.APIConstants.SHADER_UNUSED_NV', 'AabbPositionsNV',+-- 'AccelerationStructureCreateInfoNV', 'AccelerationStructureInfoNV',+-- 'AccelerationStructureInstanceNV',+-- 'AccelerationStructureMemoryRequirementsInfoNV',+-- 'AccelerationStructureMemoryRequirementsTypeNV',+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'AccelerationStructureTypeNV', 'BindAccelerationStructureMemoryInfoNV',+-- 'BuildAccelerationStructureFlagBitsNV',+-- 'BuildAccelerationStructureFlagsNV', 'CopyAccelerationStructureModeNV',+-- 'GeometryAABBNV', 'GeometryDataNV', 'GeometryFlagBitsNV',+-- 'GeometryFlagsNV', 'GeometryInstanceFlagBitsNV',+-- 'GeometryInstanceFlagsNV', 'GeometryNV', 'GeometryTrianglesNV',+-- 'GeometryTypeNV',+-- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.MemoryRequirements2KHR',+-- 'PhysicalDeviceRayTracingPropertiesNV',+-- 'RayTracingPipelineCreateInfoNV', 'RayTracingShaderGroupCreateInfoNV',+-- 'RayTracingShaderGroupTypeNV', 'TransformMatrixNV',+-- 'WriteDescriptorSetAccelerationStructureNV',+-- 'bindAccelerationStructureMemoryNV', 'cmdBuildAccelerationStructureNV',+-- 'cmdCopyAccelerationStructureNV', 'cmdTraceRaysNV',+-- 'cmdWriteAccelerationStructuresPropertiesNV', 'compileDeferredNV',+-- 'createAccelerationStructureNV', 'createRayTracingPipelinesNV',+-- 'destroyAccelerationStructureNV', 'getAccelerationStructureHandleNV',+-- 'getAccelerationStructureMemoryRequirementsNV',+-- 'getRayTracingShaderGroupHandlesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_ray_tracing  ( AccelerationStructureCreateInfoNV                                             , AccelerationStructureInfoNV                                             , AccelerationStructureMemoryRequirementsInfoNV+                                            , BindAccelerationStructureMemoryInfoNV                                             , GeometryAABBNV                                             , GeometryDataNV                                             , GeometryNV@@ -9,11 +476,10 @@                                             , PhysicalDeviceRayTracingPropertiesNV                                             , RayTracingPipelineCreateInfoNV                                             , RayTracingShaderGroupCreateInfoNV-                                            , AccelerationStructureNV+                                            , WriteDescriptorSetAccelerationStructureNV                                             ) where  import Data.Kind (Type)-import {-# SOURCE #-} Vulkan.Extensions.Handles (AccelerationStructureKHR) import {-# SOURCE #-} Vulkan.CStruct.Extends (Chain) import {-# SOURCE #-} Vulkan.CStruct.Extends (Extendss) import Vulkan.CStruct (FromCStruct)@@ -44,6 +510,14 @@ instance FromCStruct AccelerationStructureMemoryRequirementsInfoNV  +data BindAccelerationStructureMemoryInfoNV++instance ToCStruct BindAccelerationStructureMemoryInfoNV+instance Show BindAccelerationStructureMemoryInfoNV++instance FromCStruct BindAccelerationStructureMemoryInfoNV++ data GeometryAABBNV  instance ToCStruct GeometryAABBNV@@ -101,6 +575,10 @@ instance FromCStruct RayTracingShaderGroupCreateInfoNV  --- No documentation found for TopLevel "VkAccelerationStructureNV"-type AccelerationStructureNV = AccelerationStructureKHR+data WriteDescriptorSetAccelerationStructureNV++instance ToCStruct WriteDescriptorSetAccelerationStructureNV+instance Show WriteDescriptorSetAccelerationStructureNV++instance FromCStruct WriteDescriptorSetAccelerationStructureNV 
src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs view
@@ -1,4 +1,165 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_representative_fragment_test - device extension+--+-- == VK_NV_representative_fragment_test+--+-- [__Name String__]+--     @VK_NV_representative_fragment_test@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     167+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Kedarnath Thangudu+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_representative_fragment_test:%20&body=@kthangudu%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-09-13+--+-- [__Contributors__]+--+--     -   Kedarnath Thangudu, NVIDIA+--+--     -   Christoph Kubisch, NVIDIA+--+--     -   Pierre Boudier, NVIDIA+--+--     -   Pat Brown, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+-- == Description+--+-- This extension provides a new representative fragment test that allows+-- implementations to reduce the amount of rasterization and fragment+-- processing work performed for each point, line, or triangle primitive.+-- For any primitive that produces one or more fragments that pass all+-- other early fragment tests, the implementation is permitted to choose+-- one or more “representative” fragments for processing and discard all+-- other fragments. For draw calls rendering multiple points, lines, or+-- triangles arranged in lists, strips, or fans, the representative+-- fragment test is performed independently for each of those primitives.+--+-- This extension is useful for applications that use an early render pass+-- to determine the full set of primitives that would be visible in the+-- final scene. In this render pass, such applications would set up a+-- fragment shader that enables early fragment tests and writes to an image+-- or shader storage buffer to record the ID of the primitive that+-- generated the fragment. Without this extension, the shader would record+-- the ID separately for each visible fragment of each primitive. With this+-- extension, fewer stores will be performed, particularly for large+-- primitives.+--+-- The representative fragment test has no effect if early fragment tests+-- are not enabled via the fragment shader. The set of fragments discarded+-- by the representative fragment test is implementation-dependent and may+-- vary from frame to frame. In some cases, the representative fragment+-- test may not discard any fragments for a given primitive.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'PipelineRepresentativeFragmentTestStateCreateInfoNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceRepresentativeFragmentTestFeaturesNV'+--+-- == New Enum Constants+--+-- -   'NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME'+--+-- -   'NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV'+--+-- == Issues+--+-- (1) Is the representative fragment test guaranteed to have any effect?+--+-- __RESOLVED__: No. As specified, we only guarantee that each primitive+-- with at least one fragment that passes prior tests will have one+-- fragment passing the representative fragment tests. We don’t guarantee+-- that any particular fragment will fail the test.+--+-- In the initial implementation of this extension, the representative+-- fragment test is treated as an optimization that may be completely+-- disabled for some pipeline states. This feature was designed for a use+-- case where the fragment shader records information on individual+-- primitives using shader storage buffers or storage images, with no+-- writes to color or depth buffers.+--+-- (2) Will the set of fragments that pass the representative fragment test+-- be repeatable if you draw the same scene over and over again?+--+-- __RESOLVED__: No. The set of fragments that pass the representative+-- fragment test is implementation-dependent and may vary due to the timing+-- of operations performed by the GPU.+--+-- (3) What happens if you enable the representative fragment test with+-- writes to color and\/or depth render targets enabled?+--+-- __RESOLVED__: If writes to the color or depth buffer are enabled, they+-- will be performed for any fragments that survive the relevant tests. Any+-- fragments that fail the representative fragment test will not update+-- color buffers. For the use cases intended for this feature, we don’t+-- expect color or depth writes to be enabled.+--+-- (4) How do derivatives and automatic texture level of detail+-- computations work with the representative fragment test enabled?+--+-- __RESOLVED__: If a fragment shader uses derivative functions or texture+-- lookups using automatic level of detail computation, derivatives will be+-- computed identically whether or not the representative fragment test is+-- enabled. For the use cases intended for this feature, we don’t expect+-- the use of derivatives in the fragment shader.+--+-- == Version History+--+-- -   Revision 2, 2018-09-13 (pbrown)+--+--     -   Add issues.+--+-- -   Revision 1, 2018-08-22 (Kedarnath Thangudu)+--+--     -   Internal Revisions+--+-- = See Also+--+-- 'PhysicalDeviceRepresentativeFragmentTestFeaturesNV',+-- 'PipelineRepresentativeFragmentTestStateCreateInfoNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_representative_fragment_test Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_representative_fragment_test  ( PhysicalDeviceRepresentativeFragmentTestFeaturesNV(..)                                                              , PipelineRepresentativeFragmentTestStateCreateInfoNV(..)                                                              , NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION
src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs-boot view
@@ -1,4 +1,165 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_representative_fragment_test - device extension+--+-- == VK_NV_representative_fragment_test+--+-- [__Name String__]+--     @VK_NV_representative_fragment_test@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     167+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Kedarnath Thangudu+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_representative_fragment_test:%20&body=@kthangudu%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-09-13+--+-- [__Contributors__]+--+--     -   Kedarnath Thangudu, NVIDIA+--+--     -   Christoph Kubisch, NVIDIA+--+--     -   Pierre Boudier, NVIDIA+--+--     -   Pat Brown, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+-- == Description+--+-- This extension provides a new representative fragment test that allows+-- implementations to reduce the amount of rasterization and fragment+-- processing work performed for each point, line, or triangle primitive.+-- For any primitive that produces one or more fragments that pass all+-- other early fragment tests, the implementation is permitted to choose+-- one or more “representative” fragments for processing and discard all+-- other fragments. For draw calls rendering multiple points, lines, or+-- triangles arranged in lists, strips, or fans, the representative+-- fragment test is performed independently for each of those primitives.+--+-- This extension is useful for applications that use an early render pass+-- to determine the full set of primitives that would be visible in the+-- final scene. In this render pass, such applications would set up a+-- fragment shader that enables early fragment tests and writes to an image+-- or shader storage buffer to record the ID of the primitive that+-- generated the fragment. Without this extension, the shader would record+-- the ID separately for each visible fragment of each primitive. With this+-- extension, fewer stores will be performed, particularly for large+-- primitives.+--+-- The representative fragment test has no effect if early fragment tests+-- are not enabled via the fragment shader. The set of fragments discarded+-- by the representative fragment test is implementation-dependent and may+-- vary from frame to frame. In some cases, the representative fragment+-- test may not discard any fragments for a given primitive.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':+--+--     -   'PipelineRepresentativeFragmentTestStateCreateInfoNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceRepresentativeFragmentTestFeaturesNV'+--+-- == New Enum Constants+--+-- -   'NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME'+--+-- -   'NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV'+--+-- == Issues+--+-- (1) Is the representative fragment test guaranteed to have any effect?+--+-- __RESOLVED__: No. As specified, we only guarantee that each primitive+-- with at least one fragment that passes prior tests will have one+-- fragment passing the representative fragment tests. We don’t guarantee+-- that any particular fragment will fail the test.+--+-- In the initial implementation of this extension, the representative+-- fragment test is treated as an optimization that may be completely+-- disabled for some pipeline states. This feature was designed for a use+-- case where the fragment shader records information on individual+-- primitives using shader storage buffers or storage images, with no+-- writes to color or depth buffers.+--+-- (2) Will the set of fragments that pass the representative fragment test+-- be repeatable if you draw the same scene over and over again?+--+-- __RESOLVED__: No. The set of fragments that pass the representative+-- fragment test is implementation-dependent and may vary due to the timing+-- of operations performed by the GPU.+--+-- (3) What happens if you enable the representative fragment test with+-- writes to color and\/or depth render targets enabled?+--+-- __RESOLVED__: If writes to the color or depth buffer are enabled, they+-- will be performed for any fragments that survive the relevant tests. Any+-- fragments that fail the representative fragment test will not update+-- color buffers. For the use cases intended for this feature, we don’t+-- expect color or depth writes to be enabled.+--+-- (4) How do derivatives and automatic texture level of detail+-- computations work with the representative fragment test enabled?+--+-- __RESOLVED__: If a fragment shader uses derivative functions or texture+-- lookups using automatic level of detail computation, derivatives will be+-- computed identically whether or not the representative fragment test is+-- enabled. For the use cases intended for this feature, we don’t expect+-- the use of derivatives in the fragment shader.+--+-- == Version History+--+-- -   Revision 2, 2018-09-13 (pbrown)+--+--     -   Add issues.+--+-- -   Revision 1, 2018-08-22 (Kedarnath Thangudu)+--+--     -   Internal Revisions+--+-- = See Also+--+-- 'PhysicalDeviceRepresentativeFragmentTestFeaturesNV',+-- 'PipelineRepresentativeFragmentTestStateCreateInfoNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_representative_fragment_test Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_representative_fragment_test  ( PhysicalDeviceRepresentativeFragmentTestFeaturesNV                                                              , PipelineRepresentativeFragmentTestStateCreateInfoNV                                                              ) where
src/Vulkan/Extensions/VK_NV_sample_mask_override_coverage.hs view
@@ -1,4 +1,105 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_sample_mask_override_coverage - device extension+--+-- == VK_NV_sample_mask_override_coverage+--+-- [__Name String__]+--     @VK_NV_sample_mask_override_coverage@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     95+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_sample_mask_override_coverage:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-12-08+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_sample_mask_override_coverage.html SPV_NV_sample_mask_override_coverage>+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/NV/NV_sample_mask_override_coverage.txt GL_NV_sample_mask_override_coverage>+--+-- [__Contributors__]+--+--     -   Daniel Koch, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   @SPV_NV_sample_mask_override_coverage@+--+-- The extension provides access to the @OverrideCoverageNV@ decoration+-- under the @SampleMaskOverrideCoverageNV@ capability. Adding this+-- decoration to a variable with the+-- 'Vulkan.Core10.FundamentalTypes.SampleMask' builtin decoration allows+-- the shader to modify the coverage mask and affect which samples are used+-- to process the fragment.+--+-- When using GLSL source-based shader languages, the @override_coverage@+-- layout qualifier from @GL_NV_sample_mask_override_coverage@ maps to the+-- @OverrideCoverageNV@ decoration. To use the @override_coverage@ layout+-- qualifier in GLSL the @GL_NV_sample_mask_override_coverage@ extension+-- must be enabled. Behavior is described in the+-- @GL_NV_sample_mask_override_coverage@ extension spec.+--+-- == New Enum Constants+--+-- -   'NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME'+--+-- -   'NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION'+--+-- == New Variable Decoration+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-samplemask OverrideCoverageNV in SampleMask>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-samplemaskoverridecoverage SampleMaskOverrideCoverageNV>+--+-- == Version History+--+-- -   Revision 1, 2016-12-08 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_sample_mask_override_coverage Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_sample_mask_override_coverage  ( NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION                                                               , pattern NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION                                                               , NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME
src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs view
@@ -1,4 +1,126 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_scissor_exclusive - device extension+--+-- == VK_NV_scissor_exclusive+--+-- [__Name String__]+--     @VK_NV_scissor_exclusive@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     206+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Pat Brown+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_scissor_exclusive:%20&body=@nvpbrown%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-07-31+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--     None+--+-- [__Contributors__]+--+--     -   Pat Brown, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Piers Daniell, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension adds support for an exclusive scissor test to Vulkan. The+-- exclusive scissor test behaves like the scissor test, except that the+-- exclusive scissor test fails for pixels inside the corresponding+-- rectangle and passes for pixels outside the rectangle. If the same+-- rectangle is used for both the scissor and exclusive scissor tests, the+-- exclusive scissor test will pass if and only if the scissor test fails.+--+-- == New Commands+--+-- -   'cmdSetExclusiveScissorNV'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceExclusiveScissorFeaturesNV'+--+-- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':+--+--     -   'PipelineViewportExclusiveScissorStateCreateInfoNV'+--+-- == New Enum Constants+--+-- -   'NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME'+--+-- -   'NV_SCISSOR_EXCLUSIVE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV'+--+-- == Issues+--+-- 1) For the scissor test, the viewport state must be created with a+-- matching number of scissor and viewport rectangles. Should we have the+-- same requirement for exclusive scissors?+--+-- __RESOLVED__: For exclusive scissors, we relax this requirement and+-- allow an exclusive scissor rectangle count that is either zero or equal+-- to the number of viewport rectangles. If you pass in an exclusive+-- scissor count of zero, the exclusive scissor test is treated as+-- disabled.+--+-- == Version History+--+-- -   Revision 1, 2018-07-31 (Pat Brown)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceExclusiveScissorFeaturesNV',+-- 'PipelineViewportExclusiveScissorStateCreateInfoNV',+-- 'cmdSetExclusiveScissorNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_scissor_exclusive Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_scissor_exclusive  ( cmdSetExclusiveScissorNV                                                   , PhysicalDeviceExclusiveScissorFeaturesNV(..)                                                   , PipelineViewportExclusiveScissorStateCreateInfoNV(..)@@ -173,7 +295,7 @@     throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetExclusiveScissorNV is null" Nothing Nothing   let vkCmdSetExclusiveScissorNV' = mkVkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNVPtr   pPExclusiveScissors <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (exclusiveScissors)) * 16) 4-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPExclusiveScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (exclusiveScissors)+  lift $ Data.Vector.imapM_ (\i e -> poke (pPExclusiveScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (exclusiveScissors)   lift $ vkCmdSetExclusiveScissorNV' (commandBufferHandle (commandBuffer)) (firstExclusiveScissor) ((fromIntegral (Data.Vector.length $ (exclusiveScissors)) :: Word32)) (pPExclusiveScissors)   pure $ () @@ -308,7 +430,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (exclusiveScissors)) :: Word32))     pPExclusiveScissors' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (exclusiveScissors)) * 16) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPExclusiveScissors' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (exclusiveScissors)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPExclusiveScissors' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (exclusiveScissors)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Rect2D))) (pPExclusiveScissors')     lift $ f   cStructSize = 32@@ -317,7 +439,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     pPExclusiveScissors' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (mempty)) * 16) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPExclusiveScissors' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPExclusiveScissors' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (mempty)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Rect2D))) (pPExclusiveScissors')     lift $ f 
src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs-boot view
@@ -1,4 +1,126 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_scissor_exclusive - device extension+--+-- == VK_NV_scissor_exclusive+--+-- [__Name String__]+--     @VK_NV_scissor_exclusive@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     206+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Pat Brown+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_scissor_exclusive:%20&body=@nvpbrown%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-07-31+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--     None+--+-- [__Contributors__]+--+--     -   Pat Brown, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Piers Daniell, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+-- == Description+--+-- This extension adds support for an exclusive scissor test to Vulkan. The+-- exclusive scissor test behaves like the scissor test, except that the+-- exclusive scissor test fails for pixels inside the corresponding+-- rectangle and passes for pixels outside the rectangle. If the same+-- rectangle is used for both the scissor and exclusive scissor tests, the+-- exclusive scissor test will pass if and only if the scissor test fails.+--+-- == New Commands+--+-- -   'cmdSetExclusiveScissorNV'+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceExclusiveScissorFeaturesNV'+--+-- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':+--+--     -   'PipelineViewportExclusiveScissorStateCreateInfoNV'+--+-- == New Enum Constants+--+-- -   'NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME'+--+-- -   'NV_SCISSOR_EXCLUSIVE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV'+--+-- == Issues+--+-- 1) For the scissor test, the viewport state must be created with a+-- matching number of scissor and viewport rectangles. Should we have the+-- same requirement for exclusive scissors?+--+-- __RESOLVED__: For exclusive scissors, we relax this requirement and+-- allow an exclusive scissor rectangle count that is either zero or equal+-- to the number of viewport rectangles. If you pass in an exclusive+-- scissor count of zero, the exclusive scissor test is treated as+-- disabled.+--+-- == Version History+--+-- -   Revision 1, 2018-07-31 (Pat Brown)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceExclusiveScissorFeaturesNV',+-- 'PipelineViewportExclusiveScissorStateCreateInfoNV',+-- 'cmdSetExclusiveScissorNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_scissor_exclusive Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_scissor_exclusive  ( PhysicalDeviceExclusiveScissorFeaturesNV                                                   , PipelineViewportExclusiveScissorStateCreateInfoNV                                                   ) where
src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs view
@@ -1,4 +1,271 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_shader_image_footprint - device extension+--+-- == VK_NV_shader_image_footprint+--+-- [__Name String__]+--     @VK_NV_shader_image_footprint@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     205+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Pat Brown+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_shader_image_footprint:%20&body=@nvpbrown%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-09-13+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_image_footprint.html SPV_NV_shader_image_footprint>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_shader_texture_footprint.txt GL_NV_shader_texture_footprint>+--+-- [__Contributors__]+--+--     -   Pat Brown, NVIDIA+--+--     -   Chris Lentini, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension adds Vulkan support for the+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_image_footprint.html SPV_NV_shader_image_footprint>+-- SPIR-V extension. That SPIR-V extension provides a new instruction+-- @OpImageSampleFootprintNV@ allowing shaders to determine the set of+-- texels that would be accessed by an equivalent filtered texture lookup.+--+-- Instead of returning a filtered texture value, the instruction returns a+-- structure that can be interpreted by shader code to determine the+-- footprint of a filtered texture lookup. This structure includes integer+-- values that identify a small neighborhood of texels in the image being+-- accessed and a bitfield that indicates which texels in that neighborhood+-- would be used. The structure also includes a bitfield where each bit+-- identifies whether any texel in a small aligned block of texels would be+-- fetched by the texture lookup. The size of each block is specified by an+-- access /granularity/ provided by the shader. The minimum granularity+-- supported by this extension is 2x2 (for 2D textures) and 2x2x2 (for 3D+-- textures); the maximum granularity is 256x256 (for 2D textures) or+-- 64x32x32 (for 3D textures). Each footprint query returns the footprint+-- from a single texture level. When using minification filters that+-- combine accesses from multiple mipmap levels, shaders must perform+-- separate queries for the two levels accessed (“fine” and “coarse”). The+-- footprint query also returns a flag indicating if the texture lookup+-- would access texels from only one mipmap level or from two neighboring+-- levels.+--+-- This extension should be useful for multi-pass rendering operations that+-- do an initial expensive rendering pass to produce a first image that is+-- then used as a texture for a second pass. If the second pass ends up+-- accessing only portions of the first image (e.g., due to visbility), the+-- work spent rendering the non-accessed portion of the first image was+-- wasted. With this feature, an application can limit this waste using an+-- initial pass over the geometry in the second image that performs a+-- footprint query for each visible pixel to determine the set of pixels+-- that it needs from the first image. This pass would accumulate an+-- aggregate footprint of all visible pixels into a separate “footprint+-- image” using shader atomics. Then, when rendering the first image, the+-- application can kill all shading work for pixels not in this aggregate+-- footprint.+--+-- This extension has a number of limitations. The+-- @OpImageSampleFootprintNV@ instruction only supports for two- and+-- three-dimensional textures. Footprint evaluation only supports the+-- CLAMP_TO_EDGE wrap mode; results are undefined for all other wrap modes.+-- Only a limited set of granularity values and that set does not support+-- separate coverage information for each texel in the original image.+--+-- When using SPIR-V generated from the OpenGL Shading Language, the new+-- instruction will be generated from code using the new+-- @textureFootprint@*NV built-in functions from the+-- @GL_NV_shader_texture_footprint@ shading language extension.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderImageFootprintFeaturesNV'+--+-- == New Enum Constants+--+-- -   'NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME'+--+-- -   'NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV'+--+-- == New SPIR-V Capability+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-imagefootprint ImageFootprintNV>+--+-- == Issues+--+-- (1) The footprint returned by the SPIR-V instruction is a structure that+-- includes an anchor, an offset, and a mask that represents a 8x8 or 4x4x4+-- neighborhood of texel groups. But the bits of the mask are not stored in+-- simple pitch order. Why is the footprint built this way?+--+-- __RESOLVED__: We expect that applications using this feature will want+-- to use a fixed granularity and accumulate coverage information from the+-- returned footprints into an aggregate “footprint image” that tracks the+-- portions of an image that would be needed by regular texture filtering.+-- If an application is using a two-dimensional image with 4x4 pixel+-- granularity, we expect that the footprint image will use 64-bit texels+-- where each bit in an 8x8 array of bits corresponds to coverage for a 4x4+-- block in the original image. Texel (0,0) in the footprint image would+-- correspond to texels (0,0) through (31,31) in the original image.+--+-- In the usual case, the footprint for a single access will fully+-- contained in a 32x32 aligned region of the original texture, which+-- corresponds to a single 64-bit texel in the footprint image. In that+-- case, the implementation will return an anchor coordinate pointing at+-- the single footprint image texel, an offset vector of (0,0), and a mask+-- whose bits are aligned with the bits in the footprint texel. For this+-- case, the shader can simply atomically OR the mask bits into the+-- contents of the footprint texel to accumulate footprint coverage.+--+-- In the worst case, the footprint for a single access spans multiple+-- 32x32 aligned regions and may require updates to four separate footprint+-- image texels. In this case, the implementation will return an anchor+-- coordinate pointing at the lower right footprint image texel and an+-- offset will identify how many “columns” and “rows” of the returned 8x8+-- mask correspond to footprint texels to the left and above the anchor+-- texel. If the anchor is (2,3), the 64 bits of the returned mask are+-- arranged spatially as follows, where each 4x4 block is assigned a bit+-- number that matches its bit number in the footprint image texels:+--+-- >     +-------------------------+-------------------------++-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     | -- -- -- -- -- -- 46 47 | 40 41 42 43 44 45 -- -- |+-- >     | -- -- -- -- -- -- 54 55 | 48 49 50 51 52 53 -- -- |+-- >     | -- -- -- -- -- -- 62 63 | 56 57 58 59 60 61 -- -- |+-- >     +-------------------------+-------------------------++-- >     | -- -- -- -- -- -- 06 07 | 00 01 02 03 04 05 -- -- |+-- >     | -- -- -- -- -- -- 14 15 | 08 09 10 11 12 13 -- -- |+-- >     | -- -- -- -- -- -- 22 23 | 16 17 18 19 20 21 -- -- |+-- >     | -- -- -- -- -- -- 30 31 | 24 25 26 27 28 29 -- -- |+-- >     | -- -- -- -- -- -- 38 39 | 32 33 34 35 36 37 -- -- |+-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     +-------------------------+-------------------------++--+-- To accumulate coverage for each of the four footprint image texels, a+-- shader can AND the returned mask with simple masks derived from the x+-- and y offset values and then atomically OR the updated mask bits into+-- the contents of the corresponding footprint texel.+--+-- >     uint64_t returnedMask = (uint64_t(footprint.mask.x) | (uint64_t(footprint.mask.y) link:https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html# 32));+-- >     uint64_t rightMask    = ((0xFF [^] footprint.offset.x) * 0x0101010101010101UL);+-- >     uint64_t bottomMask   = 0xFFFFFFFFFFFFFFFFUL >> (8 * footprint.offset.y);+-- >     uint64_t bottomRight  = returnedMask & bottomMask & rightMask;+-- >     uint64_t bottomLeft   = returnedMask & bottomMask & (~rightMask);+-- >     uint64_t topRight     = returnedMask & (~bottomMask) & rightMask;+-- >     uint64_t topLeft      = returnedMask & (~bottomMask) & (~rightMask);+--+-- (2) What should an application do to ensure maximum performance when+-- accumulating footprints into an aggregate footprint image?+--+-- __RESOLVED__: We expect that the most common usage of this feature will+-- be to accumulate aggregate footprint coverage, as described in the+-- previous issue. Even if you ignore the anisotropic filtering case where+-- the implementation may return a granularity larger than that requested+-- by the caller, each shader invocation will need to use atomic functions+-- to update up to four footprint image texels for each level of detail+-- accessed. Having each active shader invocation perform multiple atomic+-- operations can be expensive, particularly when neighboring invocations+-- will want to update the same footprint image texels.+--+-- Techniques can be used to reduce the number of atomic operations+-- performed when accumulating coverage include:+--+-- -   Have logic that detects returned footprints where all components of+--     the returned offset vector are zero. In that case, the mask returned+--     by the footprint function is guaranteed to be aligned with the+--     footprint image texels and affects only a single footprint image+--     texel.+--+-- -   Have fragment shaders communicate using built-in functions from the+--     @VK_NV_shader_subgroup_partitioned@ extension or other shader+--     subgroup extensions. If you have multiple invocations in a subgroup+--     that need to update the same texel (x,y) in the footprint image,+--     compute an aggregate footprint mask across all invocations in the+--     subgroup updating that texel and have a single invocation perform an+--     atomic operation using that aggregate mask.+--+-- -   When the returned footprint spans multiple texels in the footprint+--     image, each invocation need to perform four atomic operations. In+--     the previous issue, we had an example that computed separate masks+--     for “topLeft”, “topRight”, “bottomLeft”, and “bottomRight”. When the+--     invocations in a subgroup have good locality, it might be the case+--     the “top left” for some invocations might refer to footprint image+--     texel (10,10), while neighbors might have their “top left” texels at+--     (11,10), (10,11), and (11,11). If you compute separate masks for+--     even\/odd x and y values instead of left\/right or top\/bottom, the+--     “odd\/odd” mask for all invocations in the subgroup hold coverage+--     for footprint image texel (11,11), which can be updated by a single+--     atomic operation for the entire subgroup.+--+-- == Examples+--+-- TBD+--+-- == Version History+--+-- -   Revision 2, 2018-09-13 (Pat Brown)+--+--     -   Add issue (2) with performance tips.+--+-- -   Revision 1, 2018-08-12 (Pat Brown)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceShaderImageFootprintFeaturesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shader_image_footprint Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_shader_image_footprint  ( PhysicalDeviceShaderImageFootprintFeaturesNV(..)                                                        , NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION                                                        , pattern NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION
src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs-boot view
@@ -1,4 +1,271 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_shader_image_footprint - device extension+--+-- == VK_NV_shader_image_footprint+--+-- [__Name String__]+--     @VK_NV_shader_image_footprint@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     205+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Pat Brown+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_shader_image_footprint:%20&body=@nvpbrown%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-09-13+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_image_footprint.html SPV_NV_shader_image_footprint>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_shader_texture_footprint.txt GL_NV_shader_texture_footprint>+--+-- [__Contributors__]+--+--     -   Pat Brown, NVIDIA+--+--     -   Chris Lentini, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension adds Vulkan support for the+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_image_footprint.html SPV_NV_shader_image_footprint>+-- SPIR-V extension. That SPIR-V extension provides a new instruction+-- @OpImageSampleFootprintNV@ allowing shaders to determine the set of+-- texels that would be accessed by an equivalent filtered texture lookup.+--+-- Instead of returning a filtered texture value, the instruction returns a+-- structure that can be interpreted by shader code to determine the+-- footprint of a filtered texture lookup. This structure includes integer+-- values that identify a small neighborhood of texels in the image being+-- accessed and a bitfield that indicates which texels in that neighborhood+-- would be used. The structure also includes a bitfield where each bit+-- identifies whether any texel in a small aligned block of texels would be+-- fetched by the texture lookup. The size of each block is specified by an+-- access /granularity/ provided by the shader. The minimum granularity+-- supported by this extension is 2x2 (for 2D textures) and 2x2x2 (for 3D+-- textures); the maximum granularity is 256x256 (for 2D textures) or+-- 64x32x32 (for 3D textures). Each footprint query returns the footprint+-- from a single texture level. When using minification filters that+-- combine accesses from multiple mipmap levels, shaders must perform+-- separate queries for the two levels accessed (“fine” and “coarse”). The+-- footprint query also returns a flag indicating if the texture lookup+-- would access texels from only one mipmap level or from two neighboring+-- levels.+--+-- This extension should be useful for multi-pass rendering operations that+-- do an initial expensive rendering pass to produce a first image that is+-- then used as a texture for a second pass. If the second pass ends up+-- accessing only portions of the first image (e.g., due to visbility), the+-- work spent rendering the non-accessed portion of the first image was+-- wasted. With this feature, an application can limit this waste using an+-- initial pass over the geometry in the second image that performs a+-- footprint query for each visible pixel to determine the set of pixels+-- that it needs from the first image. This pass would accumulate an+-- aggregate footprint of all visible pixels into a separate “footprint+-- image” using shader atomics. Then, when rendering the first image, the+-- application can kill all shading work for pixels not in this aggregate+-- footprint.+--+-- This extension has a number of limitations. The+-- @OpImageSampleFootprintNV@ instruction only supports for two- and+-- three-dimensional textures. Footprint evaluation only supports the+-- CLAMP_TO_EDGE wrap mode; results are undefined for all other wrap modes.+-- Only a limited set of granularity values and that set does not support+-- separate coverage information for each texel in the original image.+--+-- When using SPIR-V generated from the OpenGL Shading Language, the new+-- instruction will be generated from code using the new+-- @textureFootprint@*NV built-in functions from the+-- @GL_NV_shader_texture_footprint@ shading language extension.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderImageFootprintFeaturesNV'+--+-- == New Enum Constants+--+-- -   'NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME'+--+-- -   'NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV'+--+-- == New SPIR-V Capability+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-imagefootprint ImageFootprintNV>+--+-- == Issues+--+-- (1) The footprint returned by the SPIR-V instruction is a structure that+-- includes an anchor, an offset, and a mask that represents a 8x8 or 4x4x4+-- neighborhood of texel groups. But the bits of the mask are not stored in+-- simple pitch order. Why is the footprint built this way?+--+-- __RESOLVED__: We expect that applications using this feature will want+-- to use a fixed granularity and accumulate coverage information from the+-- returned footprints into an aggregate “footprint image” that tracks the+-- portions of an image that would be needed by regular texture filtering.+-- If an application is using a two-dimensional image with 4x4 pixel+-- granularity, we expect that the footprint image will use 64-bit texels+-- where each bit in an 8x8 array of bits corresponds to coverage for a 4x4+-- block in the original image. Texel (0,0) in the footprint image would+-- correspond to texels (0,0) through (31,31) in the original image.+--+-- In the usual case, the footprint for a single access will fully+-- contained in a 32x32 aligned region of the original texture, which+-- corresponds to a single 64-bit texel in the footprint image. In that+-- case, the implementation will return an anchor coordinate pointing at+-- the single footprint image texel, an offset vector of (0,0), and a mask+-- whose bits are aligned with the bits in the footprint texel. For this+-- case, the shader can simply atomically OR the mask bits into the+-- contents of the footprint texel to accumulate footprint coverage.+--+-- In the worst case, the footprint for a single access spans multiple+-- 32x32 aligned regions and may require updates to four separate footprint+-- image texels. In this case, the implementation will return an anchor+-- coordinate pointing at the lower right footprint image texel and an+-- offset will identify how many “columns” and “rows” of the returned 8x8+-- mask correspond to footprint texels to the left and above the anchor+-- texel. If the anchor is (2,3), the 64 bits of the returned mask are+-- arranged spatially as follows, where each 4x4 block is assigned a bit+-- number that matches its bit number in the footprint image texels:+--+-- >     +-------------------------+-------------------------++-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     | -- -- -- -- -- -- 46 47 | 40 41 42 43 44 45 -- -- |+-- >     | -- -- -- -- -- -- 54 55 | 48 49 50 51 52 53 -- -- |+-- >     | -- -- -- -- -- -- 62 63 | 56 57 58 59 60 61 -- -- |+-- >     +-------------------------+-------------------------++-- >     | -- -- -- -- -- -- 06 07 | 00 01 02 03 04 05 -- -- |+-- >     | -- -- -- -- -- -- 14 15 | 08 09 10 11 12 13 -- -- |+-- >     | -- -- -- -- -- -- 22 23 | 16 17 18 19 20 21 -- -- |+-- >     | -- -- -- -- -- -- 30 31 | 24 25 26 27 28 29 -- -- |+-- >     | -- -- -- -- -- -- 38 39 | 32 33 34 35 36 37 -- -- |+-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     | -- -- -- -- -- -- -- -- | -- -- -- -- -- -- -- -- |+-- >     +-------------------------+-------------------------++--+-- To accumulate coverage for each of the four footprint image texels, a+-- shader can AND the returned mask with simple masks derived from the x+-- and y offset values and then atomically OR the updated mask bits into+-- the contents of the corresponding footprint texel.+--+-- >     uint64_t returnedMask = (uint64_t(footprint.mask.x) | (uint64_t(footprint.mask.y) link:https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html# 32));+-- >     uint64_t rightMask    = ((0xFF [^] footprint.offset.x) * 0x0101010101010101UL);+-- >     uint64_t bottomMask   = 0xFFFFFFFFFFFFFFFFUL >> (8 * footprint.offset.y);+-- >     uint64_t bottomRight  = returnedMask & bottomMask & rightMask;+-- >     uint64_t bottomLeft   = returnedMask & bottomMask & (~rightMask);+-- >     uint64_t topRight     = returnedMask & (~bottomMask) & rightMask;+-- >     uint64_t topLeft      = returnedMask & (~bottomMask) & (~rightMask);+--+-- (2) What should an application do to ensure maximum performance when+-- accumulating footprints into an aggregate footprint image?+--+-- __RESOLVED__: We expect that the most common usage of this feature will+-- be to accumulate aggregate footprint coverage, as described in the+-- previous issue. Even if you ignore the anisotropic filtering case where+-- the implementation may return a granularity larger than that requested+-- by the caller, each shader invocation will need to use atomic functions+-- to update up to four footprint image texels for each level of detail+-- accessed. Having each active shader invocation perform multiple atomic+-- operations can be expensive, particularly when neighboring invocations+-- will want to update the same footprint image texels.+--+-- Techniques can be used to reduce the number of atomic operations+-- performed when accumulating coverage include:+--+-- -   Have logic that detects returned footprints where all components of+--     the returned offset vector are zero. In that case, the mask returned+--     by the footprint function is guaranteed to be aligned with the+--     footprint image texels and affects only a single footprint image+--     texel.+--+-- -   Have fragment shaders communicate using built-in functions from the+--     @VK_NV_shader_subgroup_partitioned@ extension or other shader+--     subgroup extensions. If you have multiple invocations in a subgroup+--     that need to update the same texel (x,y) in the footprint image,+--     compute an aggregate footprint mask across all invocations in the+--     subgroup updating that texel and have a single invocation perform an+--     atomic operation using that aggregate mask.+--+-- -   When the returned footprint spans multiple texels in the footprint+--     image, each invocation need to perform four atomic operations. In+--     the previous issue, we had an example that computed separate masks+--     for “topLeft”, “topRight”, “bottomLeft”, and “bottomRight”. When the+--     invocations in a subgroup have good locality, it might be the case+--     the “top left” for some invocations might refer to footprint image+--     texel (10,10), while neighbors might have their “top left” texels at+--     (11,10), (10,11), and (11,11). If you compute separate masks for+--     even\/odd x and y values instead of left\/right or top\/bottom, the+--     “odd\/odd” mask for all invocations in the subgroup hold coverage+--     for footprint image texel (11,11), which can be updated by a single+--     atomic operation for the entire subgroup.+--+-- == Examples+--+-- TBD+--+-- == Version History+--+-- -   Revision 2, 2018-09-13 (Pat Brown)+--+--     -   Add issue (2) with performance tips.+--+-- -   Revision 1, 2018-08-12 (Pat Brown)+--+--     -   Initial draft+--+-- = See Also+--+-- 'PhysicalDeviceShaderImageFootprintFeaturesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shader_image_footprint Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_shader_image_footprint  (PhysicalDeviceShaderImageFootprintFeaturesNV) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs view
@@ -1,4 +1,135 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_shader_sm_builtins - device extension+--+-- == VK_NV_shader_sm_builtins+--+-- [__Name String__]+--     @VK_NV_shader_sm_builtins@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     155+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_shader_sm_builtins:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-05-28+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_sm_builtins.html SPV_NV_shader_sm_builtins>.+--+--     -   This extension enables+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_shader_sm_builtins.txt GL_NV_shader_sm_builtins>+--         for GLSL source languages.+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+-- == Description+--+-- This extension provides the ability to determine device-specific+-- properties on NVIDIA GPUs. It provides the number of streaming+-- multiprocessors (SMs), the maximum number of warps (subgroups) that can+-- run on an SM, and shader builtins to enable invocations to identify+-- which SM and warp a shader invocation is executing on.+--+-- This extension enables support for the SPIR-V @ShaderSMBuiltinsNV@+-- capability.+--+-- These properties and built-ins /should/ typically only be used for+-- debugging purposes.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderSMBuiltinsFeaturesNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceShaderSMBuiltinsPropertiesNV'+--+-- == New Enum Constants+--+-- -   'NV_SHADER_SM_BUILTINS_EXTENSION_NAME'+--+-- -   'NV_SHADER_SM_BUILTINS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV'+--+-- == New or Modified Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-warpspersmnv WarpsPerSMNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-smcountnv SMCountNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-warpidnv WarpIDNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-smidnv SMIDNV>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-shaderSMBuiltins ShaderSMBuiltinsNV>+--+-- == Issues+--+-- 1.  What should we call this extension?+--+--     RESOLVED: Using NV_shader_sm_builtins. Other options considered+--     included:+--+--     -   NV_shader_smid - but SMID is really easy to typo\/confuse as+--         SIMD.+--+--     -   NV_shader_sm_info - but __Info__ is typically reserved for input+--         structures+--+-- == Version History+--+-- -   Revision 1, 2019-05-28 (Daniel Koch)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceShaderSMBuiltinsFeaturesNV',+-- 'PhysicalDeviceShaderSMBuiltinsPropertiesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shader_sm_builtins Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_shader_sm_builtins  ( PhysicalDeviceShaderSMBuiltinsPropertiesNV(..)                                                    , PhysicalDeviceShaderSMBuiltinsFeaturesNV(..)                                                    , NV_SHADER_SM_BUILTINS_SPEC_VERSION
src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs-boot view
@@ -1,4 +1,135 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_shader_sm_builtins - device extension+--+-- == VK_NV_shader_sm_builtins+--+-- [__Name String__]+--     @VK_NV_shader_sm_builtins@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     155+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_shader_sm_builtins:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-05-28+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_sm_builtins.html SPV_NV_shader_sm_builtins>.+--+--     -   This extension enables+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_shader_sm_builtins.txt GL_NV_shader_sm_builtins>+--         for GLSL source languages.+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Eric Werness, NVIDIA+--+-- == Description+--+-- This extension provides the ability to determine device-specific+-- properties on NVIDIA GPUs. It provides the number of streaming+-- multiprocessors (SMs), the maximum number of warps (subgroups) that can+-- run on an SM, and shader builtins to enable invocations to identify+-- which SM and warp a shader invocation is executing on.+--+-- This extension enables support for the SPIR-V @ShaderSMBuiltinsNV@+-- capability.+--+-- These properties and built-ins /should/ typically only be used for+-- debugging purposes.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShaderSMBuiltinsFeaturesNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceShaderSMBuiltinsPropertiesNV'+--+-- == New Enum Constants+--+-- -   'NV_SHADER_SM_BUILTINS_EXTENSION_NAME'+--+-- -   'NV_SHADER_SM_BUILTINS_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV'+--+-- == New or Modified Built-In Variables+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-warpspersmnv WarpsPerSMNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-smcountnv SMCountNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-warpidnv WarpIDNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-smidnv SMIDNV>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-shaderSMBuiltins ShaderSMBuiltinsNV>+--+-- == Issues+--+-- 1.  What should we call this extension?+--+--     RESOLVED: Using NV_shader_sm_builtins. Other options considered+--     included:+--+--     -   NV_shader_smid - but SMID is really easy to typo\/confuse as+--         SIMD.+--+--     -   NV_shader_sm_info - but __Info__ is typically reserved for input+--         structures+--+-- == Version History+--+-- -   Revision 1, 2019-05-28 (Daniel Koch)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PhysicalDeviceShaderSMBuiltinsFeaturesNV',+-- 'PhysicalDeviceShaderSMBuiltinsPropertiesNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shader_sm_builtins Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_shader_sm_builtins  ( PhysicalDeviceShaderSMBuiltinsFeaturesNV                                                    , PhysicalDeviceShaderSMBuiltinsPropertiesNV                                                    ) where
src/Vulkan/Extensions/VK_NV_shader_subgroup_partitioned.hs view
@@ -1,4 +1,92 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_shader_subgroup_partitioned - device extension+--+-- == VK_NV_shader_subgroup_partitioned+--+-- [__Name String__]+--     @VK_NV_shader_subgroup_partitioned@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     199+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.1+--+-- [__Contact__]+--+--     -   Jeff Bolz+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_shader_subgroup_partitioned:%20&body=@jeffbolznv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2018-03-17+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_subgroup_partitioned.html SPV_NV_shader_subgroup_partitioned>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GL_NV_shader_subgroup_partitioned.txt GL_NV_shader_subgroup_partitioned>+--+-- [__Contributors__]+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension enables support for a new class of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>+-- on+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroups>+-- via the+-- <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GL_NV_shader_subgroup_partitioned.txt GL_NV_shader_subgroup_partitioned>+-- GLSL extension and+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_subgroup_partitioned.html SPV_NV_shader_subgroup_partitioned>+-- SPIR-V extension. Support for these new operations is advertised via the+-- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_PARTITIONED_BIT_NV'+-- bit.+--+-- This extension requires Vulkan 1.1, for general subgroup support.+--+-- == New Enum Constants+--+-- -   'NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME'+--+-- -   'NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlagBits':+--+--     -   'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_PARTITIONED_BIT_NV'+--+-- == Version History+--+-- -   Revision 1, 2018-03-17 (Jeff Bolz)+--+--     -   Internal revisions+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shader_subgroup_partitioned Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_shader_subgroup_partitioned  ( NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION                                                             , pattern NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION                                                             , NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME
src/Vulkan/Extensions/VK_NV_shading_rate_image.hs view
@@ -1,4 +1,279 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_shading_rate_image - device extension+--+-- == VK_NV_shading_rate_image+--+-- [__Name String__]+--     @VK_NV_shading_rate_image@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     165+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Pat Brown+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_shading_rate_image:%20&body=@nvpbrown%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-07-18+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shading_rate.html SPV_NV_shading_rate>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_shading_rate_image.txt GL_NV_shading_rate_image>+--+-- [__Contributors__]+--+--     -   Pat Brown, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Mathias Schott, NVIDIA+--+--     -   Matthew Netsch, Qualcomm Technologies, Inc.+--+-- == Description+--+-- This extension allows applications to use a variable shading rate when+-- processing fragments of rasterized primitives. By default, Vulkan will+-- spawn one fragment shader for each pixel covered by a primitive. In this+-- extension, applications can bind a /shading rate image/ that can be used+-- to vary the number of fragment shader invocations across the+-- framebuffer. Some portions of the screen may be configured to spawn up+-- to 16 fragment shaders for each pixel, while other portions may use a+-- single fragment shader invocation for a 4x4 block of pixels. This can be+-- useful for use cases like eye tracking, where the portion of the+-- framebuffer that the user is looking at directly can be processed at+-- high frequency, while distant corners of the image can be processed at+-- lower frequency. Each texel in the shading rate image represents a+-- fixed-size rectangle in the framebuffer, covering 16x16 pixels in the+-- initial implementation of this extension. When rasterizing a primitive+-- covering one of these rectangles, the Vulkan implementation reads a+-- texel in the bound shading rate image and looks up the fetched value in+-- a palette to determine a base shading rate.+--+-- In addition to the API support controlling rasterization, this extension+-- also adds Vulkan support for the+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shading_rate.html SPV_NV_shading_rate>+-- extension to SPIR-V. That extension provides two fragment shader+-- variable decorations that allow fragment shaders to determine the+-- shading rate used for processing the fragment:+--+-- -   @FragmentSizeNV@, which indicates the width and height of the set of+--     pixels processed by the fragment shader.+--+-- -   @InvocationsPerPixel@, which indicates the maximum number of+--     fragment shader invocations that could be spawned for the pixel(s)+--     covered by the fragment.+--+-- When using SPIR-V in conjunction with the OpenGL Shading Language+-- (GLSL), the fragment shader capabilities are provided by the+-- @GL_NV_shading_rate_image@ language extension and correspond to the+-- built-in variables @gl_FragmentSizeNV@ and @gl_InvocationsPerPixelNV@,+-- respectively.+--+-- == New Commands+--+-- -   'cmdBindShadingRateImageNV'+--+-- -   'cmdSetCoarseSampleOrderNV'+--+-- -   'cmdSetViewportShadingRatePaletteNV'+--+-- == New Structures+--+-- -   'CoarseSampleLocationNV'+--+-- -   'CoarseSampleOrderCustomNV'+--+-- -   'ShadingRatePaletteNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShadingRateImageFeaturesNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceShadingRateImagePropertiesNV'+--+-- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':+--+--     -   'PipelineViewportCoarseSampleOrderStateCreateInfoNV'+--+--     -   'PipelineViewportShadingRateImageStateCreateInfoNV'+--+-- == New Enums+--+-- -   'CoarseSampleOrderTypeNV'+--+-- -   'ShadingRatePaletteEntryNV'+--+-- == New Enum Constants+--+-- -   'NV_SHADING_RATE_IMAGE_EXTENSION_NAME'+--+-- -   'NV_SHADING_RATE_IMAGE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':+--+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV'+--+-- == Issues+--+-- (1) When using shading rates specifying “coarse” fragments covering+-- multiple pixels, we will generate a combined coverage mask that combines+-- the coverage masks of all pixels covered by the fragment. By default,+-- these masks are combined in an implementation-dependent order. Should we+-- provide a mechanism allowing applications to query or specify an exact+-- order?+--+-- __RESOLVED__: Yes, this feature is useful for cases where most of the+-- fragment shader can be evaluated once for an entire coarse fragment, but+-- where some per-pixel computations are also required. For example, a+-- per-pixel alpha test may want to kill all the samples for some pixels in+-- a coarse fragment. This sort of test can be implemented using an output+-- sample mask, but such a shader would need to know which bit in the mask+-- corresponds to each sample in the coarse fragment. We are including a+-- mechanism to allow aplications to specify the orders of coverage samples+-- for each shading rate and sample count, either as static pipeline state+-- or dynamically via a command buffer. This portion of the extension has+-- its own feature bit.+--+-- We will not be providing a query to determine the+-- implementation-dependent default ordering. The thinking here is that if+-- an application cares enough about the coarse fragment sample ordering to+-- perform such a query, it could instead just set its own order, also+-- using custom per-pixel sample locations if required.+--+-- (2) For the pipeline stage+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV',+-- should we specify a precise location in the pipeline the shading rate+-- image is accessed (after geometry shading, but before the early fragment+-- tests) or leave it under-specified in case there are other+-- implementations that access the image in a different pipeline location?+--+-- __RESOLVED__ We are specifying the pipeline stage to be between the+-- final stage used for vertex processing+-- ('Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT')+-- and before the first stage used for fragment processing+-- ('Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'),+-- which seems to be the natural place to access the shading rate image.+--+-- (3) How do centroid-sampled variables work with fragments larger than+-- one pixel?+--+-- __RESOLVED__ For single-pixel fragments, fragment shader inputs+-- decorated with @Centroid@ are sampled at an implementation-dependent+-- location in the intersection of the area of the primitive being+-- rasterized and the area of the pixel that corresponds to the fragment.+-- With multi-pixel fragments, we follow a similar pattern, using the+-- intersection of the primitive and the __set__ of pixels corresponding to+-- the fragment.+--+-- One important thing to keep in mind when using such “coarse” shading+-- rates is that fragment attributes are sampled at the center of the+-- fragment by default, regardless of the set of pixels\/samples covered by+-- the fragment. For fragments with a size of 4x4 pixels, this center+-- location will be more than two pixels (1.5 * sqrt(2)) away from the+-- center of the pixels at the corners of the fragment. When rendering a+-- primitive that covers only a small part of a coarse fragment, sampling a+-- color outside the primitive can produce overly bright or dark color+-- values if the color values have a large gradient. To deal with this, an+-- application can use centroid sampling on attributes where+-- “extrapolation” artifacts can lead to overly bright or dark pixels. Note+-- that this same problem also exists for multisampling with single-pixel+-- fragments, but is less severe because it only affects certain samples of+-- a pixel and such bright\/dark samples may be averaged with other samples+-- that don’t have a similar problem.+--+-- == Version History+--+-- -   Revision 3, 2019-07-18 (Mathias Schott)+--+--     -   Fully list extension interfaces in this appendix.+--+-- -   Revision 2, 2018-09-13 (Pat Brown)+--+--     -   Miscellaneous edits preparing the specification for publication.+--+-- -   Revision 1, 2018-08-08 (Pat Brown)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'CoarseSampleLocationNV', 'CoarseSampleOrderCustomNV',+-- 'CoarseSampleOrderTypeNV', 'PhysicalDeviceShadingRateImageFeaturesNV',+-- 'PhysicalDeviceShadingRateImagePropertiesNV',+-- 'PipelineViewportCoarseSampleOrderStateCreateInfoNV',+-- 'PipelineViewportShadingRateImageStateCreateInfoNV',+-- 'ShadingRatePaletteEntryNV', 'ShadingRatePaletteNV',+-- 'cmdBindShadingRateImageNV', 'cmdSetCoarseSampleOrderNV',+-- 'cmdSetViewportShadingRatePaletteNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shading_rate_image Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_shading_rate_image  ( cmdBindShadingRateImageNV                                                    , cmdSetViewportShadingRatePaletteNV                                                    , cmdSetCoarseSampleOrderNV@@ -35,6 +310,8 @@                                                    , pattern NV_SHADING_RATE_IMAGE_EXTENSION_NAME                                                    ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -42,15 +319,7 @@ import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString) import GHC.Show (showsPrec)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Data.Vector (generateM)@@ -70,8 +339,8 @@ import Foreign.Ptr (FunPtr) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)@@ -687,22 +956,22 @@  instance ToCStruct PhysicalDeviceShadingRateImagePropertiesNV where   withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PhysicalDeviceShadingRateImagePropertiesNV{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (shadingRateTexelSize) . ($ ())-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (shadingRatePaletteSize)-    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (shadingRateMaxCoarseSamples)-    lift $ f+  pokeCStruct p PhysicalDeviceShadingRateImagePropertiesNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (shadingRateTexelSize)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (shadingRatePaletteSize)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (shadingRateMaxCoarseSamples)+    f   cStructSize = 32   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (zero) . ($ ())-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Extent2D)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+    f  instance FromCStruct PhysicalDeviceShadingRateImagePropertiesNV where   peekCStruct p = do@@ -712,6 +981,12 @@     pure $ PhysicalDeviceShadingRateImagePropertiesNV              shadingRateTexelSize shadingRatePaletteSize shadingRateMaxCoarseSamples +instance Storable PhysicalDeviceShadingRateImagePropertiesNV where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())+ instance Zero PhysicalDeviceShadingRateImagePropertiesNV where   zero = PhysicalDeviceShadingRateImagePropertiesNV            zero@@ -871,7 +1146,7 @@     lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (sampleCount)     lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (sampleLocations)) :: Word32))     pPSampleLocations' <- ContT $ allocaBytesAligned @CoarseSampleLocationNV ((Data.Vector.length (sampleLocations)) * 12) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSampleLocations' `plusPtr` (12 * (i)) :: Ptr CoarseSampleLocationNV) (e) . ($ ())) (sampleLocations)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPSampleLocations' `plusPtr` (12 * (i)) :: Ptr CoarseSampleLocationNV) (e)) (sampleLocations)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CoarseSampleLocationNV))) (pPSampleLocations')     lift $ f   cStructSize = 24@@ -880,7 +1155,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr ShadingRatePaletteEntryNV)) (zero)     lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)     pPSampleLocations' <- ContT $ allocaBytesAligned @CoarseSampleLocationNV ((Data.Vector.length (mempty)) * 12) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSampleLocations' `plusPtr` (12 * (i)) :: Ptr CoarseSampleLocationNV) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPSampleLocations' `plusPtr` (12 * (i)) :: Ptr CoarseSampleLocationNV) (e)) (mempty)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CoarseSampleLocationNV))) (pPSampleLocations')     lift $ f @@ -1048,17 +1323,17 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV"-pattern SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = ShadingRatePaletteEntryNV 0+pattern SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV              = ShadingRatePaletteEntryNV 0 -- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV"-pattern SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = ShadingRatePaletteEntryNV 1+pattern SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV    = ShadingRatePaletteEntryNV 1 -- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV"-pattern SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = ShadingRatePaletteEntryNV 2+pattern SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV     = ShadingRatePaletteEntryNV 2 -- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV"-pattern SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = ShadingRatePaletteEntryNV 3+pattern SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV     = ShadingRatePaletteEntryNV 3 -- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV"-pattern SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = ShadingRatePaletteEntryNV 4+pattern SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV     = ShadingRatePaletteEntryNV 4 -- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV"-pattern SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = ShadingRatePaletteEntryNV 5+pattern SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV      = ShadingRatePaletteEntryNV 5 -- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV" pattern SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = ShadingRatePaletteEntryNV 6 -- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV"@@ -1084,40 +1359,40 @@              SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV,              SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV :: ShadingRatePaletteEntryNV #-} +conNameShadingRatePaletteEntryNV :: String+conNameShadingRatePaletteEntryNV = "ShadingRatePaletteEntryNV"++enumPrefixShadingRatePaletteEntryNV :: String+enumPrefixShadingRatePaletteEntryNV = "SHADING_RATE_PALETTE_ENTRY_"++showTableShadingRatePaletteEntryNV :: [(ShadingRatePaletteEntryNV, String)]+showTableShadingRatePaletteEntryNV =+  [ (SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV             , "NO_INVOCATIONS_NV")+  , (SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV   , "16_INVOCATIONS_PER_PIXEL_NV")+  , (SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV    , "8_INVOCATIONS_PER_PIXEL_NV")+  , (SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV    , "4_INVOCATIONS_PER_PIXEL_NV")+  , (SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV    , "2_INVOCATIONS_PER_PIXEL_NV")+  , (SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV     , "1_INVOCATION_PER_PIXEL_NV")+  , (SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV, "1_INVOCATION_PER_2X1_PIXELS_NV")+  , (SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV, "1_INVOCATION_PER_1X2_PIXELS_NV")+  , (SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV, "1_INVOCATION_PER_2X2_PIXELS_NV")+  , (SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV, "1_INVOCATION_PER_4X2_PIXELS_NV")+  , (SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV, "1_INVOCATION_PER_2X4_PIXELS_NV")+  , (SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV, "1_INVOCATION_PER_4X4_PIXELS_NV")+  ]+ instance Show ShadingRatePaletteEntryNV where-  showsPrec p = \case-    SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV -> showString "SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV"-    SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV -> showString "SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV"-    SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV -> showString "SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV"-    SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV -> showString "SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV"-    SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV -> showString "SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV"-    SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV -> showString "SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV"-    SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV -> showString "SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV"-    SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV -> showString "SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV"-    SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV -> showString "SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV"-    SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV -> showString "SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV"-    SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV -> showString "SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV"-    SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV -> showString "SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV"-    ShadingRatePaletteEntryNV x -> showParen (p >= 11) (showString "ShadingRatePaletteEntryNV " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixShadingRatePaletteEntryNV+                            showTableShadingRatePaletteEntryNV+                            conNameShadingRatePaletteEntryNV+                            (\(ShadingRatePaletteEntryNV x) -> x)+                            (showsPrec 11)  instance Read ShadingRatePaletteEntryNV where-  readPrec = parens (choose [("SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV", pure SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV)-                            , ("SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV", pure SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV)-                            , ("SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV", pure SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV)-                            , ("SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV", pure SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV)-                            , ("SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV", pure SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV)-                            , ("SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV", pure SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV)-                            , ("SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV", pure SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV)-                            , ("SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV", pure SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV)-                            , ("SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV", pure SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV)-                            , ("SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV", pure SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV)-                            , ("SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV", pure SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV)-                            , ("SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV", pure SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "ShadingRatePaletteEntryNV")-                       v <- step readPrec-                       pure (ShadingRatePaletteEntryNV v)))+  readPrec = enumReadPrec enumPrefixShadingRatePaletteEntryNV+                          showTableShadingRatePaletteEntryNV+                          conNameShadingRatePaletteEntryNV+                          ShadingRatePaletteEntryNV   -- | VkCoarseSampleOrderTypeNV - Shading rate image sample ordering types@@ -1131,18 +1406,18 @@  -- | 'COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV' specifies that coverage samples -- will be ordered in an implementation-dependent manner.-pattern COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = CoarseSampleOrderTypeNV 0+pattern COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV      = CoarseSampleOrderTypeNV 0 -- | 'COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV' specifies that coverage samples -- will be ordered according to the array of custom orderings provided in -- either the @pCustomSampleOrders@ member of -- 'PipelineViewportCoarseSampleOrderStateCreateInfoNV' or the -- @pCustomSampleOrders@ member of 'cmdSetCoarseSampleOrderNV'.-pattern COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = CoarseSampleOrderTypeNV 1+pattern COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV       = CoarseSampleOrderTypeNV 1 -- | 'COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV' specifies that coverage -- samples will be ordered sequentially, sorted first by pixel coordinate -- (in row-major order) and then by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>.-pattern COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = CoarseSampleOrderTypeNV 2+pattern COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV  = CoarseSampleOrderTypeNV 2 -- | 'COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV' specifies that coverage -- samples will be ordered sequentially, sorted first by -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>@@ -1153,24 +1428,32 @@              COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV,              COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV :: CoarseSampleOrderTypeNV #-} +conNameCoarseSampleOrderTypeNV :: String+conNameCoarseSampleOrderTypeNV = "CoarseSampleOrderTypeNV"++enumPrefixCoarseSampleOrderTypeNV :: String+enumPrefixCoarseSampleOrderTypeNV = "COARSE_SAMPLE_ORDER_TYPE_"++showTableCoarseSampleOrderTypeNV :: [(CoarseSampleOrderTypeNV, String)]+showTableCoarseSampleOrderTypeNV =+  [ (COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV     , "DEFAULT_NV")+  , (COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV      , "CUSTOM_NV")+  , (COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV , "PIXEL_MAJOR_NV")+  , (COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV, "SAMPLE_MAJOR_NV")+  ]+ instance Show CoarseSampleOrderTypeNV where-  showsPrec p = \case-    COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV -> showString "COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV"-    COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV -> showString "COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV"-    COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV -> showString "COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV"-    COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV -> showString "COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV"-    CoarseSampleOrderTypeNV x -> showParen (p >= 11) (showString "CoarseSampleOrderTypeNV " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixCoarseSampleOrderTypeNV+                            showTableCoarseSampleOrderTypeNV+                            conNameCoarseSampleOrderTypeNV+                            (\(CoarseSampleOrderTypeNV x) -> x)+                            (showsPrec 11)  instance Read CoarseSampleOrderTypeNV where-  readPrec = parens (choose [("COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV", pure COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV)-                            , ("COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV", pure COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV)-                            , ("COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV", pure COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV)-                            , ("COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV", pure COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "CoarseSampleOrderTypeNV")-                       v <- step readPrec-                       pure (CoarseSampleOrderTypeNV v)))+  readPrec = enumReadPrec enumPrefixCoarseSampleOrderTypeNV+                          showTableCoarseSampleOrderTypeNV+                          conNameCoarseSampleOrderTypeNV+                          CoarseSampleOrderTypeNV   type NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3
src/Vulkan/Extensions/VK_NV_shading_rate_image.hs-boot view
@@ -1,4 +1,279 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_shading_rate_image - device extension+--+-- == VK_NV_shading_rate_image+--+-- [__Name String__]+--     @VK_NV_shading_rate_image@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     165+--+-- [__Revision__]+--     3+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_get_physical_device_properties2@+--+-- [__Contact__]+--+--     -   Pat Brown+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_shading_rate_image:%20&body=@nvpbrown%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-07-18+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shading_rate.html SPV_NV_shading_rate>+--+--     -   This extension provides API support for+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_shading_rate_image.txt GL_NV_shading_rate_image>+--+-- [__Contributors__]+--+--     -   Pat Brown, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+--     -   Daniel Koch, NVIDIA+--+--     -   Mathias Schott, NVIDIA+--+--     -   Matthew Netsch, Qualcomm Technologies, Inc.+--+-- == Description+--+-- This extension allows applications to use a variable shading rate when+-- processing fragments of rasterized primitives. By default, Vulkan will+-- spawn one fragment shader for each pixel covered by a primitive. In this+-- extension, applications can bind a /shading rate image/ that can be used+-- to vary the number of fragment shader invocations across the+-- framebuffer. Some portions of the screen may be configured to spawn up+-- to 16 fragment shaders for each pixel, while other portions may use a+-- single fragment shader invocation for a 4x4 block of pixels. This can be+-- useful for use cases like eye tracking, where the portion of the+-- framebuffer that the user is looking at directly can be processed at+-- high frequency, while distant corners of the image can be processed at+-- lower frequency. Each texel in the shading rate image represents a+-- fixed-size rectangle in the framebuffer, covering 16x16 pixels in the+-- initial implementation of this extension. When rasterizing a primitive+-- covering one of these rectangles, the Vulkan implementation reads a+-- texel in the bound shading rate image and looks up the fetched value in+-- a palette to determine a base shading rate.+--+-- In addition to the API support controlling rasterization, this extension+-- also adds Vulkan support for the+-- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shading_rate.html SPV_NV_shading_rate>+-- extension to SPIR-V. That extension provides two fragment shader+-- variable decorations that allow fragment shaders to determine the+-- shading rate used for processing the fragment:+--+-- -   @FragmentSizeNV@, which indicates the width and height of the set of+--     pixels processed by the fragment shader.+--+-- -   @InvocationsPerPixel@, which indicates the maximum number of+--     fragment shader invocations that could be spawned for the pixel(s)+--     covered by the fragment.+--+-- When using SPIR-V in conjunction with the OpenGL Shading Language+-- (GLSL), the fragment shader capabilities are provided by the+-- @GL_NV_shading_rate_image@ language extension and correspond to the+-- built-in variables @gl_FragmentSizeNV@ and @gl_InvocationsPerPixelNV@,+-- respectively.+--+-- == New Commands+--+-- -   'cmdBindShadingRateImageNV'+--+-- -   'cmdSetCoarseSampleOrderNV'+--+-- -   'cmdSetViewportShadingRatePaletteNV'+--+-- == New Structures+--+-- -   'CoarseSampleLocationNV'+--+-- -   'CoarseSampleOrderCustomNV'+--+-- -   'ShadingRatePaletteNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceShadingRateImageFeaturesNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':+--+--     -   'PhysicalDeviceShadingRateImagePropertiesNV'+--+-- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':+--+--     -   'PipelineViewportCoarseSampleOrderStateCreateInfoNV'+--+--     -   'PipelineViewportShadingRateImageStateCreateInfoNV'+--+-- == New Enums+--+-- -   'CoarseSampleOrderTypeNV'+--+-- -   'ShadingRatePaletteEntryNV'+--+-- == New Enum Constants+--+-- -   'NV_SHADING_RATE_IMAGE_EXTENSION_NAME'+--+-- -   'NV_SHADING_RATE_IMAGE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':+--+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV'+--+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':+--+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':+--+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':+--+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV'+--+-- == Issues+--+-- (1) When using shading rates specifying “coarse” fragments covering+-- multiple pixels, we will generate a combined coverage mask that combines+-- the coverage masks of all pixels covered by the fragment. By default,+-- these masks are combined in an implementation-dependent order. Should we+-- provide a mechanism allowing applications to query or specify an exact+-- order?+--+-- __RESOLVED__: Yes, this feature is useful for cases where most of the+-- fragment shader can be evaluated once for an entire coarse fragment, but+-- where some per-pixel computations are also required. For example, a+-- per-pixel alpha test may want to kill all the samples for some pixels in+-- a coarse fragment. This sort of test can be implemented using an output+-- sample mask, but such a shader would need to know which bit in the mask+-- corresponds to each sample in the coarse fragment. We are including a+-- mechanism to allow aplications to specify the orders of coverage samples+-- for each shading rate and sample count, either as static pipeline state+-- or dynamically via a command buffer. This portion of the extension has+-- its own feature bit.+--+-- We will not be providing a query to determine the+-- implementation-dependent default ordering. The thinking here is that if+-- an application cares enough about the coarse fragment sample ordering to+-- perform such a query, it could instead just set its own order, also+-- using custom per-pixel sample locations if required.+--+-- (2) For the pipeline stage+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV',+-- should we specify a precise location in the pipeline the shading rate+-- image is accessed (after geometry shading, but before the early fragment+-- tests) or leave it under-specified in case there are other+-- implementations that access the image in a different pipeline location?+--+-- __RESOLVED__ We are specifying the pipeline stage to be between the+-- final stage used for vertex processing+-- ('Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT')+-- and before the first stage used for fragment processing+-- ('Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'),+-- which seems to be the natural place to access the shading rate image.+--+-- (3) How do centroid-sampled variables work with fragments larger than+-- one pixel?+--+-- __RESOLVED__ For single-pixel fragments, fragment shader inputs+-- decorated with @Centroid@ are sampled at an implementation-dependent+-- location in the intersection of the area of the primitive being+-- rasterized and the area of the pixel that corresponds to the fragment.+-- With multi-pixel fragments, we follow a similar pattern, using the+-- intersection of the primitive and the __set__ of pixels corresponding to+-- the fragment.+--+-- One important thing to keep in mind when using such “coarse” shading+-- rates is that fragment attributes are sampled at the center of the+-- fragment by default, regardless of the set of pixels\/samples covered by+-- the fragment. For fragments with a size of 4x4 pixels, this center+-- location will be more than two pixels (1.5 * sqrt(2)) away from the+-- center of the pixels at the corners of the fragment. When rendering a+-- primitive that covers only a small part of a coarse fragment, sampling a+-- color outside the primitive can produce overly bright or dark color+-- values if the color values have a large gradient. To deal with this, an+-- application can use centroid sampling on attributes where+-- “extrapolation” artifacts can lead to overly bright or dark pixels. Note+-- that this same problem also exists for multisampling with single-pixel+-- fragments, but is less severe because it only affects certain samples of+-- a pixel and such bright\/dark samples may be averaged with other samples+-- that don’t have a similar problem.+--+-- == Version History+--+-- -   Revision 3, 2019-07-18 (Mathias Schott)+--+--     -   Fully list extension interfaces in this appendix.+--+-- -   Revision 2, 2018-09-13 (Pat Brown)+--+--     -   Miscellaneous edits preparing the specification for publication.+--+-- -   Revision 1, 2018-08-08 (Pat Brown)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'CoarseSampleLocationNV', 'CoarseSampleOrderCustomNV',+-- 'CoarseSampleOrderTypeNV', 'PhysicalDeviceShadingRateImageFeaturesNV',+-- 'PhysicalDeviceShadingRateImagePropertiesNV',+-- 'PipelineViewportCoarseSampleOrderStateCreateInfoNV',+-- 'PipelineViewportShadingRateImageStateCreateInfoNV',+-- 'ShadingRatePaletteEntryNV', 'ShadingRatePaletteNV',+-- 'cmdBindShadingRateImageNV', 'cmdSetCoarseSampleOrderNV',+-- 'cmdSetViewportShadingRatePaletteNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shading_rate_image Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_shading_rate_image  ( CoarseSampleLocationNV                                                    , CoarseSampleOrderCustomNV                                                    , PhysicalDeviceShadingRateImageFeaturesNV
src/Vulkan/Extensions/VK_NV_viewport_array2.hs view
@@ -1,4 +1,135 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_viewport_array2 - device extension+--+-- == VK_NV_viewport_array2+--+-- [__Name String__]+--     @VK_NV_viewport_array2@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     97+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Daniel Koch+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_viewport_array2:%20&body=@dgkoch%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2017-02-15+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_viewport_array2.html SPV_NV_viewport_array2>+--+--     -   This extension provides API support for+--         <https://www.khronos.org/registry/OpenGL/extensions/NV/NV_viewport_array2.txt GL_NV_viewport_array2>+--+--     -   This extension requires the @geometryShader@ and @multiViewport@+--         features.+--+--     -   This extension interacts with the @tessellationShader@ feature.+--+-- [__Contributors__]+--+--     -   Piers Daniell, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension adds support for the following SPIR-V extension in+-- Vulkan:+--+-- -   @SPV_NV_viewport_array2@+--+-- which allows a single primitive to be broadcast to multiple viewports+-- and\/or multiple layers. A new shader built-in output @ViewportMaskNV@+-- is provided, which allows a single primitive to be output to multiple+-- viewports simultaneously. Also, a new SPIR-V decoration is added to+-- control whether the effective viewport index is added into the variable+-- decorated with the @Layer@ built-in decoration. These capabilities allow+-- a single primitive to be output to multiple layers simultaneously.+--+-- This extension allows variables decorated with the @Layer@ and+-- @ViewportIndex@ built-ins to be exported from vertex or tessellation+-- shaders, using the @ShaderViewportIndexLayerNV@ capability.+--+-- This extension adds a new @ViewportMaskNV@ built-in decoration that is+-- available for output variables in vertex, tessellation evaluation, and+-- geometry shaders, and a new @ViewportRelativeNV@ decoration that can be+-- added on variables decorated with @Layer@ when using the+-- @ShaderViewportMaskNV@ capability.+--+-- When using GLSL source-based shading languages, the @gl_ViewportMask@[]+-- built-in output variable and @viewport_relative@ layout qualifier from+-- @GL_NV_viewport_array2@ map to the @ViewportMaskNV@ and+-- @ViewportRelativeNV@ decorations, respectively. Behaviour is described+-- in the @GL_NV_viewport_array2@ extension specificiation.+--+-- Note+--+-- The @ShaderViewportIndexLayerNV@ capability is equivalent to the+-- @ShaderViewportIndexLayerEXT@ capability added by+-- @VK_EXT_shader_viewport_index_layer@.+--+-- == New Enum Constants+--+-- -   'NV_VIEWPORT_ARRAY2_EXTENSION_NAME'+--+-- -   'NV_VIEWPORT_ARRAY2_SPEC_VERSION'+--+-- == New or Modified Built-In Variables+--+-- -   (modified)+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-layer Layer>+--+-- -   (modified)+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-viewportindex ViewportIndex>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-viewportmask ViewportMaskNV>+--+-- == New Variable Decoration+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-layer ViewportRelativeNV in Layer>+--+-- == New SPIR-V Capabilities+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-viewportarray2 ShaderViewportIndexLayerNV>+--+-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-viewportarray2 ShaderViewportMaskNV>+--+-- == Version History+--+-- -   Revision 1, 2017-02-15 (Daniel Koch)+--+--     -   Internal revisions+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_viewport_array2 Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_viewport_array2  ( NV_VIEWPORT_ARRAY2_SPEC_VERSION                                                 , pattern NV_VIEWPORT_ARRAY2_SPEC_VERSION                                                 , NV_VIEWPORT_ARRAY2_EXTENSION_NAME
src/Vulkan/Extensions/VK_NV_viewport_swizzle.hs view
@@ -1,4 +1,268 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_viewport_swizzle - device extension+--+-- == VK_NV_viewport_swizzle+--+-- [__Name String__]+--     @VK_NV_viewport_swizzle@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     99+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_viewport_swizzle:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-12-22+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires @multiViewport@ and @geometryShader@+--         features to be useful.+--+-- [__Contributors__]+--+--     -   Daniel Koch, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension provides a new per-viewport swizzle that can modify the+-- position of primitives sent to each viewport. New viewport swizzle state+-- is added for each viewport, and a new position vector is computed for+-- each vertex by selecting from and optionally negating any of the four+-- components of the original position vector.+--+-- This new viewport swizzle is useful for a number of algorithms,+-- including single-pass cubemap rendering (broadcasting a primitive to+-- multiple faces and reorienting the vertex position for each face) and+-- voxel rasterization. The per-viewport component remapping and negation+-- provided by the swizzle allows application code to re-orient+-- three-dimensional geometry with a view along any of the __X__, __Y__, or+-- __Z__ axes. If a perspective projection and depth buffering is required,+-- 1\/W buffering should be used, as described in the single-pass cubemap+-- rendering example in the “Issues” section below.+--+-- == New Structures+--+-- -   'ViewportSwizzleNV'+--+-- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':+--+--     -   'PipelineViewportSwizzleStateCreateInfoNV'+--+-- == New Enums+--+-- -   'ViewportCoordinateSwizzleNV'+--+-- == New Bitmasks+--+-- -   'PipelineViewportSwizzleStateCreateFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_VIEWPORT_SWIZZLE_EXTENSION_NAME'+--+-- -   'NV_VIEWPORT_SWIZZLE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV'+--+-- == Issues+--+-- 1) Where does viewport swizzling occur in the pipeline?+--+-- __RESOLVED__: Despite being associated with the viewport, viewport+-- swizzling must happen prior to the viewport transform. In particular, it+-- needs to be performed before clipping and perspective division.+--+-- The viewport mask expansion (@VK_NV_viewport_array2@) and the viewport+-- swizzle could potentially be performed before or after transform+-- feedback, but feeding back several viewports worth of primitives with+-- different swizzles doesn’t seem particularly useful. This specification+-- applies the viewport mask and swizzle after transform feedback, and+-- makes primitive queries only count each primitive once.+--+-- 2) Any interesting examples of how this extension,+-- @VK_NV_viewport_array2@, and @VK_NV_geometry_shader_passthrough@ can be+-- used together in practice?+--+-- __RESOLVED__: One interesting use case for this extension is for+-- single-pass rendering to a cubemap. In this example, the application+-- would attach a cubemap texture to a layered FBO where the six cube faces+-- are treated as layers. Vertices are sent through the vertex shader+-- without applying a projection matrix, where the @gl_Position@ output is+-- (x,y,z,1) and the center of the cubemap is at (0,0,0). With unextended+-- Vulkan, one could have a conventional instanced geometry shader that+-- looks something like the following:+--+-- > layout(invocations = 6) in;     // separate invocation per face+-- > layout(triangles) in;+-- > layout(triangle_strip) out;+-- > layout(max_vertices = 3) out;+-- >+-- > in Inputs {+-- > vec2 texcoord;+-- > vec3 normal;+-- > vec4 baseColor;+-- > } v[];+-- >+-- >     out Outputs {+-- >     vec2 texcoord;+-- >     vec3 normal;+-- >     vec4 baseColor;+-- >     };+-- >+-- >     void main()+-- >     {+-- >     int face = gl_InvocationID;  // which face am I?+-- >+-- >     // Project gl_Position for each vertex onto the cube map face.+-- >     vec4 positions[3];+-- >     for (int i = 0; i < 3; i++) {+-- >         positions[i] = rotate(gl_in[i].gl_Position, face);+-- >     }+-- >+-- >     // If the primitive doesn't project onto this face, we're done.+-- >     if (shouldCull(positions)) {+-- >         return;+-- >     }+-- >+-- >     // Otherwise, emit a copy of the input primitive to the+-- >     // appropriate face (using gl_Layer).+-- >     for (int i = 0; i < 3; i++) {+-- >         gl_Layer = face;+-- >         gl_Position = positions[i];+-- >         texcoord = v[i].texcoord;+-- >         normal = v[i].normal;+-- >         baseColor = v[i].baseColor;+-- >         EmitVertex();+-- >     }+-- > }+--+-- With passthrough geometry shaders, this can be done using a much simpler+-- shader:+--+-- > layout(triangles) in;+-- > layout(passthrough) in Inputs {+-- >     vec2 texcoord;+-- >     vec3 normal;+-- >     vec4 baseColor;+-- > }+-- > layout(passthrough) in gl_PerVertex {+-- >     vec4 gl_Position;+-- > } gl_in[];+-- > layout(viewport_relative) out int gl_Layer;+-- >+-- > void main()+-- > {+-- >     // Figure out which faces the primitive projects onto and+-- >     // generate a corresponding viewport mask.+-- >     uint mask = 0;+-- >     for (int i = 0; i < 6; i++) {+-- >         if (!shouldCull(face)) {+-- >         mask |= 1U << i;+-- >         }+-- >     }+-- >     gl_ViewportMask = mask;+-- >     gl_Layer = 0;+-- > }+--+-- The application code is set up so that each of the six cube faces has a+-- separate viewport (numbered 0 to 5). Each face also has a separate+-- swizzle, programmed via the 'PipelineViewportSwizzleStateCreateInfoNV'+-- pipeline state. The viewport swizzle feature performs the coordinate+-- transformation handled by the @rotate@() function in the original+-- shader. The @viewport_relative@ layout qualifier says that the viewport+-- number (0 to 5) is added to the base @gl_Layer@ value of 0 to determine+-- which layer (cube face) the primitive should be sent to.+--+-- Note that the use of the passed through input @normal@ in this example+-- suggests that the fragment shader in this example would perform an+-- operation like per-fragment lighting. The viewport swizzle would+-- transform the position to be face-relative, but @normal@ would remain in+-- the original coordinate system. It seems likely that the fragment shader+-- in either version of the example would want to perform lighting in the+-- original coordinate system. It would likely do this by reconstructing+-- the position of the fragment in the original coordinate system using+-- @gl_FragCoord@, a constant or uniform holding the size of the cube face,+-- and the input @gl_ViewportIndex@ (or @gl_Layer@), which identifies the+-- cube face. Since the value of @normal@ is in the original coordinate+-- system, it would not need to be modified as part of this coordinate+-- transformation.+--+-- Note that while the @rotate@() operation in the regular geometry shader+-- above could include an arbitrary post-rotation projection matrix, the+-- viewport swizzle does not support arbitrary math. To get proper+-- projection, 1\/W buffering should be used. To do this:+--+-- 1.  Program the viewport swizzles to move the pre-projection W eye+--     coordinate (typically 1.0) into the Z coordinate of the swizzle+--     output and the eye coordinate component used for depth into the W+--     coordinate. For example, the viewport corresponding to the +Z face+--     might use a swizzle of (+X, -Y, +W, +Z). The Z normalized device+--     coordinate computed after swizzling would then be z\'\/w\' =+--     1\/Zeye.+--+-- 2.  On NVIDIA implementations supporting floating-point depth buffers+--     with values outside [0,1], prevent unwanted near plane clipping by+--     enabling @depthClampEnable@. Ensure that the depth clamp doesn’t+--     mess up depth testing by programming the depth range to very large+--     values, such as @minDepthBounds@=-z, @maxDepthBounds@=+z, where z =+--     2127. It should be possible to use IEEE infinity encodings also+--     (@0xFF800000@ for @-INF@, @0x7F800000@ for @+INF@). Even when+--     near\/far clipping is disabled, primitives extending behind the eye+--     will still be clipped because one or more vertices will have a+--     negative W coordinate and fail X\/Y clipping tests.+--+--     On other implementations, scale X, Y, and Z eye coordinates so that+--     vertices on the near plane have a post-swizzle W coordinate of 1.0.+--     For example, if the near plane is at Zeye = 1\/256, scale X, Y, and+--     Z by 256.+--+-- 3.  Adjust depth testing to reflect the fact that 1\/W values are large+--     near the eye and small away from the eye. Clear the depth buffer to+--     zero (infinitely far away) and use a depth test of+--     'Vulkan.Core10.Enums.CompareOp.COMPARE_OP_GREATER' instead of+--     'Vulkan.Core10.Enums.CompareOp.COMPARE_OP_LESS'.+--+-- == Version History+--+-- -   Revision 1, 2016-12-22 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PipelineViewportSwizzleStateCreateFlagsNV',+-- 'PipelineViewportSwizzleStateCreateInfoNV',+-- 'ViewportCoordinateSwizzleNV', 'ViewportSwizzleNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_viewport_swizzle Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_viewport_swizzle  ( ViewportSwizzleNV(..)                                                  , PipelineViewportSwizzleStateCreateInfoNV(..)                                                  , PipelineViewportSwizzleStateCreateFlagsNV(..)@@ -18,19 +282,14 @@                                                  , pattern NV_VIEWPORT_SWIZZLE_EXTENSION_NAME                                                  ) where +import Vulkan.Internal.Utils (enumReadPrec)+import Vulkan.Internal.Utils (enumShowsPrec) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen) import GHC.Show (showString) import GHC.Show (showsPrec) import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Cont (evalContT) import Data.Vector (generateM)@@ -48,8 +307,8 @@ import Data.Int (Int32) import Foreign.Ptr (Ptr) import GHC.Read (Read(readPrec))+import GHC.Show (Show(showsPrec)) import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident)) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)@@ -180,7 +439,7 @@     lift $ poke ((p `plusPtr` 16 :: Ptr PipelineViewportSwizzleStateCreateFlagsNV)) (flags)     lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (viewportSwizzles)) :: Word32))     pPViewportSwizzles' <- ContT $ allocaBytesAligned @ViewportSwizzleNV ((Data.Vector.length (viewportSwizzles)) * 16) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPViewportSwizzles' `plusPtr` (16 * (i)) :: Ptr ViewportSwizzleNV) (e) . ($ ())) (viewportSwizzles)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPViewportSwizzles' `plusPtr` (16 * (i)) :: Ptr ViewportSwizzleNV) (e)) (viewportSwizzles)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ViewportSwizzleNV))) (pPViewportSwizzles')     lift $ f   cStructSize = 32@@ -189,7 +448,7 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     pPViewportSwizzles' <- ContT $ allocaBytesAligned @ViewportSwizzleNV ((Data.Vector.length (mempty)) * 16) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPViewportSwizzles' `plusPtr` (16 * (i)) :: Ptr ViewportSwizzleNV) (e) . ($ ())) (mempty)+    lift $ Data.Vector.imapM_ (\i e -> poke (pPViewportSwizzles' `plusPtr` (16 * (i)) :: Ptr ViewportSwizzleNV) (e)) (mempty)     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ViewportSwizzleNV))) (pPViewportSwizzles')     lift $ f @@ -223,17 +482,27 @@   +conNamePipelineViewportSwizzleStateCreateFlagsNV :: String+conNamePipelineViewportSwizzleStateCreateFlagsNV = "PipelineViewportSwizzleStateCreateFlagsNV"++enumPrefixPipelineViewportSwizzleStateCreateFlagsNV :: String+enumPrefixPipelineViewportSwizzleStateCreateFlagsNV = ""++showTablePipelineViewportSwizzleStateCreateFlagsNV :: [(PipelineViewportSwizzleStateCreateFlagsNV, String)]+showTablePipelineViewportSwizzleStateCreateFlagsNV = []+ instance Show PipelineViewportSwizzleStateCreateFlagsNV where-  showsPrec p = \case-    PipelineViewportSwizzleStateCreateFlagsNV x -> showParen (p >= 11) (showString "PipelineViewportSwizzleStateCreateFlagsNV 0x" . showHex x)+  showsPrec = enumShowsPrec enumPrefixPipelineViewportSwizzleStateCreateFlagsNV+                            showTablePipelineViewportSwizzleStateCreateFlagsNV+                            conNamePipelineViewportSwizzleStateCreateFlagsNV+                            (\(PipelineViewportSwizzleStateCreateFlagsNV x) -> x)+                            (\x -> showString "0x" . showHex x)  instance Read PipelineViewportSwizzleStateCreateFlagsNV where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineViewportSwizzleStateCreateFlagsNV")-                       v <- step readPrec-                       pure (PipelineViewportSwizzleStateCreateFlagsNV v)))+  readPrec = enumReadPrec enumPrefixPipelineViewportSwizzleStateCreateFlagsNV+                          showTablePipelineViewportSwizzleStateCreateFlagsNV+                          conNamePipelineViewportSwizzleStateCreateFlagsNV+                          PipelineViewportSwizzleStateCreateFlagsNV   -- | VkViewportCoordinateSwizzleNV - Specify how a viewport coordinate is@@ -275,32 +544,36 @@              VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,              VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV :: ViewportCoordinateSwizzleNV #-} +conNameViewportCoordinateSwizzleNV :: String+conNameViewportCoordinateSwizzleNV = "ViewportCoordinateSwizzleNV"++enumPrefixViewportCoordinateSwizzleNV :: String+enumPrefixViewportCoordinateSwizzleNV = "VIEWPORT_COORDINATE_SWIZZLE_"++showTableViewportCoordinateSwizzleNV :: [(ViewportCoordinateSwizzleNV, String)]+showTableViewportCoordinateSwizzleNV =+  [ (VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV, "POSITIVE_X_NV")+  , (VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV, "NEGATIVE_X_NV")+  , (VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV, "POSITIVE_Y_NV")+  , (VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV, "NEGATIVE_Y_NV")+  , (VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV, "POSITIVE_Z_NV")+  , (VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV, "NEGATIVE_Z_NV")+  , (VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV, "POSITIVE_W_NV")+  , (VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV, "NEGATIVE_W_NV")+  ]+ instance Show ViewportCoordinateSwizzleNV where-  showsPrec p = \case-    VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV"-    VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV"-    VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV"-    VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV"-    VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV"-    VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV"-    VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV"-    VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV"-    ViewportCoordinateSwizzleNV x -> showParen (p >= 11) (showString "ViewportCoordinateSwizzleNV " . showsPrec 11 x)+  showsPrec = enumShowsPrec enumPrefixViewportCoordinateSwizzleNV+                            showTableViewportCoordinateSwizzleNV+                            conNameViewportCoordinateSwizzleNV+                            (\(ViewportCoordinateSwizzleNV x) -> x)+                            (showsPrec 11)  instance Read ViewportCoordinateSwizzleNV where-  readPrec = parens (choose [("VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV", pure VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV)-                            , ("VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV", pure VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV)-                            , ("VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV", pure VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV)-                            , ("VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV", pure VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV)-                            , ("VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV", pure VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV)-                            , ("VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV", pure VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV)-                            , ("VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV", pure VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV)-                            , ("VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV", pure VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "ViewportCoordinateSwizzleNV")-                       v <- step readPrec-                       pure (ViewportCoordinateSwizzleNV v)))+  readPrec = enumReadPrec enumPrefixViewportCoordinateSwizzleNV+                          showTableViewportCoordinateSwizzleNV+                          conNameViewportCoordinateSwizzleNV+                          ViewportCoordinateSwizzleNV   type NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1
src/Vulkan/Extensions/VK_NV_viewport_swizzle.hs-boot view
@@ -1,4 +1,268 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_viewport_swizzle - device extension+--+-- == VK_NV_viewport_swizzle+--+-- [__Name String__]+--     @VK_NV_viewport_swizzle@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     99+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Piers Daniell+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_viewport_swizzle:%20&body=@pdaniell-nv%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-12-22+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires @multiViewport@ and @geometryShader@+--         features to be useful.+--+-- [__Contributors__]+--+--     -   Daniel Koch, NVIDIA+--+--     -   Jeff Bolz, NVIDIA+--+-- == Description+--+-- This extension provides a new per-viewport swizzle that can modify the+-- position of primitives sent to each viewport. New viewport swizzle state+-- is added for each viewport, and a new position vector is computed for+-- each vertex by selecting from and optionally negating any of the four+-- components of the original position vector.+--+-- This new viewport swizzle is useful for a number of algorithms,+-- including single-pass cubemap rendering (broadcasting a primitive to+-- multiple faces and reorienting the vertex position for each face) and+-- voxel rasterization. The per-viewport component remapping and negation+-- provided by the swizzle allows application code to re-orient+-- three-dimensional geometry with a view along any of the __X__, __Y__, or+-- __Z__ axes. If a perspective projection and depth buffering is required,+-- 1\/W buffering should be used, as described in the single-pass cubemap+-- rendering example in the “Issues” section below.+--+-- == New Structures+--+-- -   'ViewportSwizzleNV'+--+-- -   Extending 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo':+--+--     -   'PipelineViewportSwizzleStateCreateInfoNV'+--+-- == New Enums+--+-- -   'ViewportCoordinateSwizzleNV'+--+-- == New Bitmasks+--+-- -   'PipelineViewportSwizzleStateCreateFlagsNV'+--+-- == New Enum Constants+--+-- -   'NV_VIEWPORT_SWIZZLE_EXTENSION_NAME'+--+-- -   'NV_VIEWPORT_SWIZZLE_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV'+--+-- == Issues+--+-- 1) Where does viewport swizzling occur in the pipeline?+--+-- __RESOLVED__: Despite being associated with the viewport, viewport+-- swizzling must happen prior to the viewport transform. In particular, it+-- needs to be performed before clipping and perspective division.+--+-- The viewport mask expansion (@VK_NV_viewport_array2@) and the viewport+-- swizzle could potentially be performed before or after transform+-- feedback, but feeding back several viewports worth of primitives with+-- different swizzles doesn’t seem particularly useful. This specification+-- applies the viewport mask and swizzle after transform feedback, and+-- makes primitive queries only count each primitive once.+--+-- 2) Any interesting examples of how this extension,+-- @VK_NV_viewport_array2@, and @VK_NV_geometry_shader_passthrough@ can be+-- used together in practice?+--+-- __RESOLVED__: One interesting use case for this extension is for+-- single-pass rendering to a cubemap. In this example, the application+-- would attach a cubemap texture to a layered FBO where the six cube faces+-- are treated as layers. Vertices are sent through the vertex shader+-- without applying a projection matrix, where the @gl_Position@ output is+-- (x,y,z,1) and the center of the cubemap is at (0,0,0). With unextended+-- Vulkan, one could have a conventional instanced geometry shader that+-- looks something like the following:+--+-- > layout(invocations = 6) in;     // separate invocation per face+-- > layout(triangles) in;+-- > layout(triangle_strip) out;+-- > layout(max_vertices = 3) out;+-- >+-- > in Inputs {+-- > vec2 texcoord;+-- > vec3 normal;+-- > vec4 baseColor;+-- > } v[];+-- >+-- >     out Outputs {+-- >     vec2 texcoord;+-- >     vec3 normal;+-- >     vec4 baseColor;+-- >     };+-- >+-- >     void main()+-- >     {+-- >     int face = gl_InvocationID;  // which face am I?+-- >+-- >     // Project gl_Position for each vertex onto the cube map face.+-- >     vec4 positions[3];+-- >     for (int i = 0; i < 3; i++) {+-- >         positions[i] = rotate(gl_in[i].gl_Position, face);+-- >     }+-- >+-- >     // If the primitive doesn't project onto this face, we're done.+-- >     if (shouldCull(positions)) {+-- >         return;+-- >     }+-- >+-- >     // Otherwise, emit a copy of the input primitive to the+-- >     // appropriate face (using gl_Layer).+-- >     for (int i = 0; i < 3; i++) {+-- >         gl_Layer = face;+-- >         gl_Position = positions[i];+-- >         texcoord = v[i].texcoord;+-- >         normal = v[i].normal;+-- >         baseColor = v[i].baseColor;+-- >         EmitVertex();+-- >     }+-- > }+--+-- With passthrough geometry shaders, this can be done using a much simpler+-- shader:+--+-- > layout(triangles) in;+-- > layout(passthrough) in Inputs {+-- >     vec2 texcoord;+-- >     vec3 normal;+-- >     vec4 baseColor;+-- > }+-- > layout(passthrough) in gl_PerVertex {+-- >     vec4 gl_Position;+-- > } gl_in[];+-- > layout(viewport_relative) out int gl_Layer;+-- >+-- > void main()+-- > {+-- >     // Figure out which faces the primitive projects onto and+-- >     // generate a corresponding viewport mask.+-- >     uint mask = 0;+-- >     for (int i = 0; i < 6; i++) {+-- >         if (!shouldCull(face)) {+-- >         mask |= 1U << i;+-- >         }+-- >     }+-- >     gl_ViewportMask = mask;+-- >     gl_Layer = 0;+-- > }+--+-- The application code is set up so that each of the six cube faces has a+-- separate viewport (numbered 0 to 5). Each face also has a separate+-- swizzle, programmed via the 'PipelineViewportSwizzleStateCreateInfoNV'+-- pipeline state. The viewport swizzle feature performs the coordinate+-- transformation handled by the @rotate@() function in the original+-- shader. The @viewport_relative@ layout qualifier says that the viewport+-- number (0 to 5) is added to the base @gl_Layer@ value of 0 to determine+-- which layer (cube face) the primitive should be sent to.+--+-- Note that the use of the passed through input @normal@ in this example+-- suggests that the fragment shader in this example would perform an+-- operation like per-fragment lighting. The viewport swizzle would+-- transform the position to be face-relative, but @normal@ would remain in+-- the original coordinate system. It seems likely that the fragment shader+-- in either version of the example would want to perform lighting in the+-- original coordinate system. It would likely do this by reconstructing+-- the position of the fragment in the original coordinate system using+-- @gl_FragCoord@, a constant or uniform holding the size of the cube face,+-- and the input @gl_ViewportIndex@ (or @gl_Layer@), which identifies the+-- cube face. Since the value of @normal@ is in the original coordinate+-- system, it would not need to be modified as part of this coordinate+-- transformation.+--+-- Note that while the @rotate@() operation in the regular geometry shader+-- above could include an arbitrary post-rotation projection matrix, the+-- viewport swizzle does not support arbitrary math. To get proper+-- projection, 1\/W buffering should be used. To do this:+--+-- 1.  Program the viewport swizzles to move the pre-projection W eye+--     coordinate (typically 1.0) into the Z coordinate of the swizzle+--     output and the eye coordinate component used for depth into the W+--     coordinate. For example, the viewport corresponding to the +Z face+--     might use a swizzle of (+X, -Y, +W, +Z). The Z normalized device+--     coordinate computed after swizzling would then be z\'\/w\' =+--     1\/Zeye.+--+-- 2.  On NVIDIA implementations supporting floating-point depth buffers+--     with values outside [0,1], prevent unwanted near plane clipping by+--     enabling @depthClampEnable@. Ensure that the depth clamp doesn’t+--     mess up depth testing by programming the depth range to very large+--     values, such as @minDepthBounds@=-z, @maxDepthBounds@=+z, where z =+--     2127. It should be possible to use IEEE infinity encodings also+--     (@0xFF800000@ for @-INF@, @0x7F800000@ for @+INF@). Even when+--     near\/far clipping is disabled, primitives extending behind the eye+--     will still be clipped because one or more vertices will have a+--     negative W coordinate and fail X\/Y clipping tests.+--+--     On other implementations, scale X, Y, and Z eye coordinates so that+--     vertices on the near plane have a post-swizzle W coordinate of 1.0.+--     For example, if the near plane is at Zeye = 1\/256, scale X, Y, and+--     Z by 256.+--+-- 3.  Adjust depth testing to reflect the fact that 1\/W values are large+--     near the eye and small away from the eye. Clear the depth buffer to+--     zero (infinitely far away) and use a depth test of+--     'Vulkan.Core10.Enums.CompareOp.COMPARE_OP_GREATER' instead of+--     'Vulkan.Core10.Enums.CompareOp.COMPARE_OP_LESS'.+--+-- == Version History+--+-- -   Revision 1, 2016-12-22 (Piers Daniell)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'PipelineViewportSwizzleStateCreateFlagsNV',+-- 'PipelineViewportSwizzleStateCreateInfoNV',+-- 'ViewportCoordinateSwizzleNV', 'ViewportSwizzleNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_viewport_swizzle Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_viewport_swizzle  ( PipelineViewportSwizzleStateCreateInfoNV                                                  , ViewportSwizzleNV                                                  ) where
src/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs view
@@ -1,4 +1,234 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_win32_keyed_mutex - device extension+--+-- == VK_NV_win32_keyed_mutex+--+-- [__Name String__]+--     @VK_NV_win32_keyed_mutex@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     59+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_NV_external_memory_win32@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to @VK_KHR_win32_keyed_mutex@ extension+--+-- [__Contact__]+--+--     -   Carsten Rohde+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_win32_keyed_mutex:%20&body=@crohde%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-08-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- Applications that wish to import Direct3D 11 memory objects into the+-- Vulkan API may wish to use the native keyed mutex mechanism to+-- synchronize access to the memory between Vulkan and Direct3D. This+-- extension provides a way for an application to access the keyed mutex+-- associated with an imported Vulkan memory object when submitting command+-- buffers to a queue.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Queue.SubmitInfo':+--+--     -   'Win32KeyedMutexAcquireReleaseInfoNV'+--+-- == New Enum Constants+--+-- -   'NV_WIN32_KEYED_MUTEX_EXTENSION_NAME'+--+-- -   'NV_WIN32_KEYED_MUTEX_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV'+--+-- == Examples+--+-- >     //+-- >     // Import a memory object from Direct3D 11, and synchronize+-- >     // access to it in Vulkan using keyed mutex objects.+-- >     //+-- >+-- >     extern VkPhysicalDevice physicalDevice;+-- >     extern VkDevice device;+-- >     extern HANDLE sharedNtHandle;+-- >+-- >     static const VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;+-- >     static const VkExternalMemoryHandleTypeFlagsNV handleType =+-- >         VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV;+-- >+-- >     VkPhysicalDeviceMemoryProperties memoryProperties;+-- >     VkExternalImageFormatPropertiesNV properties;+-- >     VkExternalMemoryImageCreateInfoNV externalMemoryImageCreateInfo;+-- >     VkImageCreateInfo imageCreateInfo;+-- >     VkImage image;+-- >     VkMemoryRequirements imageMemoryRequirements;+-- >     uint32_t numMemoryTypes;+-- >     uint32_t memoryType;+-- >     VkImportMemoryWin32HandleInfoNV importMemoryInfo;+-- >     VkMemoryAllocateInfo memoryAllocateInfo;+-- >     VkDeviceMemory mem;+-- >     VkResult result;+-- >+-- >     // Figure out how many memory types the device supports+-- >     vkGetPhysicalDeviceMemoryProperties(physicalDevice,+-- >                                         &memoryProperties);+-- >     numMemoryTypes = memoryProperties.memoryTypeCount;+-- >+-- >     // Check the external handle type capabilities for the chosen format+-- >     // Importable 2D image support with at least 1 mip level, 1 array+-- >     // layer, and VK_SAMPLE_COUNT_1_BIT using optimal tiling and supporting+-- >     // texturing and color rendering is required.+-- >     result = vkGetPhysicalDeviceExternalImageFormatPropertiesNV(+-- >         physicalDevice,+-- >         format,+-- >         VK_IMAGE_TYPE_2D,+-- >         VK_IMAGE_TILING_OPTIMAL,+-- >         VK_IMAGE_USAGE_SAMPLED_BIT |+-- >         VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,+-- >         0,+-- >         handleType,+-- >         &properties);+-- >+-- >     if ((result != VK_SUCCESS) ||+-- >         !(properties.externalMemoryFeatures &+-- >           VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV)) {+-- >         abort();+-- >     }+-- >+-- >     // Set up the external memory image creation info+-- >     memset(&externalMemoryImageCreateInfo,+-- >            0, sizeof(externalMemoryImageCreateInfo));+-- >     externalMemoryImageCreateInfo.sType =+-- >         VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV;+-- >     externalMemoryImageCreateInfo.handleTypes = handleType;+-- >     // Set up the  core image creation info+-- >     memset(&imageCreateInfo, 0, sizeof(imageCreateInfo));+-- >     imageCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;+-- >     imageCreateInfo.pNext = &externalMemoryImageCreateInfo;+-- >     imageCreateInfo.format = format;+-- >     imageCreateInfo.extent.width = 64;+-- >     imageCreateInfo.extent.height = 64;+-- >     imageCreateInfo.extent.depth = 1;+-- >     imageCreateInfo.mipLevels = 1;+-- >     imageCreateInfo.arrayLayers = 1;+-- >     imageCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;+-- >     imageCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;+-- >     imageCreateInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT |+-- >         VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;+-- >     imageCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;+-- >     imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;+-- >+-- >     vkCreateImage(device, &imageCreateInfo, NULL, &image);+-- >     vkGetImageMemoryRequirements(device,+-- >                                  image,+-- >                                  &imageMemoryRequirements);+-- >+-- >     // For simplicity, just pick the first compatible memory type.+-- >     for (memoryType = 0; memoryType < numMemoryTypes; memoryType++) {+-- >         if ((1 << memoryType) & imageMemoryRequirements.memoryTypeBits) {+-- >             break;+-- >         }+-- >     }+-- >+-- >     // At least one memory type must be supported given the prior external+-- >     // handle capability check.+-- >     assert(memoryType < numMemoryTypes);+-- >+-- >     // Allocate the external memory object.+-- >     memset(&exportMemoryAllocateInfo, 0, sizeof(exportMemoryAllocateInfo));+-- >     exportMemoryAllocateInfo.sType =+-- >         VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV;+-- >     importMemoryInfo.handleTypes = handleType;+-- >     importMemoryInfo.handle = sharedNtHandle;+-- >+-- >     memset(&memoryAllocateInfo, 0, sizeof(memoryAllocateInfo));+-- >     memoryAllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;+-- >     memoryAllocateInfo.pNext = &exportMemoryAllocateInfo;+-- >     memoryAllocateInfo.allocationSize = imageMemoryRequirements.size;+-- >     memoryAllocateInfo.memoryTypeIndex = memoryType;+-- >+-- >     vkAllocateMemory(device, &memoryAllocateInfo, NULL, &mem);+-- >+-- >     vkBindImageMemory(device, image, mem, 0);+-- >+-- >     ...+-- >+-- >     const uint64_t acquireKey = 1;+-- >     const uint32_t timeout = INFINITE;+-- >     const uint64_t releaseKey = 2;+-- >+-- >     VkWin32KeyedMutexAcquireReleaseInfoNV keyedMutex =+-- >         { VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV };+-- >     keyedMutex.acquireCount = 1;+-- >     keyedMutex.pAcquireSyncs = &mem;+-- >     keyedMutex.pAcquireKeys = &acquireKey;+-- >     keyedMutex.pAcquireTimeoutMilliseconds = &timeout;+-- >     keyedMutex.releaseCount = 1;+-- >     keyedMutex.pReleaseSyncs = &mem;+-- >     keyedMutex.pReleaseKeys = &releaseKey;+-- >+-- >     VkSubmitInfo submit_info = { VK_STRUCTURE_TYPE_SUBMIT_INFO, &keyedMutex };+-- >     submit_info.commandBufferCount = 1;+-- >     submit_info.pCommandBuffers = &cmd_buf;+-- >     vkQueueSubmit(queue, 1, &submit_info, VK_NULL_HANDLE);+--+-- == Version History+--+-- -   Revision 2, 2016-08-11 (James Jones)+--+--     -   Updated sample code based on the NV external memory extensions.+--+--     -   Renamed from NVX to NV extension.+--+--     -   Added Overview and Description sections.+--+--     -   Updated sample code to use the NV external memory extensions.+--+-- -   Revision 1, 2016-06-14 (Carsten Rohde)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'Win32KeyedMutexAcquireReleaseInfoNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_win32_keyed_mutex Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_win32_keyed_mutex  ( Win32KeyedMutexAcquireReleaseInfoNV(..)                                                   , NV_WIN32_KEYED_MUTEX_SPEC_VERSION                                                   , pattern NV_WIN32_KEYED_MUTEX_SPEC_VERSION
src/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs-boot view
@@ -1,4 +1,234 @@ {-# language CPP #-}+-- | = Name+--+-- VK_NV_win32_keyed_mutex - device extension+--+-- == VK_NV_win32_keyed_mutex+--+-- [__Name String__]+--     @VK_NV_win32_keyed_mutex@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     59+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_NV_external_memory_win32@+--+-- [__Deprecation state__]+--+--     -   /Promoted/ to @VK_KHR_win32_keyed_mutex@ extension+--+-- [__Contact__]+--+--     -   Carsten Rohde+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_win32_keyed_mutex:%20&body=@crohde%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2016-08-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   James Jones, NVIDIA+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- Applications that wish to import Direct3D 11 memory objects into the+-- Vulkan API may wish to use the native keyed mutex mechanism to+-- synchronize access to the memory between Vulkan and Direct3D. This+-- extension provides a way for an application to access the keyed mutex+-- associated with an imported Vulkan memory object when submitting command+-- buffers to a queue.+--+-- == New Structures+--+-- -   Extending 'Vulkan.Core10.Queue.SubmitInfo':+--+--     -   'Win32KeyedMutexAcquireReleaseInfoNV'+--+-- == New Enum Constants+--+-- -   'NV_WIN32_KEYED_MUTEX_EXTENSION_NAME'+--+-- -   'NV_WIN32_KEYED_MUTEX_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV'+--+-- == Examples+--+-- >     //+-- >     // Import a memory object from Direct3D 11, and synchronize+-- >     // access to it in Vulkan using keyed mutex objects.+-- >     //+-- >+-- >     extern VkPhysicalDevice physicalDevice;+-- >     extern VkDevice device;+-- >     extern HANDLE sharedNtHandle;+-- >+-- >     static const VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;+-- >     static const VkExternalMemoryHandleTypeFlagsNV handleType =+-- >         VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV;+-- >+-- >     VkPhysicalDeviceMemoryProperties memoryProperties;+-- >     VkExternalImageFormatPropertiesNV properties;+-- >     VkExternalMemoryImageCreateInfoNV externalMemoryImageCreateInfo;+-- >     VkImageCreateInfo imageCreateInfo;+-- >     VkImage image;+-- >     VkMemoryRequirements imageMemoryRequirements;+-- >     uint32_t numMemoryTypes;+-- >     uint32_t memoryType;+-- >     VkImportMemoryWin32HandleInfoNV importMemoryInfo;+-- >     VkMemoryAllocateInfo memoryAllocateInfo;+-- >     VkDeviceMemory mem;+-- >     VkResult result;+-- >+-- >     // Figure out how many memory types the device supports+-- >     vkGetPhysicalDeviceMemoryProperties(physicalDevice,+-- >                                         &memoryProperties);+-- >     numMemoryTypes = memoryProperties.memoryTypeCount;+-- >+-- >     // Check the external handle type capabilities for the chosen format+-- >     // Importable 2D image support with at least 1 mip level, 1 array+-- >     // layer, and VK_SAMPLE_COUNT_1_BIT using optimal tiling and supporting+-- >     // texturing and color rendering is required.+-- >     result = vkGetPhysicalDeviceExternalImageFormatPropertiesNV(+-- >         physicalDevice,+-- >         format,+-- >         VK_IMAGE_TYPE_2D,+-- >         VK_IMAGE_TILING_OPTIMAL,+-- >         VK_IMAGE_USAGE_SAMPLED_BIT |+-- >         VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,+-- >         0,+-- >         handleType,+-- >         &properties);+-- >+-- >     if ((result != VK_SUCCESS) ||+-- >         !(properties.externalMemoryFeatures &+-- >           VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV)) {+-- >         abort();+-- >     }+-- >+-- >     // Set up the external memory image creation info+-- >     memset(&externalMemoryImageCreateInfo,+-- >            0, sizeof(externalMemoryImageCreateInfo));+-- >     externalMemoryImageCreateInfo.sType =+-- >         VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV;+-- >     externalMemoryImageCreateInfo.handleTypes = handleType;+-- >     // Set up the  core image creation info+-- >     memset(&imageCreateInfo, 0, sizeof(imageCreateInfo));+-- >     imageCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;+-- >     imageCreateInfo.pNext = &externalMemoryImageCreateInfo;+-- >     imageCreateInfo.format = format;+-- >     imageCreateInfo.extent.width = 64;+-- >     imageCreateInfo.extent.height = 64;+-- >     imageCreateInfo.extent.depth = 1;+-- >     imageCreateInfo.mipLevels = 1;+-- >     imageCreateInfo.arrayLayers = 1;+-- >     imageCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;+-- >     imageCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;+-- >     imageCreateInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT |+-- >         VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;+-- >     imageCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;+-- >     imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;+-- >+-- >     vkCreateImage(device, &imageCreateInfo, NULL, &image);+-- >     vkGetImageMemoryRequirements(device,+-- >                                  image,+-- >                                  &imageMemoryRequirements);+-- >+-- >     // For simplicity, just pick the first compatible memory type.+-- >     for (memoryType = 0; memoryType < numMemoryTypes; memoryType++) {+-- >         if ((1 << memoryType) & imageMemoryRequirements.memoryTypeBits) {+-- >             break;+-- >         }+-- >     }+-- >+-- >     // At least one memory type must be supported given the prior external+-- >     // handle capability check.+-- >     assert(memoryType < numMemoryTypes);+-- >+-- >     // Allocate the external memory object.+-- >     memset(&exportMemoryAllocateInfo, 0, sizeof(exportMemoryAllocateInfo));+-- >     exportMemoryAllocateInfo.sType =+-- >         VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV;+-- >     importMemoryInfo.handleTypes = handleType;+-- >     importMemoryInfo.handle = sharedNtHandle;+-- >+-- >     memset(&memoryAllocateInfo, 0, sizeof(memoryAllocateInfo));+-- >     memoryAllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;+-- >     memoryAllocateInfo.pNext = &exportMemoryAllocateInfo;+-- >     memoryAllocateInfo.allocationSize = imageMemoryRequirements.size;+-- >     memoryAllocateInfo.memoryTypeIndex = memoryType;+-- >+-- >     vkAllocateMemory(device, &memoryAllocateInfo, NULL, &mem);+-- >+-- >     vkBindImageMemory(device, image, mem, 0);+-- >+-- >     ...+-- >+-- >     const uint64_t acquireKey = 1;+-- >     const uint32_t timeout = INFINITE;+-- >     const uint64_t releaseKey = 2;+-- >+-- >     VkWin32KeyedMutexAcquireReleaseInfoNV keyedMutex =+-- >         { VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV };+-- >     keyedMutex.acquireCount = 1;+-- >     keyedMutex.pAcquireSyncs = &mem;+-- >     keyedMutex.pAcquireKeys = &acquireKey;+-- >     keyedMutex.pAcquireTimeoutMilliseconds = &timeout;+-- >     keyedMutex.releaseCount = 1;+-- >     keyedMutex.pReleaseSyncs = &mem;+-- >     keyedMutex.pReleaseKeys = &releaseKey;+-- >+-- >     VkSubmitInfo submit_info = { VK_STRUCTURE_TYPE_SUBMIT_INFO, &keyedMutex };+-- >     submit_info.commandBufferCount = 1;+-- >     submit_info.pCommandBuffers = &cmd_buf;+-- >     vkQueueSubmit(queue, 1, &submit_info, VK_NULL_HANDLE);+--+-- == Version History+--+-- -   Revision 2, 2016-08-11 (James Jones)+--+--     -   Updated sample code based on the NV external memory extensions.+--+--     -   Renamed from NVX to NV extension.+--+--     -   Added Overview and Description sections.+--+--     -   Updated sample code to use the NV external memory extensions.+--+-- -   Revision 1, 2016-06-14 (Carsten Rohde)+--+--     -   Initial draft.+--+-- = See Also+--+-- 'Win32KeyedMutexAcquireReleaseInfoNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_win32_keyed_mutex Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_win32_keyed_mutex  (Win32KeyedMutexAcquireReleaseInfoNV) where  import Data.Kind (Type)
src/Vulkan/Extensions/VK_QCOM_render_pass_shader_resolve.hs view
@@ -1,4 +1,159 @@ {-# language CPP #-}+-- | = Name+--+-- VK_QCOM_render_pass_shader_resolve - device extension+--+-- == VK_QCOM_render_pass_shader_resolve+--+-- [__Name String__]+--     @VK_QCOM_render_pass_shader_resolve@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     172+--+-- [__Revision__]+--     4+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Bill Licea-Kane+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_QCOM_render_pass_shader_resolve:%20&body=@wwlk%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2019-11-07+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Interactions and External Dependencies__]+--     None.+--+-- [__Contributors__]+--+--     -   Srihari Babu Alla, Qualcomm+--+--     -   Bill Licea-Kane, Qualcomm+--+--     -   Jeff Leger, Qualcomm+--+-- == Description+--+-- This extension allows a shader resolve to replace fixed-function+-- resolve.+--+-- Fixed-function resolve is limited in function to simple filters of+-- multisample buffers to a single sample buffer.+--+-- Fixed-function resolve is more performance efficient and\/or power+-- efficient than shader resolve for such simple filters.+--+-- Shader resolve allows a shader writer to create complex, non-linear+-- filtering of a multisample buffer in the last subpass of a subpass+-- dependency chain.+--+-- This extension also provides a bit which /can/ be used to enlarge a+-- sample region dependency to a fragment region dependency, so that a+-- framebuffer-region dependency /can/ replace a framebuffer-global+-- dependency in some cases.+--+-- == New Enum Constants+--+-- -   'QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME'+--+-- -   'QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlagBits':+--+--     -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM'+--+--     -   'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM'+--+-- == Issues+--+-- 1) Should this extension be named render_pass_shader_resolve?+--+-- __RESOLVED__ Yes.+--+-- This is part of suite of small extensions to render pass.+--+-- Following the style guide, instead of following+-- VK_KHR_create_renderpass2.+--+-- 2) Should the VK_SAMPLE_COUNT_1_BIT be required for each+-- pColorAttachment and the DepthStencilAttachent?+--+-- __RESOLVED__ No.+--+-- While this may not be a common use case, and while most fixed-function+-- resolve hardware has this limitation, there is little reason to require+-- a shader resolve to resolve to a single sample buffer.+--+-- 3) Should a shader resolve subpass be the last subpass in a renderpass?+--+-- __RESOLVED__ Yes.+--+-- To be more specific, it should be the last subpass in a subpass+-- dependency chain.+--+-- 4) Do we need the+-- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM'+-- bit?+--+-- __RESOLVED__ Yes.+--+-- This applies when an input attachment’s sample count is equal to+-- @rasterizationSamples@. Further, if @sampleShading@ is enabled+-- (explicitly or implicitly) then @minSampleShading@ /must/ equal 0.0.+--+-- However, this bit may be set on any subpass, it is not restricted to a+-- shader resolve subpass.+--+-- == Version History+--+-- -   Revision 1, 2019-06-28 (wwlk)+--+--     -   Initial draft+--+-- -   Revision 2, 2019-11-06 (wwlk)+--+--     -   General clean-up\/spec updates+--+--     -   Added issues+--+-- -   Revision 3, 2019-11-07 (wwlk)+--+--     -   Typos+--+--     -   Additional issues+--+--     -   Clarified that a shader resolve subpass is the last subpass in a+--         subpass dependency chain+--+-- -   Revision 4, 2020-01-06 (wwlk)+--+--     -   Change resolution of Issue 1 (/render_pass/, not /renderpass/)+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_render_pass_shader_resolve Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve  ( QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION                                                              , pattern QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION                                                              , QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME
src/Vulkan/Extensions/VK_QCOM_render_pass_store_ops.hs view
@@ -1,4 +1,102 @@ {-# language CPP #-}+-- | = Name+--+-- VK_QCOM_render_pass_store_ops - device extension+--+-- == VK_QCOM_render_pass_store_ops+--+-- [__Name String__]+--     @VK_QCOM_render_pass_store_ops@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     302+--+-- [__Revision__]+--     2+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+-- [__Contact__]+--+--     -   Bill Licea-Kane+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_QCOM_render_pass_store_ops:%20&body=@wwlk%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-03-25+--+-- [__Contributors__]+--+--     -   Bill Licea-Kane, Qualcomm Technologies, Inc.+--+-- == Description+--+-- Renderpass attachments /can/ be read-only for the duration of a+-- renderpass.+--+-- Examples include input attachments and depth attachments where depth+-- tests are enabled but depth writes are not enabled.+--+-- In such cases, there /can/ be no contents generated for an attachment+-- within the render area.+--+-- This extension adds a new+-- 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp'+-- 'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_NONE_QCOM'+-- which specifies that the contents within the render area /may/ not be+-- written to memory, but that the prior contents of the attachment in+-- memory are preserved. However, if any contents were generated within the+-- render area during rendering, the contents of the attachment will be+-- undefined inside the render area.+--+-- Note+--+-- The 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp'+-- 'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_STORE' /may/+-- force an implementation to assume that the attachment was written and+-- force an implementation to flush data to memory or to a higher level+-- cache. The 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp'+-- 'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_NONE_QCOM'+-- /may/ allow an implementation to assume that the attachment was not+-- written and allow an implementation to avoid such a flush..+--+-- == New Enum Constants+--+-- -   'QCOM_render_pass_store_ops_EXTENSION_NAME'+--+-- -   'QCOM_render_pass_store_ops_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp':+--+--     -   'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_NONE_QCOM'+--+-- == Version History+--+-- -   Revision 1, 2019-12-20 (wwlk)+--+--     -   Initial version+--+-- -   Revision 2, 2020-03-25 (wwlk)+--+--     -   Minor renaming+--+-- = See Also+--+-- No cross-references are available+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_render_pass_store_ops Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_QCOM_render_pass_store_ops  ( QCOM_render_pass_store_ops_SPEC_VERSION                                                         , pattern QCOM_render_pass_store_ops_SPEC_VERSION                                                         , QCOM_render_pass_store_ops_EXTENSION_NAME
src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs view
@@ -1,4 +1,227 @@ {-# language CPP #-}+-- | = Name+--+-- VK_QCOM_render_pass_transform - device extension+--+-- == VK_QCOM_render_pass_transform+--+-- [__Name String__]+--     @VK_QCOM_render_pass_transform@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     283+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Jeff Leger+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_QCOM_render_pass_transform:%20&body=@jackohound%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-10-15+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires @VK_KHR_swapchain@+--+--     -   This extension interacts with @VK_EXT_fragment_density_map@+--+-- [__Contributors__]+--+--     -   Jeff Leger, Qualcomm Technologies, Inc.+--+--     -   Brandon Light, Qualcomm Technologies, Inc.+--+-- == Description+--+-- This extension provides a mechanism for applications to enable driver+-- support for+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.+--+-- Mobile devices can be rotated and mobile applications need to render+-- properly when a device is held in a landscape or portrait orientation.+-- When the current orientation differs from the device’s native+-- orientation, a rotation is required so that the \"up\" direction of the+-- rendered scene matches the current orientation.+--+-- If the Display Processing Unit (DPU) doesnt natively support rotation,+-- the Vulkan presentation engine can handle this rotation in a separate+-- composition pass. Alternatively, the application can render frames+-- \"pre-rotated\" to avoid this extra pass. The latter is preferred to+-- reduce power consumption and achieve the best performance because it+-- avoids tasking the GPU with extra work to perform the copy\/rotate+-- operation.+--+-- Unlike OpenGL ES, the burden of pre-rotation in Vulkan falls on the+-- application. To implement pre-rotation, applications render into+-- swapchain images matching the device native aspect ratio of the display+-- and \"pre-rotate\" the rendering content to match the device’s current+-- orientation. The burden is more than adjusting the Model View Projection+-- (MVP) matrix in the vertex shader to account for rotation and aspect+-- ratio. The coordinate systems of scissors, viewports, derivatives and+-- several shader built-ins may need to be adapted to produce the correct+-- result.+--+-- It is difficult for some game engines to manage this burden; many chose+-- to simply accept the performance\/power overhead of performing rotation+-- in the presentation engine.+--+-- This extension allows applications to achieve the performance benefits+-- of pre-rotated rendering by moving much of the above-mentioned burden to+-- the graphics driver. The following is unchanged with this extension:+--+-- -   Applications create a swapchain matching the native orientation of+--     the display. Applications must also set the+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@preTransform@+--     equal to the @currentTransform@ as returned by+--     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'.+--+-- The following is changed with this extension:+--+-- -   At 'Vulkan.Core10.CommandBufferBuilding.cmdBeginRenderPass', the+--     application provides extension struct+--     'RenderPassTransformBeginInfoQCOM' specifying the render pass+--     transform parameters.+--+-- -   At 'Vulkan.Core10.CommandBuffer.beginCommandBuffer' for secondary+--     command buffers, the application provides extension struct+--     'CommandBufferInheritanceRenderPassTransformInfoQCOM' specifying the+--     render pass transform parameters.+--+-- -   The @renderArea@, viewPorts and scissors are all provided in the+--     current (non-rotated) coordinate system. The implementation will+--     transform those into the native (rotated) coordinate system.+--+-- -   The implementation is responsible for transforming shader built-ins+--     (@FragCoord@, @PointCoord@, @SamplePosition@, interpolateAt(), dFdx,+--     dFdy, fWidth) into the rotated coordinate system.+--+-- -   The implementation is responsible for transforming @position@ to the+--     rotated coordinate system.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':+--+--     -   'CommandBufferInheritanceRenderPassTransformInfoQCOM'+--+-- -   Extending 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo':+--+--     -   'RenderPassTransformBeginInfoQCOM'+--+-- == New Enum Constants+--+-- -   'QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME'+--+-- -   'QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RenderPassCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM'+--+-- == Issues+--+-- 1) Some early Adreno drivers (October 2019 through March 2020)+-- advertised support for this extension but expected VK_STRUCTURE_TYPE+-- values different from those in the vukan headers. To cover all Adreno+-- devices on the market, applications need to detect the driver version+-- and use the appropriate VK_STRUCTURE_TYPE values from the table below.+--+-- The driver version reported in VkPhysicalDeviceProperties.driverVersion+-- is a @uint32_t@ type. You can decode the @uint32_t@ value into a+-- major.minor.patch version as shown below:+--+-- > uint32_t  major = ((driverVersion) >> 22);+-- > uint32_t  minor = ((driverVersion) >> 12) & 0x3ff);+-- > uint32_t  patch = ((driverVersion) & 0xfff);+--+-- If the Adreno major.minor.patch version is greater than or equal to to+-- 512.469.0, then simply use the VK_STRUCTURE_TYPE values as defined in+-- vulkan_core.h. If the version is less than or equal to to 512.468.0,+-- then use the alternate values for the two VK_STRUCTURE_TYPEs in the+-- table below.+--+-- +------------------------------------------------------------+----------------------+-----------------------++-- |                                                            | Adreno Driver        |                       |+-- |                                                            | Version              |                       |+-- +============================================================+======================+=======================++-- |                                                            | 512.468.0 and        | 512.469.0 and later   |+-- |                                                            | earlier              |                       |+-- +------------------------------------------------------------+----------------------+-----------------------++-- | VK_STRUCTURE_TYPE_ RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM   | 1000282000           | 1000282001            |+-- +------------------------------------------------------------+----------------------+-----------------------++-- | VK_STRUCTURE_TYPE_                                         | 1000282001           | 1000282000            |+-- | COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM |                      |                       |+-- +------------------------------------------------------------+----------------------+-----------------------++--+-- @Adreno@ Driver Requirements+--+-- 2) Should the extension support only rotations (e.g. 90, 180,+-- 270-degrees), or also mirror transforms (e.g. vertical flips)? Mobile+-- use-cases only require rotation. Other display systems such as+-- projectors might require a flipped transform.+--+-- __RESOLVED__: In this version of the extension, the functionality is+-- restricted to 90, 180, and 270-degree rotations to address mobile+-- use-cases.+--+-- 3) How does this extension interact with VK_EXT_fragment_density_map?+--+-- __RESOLVED__ Some implementations may not be able to support a render+-- pass that enables both renderpass transform and fragment density maps.+-- For simplicity, this extension disallows enabling both features within a+-- single render pass.+--+-- 4) What should this extension be named?+--+-- We considered names such as \"rotated_rendering\", \"pre_rotation\" and+-- others. Since the functionality is limited to a render pass, it seemed+-- the name should include \"render_pass\". While the current extension is+-- limited to rotations, it could be extended to other transforms (like+-- mirror) in the future.+--+-- __RESOLVED__ The name \"render_pass_transform\" seems like the most+-- accurate description of the introduced functionality.+--+-- == Version History+--+-- -   Revision 1, 2020-02-05 (Jeff Leger)+--+-- = See Also+--+-- 'CommandBufferInheritanceRenderPassTransformInfoQCOM',+-- 'RenderPassTransformBeginInfoQCOM'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_render_pass_transform Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_QCOM_render_pass_transform  ( RenderPassTransformBeginInfoQCOM(..)                                                         , CommandBufferInheritanceRenderPassTransformInfoQCOM(..)                                                         , QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION@@ -12,8 +235,6 @@ import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)-import Control.Monad.Trans.Class (lift)-import Control.Monad.Trans.Cont (evalContT) import Data.String (IsString) import Data.Typeable (Typeable) import Foreign.Storable (Storable)@@ -23,7 +244,6 @@ import GHC.Generics (Generic) import Foreign.Ptr (Ptr) import Data.Kind (Type)-import Control.Monad.Trans.Cont (ContT(..)) import Vulkan.CStruct (FromCStruct) import Vulkan.CStruct (FromCStruct(..)) import Vulkan.Core10.FundamentalTypes (Rect2D)@@ -151,20 +371,20 @@  instance ToCStruct CommandBufferInheritanceRenderPassTransformInfoQCOM where   withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p CommandBufferInheritanceRenderPassTransformInfoQCOM{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR)) (transform)-    ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Rect2D)) (renderArea) . ($ ())-    lift $ f+  pokeCStruct p CommandBufferInheritanceRenderPassTransformInfoQCOM{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR)) (transform)+    poke ((p `plusPtr` 20 :: Ptr Rect2D)) (renderArea)+    f   cStructSize = 40   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Rect2D)) (zero) . ($ ())-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Rect2D)) (zero)+    f  instance FromCStruct CommandBufferInheritanceRenderPassTransformInfoQCOM where   peekCStruct p = do@@ -172,6 +392,12 @@     renderArea <- peekCStruct @Rect2D ((p `plusPtr` 20 :: Ptr Rect2D))     pure $ CommandBufferInheritanceRenderPassTransformInfoQCOM              transform renderArea++instance Storable CommandBufferInheritanceRenderPassTransformInfoQCOM where+  sizeOf ~_ = 40+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())  instance Zero CommandBufferInheritanceRenderPassTransformInfoQCOM where   zero = CommandBufferInheritanceRenderPassTransformInfoQCOM
src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs-boot view
@@ -1,4 +1,227 @@ {-# language CPP #-}+-- | = Name+--+-- VK_QCOM_render_pass_transform - device extension+--+-- == VK_QCOM_render_pass_transform+--+-- [__Name String__]+--     @VK_QCOM_render_pass_transform@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     283+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+--     -   Requires @VK_KHR_surface@+--+-- [__Contact__]+--+--     -   Jeff Leger+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_QCOM_render_pass_transform:%20&body=@jackohound%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2020-10-15+--+-- [__Interactions and External Dependencies__]+--+--     -   This extension requires @VK_KHR_swapchain@+--+--     -   This extension interacts with @VK_EXT_fragment_density_map@+--+-- [__Contributors__]+--+--     -   Jeff Leger, Qualcomm Technologies, Inc.+--+--     -   Brandon Light, Qualcomm Technologies, Inc.+--+-- == Description+--+-- This extension provides a mechanism for applications to enable driver+-- support for+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.+--+-- Mobile devices can be rotated and mobile applications need to render+-- properly when a device is held in a landscape or portrait orientation.+-- When the current orientation differs from the device’s native+-- orientation, a rotation is required so that the \"up\" direction of the+-- rendered scene matches the current orientation.+--+-- If the Display Processing Unit (DPU) doesnt natively support rotation,+-- the Vulkan presentation engine can handle this rotation in a separate+-- composition pass. Alternatively, the application can render frames+-- \"pre-rotated\" to avoid this extra pass. The latter is preferred to+-- reduce power consumption and achieve the best performance because it+-- avoids tasking the GPU with extra work to perform the copy\/rotate+-- operation.+--+-- Unlike OpenGL ES, the burden of pre-rotation in Vulkan falls on the+-- application. To implement pre-rotation, applications render into+-- swapchain images matching the device native aspect ratio of the display+-- and \"pre-rotate\" the rendering content to match the device’s current+-- orientation. The burden is more than adjusting the Model View Projection+-- (MVP) matrix in the vertex shader to account for rotation and aspect+-- ratio. The coordinate systems of scissors, viewports, derivatives and+-- several shader built-ins may need to be adapted to produce the correct+-- result.+--+-- It is difficult for some game engines to manage this burden; many chose+-- to simply accept the performance\/power overhead of performing rotation+-- in the presentation engine.+--+-- This extension allows applications to achieve the performance benefits+-- of pre-rotated rendering by moving much of the above-mentioned burden to+-- the graphics driver. The following is unchanged with this extension:+--+-- -   Applications create a swapchain matching the native orientation of+--     the display. Applications must also set the+--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@preTransform@+--     equal to the @currentTransform@ as returned by+--     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'.+--+-- The following is changed with this extension:+--+-- -   At 'Vulkan.Core10.CommandBufferBuilding.cmdBeginRenderPass', the+--     application provides extension struct+--     'RenderPassTransformBeginInfoQCOM' specifying the render pass+--     transform parameters.+--+-- -   At 'Vulkan.Core10.CommandBuffer.beginCommandBuffer' for secondary+--     command buffers, the application provides extension struct+--     'CommandBufferInheritanceRenderPassTransformInfoQCOM' specifying the+--     render pass transform parameters.+--+-- -   The @renderArea@, viewPorts and scissors are all provided in the+--     current (non-rotated) coordinate system. The implementation will+--     transform those into the native (rotated) coordinate system.+--+-- -   The implementation is responsible for transforming shader built-ins+--     (@FragCoord@, @PointCoord@, @SamplePosition@, interpolateAt(), dFdx,+--     dFdy, fWidth) into the rotated coordinate system.+--+-- -   The implementation is responsible for transforming @position@ to the+--     rotated coordinate system.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':+--+--     -   'CommandBufferInheritanceRenderPassTransformInfoQCOM'+--+-- -   Extending 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo':+--+--     -   'RenderPassTransformBeginInfoQCOM'+--+-- == New Enum Constants+--+-- -   'QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME'+--+-- -   'QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RenderPassCreateFlagBits':+--+--     -   'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM'+--+-- == Issues+--+-- 1) Some early Adreno drivers (October 2019 through March 2020)+-- advertised support for this extension but expected VK_STRUCTURE_TYPE+-- values different from those in the vukan headers. To cover all Adreno+-- devices on the market, applications need to detect the driver version+-- and use the appropriate VK_STRUCTURE_TYPE values from the table below.+--+-- The driver version reported in VkPhysicalDeviceProperties.driverVersion+-- is a @uint32_t@ type. You can decode the @uint32_t@ value into a+-- major.minor.patch version as shown below:+--+-- > uint32_t  major = ((driverVersion) >> 22);+-- > uint32_t  minor = ((driverVersion) >> 12) & 0x3ff);+-- > uint32_t  patch = ((driverVersion) & 0xfff);+--+-- If the Adreno major.minor.patch version is greater than or equal to to+-- 512.469.0, then simply use the VK_STRUCTURE_TYPE values as defined in+-- vulkan_core.h. If the version is less than or equal to to 512.468.0,+-- then use the alternate values for the two VK_STRUCTURE_TYPEs in the+-- table below.+--+-- +------------------------------------------------------------+----------------------+-----------------------++-- |                                                            | Adreno Driver        |                       |+-- |                                                            | Version              |                       |+-- +============================================================+======================+=======================++-- |                                                            | 512.468.0 and        | 512.469.0 and later   |+-- |                                                            | earlier              |                       |+-- +------------------------------------------------------------+----------------------+-----------------------++-- | VK_STRUCTURE_TYPE_ RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM   | 1000282000           | 1000282001            |+-- +------------------------------------------------------------+----------------------+-----------------------++-- | VK_STRUCTURE_TYPE_                                         | 1000282001           | 1000282000            |+-- | COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM |                      |                       |+-- +------------------------------------------------------------+----------------------+-----------------------++--+-- @Adreno@ Driver Requirements+--+-- 2) Should the extension support only rotations (e.g. 90, 180,+-- 270-degrees), or also mirror transforms (e.g. vertical flips)? Mobile+-- use-cases only require rotation. Other display systems such as+-- projectors might require a flipped transform.+--+-- __RESOLVED__: In this version of the extension, the functionality is+-- restricted to 90, 180, and 270-degree rotations to address mobile+-- use-cases.+--+-- 3) How does this extension interact with VK_EXT_fragment_density_map?+--+-- __RESOLVED__ Some implementations may not be able to support a render+-- pass that enables both renderpass transform and fragment density maps.+-- For simplicity, this extension disallows enabling both features within a+-- single render pass.+--+-- 4) What should this extension be named?+--+-- We considered names such as \"rotated_rendering\", \"pre_rotation\" and+-- others. Since the functionality is limited to a render pass, it seemed+-- the name should include \"render_pass\". While the current extension is+-- limited to rotations, it could be extended to other transforms (like+-- mirror) in the future.+--+-- __RESOLVED__ The name \"render_pass_transform\" seems like the most+-- accurate description of the introduced functionality.+--+-- == Version History+--+-- -   Revision 1, 2020-02-05 (Jeff Leger)+--+-- = See Also+--+-- 'CommandBufferInheritanceRenderPassTransformInfoQCOM',+-- 'RenderPassTransformBeginInfoQCOM'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_render_pass_transform Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_QCOM_render_pass_transform  ( CommandBufferInheritanceRenderPassTransformInfoQCOM                                                         , RenderPassTransformBeginInfoQCOM                                                         ) where
src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs view
@@ -1,4 +1,123 @@ {-# language CPP #-}+-- | = Name+--+-- VK_QCOM_rotated_copy_commands - device extension+--+-- == VK_QCOM_rotated_copy_commands+--+-- [__Name String__]+--     @VK_QCOM_rotated_copy_commands@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     334+--+-- [__Revision__]+--     0+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+--     -   Requires @VK_KHR_copy_commands2@+--+-- [__Contact__]+--+--     -   Jeff Leger+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_QCOM_rotated_copy_commands:%20&body=@jackohound%20 >+--+-- == Other Extension Metadata+--+-- [Last Modified Date]+--     2020-09-18+--+-- [__Interactions and External Dependencies__]+--+--     -   None+--+-- [Contributors]+--+--     -   Jeff Leger, Qualcomm Technologies, Inc.+--+-- == Description+--+-- This extension extends adds an optional rotation transform to copy+-- commands 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR',+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImageToBuffer2KHR' and+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyBufferToImage2KHR'. When+-- copying between two resources, where one resource contains rotated+-- content and the other does not, a rotated copy may be desired. This+-- extension may be used in combination with VK_QCOM_render_pass_transform+-- which adds rotated renderpasses.+--+-- This extension adds an extension structure to the following commands:+-- vkCmdBlitImage2KHR, vkCmdCopyImageToBuffer2KHR and+-- vkCmdCopyBufferToImage2KHR+--+-- == Issues+--+-- 1) What is an appropriate name for the added extension structure? The+-- style guide says \"Structures which extend other structures through the+-- pNext chain should reflect the name of the base structure they+-- extend.\", but in this case a single extension structure is used to+-- extend three base structures (vkCmdBlitImage2KHR,+-- vkCmdCopyImageToBuffer2KHR and vkCmdCopyBufferToImage2KHR). Creating+-- three identical structures with unique names seemed undesirable.+-- __RESOLVED__: Deviate from the style guide for extension structure+-- naming.+--+-- 2) Should this extension add a rotation capability to+-- vkCmdCopyImage2KHR?+--+-- __RESOLVED__: No. Use of rotated vkCmdBlitImage2KHR can fully address+-- this use-case.+--+-- 3) Should this extension add a rotation capability to+-- vkCmdResolveImage2KHR?+--+-- __RESOLVED__ No. Use of vkCmdResolveImage2KHR is very slow and extremely+-- bandwidth intensive on Qualcomm’s GPU architecture and use of+-- pResolveAttachments in vkRenderPass is the strongly preferred approach.+-- Therefore, we choose not to introduce a rotation capability to+-- vkCmdResolveImage2KHR.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_copy_commands2.BufferImageCopy2KHR',+--     'Vulkan.Extensions.VK_KHR_copy_commands2.ImageBlit2KHR':+--+--     -   'CopyCommandTransformInfoQCOM'+--+-- == New Enum Constants+--+-- -   'QCOM_rotated_copy_commands_EXTENSION_NAME'+--+-- -   'QCOM_rotated_copy_commands_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM'+--+-- == Version History+--+-- -   Revision 1, 2020-09-19 (Jeff Leger)+--+-- = See Also+--+-- 'CopyCommandTransformInfoQCOM'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_rotated_copy_commands Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_QCOM_rotated_copy_commands  ( CopyCommandTransformInfoQCOM(..)                                                         , QCOM_rotated_copy_commands_SPEC_VERSION                                                         , pattern QCOM_rotated_copy_commands_SPEC_VERSION
src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs-boot view
@@ -1,4 +1,123 @@ {-# language CPP #-}+-- | = Name+--+-- VK_QCOM_rotated_copy_commands - device extension+--+-- == VK_QCOM_rotated_copy_commands+--+-- [__Name String__]+--     @VK_QCOM_rotated_copy_commands@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     334+--+-- [__Revision__]+--     0+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_swapchain@+--+--     -   Requires @VK_KHR_copy_commands2@+--+-- [__Contact__]+--+--     -   Jeff Leger+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_QCOM_rotated_copy_commands:%20&body=@jackohound%20 >+--+-- == Other Extension Metadata+--+-- [Last Modified Date]+--     2020-09-18+--+-- [__Interactions and External Dependencies__]+--+--     -   None+--+-- [Contributors]+--+--     -   Jeff Leger, Qualcomm Technologies, Inc.+--+-- == Description+--+-- This extension extends adds an optional rotation transform to copy+-- commands 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR',+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImageToBuffer2KHR' and+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyBufferToImage2KHR'. When+-- copying between two resources, where one resource contains rotated+-- content and the other does not, a rotated copy may be desired. This+-- extension may be used in combination with VK_QCOM_render_pass_transform+-- which adds rotated renderpasses.+--+-- This extension adds an extension structure to the following commands:+-- vkCmdBlitImage2KHR, vkCmdCopyImageToBuffer2KHR and+-- vkCmdCopyBufferToImage2KHR+--+-- == Issues+--+-- 1) What is an appropriate name for the added extension structure? The+-- style guide says \"Structures which extend other structures through the+-- pNext chain should reflect the name of the base structure they+-- extend.\", but in this case a single extension structure is used to+-- extend three base structures (vkCmdBlitImage2KHR,+-- vkCmdCopyImageToBuffer2KHR and vkCmdCopyBufferToImage2KHR). Creating+-- three identical structures with unique names seemed undesirable.+-- __RESOLVED__: Deviate from the style guide for extension structure+-- naming.+--+-- 2) Should this extension add a rotation capability to+-- vkCmdCopyImage2KHR?+--+-- __RESOLVED__: No. Use of rotated vkCmdBlitImage2KHR can fully address+-- this use-case.+--+-- 3) Should this extension add a rotation capability to+-- vkCmdResolveImage2KHR?+--+-- __RESOLVED__ No. Use of vkCmdResolveImage2KHR is very slow and extremely+-- bandwidth intensive on Qualcomm’s GPU architecture and use of+-- pResolveAttachments in vkRenderPass is the strongly preferred approach.+-- Therefore, we choose not to introduce a rotation capability to+-- vkCmdResolveImage2KHR.+--+-- == New Structures+--+-- -   Extending+--     'Vulkan.Extensions.VK_KHR_copy_commands2.BufferImageCopy2KHR',+--     'Vulkan.Extensions.VK_KHR_copy_commands2.ImageBlit2KHR':+--+--     -   'CopyCommandTransformInfoQCOM'+--+-- == New Enum Constants+--+-- -   'QCOM_rotated_copy_commands_EXTENSION_NAME'+--+-- -   'QCOM_rotated_copy_commands_SPEC_VERSION'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM'+--+-- == Version History+--+-- -   Revision 1, 2020-09-19 (Jeff Leger)+--+-- = See Also+--+-- 'CopyCommandTransformInfoQCOM'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_rotated_copy_commands Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly. module Vulkan.Extensions.VK_QCOM_rotated_copy_commands  (CopyCommandTransformInfoQCOM) where  import Data.Kind (Type)
src/Vulkan/NamedType.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "NamedType" module Vulkan.NamedType  ((:::)) where  
src/Vulkan/Version.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Version" module Vulkan.Version  ( pattern HEADER_VERSION                        , pattern HEADER_VERSION_COMPLETE                        , pattern MAKE_VERSION@@ -14,11 +15,11 @@ import Data.Word (Word32)  pattern HEADER_VERSION :: Word32-pattern HEADER_VERSION = 161+pattern HEADER_VERSION = 162   pattern HEADER_VERSION_COMPLETE :: Word32-pattern HEADER_VERSION_COMPLETE = MAKE_VERSION 1 2 161+pattern HEADER_VERSION_COMPLETE = MAKE_VERSION 1 2 162   pattern MAKE_VERSION :: Word32 -> Word32 -> Word32 -> Word32
src/Vulkan/Zero.hs view
@@ -1,4 +1,5 @@ {-# language CPP #-}+-- No documentation found for Chapter "Zero" module Vulkan.Zero  (Zero(..)) where  import GHC.Ptr (nullFunPtr)
vulkan.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           vulkan-version:        3.6.15+version:        3.7 synopsis:       Bindings to the Vulkan graphics API. category:       Graphics homepage:       https://github.com/expipiplus1/vulkan#readme@@ -353,6 +353,7 @@       Vulkan.Extensions.VK_INTEL_shader_integer_functions2       Vulkan.Extensions.VK_KHR_16bit_storage       Vulkan.Extensions.VK_KHR_8bit_storage+      Vulkan.Extensions.VK_KHR_acceleration_structure       Vulkan.Extensions.VK_KHR_android_surface       Vulkan.Extensions.VK_KHR_bind_memory2       Vulkan.Extensions.VK_KHR_buffer_device_address@@ -397,7 +398,8 @@       Vulkan.Extensions.VK_KHR_pipeline_library       Vulkan.Extensions.VK_KHR_portability_subset       Vulkan.Extensions.VK_KHR_push_descriptor-      Vulkan.Extensions.VK_KHR_ray_tracing+      Vulkan.Extensions.VK_KHR_ray_query+      Vulkan.Extensions.VK_KHR_ray_tracing_pipeline       Vulkan.Extensions.VK_KHR_relaxed_block_layout       Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge       Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion@@ -470,8 +472,10 @@       Vulkan.NamedType       Vulkan.Version       Vulkan.Zero+      Vulkan.Internal.Utils   hs-source-dirs:       src+      src-manual   default-extensions: AllowAmbiguousTypes CPP DataKinds DefaultSignatures DeriveAnyClass DeriveGeneric DerivingStrategies DuplicateRecordFields FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs LambdaCase MagicHash NoMonomorphismRestriction OverloadedStrings PartialTypeSignatures PatternSynonyms PolyKinds QuantifiedConstraints RankNTypes RecordWildCards RoleAnnotations ScopedTypeVariables StandaloneDeriving Strict TypeApplications TypeFamilyDependencies TypeOperators TypeSynonymInstances UndecidableInstances ViewPatterns   ghc-options: -Wall -Wno-unticked-promoted-constructors -Wno-missing-pattern-synonym-signatures -Wno-unused-imports -Wno-missing-signatures -Wno-partial-type-signatures   build-depends: