{-# language CPP #-}
-- | = Name
--
-- VK_KHR_maintenance8 - device extension
--
-- = VK_KHR_maintenance8
--
-- [__Name String__]
--     @VK_KHR_maintenance8@
--
-- [__Extension Type__]
--     Device extension
--
-- [__Registered Extension Number__]
--     575
--
-- [__Revision__]
--     1
--
-- [__Ratification Status__]
--     Ratified
--
-- [__Extension and Version Dependencies__]
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
--
-- [__Contact__]
--
--     -   Mike Blumenkrantz
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance8] @zmike%0A*Here describe the issue or question you have about the VK_KHR_maintenance8 extension* >
--
-- [__Extension Proposal__]
--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance8.adoc VK_KHR_maintenance8>
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2025-01-07
--
-- [__Interactions and External Dependencies__; __Contributors__]
--
--     -   Jon Leech, Khronos
--
--     -   Mike Blumenkrantz, Valve
--
--     -   Spencer Fricke, LunarG
--
--     -   Jan-Harald Fredriksen, ARM
--
--     -   Piers Daniell, NVIDIA
--
--     -   Matthew Netsch, Qualcomm
--
--     -   Ricardo Garcia, Igalia
--
--     -   Lionel Landwerlin, Intel
--
--     -   Rick Hammerstone, Qualcomm
--
--     -   Daniel Story, Nintendo
--
--     -   Hans-Kristian Arntzen, Valve
--
--     -   Caterina Shablia, Collabora
--
--     -   Georg Lehmann, Valve
--
--     -   Shahbaz Youssefi, Google
--
--     -   Tobias Hector, AMD
--
-- == Description
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance8 VK_KHR_maintenance8>
-- adds a collection of minor features, none of which would warrant an
-- entire extension of their own.
--
-- The new features are as follows:
--
-- -   Allow copies between depth\/stencil and “matching” color attachments
--
-- -   Allow @dstCache@ in
--     'Vulkan.Core10.PipelineCache.mergePipelineCaches' to be implicitly
--     synchronized.
--
-- -   Require src\/dst sync scopes to work when doing queue family
--     ownership transfers
--
-- -   Support @Offset@ (as an alternative to @ConstOffset@) image operand
--     in texture sampling and fetch operations
--
-- -   Use the SPIR-V definition of @OpSRem@ and @OpSMod@, making these
--     operations produce well-defined results for negative operands
--
-- -   Loosen layer restrictions when blitting from 3D images to other
--     image types
--
-- -   Add space for an additional 64 access flags for use with
--     VkMemoryBarrier2, VkBufferMemoryBarrier2, and VkImageMemoryBarrier2
--
-- == New Structures
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--     'Vulkan.Core10.Device.DeviceCreateInfo':
--
--     -   'PhysicalDeviceMaintenance8FeaturesKHR'
--
-- -   Extending
--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2',
--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2',
--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2':
--
--     -   'MemoryBarrierAccessFlags3KHR'
--
-- == New Enums
--
-- -   'AccessFlagBits3KHR'
--
-- -   'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits'
--
-- == New Bitmasks
--
-- -   'AccessFlags3KHR'
--
-- == New Enum Constants
--
-- -   'KHR_MAINTENANCE_8_EXTENSION_NAME'
--
-- -   'KHR_MAINTENANCE_8_SPEC_VERSION'
--
-- -   Extending
--     'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits':
--
--     -   'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR'
--
-- -   Extending
--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits':
--
--     -   'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR'
--
-- == Issues
--
-- None.
--
-- == Version History
--
-- -   Revision 1, 2024-06-20 (Jon Leech)
--
--     -   Initial revision
--
-- == See Also
--
-- No cross-references are available
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance8 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_maintenance8  ( PhysicalDeviceMaintenance8FeaturesKHR(..)
                                              , MemoryBarrierAccessFlags3KHR(..)
                                              , AccessFlags3KHR
                                              , AccessFlagBits3KHR( ACCESS_3_NONE_KHR
                                                                  , ..
                                                                  )
                                              , KHR_MAINTENANCE_8_SPEC_VERSION
                                              , pattern KHR_MAINTENANCE_8_SPEC_VERSION
                                              , KHR_MAINTENANCE_8_EXTENSION_NAME
                                              , pattern KHR_MAINTENANCE_8_EXTENSION_NAME
                                              ) where

