{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_pipeline_properties ( getPipelinePropertiesEXT
, pattern STRUCTURE_TYPE_PIPELINE_INFO_EXT
, PipelinePropertiesIdentifierEXT(..)
, PhysicalDevicePipelinePropertiesFeaturesEXT(..)
, PipelineInfoEXT
, EXT_PIPELINE_PROPERTIES_SPEC_VERSION
, pattern EXT_PIPELINE_PROPERTIES_SPEC_VERSION
, EXT_PIPELINE_PROPERTIES_EXTENSION_NAME
, pattern EXT_PIPELINE_PROPERTIES_EXTENSION_NAME
, PipelineInfoKHR(..)
) where
import Vulkan.CStruct.Utils (FixedArray)
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Foreign.Marshal.Alloc (allocaBytes)
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 Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
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 (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 (peekByteStringFromSizedVectorPtr)
import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
import Vulkan.NamedType ((:::))
import Vulkan.CStruct.Extends (BaseOutStructure)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Handles (Device)
import Vulkan.Core10.Handles (Device(..))
import Vulkan.Core10.Handles (Device(Device))
import Vulkan.Dynamic (DeviceCmds(pVkGetPipelinePropertiesEXT))
import Vulkan.Core10.Handles (Device_T)
import Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineInfoKHR)
import Vulkan.Core10.Enums.Result (Result)
import Vulkan.Core10.Enums.Result (Result(..))
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.APIConstants (UUID_SIZE)
import Vulkan.Exception (VulkanException(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_INFO_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
import Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineInfoKHR(..))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetPipelinePropertiesEXT
:: FunPtr (Ptr Device_T -> Ptr PipelineInfoEXT -> Ptr BaseOutStructure -> IO Result) -> Ptr Device_T -> Ptr PipelineInfoEXT -> Ptr BaseOutStructure -> IO Result
getPipelinePropertiesEXT :: forall io
. (MonadIO io)
=>
Device
->
PipelineInfoEXT
->
("pipelineProperties" ::: Ptr BaseOutStructure)
-> io ()
getPipelinePropertiesEXT :: forall (io :: * -> *).
MonadIO io =>
Device
-> PipelineInfoEXT
-> ("pipelineProperties" ::: Ptr BaseOutStructure)
-> io ()
getPipelinePropertiesEXT Device
device
PipelineInfoEXT
pipelineInfo
"pipelineProperties" ::: Ptr BaseOutStructure
pipelineProperties = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT forall a b. (a -> b) -> a -> b
$ do
let vkGetPipelinePropertiesEXTPtr :: FunPtr
(Ptr Device_T
-> ("pPipelineInfo" ::: Ptr PipelineInfoEXT)
-> ("pipelineProperties" ::: Ptr BaseOutStructure)
-> IO Result)
vkGetPipelinePropertiesEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> ("pPipelineInfo" ::: Ptr PipelineInfoEXT)
-> ("pipelineProperties" ::: Ptr BaseOutStructure)
-> IO Result)
pVkGetPipelinePropertiesEXT (case Device
device of Device{DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> ("pPipelineInfo" ::: Ptr PipelineInfoEXT)
-> ("pipelineProperties" ::: Ptr BaseOutStructure)
-> IO Result)
vkGetPipelinePropertiesEXTPtr forall a. Eq a => a -> a -> Bool
/= forall a. FunPtr a
nullFunPtr) forall a b. (a -> b) -> a -> b
$
forall e a. Exception e => e -> IO a
throwIO forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetPipelinePropertiesEXT is null" forall a. Maybe a
Nothing forall a. Maybe a
Nothing
let vkGetPipelinePropertiesEXT' :: Ptr Device_T
-> ("pPipelineInfo" ::: Ptr PipelineInfoEXT)
-> ("pipelineProperties" ::: Ptr BaseOutStructure)
-> IO Result
vkGetPipelinePropertiesEXT' = FunPtr
(Ptr Device_T
-> ("pPipelineInfo" ::: Ptr PipelineInfoEXT)
-> ("pipelineProperties" ::: Ptr BaseOutStructure)
-> IO Result)
-> Ptr Device_T
-> ("pPipelineInfo" ::: Ptr PipelineInfoEXT)
-> ("pipelineProperties" ::: Ptr BaseOutStructure)
-> IO Result
mkVkGetPipelinePropertiesEXT FunPtr
(Ptr Device_T
-> ("pPipelineInfo" ::: Ptr PipelineInfoEXT)
-> ("pipelineProperties" ::: Ptr BaseOutStructure)
-> IO Result)
vkGetPipelinePropertiesEXTPtr
"pPipelineInfo" ::: Ptr PipelineInfoEXT
pPipelineInfo <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT forall a b. (a -> b) -> a -> b
$ forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (PipelineInfoEXT
pipelineInfo)
Result
r <- forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetPipelinePropertiesEXT" (Ptr Device_T
-> ("pPipelineInfo" ::: Ptr PipelineInfoEXT)
-> ("pipelineProperties" ::: Ptr BaseOutStructure)
-> IO Result
vkGetPipelinePropertiesEXT'
(Device -> Ptr Device_T
deviceHandle (Device
device))
"pPipelineInfo" ::: Ptr PipelineInfoEXT
pPipelineInfo
("pipelineProperties" ::: Ptr BaseOutStructure
pipelineProperties))
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
pattern $bSTRUCTURE_TYPE_PIPELINE_INFO_EXT :: StructureType
$mSTRUCTURE_TYPE_PIPELINE_INFO_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
STRUCTURE_TYPE_PIPELINE_INFO_EXT = STRUCTURE_TYPE_PIPELINE_INFO_KHR
data PipelinePropertiesIdentifierEXT = PipelinePropertiesIdentifierEXT
{
PipelinePropertiesIdentifierEXT -> ByteString
pipelineIdentifier :: ByteString }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PipelinePropertiesIdentifierEXT)
#endif
deriving instance Show PipelinePropertiesIdentifierEXT
instance ToCStruct PipelinePropertiesIdentifierEXT where
withCStruct :: forall b.
PipelinePropertiesIdentifierEXT
-> (Ptr PipelinePropertiesIdentifierEXT -> IO b) -> IO b
withCStruct PipelinePropertiesIdentifierEXT
x Ptr PipelinePropertiesIdentifierEXT -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 forall a b. (a -> b) -> a -> b
$ \Ptr PipelinePropertiesIdentifierEXT
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelinePropertiesIdentifierEXT
p PipelinePropertiesIdentifierEXT
x (Ptr PipelinePropertiesIdentifierEXT -> IO b
f Ptr PipelinePropertiesIdentifierEXT
p)
pokeCStruct :: forall b.
Ptr PipelinePropertiesIdentifierEXT
-> PipelinePropertiesIdentifierEXT -> IO b -> IO b
pokeCStruct Ptr PipelinePropertiesIdentifierEXT
p PipelinePropertiesIdentifierEXT{ByteString
pipelineIdentifier :: ByteString
$sel:pipelineIdentifier:PipelinePropertiesIdentifierEXT :: PipelinePropertiesIdentifierEXT -> ByteString
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelinePropertiesIdentifierEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelinePropertiesIdentifierEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr PipelinePropertiesIdentifierEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (FixedArray UUID_SIZE Word8))) (ByteString
pipelineIdentifier)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr PipelinePropertiesIdentifierEXT -> IO b -> IO b
pokeZeroCStruct Ptr PipelinePropertiesIdentifierEXT
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelinePropertiesIdentifierEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelinePropertiesIdentifierEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr PipelinePropertiesIdentifierEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (FixedArray UUID_SIZE Word8))) (forall a. Monoid a => a
mempty)
IO b
f
instance FromCStruct PipelinePropertiesIdentifierEXT where
peekCStruct :: Ptr PipelinePropertiesIdentifierEXT
-> IO PipelinePropertiesIdentifierEXT
peekCStruct Ptr PipelinePropertiesIdentifierEXT
p = do
ByteString
pipelineIdentifier <- forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> IO ByteString
peekByteStringFromSizedVectorPtr ((Ptr PipelinePropertiesIdentifierEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (FixedArray UUID_SIZE Word8)))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ByteString -> PipelinePropertiesIdentifierEXT
PipelinePropertiesIdentifierEXT
ByteString
pipelineIdentifier
instance Storable PipelinePropertiesIdentifierEXT where
sizeOf :: PipelinePropertiesIdentifierEXT -> Int
sizeOf ~PipelinePropertiesIdentifierEXT
_ = Int
32
alignment :: PipelinePropertiesIdentifierEXT -> Int
alignment ~PipelinePropertiesIdentifierEXT
_ = Int
8
peek :: Ptr PipelinePropertiesIdentifierEXT
-> IO PipelinePropertiesIdentifierEXT
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PipelinePropertiesIdentifierEXT
-> PipelinePropertiesIdentifierEXT -> IO ()
poke Ptr PipelinePropertiesIdentifierEXT
ptr PipelinePropertiesIdentifierEXT
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelinePropertiesIdentifierEXT
ptr PipelinePropertiesIdentifierEXT
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PipelinePropertiesIdentifierEXT where
zero :: PipelinePropertiesIdentifierEXT
zero = ByteString -> PipelinePropertiesIdentifierEXT
PipelinePropertiesIdentifierEXT
forall a. Monoid a => a
mempty
data PhysicalDevicePipelinePropertiesFeaturesEXT = PhysicalDevicePipelinePropertiesFeaturesEXT
{
PhysicalDevicePipelinePropertiesFeaturesEXT -> Bool
pipelinePropertiesIdentifier :: Bool }
deriving (Typeable, PhysicalDevicePipelinePropertiesFeaturesEXT
-> PhysicalDevicePipelinePropertiesFeaturesEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDevicePipelinePropertiesFeaturesEXT
-> PhysicalDevicePipelinePropertiesFeaturesEXT -> Bool
$c/= :: PhysicalDevicePipelinePropertiesFeaturesEXT
-> PhysicalDevicePipelinePropertiesFeaturesEXT -> Bool
== :: PhysicalDevicePipelinePropertiesFeaturesEXT
-> PhysicalDevicePipelinePropertiesFeaturesEXT -> Bool
$c== :: PhysicalDevicePipelinePropertiesFeaturesEXT
-> PhysicalDevicePipelinePropertiesFeaturesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDevicePipelinePropertiesFeaturesEXT)
#endif
deriving instance Show PhysicalDevicePipelinePropertiesFeaturesEXT
instance ToCStruct PhysicalDevicePipelinePropertiesFeaturesEXT where
withCStruct :: forall b.
PhysicalDevicePipelinePropertiesFeaturesEXT
-> (Ptr PhysicalDevicePipelinePropertiesFeaturesEXT -> IO b)
-> IO b
withCStruct PhysicalDevicePipelinePropertiesFeaturesEXT
x Ptr PhysicalDevicePipelinePropertiesFeaturesEXT -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
p PhysicalDevicePipelinePropertiesFeaturesEXT
x (Ptr PhysicalDevicePipelinePropertiesFeaturesEXT -> IO b
f Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
-> PhysicalDevicePipelinePropertiesFeaturesEXT -> IO b -> IO b
pokeCStruct Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
p PhysicalDevicePipelinePropertiesFeaturesEXT{Bool
pipelinePropertiesIdentifier :: Bool
$sel:pipelinePropertiesIdentifier:PhysicalDevicePipelinePropertiesFeaturesEXT :: PhysicalDevicePipelinePropertiesFeaturesEXT -> Bool
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
pipelinePropertiesIdentifier))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDevicePipelinePropertiesFeaturesEXT -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDevicePipelinePropertiesFeaturesEXT where
peekCStruct :: Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
-> IO PhysicalDevicePipelinePropertiesFeaturesEXT
peekCStruct Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
p = do
Bool32
pipelinePropertiesIdentifier <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Bool -> PhysicalDevicePipelinePropertiesFeaturesEXT
PhysicalDevicePipelinePropertiesFeaturesEXT
(Bool32 -> Bool
bool32ToBool Bool32
pipelinePropertiesIdentifier)
instance Storable PhysicalDevicePipelinePropertiesFeaturesEXT where
sizeOf :: PhysicalDevicePipelinePropertiesFeaturesEXT -> Int
sizeOf ~PhysicalDevicePipelinePropertiesFeaturesEXT
_ = Int
24
alignment :: PhysicalDevicePipelinePropertiesFeaturesEXT -> Int
alignment ~PhysicalDevicePipelinePropertiesFeaturesEXT
_ = Int
8
peek :: Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
-> IO PhysicalDevicePipelinePropertiesFeaturesEXT
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
-> PhysicalDevicePipelinePropertiesFeaturesEXT -> IO ()
poke Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
ptr PhysicalDevicePipelinePropertiesFeaturesEXT
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDevicePipelinePropertiesFeaturesEXT
ptr PhysicalDevicePipelinePropertiesFeaturesEXT
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDevicePipelinePropertiesFeaturesEXT where
zero :: PhysicalDevicePipelinePropertiesFeaturesEXT
zero = Bool -> PhysicalDevicePipelinePropertiesFeaturesEXT
PhysicalDevicePipelinePropertiesFeaturesEXT
forall a. Zero a => a
zero
type PipelineInfoEXT = PipelineInfoKHR
type EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1
pattern EXT_PIPELINE_PROPERTIES_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_PIPELINE_PROPERTIES_SPEC_VERSION :: forall a. Integral a => a
$mEXT_PIPELINE_PROPERTIES_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_PIPELINE_PROPERTIES_SPEC_VERSION = 1
type EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties"
pattern EXT_PIPELINE_PROPERTIES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_PIPELINE_PROPERTIES_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mEXT_PIPELINE_PROPERTIES_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_PIPELINE_PROPERTIES_EXTENSION_NAME = "VK_EXT_pipeline_properties"