import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showString)
import Numeric (showHex)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
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 GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Data.Kind (Type)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.FundamentalTypes (Flags64)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR))
-- | VkPhysicalDeviceMaintenance8FeaturesKHR - Structure describing whether
-- the implementation supports maintenance8 functionality
--
-- = Members
--
-- This structure describes the following feature:
--
-- = Description
--
-- If the 'PhysicalDeviceMaintenance8FeaturesKHR' structure is included in
-- the @pNext@ chain of the
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
-- structure passed to
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
-- it is filled in to indicate whether each corresponding feature is
-- supported. If the application wishes to use a
-- 'Vulkan.Core10.Handles.Device' with any features described by
-- 'PhysicalDeviceMaintenance8FeaturesKHR', it /must/ add an instance of
-- the structure, with the desired feature members set to
-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
-- 'Vulkan.Core10.Handles.Device'.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance8 VK_KHR_maintenance8>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceMaintenance8FeaturesKHR = PhysicalDeviceMaintenance8FeaturesKHR
  { -- | #features-maintenance8# @maintenance8@ indicates that the implementation
    -- supports the following:
    --
    -- -   Allow copies between depth\/stencil and “matching” color attachments
    --
    -- -   Allow @dstCache@ in
    --     'Vulkan.Core10.PipelineCache.mergePipelineCaches' to be implicitly
    --     synchronized.
    --
    -- -   Require src\/dst sync scopes to work when doing queue family
    --     ownership transfers
    --
    -- -   Support @Offset@ (as an alternative to @ConstOffset@) image operand
    --     in texture sampling and fetch operations
    --
    -- -   Use the SPIR-V definition of OpSRem and OpSMod, making these
    --     operations produce well-defined results for negative operands
    --
    -- -   Loosen layer restrictions when blitting from 3D images to other
    --     image types
    --
    -- -   Add space for an additional 64 access flags for use with
    --     VkMemoryBarrier2, VkBufferMemoryBarrier2, and VkImageMemoryBarrier2
    PhysicalDeviceMaintenance8FeaturesKHR -> Bool
maintenance8 :: Bool }
  deriving (Typeable, PhysicalDeviceMaintenance8FeaturesKHR
-> PhysicalDeviceMaintenance8FeaturesKHR -> Bool
(PhysicalDeviceMaintenance8FeaturesKHR
 -> PhysicalDeviceMaintenance8FeaturesKHR -> Bool)
-> (PhysicalDeviceMaintenance8FeaturesKHR
    -> PhysicalDeviceMaintenance8FeaturesKHR -> Bool)
-> Eq PhysicalDeviceMaintenance8FeaturesKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceMaintenance8FeaturesKHR
-> PhysicalDeviceMaintenance8FeaturesKHR -> Bool
== :: PhysicalDeviceMaintenance8FeaturesKHR
-> PhysicalDeviceMaintenance8FeaturesKHR -> Bool
$c/= :: PhysicalDeviceMaintenance8FeaturesKHR
-> PhysicalDeviceMaintenance8FeaturesKHR -> Bool
/= :: PhysicalDeviceMaintenance8FeaturesKHR
-> PhysicalDeviceMaintenance8FeaturesKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceMaintenance8FeaturesKHR)
#endif
deriving instance Show PhysicalDeviceMaintenance8FeaturesKHR

instance ToCStruct PhysicalDeviceMaintenance8FeaturesKHR where
  withCStruct :: forall b.
PhysicalDeviceMaintenance8FeaturesKHR
-> (Ptr PhysicalDeviceMaintenance8FeaturesKHR -> IO b) -> IO b
withCStruct PhysicalDeviceMaintenance8FeaturesKHR
x Ptr PhysicalDeviceMaintenance8FeaturesKHR -> IO b
f = Int -> (Ptr PhysicalDeviceMaintenance8FeaturesKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceMaintenance8FeaturesKHR -> IO b) -> IO b)
-> (Ptr PhysicalDeviceMaintenance8FeaturesKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceMaintenance8FeaturesKHR
p -> Ptr PhysicalDeviceMaintenance8FeaturesKHR
-> PhysicalDeviceMaintenance8FeaturesKHR -> IO b -> IO b
forall b.
Ptr PhysicalDeviceMaintenance8FeaturesKHR
-> PhysicalDeviceMaintenance8FeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMaintenance8FeaturesKHR
p PhysicalDeviceMaintenance8FeaturesKHR
x (Ptr PhysicalDeviceMaintenance8FeaturesKHR -> IO b
f Ptr PhysicalDeviceMaintenance8FeaturesKHR
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceMaintenance8FeaturesKHR
-> PhysicalDeviceMaintenance8FeaturesKHR -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMaintenance8FeaturesKHR
p PhysicalDeviceMaintenance8FeaturesKHR{Bool
maintenance8 :: PhysicalDeviceMaintenance8FeaturesKHR -> Bool
maintenance8 :: Bool
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance8FeaturesKHR
p Ptr PhysicalDeviceMaintenance8FeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance8FeaturesKHR
p Ptr PhysicalDeviceMaintenance8FeaturesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance8FeaturesKHR
p Ptr PhysicalDeviceMaintenance8FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
maintenance8))
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr PhysicalDeviceMaintenance8FeaturesKHR -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceMaintenance8FeaturesKHR
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance8FeaturesKHR
p Ptr PhysicalDeviceMaintenance8FeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance8FeaturesKHR
p Ptr PhysicalDeviceMaintenance8FeaturesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance8FeaturesKHR
p Ptr PhysicalDeviceMaintenance8FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct PhysicalDeviceMaintenance8FeaturesKHR where
  peekCStruct :: Ptr PhysicalDeviceMaintenance8FeaturesKHR
-> IO PhysicalDeviceMaintenance8FeaturesKHR
peekCStruct Ptr PhysicalDeviceMaintenance8FeaturesKHR
p = do
    maintenance8 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceMaintenance8FeaturesKHR
p Ptr PhysicalDeviceMaintenance8FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    pure $ PhysicalDeviceMaintenance8FeaturesKHR
             (bool32ToBool maintenance8)

instance Storable PhysicalDeviceMaintenance8FeaturesKHR where
  sizeOf :: PhysicalDeviceMaintenance8FeaturesKHR -> Int
sizeOf ~PhysicalDeviceMaintenance8FeaturesKHR
_ = Int
24
  alignment :: PhysicalDeviceMaintenance8FeaturesKHR -> Int
alignment ~PhysicalDeviceMaintenance8FeaturesKHR
_ = Int
8
  peek :: Ptr PhysicalDeviceMaintenance8FeaturesKHR
-> IO PhysicalDeviceMaintenance8FeaturesKHR
peek = Ptr PhysicalDeviceMaintenance8FeaturesKHR
-> IO PhysicalDeviceMaintenance8FeaturesKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr PhysicalDeviceMaintenance8FeaturesKHR
-> PhysicalDeviceMaintenance8FeaturesKHR -> IO ()
poke Ptr PhysicalDeviceMaintenance8FeaturesKHR
ptr PhysicalDeviceMaintenance8FeaturesKHR
poked = Ptr PhysicalDeviceMaintenance8FeaturesKHR
-> PhysicalDeviceMaintenance8FeaturesKHR -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceMaintenance8FeaturesKHR
-> PhysicalDeviceMaintenance8FeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMaintenance8FeaturesKHR
ptr PhysicalDeviceMaintenance8FeaturesKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero PhysicalDeviceMaintenance8FeaturesKHR where
  zero :: PhysicalDeviceMaintenance8FeaturesKHR
zero = Bool -> PhysicalDeviceMaintenance8FeaturesKHR
PhysicalDeviceMaintenance8FeaturesKHR
           Bool
forall a. Zero a => a
zero


-- | VkMemoryBarrierAccessFlags3KHR - Structure specifying additional access
-- flags
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance8 VK_KHR_maintenance8>,
-- 'AccessFlags3KHR', 'Vulkan.Core10.Enums.StructureType.StructureType'
data MemoryBarrierAccessFlags3KHR = MemoryBarrierAccessFlags3KHR
  { -- | @srcAccessMask3@ is a 'AccessFlags3KHR' mask of access flags to be
    -- included in the
    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes first access scope>.
    --
    -- #VUID-VkMemoryBarrierAccessFlags3KHR-srcAccessMask3-parameter#
    -- @srcAccessMask3@ /must/ be a valid combination of 'AccessFlagBits3KHR'
    -- values
    MemoryBarrierAccessFlags3KHR -> AccessFlags3KHR
srcAccessMask3 :: AccessFlags3KHR
  , -- | @dstAccessMask3@ is a 'AccessFlags3KHR' mask of access flags to be
    -- included in the
    -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
    --
    -- #VUID-VkMemoryBarrierAccessFlags3KHR-dstAccessMask3-parameter#
    -- @dstAccessMask3@ /must/ be a valid combination of 'AccessFlagBits3KHR'
    -- values
    MemoryBarrierAccessFlags3KHR -> AccessFlags3KHR
dstAccessMask3 :: AccessFlags3KHR
  }
  deriving (Typeable, MemoryBarrierAccessFlags3KHR
-> MemoryBarrierAccessFlags3KHR -> Bool
(MemoryBarrierAccessFlags3KHR
 -> MemoryBarrierAccessFlags3KHR -> Bool)
-> (MemoryBarrierAccessFlags3KHR
    -> MemoryBarrierAccessFlags3KHR -> Bool)
-> Eq MemoryBarrierAccessFlags3KHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MemoryBarrierAccessFlags3KHR
-> MemoryBarrierAccessFlags3KHR -> Bool
== :: MemoryBarrierAccessFlags3KHR
-> MemoryBarrierAccessFlags3KHR -> Bool
$c/= :: MemoryBarrierAccessFlags3KHR
-> MemoryBarrierAccessFlags3KHR -> Bool
/= :: MemoryBarrierAccessFlags3KHR
-> MemoryBarrierAccessFlags3KHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (MemoryBarrierAccessFlags3KHR)
#endif
deriving instance Show MemoryBarrierAccessFlags3KHR

instance ToCStruct MemoryBarrierAccessFlags3KHR where
  withCStruct :: forall b.
MemoryBarrierAccessFlags3KHR
-> (Ptr MemoryBarrierAccessFlags3KHR -> IO b) -> IO b
withCStruct MemoryBarrierAccessFlags3KHR
x Ptr MemoryBarrierAccessFlags3KHR -> IO b
f = Int -> (Ptr MemoryBarrierAccessFlags3KHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr MemoryBarrierAccessFlags3KHR -> IO b) -> IO b)
-> (Ptr MemoryBarrierAccessFlags3KHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr MemoryBarrierAccessFlags3KHR
p -> Ptr MemoryBarrierAccessFlags3KHR
-> MemoryBarrierAccessFlags3KHR -> IO b -> IO b
forall b.
Ptr MemoryBarrierAccessFlags3KHR
-> MemoryBarrierAccessFlags3KHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr MemoryBarrierAccessFlags3KHR
p MemoryBarrierAccessFlags3KHR
x (Ptr MemoryBarrierAccessFlags3KHR -> IO b
f Ptr MemoryBarrierAccessFlags3KHR
p)
  pokeCStruct :: forall b.
Ptr MemoryBarrierAccessFlags3KHR
-> MemoryBarrierAccessFlags3KHR -> IO b -> IO b
pokeCStruct Ptr MemoryBarrierAccessFlags3KHR
p MemoryBarrierAccessFlags3KHR{AccessFlags3KHR
srcAccessMask3 :: MemoryBarrierAccessFlags3KHR -> AccessFlags3KHR
dstAccessMask3 :: MemoryBarrierAccessFlags3KHR -> AccessFlags3KHR
srcAccessMask3 :: AccessFlags3KHR
dstAccessMask3 :: AccessFlags3KHR
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryBarrierAccessFlags3KHR
p Ptr MemoryBarrierAccessFlags3KHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryBarrierAccessFlags3KHR
p Ptr MemoryBarrierAccessFlags3KHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr AccessFlags3KHR -> AccessFlags3KHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryBarrierAccessFlags3KHR
p Ptr MemoryBarrierAccessFlags3KHR -> Int -> Ptr AccessFlags3KHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr AccessFlags3KHR)) (AccessFlags3KHR
srcAccessMask3)
    Ptr AccessFlags3KHR -> AccessFlags3KHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryBarrierAccessFlags3KHR
p Ptr MemoryBarrierAccessFlags3KHR -> Int -> Ptr AccessFlags3KHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr AccessFlags3KHR)) (AccessFlags3KHR
dstAccessMask3)
    IO b
f
  cStructSize :: Int
cStructSize = Int
32
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr MemoryBarrierAccessFlags3KHR -> IO b -> IO b
pokeZeroCStruct Ptr MemoryBarrierAccessFlags3KHR
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryBarrierAccessFlags3KHR
p Ptr MemoryBarrierAccessFlags3KHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryBarrierAccessFlags3KHR
p Ptr MemoryBarrierAccessFlags3KHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    IO b
f

instance FromCStruct MemoryBarrierAccessFlags3KHR where
  peekCStruct :: Ptr MemoryBarrierAccessFlags3KHR -> IO MemoryBarrierAccessFlags3KHR
peekCStruct Ptr MemoryBarrierAccessFlags3KHR
p = do
    srcAccessMask3 <- forall a. Storable a => Ptr a -> IO a
peek @AccessFlags3KHR ((Ptr MemoryBarrierAccessFlags3KHR
p Ptr MemoryBarrierAccessFlags3KHR -> Int -> Ptr AccessFlags3KHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr AccessFlags3KHR))
    dstAccessMask3 <- peek @AccessFlags3KHR ((p `plusPtr` 24 :: Ptr AccessFlags3KHR))
    pure $ MemoryBarrierAccessFlags3KHR
             srcAccessMask3 dstAccessMask3

instance Storable MemoryBarrierAccessFlags3KHR where
  sizeOf :: MemoryBarrierAccessFlags3KHR -> Int
sizeOf ~MemoryBarrierAccessFlags3KHR
_ = Int
32
  alignment :: MemoryBarrierAccessFlags3KHR -> Int
alignment ~MemoryBarrierAccessFlags3KHR
_ = Int
8
  peek :: Ptr MemoryBarrierAccessFlags3KHR -> IO MemoryBarrierAccessFlags3KHR
peek = Ptr MemoryBarrierAccessFlags3KHR -> IO MemoryBarrierAccessFlags3KHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr MemoryBarrierAccessFlags3KHR
-> MemoryBarrierAccessFlags3KHR -> IO ()
poke Ptr MemoryBarrierAccessFlags3KHR
ptr MemoryBarrierAccessFlags3KHR
poked = Ptr MemoryBarrierAccessFlags3KHR
-> MemoryBarrierAccessFlags3KHR -> IO () -> IO ()
forall b.
Ptr MemoryBarrierAccessFlags3KHR
-> MemoryBarrierAccessFlags3KHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr MemoryBarrierAccessFlags3KHR
ptr MemoryBarrierAccessFlags3KHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero MemoryBarrierAccessFlags3KHR where
  zero :: MemoryBarrierAccessFlags3KHR
zero = AccessFlags3KHR -> AccessFlags3KHR -> MemoryBarrierAccessFlags3KHR
MemoryBarrierAccessFlags3KHR
           AccessFlags3KHR
forall a. Zero a => a
zero
           AccessFlags3KHR
forall a. Zero a => a
zero


type AccessFlags3KHR = AccessFlagBits3KHR

-- | VkAccessFlagBits3KHR - Access flags for VkAccessFlags3KHR
--
-- = Description
--
-- -   'ACCESS_3_NONE_KHR' specifies no additional accesses.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance8 VK_KHR_maintenance8>,
-- 'AccessFlags3KHR'
newtype AccessFlagBits3KHR = AccessFlagBits3KHR Flags64
  deriving newtype (AccessFlags3KHR -> AccessFlags3KHR -> Bool
(AccessFlags3KHR -> AccessFlags3KHR -> Bool)
-> (AccessFlags3KHR -> AccessFlags3KHR -> Bool)
-> Eq AccessFlags3KHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AccessFlags3KHR -> AccessFlags3KHR -> Bool
== :: AccessFlags3KHR -> AccessFlags3KHR -> Bool
$c/= :: AccessFlags3KHR -> AccessFlags3KHR -> Bool
/= :: AccessFlags3KHR -> AccessFlags3KHR -> Bool
Eq, Eq AccessFlags3KHR
Eq AccessFlags3KHR =>
(AccessFlags3KHR -> AccessFlags3KHR -> Ordering)
-> (AccessFlags3KHR -> AccessFlags3KHR -> Bool)
-> (AccessFlags3KHR -> AccessFlags3KHR -> Bool)
-> (AccessFlags3KHR -> AccessFlags3KHR -> Bool)
-> (AccessFlags3KHR -> AccessFlags3KHR -> Bool)
-> (AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR)
-> (AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR)
-> Ord AccessFlags3KHR
AccessFlags3KHR -> AccessFlags3KHR -> Bool
AccessFlags3KHR -> AccessFlags3KHR -> Ordering
AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: AccessFlags3KHR -> AccessFlags3KHR -> Ordering
compare :: AccessFlags3KHR -> AccessFlags3KHR -> Ordering
$c< :: AccessFlags3KHR -> AccessFlags3KHR -> Bool
< :: AccessFlags3KHR -> AccessFlags3KHR -> Bool
$c<= :: AccessFlags3KHR -> AccessFlags3KHR -> Bool
<= :: AccessFlags3KHR -> AccessFlags3KHR -> Bool
$c> :: AccessFlags3KHR -> AccessFlags3KHR -> Bool
> :: AccessFlags3KHR -> AccessFlags3KHR -> Bool
$c>= :: AccessFlags3KHR -> AccessFlags3KHR -> Bool
>= :: AccessFlags3KHR -> AccessFlags3KHR -> Bool
$cmax :: AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR
max :: AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR
$cmin :: AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR
min :: AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR
Ord, Ptr AccessFlags3KHR -> IO AccessFlags3KHR
Ptr AccessFlags3KHR -> Int -> IO AccessFlags3KHR
Ptr AccessFlags3KHR -> Int -> AccessFlags3KHR -> IO ()
Ptr AccessFlags3KHR -> AccessFlags3KHR -> IO ()
AccessFlags3KHR -> Int
(AccessFlags3KHR -> Int)
-> (AccessFlags3KHR -> Int)
-> (Ptr AccessFlags3KHR -> Int -> IO AccessFlags3KHR)
-> (Ptr AccessFlags3KHR -> Int -> AccessFlags3KHR -> IO ())
-> (forall b. Ptr b -> Int -> IO AccessFlags3KHR)
-> (forall b. Ptr b -> Int -> AccessFlags3KHR -> IO ())
-> (Ptr AccessFlags3KHR -> IO AccessFlags3KHR)
-> (Ptr AccessFlags3KHR -> AccessFlags3KHR -> IO ())
-> Storable AccessFlags3KHR
forall b. Ptr b -> Int -> IO AccessFlags3KHR
forall b. Ptr b -> Int -> AccessFlags3KHR -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
$csizeOf :: AccessFlags3KHR -> Int
sizeOf :: AccessFlags3KHR -> Int
$calignment :: AccessFlags3KHR -> Int
alignment :: AccessFlags3KHR -> Int
$cpeekElemOff :: Ptr AccessFlags3KHR -> Int -> IO AccessFlags3KHR
peekElemOff :: Ptr AccessFlags3KHR -> Int -> IO AccessFlags3KHR
$cpokeElemOff :: Ptr AccessFlags3KHR -> Int -> AccessFlags3KHR -> IO ()
pokeElemOff :: Ptr AccessFlags3KHR -> Int -> AccessFlags3KHR -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO AccessFlags3KHR
peekByteOff :: forall b. Ptr b -> Int -> IO AccessFlags3KHR
$cpokeByteOff :: forall b. Ptr b -> Int -> AccessFlags3KHR -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> AccessFlags3KHR -> IO ()
$cpeek :: Ptr AccessFlags3KHR -> IO AccessFlags3KHR
peek :: Ptr AccessFlags3KHR -> IO AccessFlags3KHR
$cpoke :: Ptr AccessFlags3KHR -> AccessFlags3KHR -> IO ()
poke :: Ptr AccessFlags3KHR -> AccessFlags3KHR -> IO ()
Storable, AccessFlags3KHR
AccessFlags3KHR -> Zero AccessFlags3KHR
forall a. a -> Zero a
$czero :: AccessFlags3KHR
zero :: AccessFlags3KHR
Zero, Eq AccessFlags3KHR
AccessFlags3KHR
Eq AccessFlags3KHR =>
(AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR)
-> (AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR)
-> (AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR)
-> (AccessFlags3KHR -> AccessFlags3KHR)
-> (AccessFlags3KHR -> Int -> AccessFlags3KHR)
-> (AccessFlags3KHR -> Int -> AccessFlags3KHR)
-> AccessFlags3KHR
-> (Int -> AccessFlags3KHR)
-> (AccessFlags3KHR -> Int -> AccessFlags3KHR)
-> (AccessFlags3KHR -> Int -> AccessFlags3KHR)
-> (AccessFlags3KHR -> Int -> AccessFlags3KHR)
-> (AccessFlags3KHR -> Int -> Bool)
-> (AccessFlags3KHR -> Maybe Int)
-> (AccessFlags3KHR -> Int)
-> (AccessFlags3KHR -> Bool)
-> (AccessFlags3KHR -> Int -> AccessFlags3KHR)
-> (AccessFlags3KHR -> Int -> AccessFlags3KHR)
-> (AccessFlags3KHR -> Int -> AccessFlags3KHR)
-> (AccessFlags3KHR -> Int -> AccessFlags3KHR)
-> (AccessFlags3KHR -> Int -> AccessFlags3KHR)
-> (AccessFlags3KHR -> Int -> AccessFlags3KHR)
-> (AccessFlags3KHR -> Int)
-> Bits AccessFlags3KHR
Int -> AccessFlags3KHR
AccessFlags3KHR -> Bool
AccessFlags3KHR -> Int
AccessFlags3KHR -> Maybe Int
AccessFlags3KHR -> AccessFlags3KHR
AccessFlags3KHR -> Int -> Bool
AccessFlags3KHR -> Int -> AccessFlags3KHR
AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR
.&. :: AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR
$c.|. :: AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR
.|. :: AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR
$cxor :: AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR
xor :: AccessFlags3KHR -> AccessFlags3KHR -> AccessFlags3KHR
$ccomplement :: AccessFlags3KHR -> AccessFlags3KHR
complement :: AccessFlags3KHR -> AccessFlags3KHR
$cshift :: AccessFlags3KHR -> Int -> AccessFlags3KHR
shift :: AccessFlags3KHR -> Int -> AccessFlags3KHR
$crotate :: AccessFlags3KHR -> Int -> AccessFlags3KHR
rotate :: AccessFlags3KHR -> Int -> AccessFlags3KHR
$czeroBits :: AccessFlags3KHR
zeroBits :: AccessFlags3KHR
$cbit :: Int -> AccessFlags3KHR
bit :: Int -> AccessFlags3KHR
$csetBit :: AccessFlags3KHR -> Int -> AccessFlags3KHR
setBit :: AccessFlags3KHR -> Int -> AccessFlags3KHR
$cclearBit :: AccessFlags3KHR -> Int -> AccessFlags3KHR
clearBit :: AccessFlags3KHR -> Int -> AccessFlags3KHR
$ccomplementBit :: AccessFlags3KHR -> Int -> AccessFlags3KHR
complementBit :: AccessFlags3KHR -> Int -> AccessFlags3KHR
$ctestBit :: AccessFlags3KHR -> Int -> Bool
testBit :: AccessFlags3KHR -> Int -> Bool
$cbitSizeMaybe :: AccessFlags3KHR -> Maybe Int
bitSizeMaybe :: AccessFlags3KHR -> Maybe Int
$cbitSize :: AccessFlags3KHR -> Int
bitSize :: AccessFlags3KHR -> Int
$cisSigned :: AccessFlags3KHR -> Bool
isSigned :: AccessFlags3KHR -> Bool
$cshiftL :: AccessFlags3KHR -> Int -> AccessFlags3KHR
shiftL :: AccessFlags3KHR -> Int -> AccessFlags3KHR
$cunsafeShiftL :: AccessFlags3KHR -> Int -> AccessFlags3KHR
unsafeShiftL :: AccessFlags3KHR -> Int -> AccessFlags3KHR
$cshiftR :: AccessFlags3KHR -> Int -> AccessFlags3KHR
shiftR :: AccessFlags3KHR -> Int -> AccessFlags3KHR
$cunsafeShiftR :: AccessFlags3KHR -> Int -> AccessFlags3KHR
unsafeShiftR :: AccessFlags3KHR -> Int -> AccessFlags3KHR
$crotateL :: AccessFlags3KHR -> Int -> AccessFlags3KHR
rotateL :: AccessFlags3KHR -> Int -> AccessFlags3KHR
$crotateR :: AccessFlags3KHR -> Int -> AccessFlags3KHR
rotateR :: AccessFlags3KHR -> Int -> AccessFlags3KHR
$cpopCount :: AccessFlags3KHR -> Int
popCount :: AccessFlags3KHR -> Int
Bits, Bits AccessFlags3KHR
Bits AccessFlags3KHR =>
(AccessFlags3KHR -> Int)
-> (AccessFlags3KHR -> Int)
-> (AccessFlags3KHR -> Int)
-> FiniteBits AccessFlags3KHR
AccessFlags3KHR -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: AccessFlags3KHR -> Int
finiteBitSize :: AccessFlags3KHR -> Int
$ccountLeadingZeros :: AccessFlags3KHR -> Int
countLeadingZeros :: AccessFlags3KHR -> Int
$ccountTrailingZeros :: AccessFlags3KHR -> Int
countTrailingZeros :: AccessFlags3KHR -> Int
FiniteBits)

-- No documentation found for Nested "VkAccessFlagBits3KHR" "VK_ACCESS_3_NONE_KHR"
pattern $mACCESS_3_NONE_KHR :: forall {r}. AccessFlags3KHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bACCESS_3_NONE_KHR :: AccessFlags3KHR
ACCESS_3_NONE_KHR = AccessFlagBits3KHR 0x0000000000000000

conNameAccessFlagBits3KHR :: String
conNameAccessFlagBits3KHR :: String
conNameAccessFlagBits3KHR = String
"AccessFlagBits3KHR"

enumPrefixAccessFlagBits3KHR :: String
enumPrefixAccessFlagBits3KHR :: String
enumPrefixAccessFlagBits3KHR = String
"ACCESS_3_NONE_KHR"

showTableAccessFlagBits3KHR :: [(AccessFlagBits3KHR, String)]
showTableAccessFlagBits3KHR :: [(AccessFlags3KHR, String)]
showTableAccessFlagBits3KHR = [(AccessFlags3KHR
ACCESS_3_NONE_KHR, String
"")]

instance Show AccessFlagBits3KHR where
  showsPrec :: Int -> AccessFlags3KHR -> ShowS
showsPrec =
    String
-> [(AccessFlags3KHR, String)]
-> String
-> (AccessFlags3KHR -> Word64)
-> (Word64 -> ShowS)
-> Int
-> AccessFlags3KHR
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixAccessFlagBits3KHR
      [(AccessFlags3KHR, String)]
showTableAccessFlagBits3KHR
      String
conNameAccessFlagBits3KHR
      (\(AccessFlagBits3KHR Word64
x) -> Word64
x)
      (\Word64
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word64 -> ShowS
forall a. Integral a => a -> ShowS
showHex Word64
x)

instance Read AccessFlagBits3KHR where
  readPrec :: ReadPrec AccessFlags3KHR
readPrec =
    String
-> [(AccessFlags3KHR, String)]
-> String
-> (Word64 -> AccessFlags3KHR)
-> ReadPrec AccessFlags3KHR
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixAccessFlagBits3KHR
      [(AccessFlags3KHR, String)]
showTableAccessFlagBits3KHR
      String
conNameAccessFlagBits3KHR
      Word64 -> AccessFlags3KHR
AccessFlagBits3KHR

type KHR_MAINTENANCE_8_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_8_SPEC_VERSION"
pattern KHR_MAINTENANCE_8_SPEC_VERSION :: forall a . Integral a => a
pattern $mKHR_MAINTENANCE_8_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_MAINTENANCE_8_SPEC_VERSION :: forall a. Integral a => a
KHR_MAINTENANCE_8_SPEC_VERSION = 1


type KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8"

-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_8_EXTENSION_NAME"
pattern KHR_MAINTENANCE_8_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mKHR_MAINTENANCE_8_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_MAINTENANCE_8_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE_8_EXTENSION_NAME = "VK_KHR_maintenance8"