{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_validation_cache ( createValidationCacheEXT
, withValidationCacheEXT
, destroyValidationCacheEXT
, getValidationCacheDataEXT
, mergeValidationCachesEXT
, ValidationCacheCreateInfoEXT(..)
, ShaderModuleValidationCacheCreateInfoEXT(..)
, ValidationCacheCreateFlagsEXT(..)
, ValidationCacheHeaderVersionEXT( VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
, ..
)
, EXT_VALIDATION_CACHE_SPEC_VERSION
, pattern EXT_VALIDATION_CACHE_SPEC_VERSION
, EXT_VALIDATION_CACHE_EXTENSION_NAME
, pattern EXT_VALIDATION_CACHE_EXTENSION_NAME
, ValidationCacheEXT(..)
) where
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 (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 Data.ByteString (packCStringLen)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
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.String (IsString)
import Data.Typeable (Typeable)
import Foreign.C.Types (CChar)
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 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.NamedType ((:::))
import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
import Vulkan.Core10.Handles (Device)
import Vulkan.Core10.Handles (Device(..))
import Vulkan.Dynamic (DeviceCmds(pVkCreateValidationCacheEXT))
import Vulkan.Dynamic (DeviceCmds(pVkDestroyValidationCacheEXT))
import Vulkan.Dynamic (DeviceCmds(pVkGetValidationCacheDataEXT))
import Vulkan.Dynamic (DeviceCmds(pVkMergeValidationCachesEXT))
import Vulkan.Core10.Handles (Device_T)
import Vulkan.Core10.BaseType (Flags)
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.Extensions.Handles (ValidationCacheEXT)
import Vulkan.Extensions.Handles (ValidationCacheEXT(..))
import Vulkan.Exception (VulkanException(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
import Vulkan.Extensions.Handles (ValidationCacheEXT(..))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCreateValidationCacheEXT
:: FunPtr (Ptr Device_T -> Ptr ValidationCacheCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr ValidationCacheEXT -> IO Result) -> Ptr Device_T -> Ptr ValidationCacheCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr ValidationCacheEXT -> IO Result
createValidationCacheEXT :: forall io
. (MonadIO io)
=>
Device
->
ValidationCacheCreateInfoEXT
->
("allocator" ::: Maybe AllocationCallbacks)
-> io (ValidationCacheEXT)
createValidationCacheEXT :: Device
-> ValidationCacheCreateInfoEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ValidationCacheEXT
createValidationCacheEXT device :: Device
device createInfo :: ValidationCacheCreateInfoEXT
createInfo allocator :: "allocator" ::: Maybe AllocationCallbacks
allocator = IO ValidationCacheEXT -> io ValidationCacheEXT
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO ValidationCacheEXT -> io ValidationCacheEXT)
-> (ContT ValidationCacheEXT IO ValidationCacheEXT
-> IO ValidationCacheEXT)
-> ContT ValidationCacheEXT IO ValidationCacheEXT
-> io ValidationCacheEXT
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT ValidationCacheEXT IO ValidationCacheEXT
-> IO ValidationCacheEXT
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT ValidationCacheEXT IO ValidationCacheEXT
-> io ValidationCacheEXT)
-> ContT ValidationCacheEXT IO ValidationCacheEXT
-> io ValidationCacheEXT
forall a b. (a -> b) -> a -> b
$ do
let vkCreateValidationCacheEXTPtr :: FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
vkCreateValidationCacheEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
pVkCreateValidationCacheEXT (Device -> DeviceCmds
deviceCmds (Device
device :: Device))
IO () -> ContT ValidationCacheEXT IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT ValidationCacheEXT IO ())
-> IO () -> ContT ValidationCacheEXT IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
vkCreateValidationCacheEXTPtr FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
-> FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkCreateValidationCacheEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCreateValidationCacheEXT' :: Ptr Device_T
-> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result
vkCreateValidationCacheEXT' = FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
-> Ptr Device_T
-> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result
mkVkCreateValidationCacheEXT FunPtr
(Ptr Device_T
-> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
vkCreateValidationCacheEXTPtr
"pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
pCreateInfo <- ((("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> IO ValidationCacheEXT)
-> IO ValidationCacheEXT)
-> ContT
ValidationCacheEXT
IO
("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> IO ValidationCacheEXT)
-> IO ValidationCacheEXT)
-> ContT
ValidationCacheEXT
IO
("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT))
-> ((("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> IO ValidationCacheEXT)
-> IO ValidationCacheEXT)
-> ContT
ValidationCacheEXT
IO
("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
forall a b. (a -> b) -> a -> b
$ ValidationCacheCreateInfoEXT
-> (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> IO ValidationCacheEXT)
-> IO ValidationCacheEXT
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (ValidationCacheCreateInfoEXT
createInfo)
"pAllocator" ::: Ptr AllocationCallbacks
pAllocator <- case ("allocator" ::: Maybe AllocationCallbacks
allocator) of
Nothing -> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ContT
ValidationCacheEXT IO ("pAllocator" ::: Ptr AllocationCallbacks)
forall (f :: * -> *) a. Applicative f => a -> f a
pure "pAllocator" ::: Ptr AllocationCallbacks
forall a. Ptr a
nullPtr
Just j :: AllocationCallbacks
j -> ((("pAllocator" ::: Ptr AllocationCallbacks)
-> IO ValidationCacheEXT)
-> IO ValidationCacheEXT)
-> ContT
ValidationCacheEXT IO ("pAllocator" ::: Ptr AllocationCallbacks)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pAllocator" ::: Ptr AllocationCallbacks)
-> IO ValidationCacheEXT)
-> IO ValidationCacheEXT)
-> ContT
ValidationCacheEXT IO ("pAllocator" ::: Ptr AllocationCallbacks))
-> ((("pAllocator" ::: Ptr AllocationCallbacks)
-> IO ValidationCacheEXT)
-> IO ValidationCacheEXT)
-> ContT
ValidationCacheEXT IO ("pAllocator" ::: Ptr AllocationCallbacks)
forall a b. (a -> b) -> a -> b
$ AllocationCallbacks
-> (("pAllocator" ::: Ptr AllocationCallbacks)
-> IO ValidationCacheEXT)
-> IO ValidationCacheEXT
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (AllocationCallbacks
j)
"pValidationCache" ::: Ptr ValidationCacheEXT
pPValidationCache <- ((("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO ValidationCacheEXT)
-> IO ValidationCacheEXT)
-> ContT
ValidationCacheEXT
IO
("pValidationCache" ::: Ptr ValidationCacheEXT)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO ValidationCacheEXT)
-> IO ValidationCacheEXT)
-> ContT
ValidationCacheEXT
IO
("pValidationCache" ::: Ptr ValidationCacheEXT))
-> ((("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO ValidationCacheEXT)
-> IO ValidationCacheEXT)
-> ContT
ValidationCacheEXT
IO
("pValidationCache" ::: Ptr ValidationCacheEXT)
forall a b. (a -> b) -> a -> b
$ IO ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> (("pValidationCache" ::: Ptr ValidationCacheEXT) -> IO ())
-> (("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO ValidationCacheEXT)
-> IO ValidationCacheEXT
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (Int -> IO ("pValidationCache" ::: Ptr ValidationCacheEXT)
forall a. Int -> IO (Ptr a)
callocBytes @ValidationCacheEXT 8) ("pValidationCache" ::: Ptr ValidationCacheEXT) -> IO ()
forall a. Ptr a -> IO ()
free
Result
r <- IO Result -> ContT ValidationCacheEXT IO Result
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result -> ContT ValidationCacheEXT IO Result)
-> IO Result -> ContT ValidationCacheEXT IO Result
forall a b. (a -> b) -> a -> b
$ Ptr Device_T
-> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result
vkCreateValidationCacheEXT' (Device -> Ptr Device_T
deviceHandle (Device
device)) "pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
pCreateInfo "pAllocator" ::: Ptr AllocationCallbacks
pAllocator ("pValidationCache" ::: Ptr ValidationCacheEXT
pPValidationCache)
IO () -> ContT ValidationCacheEXT IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT ValidationCacheEXT IO ())
-> IO () -> ContT ValidationCacheEXT IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
ValidationCacheEXT
pValidationCache <- IO ValidationCacheEXT
-> ContT ValidationCacheEXT IO ValidationCacheEXT
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO ValidationCacheEXT
-> ContT ValidationCacheEXT IO ValidationCacheEXT)
-> IO ValidationCacheEXT
-> ContT ValidationCacheEXT IO ValidationCacheEXT
forall a b. (a -> b) -> a -> b
$ ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO ValidationCacheEXT
forall a. Storable a => Ptr a -> IO a
peek @ValidationCacheEXT "pValidationCache" ::: Ptr ValidationCacheEXT
pPValidationCache
ValidationCacheEXT
-> ContT ValidationCacheEXT IO ValidationCacheEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ValidationCacheEXT
-> ContT ValidationCacheEXT IO ValidationCacheEXT)
-> ValidationCacheEXT
-> ContT ValidationCacheEXT IO ValidationCacheEXT
forall a b. (a -> b) -> a -> b
$ (ValidationCacheEXT
pValidationCache)
withValidationCacheEXT :: forall io r . MonadIO io => Device -> ValidationCacheCreateInfoEXT -> Maybe AllocationCallbacks -> (io (ValidationCacheEXT) -> ((ValidationCacheEXT) -> io ()) -> r) -> r
withValidationCacheEXT :: Device
-> ValidationCacheCreateInfoEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> (io ValidationCacheEXT -> (ValidationCacheEXT -> io ()) -> r)
-> r
withValidationCacheEXT device :: Device
device pCreateInfo :: ValidationCacheCreateInfoEXT
pCreateInfo pAllocator :: "allocator" ::: Maybe AllocationCallbacks
pAllocator b :: io ValidationCacheEXT -> (ValidationCacheEXT -> io ()) -> r
b =
io ValidationCacheEXT -> (ValidationCacheEXT -> io ()) -> r
b (Device
-> ValidationCacheCreateInfoEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ValidationCacheEXT
forall (io :: * -> *).
MonadIO io =>
Device
-> ValidationCacheCreateInfoEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ValidationCacheEXT
createValidationCacheEXT Device
device ValidationCacheCreateInfoEXT
pCreateInfo "allocator" ::: Maybe AllocationCallbacks
pAllocator)
(\(ValidationCacheEXT
o0) -> Device
-> ValidationCacheEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
forall (io :: * -> *).
MonadIO io =>
Device
-> ValidationCacheEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyValidationCacheEXT Device
device ValidationCacheEXT
o0 "allocator" ::: Maybe AllocationCallbacks
pAllocator)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkDestroyValidationCacheEXT
:: FunPtr (Ptr Device_T -> ValidationCacheEXT -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> ValidationCacheEXT -> Ptr AllocationCallbacks -> IO ()
destroyValidationCacheEXT :: forall io
. (MonadIO io)
=>
Device
->
ValidationCacheEXT
->
("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyValidationCacheEXT :: Device
-> ValidationCacheEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyValidationCacheEXT device :: Device
device validationCache :: ValidationCacheEXT
validationCache allocator :: "allocator" ::: Maybe AllocationCallbacks
allocator = IO () -> io ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ())
-> (ContT () IO () -> IO ()) -> ContT () IO () -> io ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT () IO () -> IO ()
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkDestroyValidationCacheEXTPtr :: FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> IO ())
vkDestroyValidationCacheEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> IO ())
pVkDestroyValidationCacheEXT (Device -> DeviceCmds
deviceCmds (Device
device :: Device))
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> IO ())
vkDestroyValidationCacheEXTPtr FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> IO ())
-> FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkDestroyValidationCacheEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkDestroyValidationCacheEXT' :: Ptr Device_T
-> ValidationCacheEXT
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> IO ()
vkDestroyValidationCacheEXT' = FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> IO ())
-> Ptr Device_T
-> ValidationCacheEXT
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> IO ()
mkVkDestroyValidationCacheEXT FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> IO ())
vkDestroyValidationCacheEXTPtr
"pAllocator" ::: Ptr AllocationCallbacks
pAllocator <- case ("allocator" ::: Maybe AllocationCallbacks
allocator) of
Nothing -> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ContT () IO ("pAllocator" ::: Ptr AllocationCallbacks)
forall (f :: * -> *) a. Applicative f => a -> f a
pure "pAllocator" ::: Ptr AllocationCallbacks
forall a. Ptr a
nullPtr
Just j :: AllocationCallbacks
j -> ((("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) -> IO ())
-> ContT () IO ("pAllocator" ::: Ptr AllocationCallbacks)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) -> IO ())
-> ContT () IO ("pAllocator" ::: Ptr AllocationCallbacks))
-> ((("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) -> IO ())
-> ContT () IO ("pAllocator" ::: Ptr AllocationCallbacks)
forall a b. (a -> b) -> a -> b
$ AllocationCallbacks
-> (("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) -> IO ()
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (AllocationCallbacks
j)
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Device_T
-> ValidationCacheEXT
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> IO ()
vkDestroyValidationCacheEXT' (Device -> Ptr Device_T
deviceHandle (Device
device)) (ValidationCacheEXT
validationCache) "pAllocator" ::: Ptr AllocationCallbacks
pAllocator
() -> ContT () IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure (() -> ContT () IO ()) -> () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ ()
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetValidationCacheDataEXT
:: FunPtr (Ptr Device_T -> ValidationCacheEXT -> Ptr CSize -> Ptr () -> IO Result) -> Ptr Device_T -> ValidationCacheEXT -> Ptr CSize -> Ptr () -> IO Result
getValidationCacheDataEXT :: forall io
. (MonadIO io)
=>
Device
->
ValidationCacheEXT
-> io (Result, ("data" ::: ByteString))
getValidationCacheDataEXT :: Device -> ValidationCacheEXT -> io (Result, "data" ::: ByteString)
getValidationCacheDataEXT device :: Device
device validationCache :: ValidationCacheEXT
validationCache = IO (Result, "data" ::: ByteString)
-> io (Result, "data" ::: ByteString)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Result, "data" ::: ByteString)
-> io (Result, "data" ::: ByteString))
-> (ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString)
-> IO (Result, "data" ::: ByteString))
-> ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString)
-> io (Result, "data" ::: ByteString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString)
-> IO (Result, "data" ::: ByteString)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString)
-> io (Result, "data" ::: ByteString))
-> ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString)
-> io (Result, "data" ::: ByteString)
forall a b. (a -> b) -> a -> b
$ do
let vkGetValidationCacheDataEXTPtr :: FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pDataSize" ::: Ptr CSize)
-> ("pData" ::: Ptr ())
-> IO Result)
vkGetValidationCacheDataEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pDataSize" ::: Ptr CSize)
-> ("pData" ::: Ptr ())
-> IO Result)
pVkGetValidationCacheDataEXT (Device -> DeviceCmds
deviceCmds (Device
device :: Device))
IO () -> ContT (Result, "data" ::: ByteString) IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (Result, "data" ::: ByteString) IO ())
-> IO () -> ContT (Result, "data" ::: ByteString) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pDataSize" ::: Ptr CSize)
-> ("pData" ::: Ptr ())
-> IO Result)
vkGetValidationCacheDataEXTPtr FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pDataSize" ::: Ptr CSize)
-> ("pData" ::: Ptr ())
-> IO Result)
-> FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pDataSize" ::: Ptr CSize)
-> ("pData" ::: Ptr ())
-> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pDataSize" ::: Ptr CSize)
-> ("pData" ::: Ptr ())
-> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkGetValidationCacheDataEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetValidationCacheDataEXT' :: Ptr Device_T
-> ValidationCacheEXT
-> ("pDataSize" ::: Ptr CSize)
-> ("pData" ::: Ptr ())
-> IO Result
vkGetValidationCacheDataEXT' = FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pDataSize" ::: Ptr CSize)
-> ("pData" ::: Ptr ())
-> IO Result)
-> Ptr Device_T
-> ValidationCacheEXT
-> ("pDataSize" ::: Ptr CSize)
-> ("pData" ::: Ptr ())
-> IO Result
mkVkGetValidationCacheDataEXT FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("pDataSize" ::: Ptr CSize)
-> ("pData" ::: Ptr ())
-> IO Result)
vkGetValidationCacheDataEXTPtr
let device' :: Ptr Device_T
device' = Device -> Ptr Device_T
deviceHandle (Device
device)
"pDataSize" ::: Ptr CSize
pPDataSize <- ((("pDataSize" ::: Ptr CSize)
-> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString))
-> ContT
(Result, "data" ::: ByteString) IO ("pDataSize" ::: Ptr CSize)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pDataSize" ::: Ptr CSize)
-> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString))
-> ContT
(Result, "data" ::: ByteString) IO ("pDataSize" ::: Ptr CSize))
-> ((("pDataSize" ::: Ptr CSize)
-> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString))
-> ContT
(Result, "data" ::: ByteString) IO ("pDataSize" ::: Ptr CSize)
forall a b. (a -> b) -> a -> b
$ IO ("pDataSize" ::: Ptr CSize)
-> (("pDataSize" ::: Ptr CSize) -> IO ())
-> (("pDataSize" ::: Ptr CSize)
-> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString)
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (Int -> IO ("pDataSize" ::: Ptr CSize)
forall a. Int -> IO (Ptr a)
callocBytes @CSize 8) ("pDataSize" ::: Ptr CSize) -> IO ()
forall a. Ptr a -> IO ()
free
Result
r <- IO Result -> ContT (Result, "data" ::: ByteString) IO Result
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result -> ContT (Result, "data" ::: ByteString) IO Result)
-> IO Result -> ContT (Result, "data" ::: ByteString) IO Result
forall a b. (a -> b) -> a -> b
$ Ptr Device_T
-> ValidationCacheEXT
-> ("pDataSize" ::: Ptr CSize)
-> ("pData" ::: Ptr ())
-> IO Result
vkGetValidationCacheDataEXT' Ptr Device_T
device' (ValidationCacheEXT
validationCache) ("pDataSize" ::: Ptr CSize
pPDataSize) ("pData" ::: Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT (Result, "data" ::: ByteString) IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (Result, "data" ::: ByteString) IO ())
-> IO () -> ContT (Result, "data" ::: ByteString) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
CSize
pDataSize <- IO CSize -> ContT (Result, "data" ::: ByteString) IO CSize
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO CSize -> ContT (Result, "data" ::: ByteString) IO CSize)
-> IO CSize -> ContT (Result, "data" ::: ByteString) IO CSize
forall a b. (a -> b) -> a -> b
$ ("pDataSize" ::: Ptr CSize) -> IO CSize
forall a. Storable a => Ptr a -> IO a
peek @CSize "pDataSize" ::: Ptr CSize
pPDataSize
"pData" ::: Ptr ()
pPData <- ((("pData" ::: Ptr ()) -> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString))
-> ContT (Result, "data" ::: ByteString) IO ("pData" ::: Ptr ())
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pData" ::: Ptr ()) -> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString))
-> ContT (Result, "data" ::: ByteString) IO ("pData" ::: Ptr ()))
-> ((("pData" ::: Ptr ()) -> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString))
-> ContT (Result, "data" ::: ByteString) IO ("pData" ::: Ptr ())
forall a b. (a -> b) -> a -> b
$ IO ("pData" ::: Ptr ())
-> (("pData" ::: Ptr ()) -> IO ())
-> (("pData" ::: Ptr ()) -> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString)
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (Int -> IO ("pData" ::: Ptr ())
forall a. Int -> IO (Ptr a)
callocBytes @(()) (Word64 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (((\(CSize a :: Word64
a) -> Word64
a) CSize
pDataSize)))) ("pData" ::: Ptr ()) -> IO ()
forall a. Ptr a -> IO ()
free
Result
r' <- IO Result -> ContT (Result, "data" ::: ByteString) IO Result
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result -> ContT (Result, "data" ::: ByteString) IO Result)
-> IO Result -> ContT (Result, "data" ::: ByteString) IO Result
forall a b. (a -> b) -> a -> b
$ Ptr Device_T
-> ValidationCacheEXT
-> ("pDataSize" ::: Ptr CSize)
-> ("pData" ::: Ptr ())
-> IO Result
vkGetValidationCacheDataEXT' Ptr Device_T
device' (ValidationCacheEXT
validationCache) ("pDataSize" ::: Ptr CSize
pPDataSize) ("pData" ::: Ptr ()
pPData)
IO () -> ContT (Result, "data" ::: ByteString) IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (Result, "data" ::: ByteString) IO ())
-> IO () -> ContT (Result, "data" ::: ByteString) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r' Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r'))
CSize
pDataSize'' <- IO CSize -> ContT (Result, "data" ::: ByteString) IO CSize
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO CSize -> ContT (Result, "data" ::: ByteString) IO CSize)
-> IO CSize -> ContT (Result, "data" ::: ByteString) IO CSize
forall a b. (a -> b) -> a -> b
$ ("pDataSize" ::: Ptr CSize) -> IO CSize
forall a. Storable a => Ptr a -> IO a
peek @CSize "pDataSize" ::: Ptr CSize
pPDataSize
"data" ::: ByteString
pData' <- IO ("data" ::: ByteString)
-> ContT (Result, "data" ::: ByteString) IO ("data" ::: ByteString)
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO ("data" ::: ByteString)
-> ContT
(Result, "data" ::: ByteString) IO ("data" ::: ByteString))
-> IO ("data" ::: ByteString)
-> ContT (Result, "data" ::: ByteString) IO ("data" ::: ByteString)
forall a b. (a -> b) -> a -> b
$ CStringLen -> IO ("data" ::: ByteString)
packCStringLen (("pData" ::: Ptr ()) -> Ptr CChar
forall a b. Ptr a -> Ptr b
castPtr @() @CChar "pData" ::: Ptr ()
pPData, (Word64 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (((\(CSize a :: Word64
a) -> Word64
a) CSize
pDataSize''))))
(Result, "data" ::: ByteString)
-> ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString)
forall (f :: * -> *) a. Applicative f => a -> f a
pure ((Result, "data" ::: ByteString)
-> ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString))
-> (Result, "data" ::: ByteString)
-> ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString)
forall a b. (a -> b) -> a -> b
$ ((Result
r'), "data" ::: ByteString
pData')
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkMergeValidationCachesEXT
:: FunPtr (Ptr Device_T -> ValidationCacheEXT -> Word32 -> Ptr ValidationCacheEXT -> IO Result) -> Ptr Device_T -> ValidationCacheEXT -> Word32 -> Ptr ValidationCacheEXT -> IO Result
mergeValidationCachesEXT :: forall io
. (MonadIO io)
=>
Device
->
("dstCache" ::: ValidationCacheEXT)
->
("srcCaches" ::: Vector ValidationCacheEXT)
-> io ()
mergeValidationCachesEXT :: Device
-> ValidationCacheEXT
-> ("srcCaches" ::: Vector ValidationCacheEXT)
-> io ()
mergeValidationCachesEXT device :: Device
device dstCache :: ValidationCacheEXT
dstCache srcCaches :: "srcCaches" ::: Vector ValidationCacheEXT
srcCaches = IO () -> io ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ())
-> (ContT () IO () -> IO ()) -> ContT () IO () -> io ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT () IO () -> IO ()
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkMergeValidationCachesEXTPtr :: FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("srcCacheCount" ::: Word32)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
vkMergeValidationCachesEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("srcCacheCount" ::: Word32)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
pVkMergeValidationCachesEXT (Device -> DeviceCmds
deviceCmds (Device
device :: Device))
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("srcCacheCount" ::: Word32)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
vkMergeValidationCachesEXTPtr FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("srcCacheCount" ::: Word32)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
-> FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("srcCacheCount" ::: Word32)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("srcCacheCount" ::: Word32)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkMergeValidationCachesEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkMergeValidationCachesEXT' :: Ptr Device_T
-> ValidationCacheEXT
-> ("srcCacheCount" ::: Word32)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result
vkMergeValidationCachesEXT' = FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("srcCacheCount" ::: Word32)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
-> Ptr Device_T
-> ValidationCacheEXT
-> ("srcCacheCount" ::: Word32)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result
mkVkMergeValidationCachesEXT FunPtr
(Ptr Device_T
-> ValidationCacheEXT
-> ("srcCacheCount" ::: Word32)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result)
vkMergeValidationCachesEXTPtr
"pValidationCache" ::: Ptr ValidationCacheEXT
pPSrcCaches <- ((("pValidationCache" ::: Ptr ValidationCacheEXT) -> IO ())
-> IO ())
-> ContT () IO ("pValidationCache" ::: Ptr ValidationCacheEXT)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pValidationCache" ::: Ptr ValidationCacheEXT) -> IO ())
-> IO ())
-> ContT () IO ("pValidationCache" ::: Ptr ValidationCacheEXT))
-> ((("pValidationCache" ::: Ptr ValidationCacheEXT) -> IO ())
-> IO ())
-> ContT () IO ("pValidationCache" ::: Ptr ValidationCacheEXT)
forall a b. (a -> b) -> a -> b
$ Int
-> Int
-> (("pValidationCache" ::: Ptr ValidationCacheEXT) -> IO ())
-> IO ()
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @ValidationCacheEXT ((("srcCaches" ::: Vector ValidationCacheEXT) -> Int
forall a. Vector a -> Int
Data.Vector.length ("srcCaches" ::: Vector ValidationCacheEXT
srcCaches)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 8) 8
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> ValidationCacheEXT -> IO ())
-> ("srcCaches" ::: Vector ValidationCacheEXT) -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: ValidationCacheEXT
e -> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> ValidationCacheEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ("pValidationCache" ::: Ptr ValidationCacheEXT
pPSrcCaches ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> Int -> "pValidationCache" ::: Ptr ValidationCacheEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr ValidationCacheEXT) (ValidationCacheEXT
e)) ("srcCaches" ::: Vector ValidationCacheEXT
srcCaches)
Result
r <- IO Result -> ContT () IO Result
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result -> ContT () IO Result)
-> IO Result -> ContT () IO Result
forall a b. (a -> b) -> a -> b
$ Ptr Device_T
-> ValidationCacheEXT
-> ("srcCacheCount" ::: Word32)
-> ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO Result
vkMergeValidationCachesEXT' (Device -> Ptr Device_T
deviceHandle (Device
device)) (ValidationCacheEXT
dstCache) ((Int -> "srcCacheCount" ::: Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (("srcCaches" ::: Vector ValidationCacheEXT) -> Int
forall a. Vector a -> Int
Data.Vector.length (("srcCaches" ::: Vector ValidationCacheEXT) -> Int)
-> ("srcCaches" ::: Vector ValidationCacheEXT) -> Int
forall a b. (a -> b) -> a -> b
$ ("srcCaches" ::: Vector ValidationCacheEXT
srcCaches)) :: Word32)) ("pValidationCache" ::: Ptr ValidationCacheEXT
pPSrcCaches)
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
data ValidationCacheCreateInfoEXT = ValidationCacheCreateInfoEXT
{
ValidationCacheCreateInfoEXT -> ValidationCacheCreateFlagsEXT
flags :: ValidationCacheCreateFlagsEXT
,
ValidationCacheCreateInfoEXT -> Word64
initialDataSize :: Word64
,
ValidationCacheCreateInfoEXT -> "pData" ::: Ptr ()
initialData :: Ptr ()
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ValidationCacheCreateInfoEXT)
#endif
deriving instance Show ValidationCacheCreateInfoEXT
instance ToCStruct ValidationCacheCreateInfoEXT where
withCStruct :: ValidationCacheCreateInfoEXT
-> (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT) -> IO b)
-> IO b
withCStruct x :: ValidationCacheCreateInfoEXT
x f :: ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT) -> IO b
f = Int
-> Int
-> (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT) -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 40 8 ((("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT) -> IO b)
-> IO b)
-> (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT) -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \p :: "pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p -> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> ValidationCacheCreateInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p ValidationCacheCreateInfoEXT
x (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT) -> IO b
f "pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p)
pokeCStruct :: ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> ValidationCacheCreateInfoEXT -> IO b -> IO b
pokeCStruct p :: "pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p ValidationCacheCreateInfoEXT{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT)
Ptr ("pData" ::: Ptr ()) -> ("pData" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> Int -> Ptr ("pData" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("pData" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> Int -> Ptr ValidationCacheCreateFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr ValidationCacheCreateFlagsEXT)) (ValidationCacheCreateFlagsEXT
flags)
("pDataSize" ::: Ptr CSize) -> CSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> Int -> "pDataSize" ::: Ptr CSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr CSize)) (Word64 -> CSize
CSize (Word64
initialDataSize))
Ptr ("pData" ::: Ptr ()) -> ("pData" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> Int -> Ptr ("pData" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr (Ptr ()))) ("pData" ::: Ptr ()
initialData)
IO b
f
cStructSize :: Int
cStructSize = 40
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> IO b -> IO b
pokeZeroCStruct p :: "pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT)
Ptr ("pData" ::: Ptr ()) -> ("pData" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> Int -> Ptr ("pData" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("pData" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr ("pData" ::: Ptr ()) -> ("pData" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> Int -> Ptr ("pData" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr (Ptr ()))) ("pData" ::: Ptr ()
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct ValidationCacheCreateInfoEXT where
peekCStruct :: ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> IO ValidationCacheCreateInfoEXT
peekCStruct p :: "pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p = do
ValidationCacheCreateFlagsEXT
flags <- Ptr ValidationCacheCreateFlagsEXT
-> IO ValidationCacheCreateFlagsEXT
forall a. Storable a => Ptr a -> IO a
peek @ValidationCacheCreateFlagsEXT (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> Int -> Ptr ValidationCacheCreateFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr ValidationCacheCreateFlagsEXT))
CSize
initialDataSize <- ("pDataSize" ::: Ptr CSize) -> IO CSize
forall a. Storable a => Ptr a -> IO a
peek @CSize (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> Int -> "pDataSize" ::: Ptr CSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr CSize))
"pData" ::: Ptr ()
pInitialData <- Ptr ("pData" ::: Ptr ()) -> IO ("pData" ::: Ptr ())
forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) (("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
p ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> Int -> Ptr ("pData" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr (Ptr ())))
ValidationCacheCreateInfoEXT -> IO ValidationCacheCreateInfoEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ValidationCacheCreateInfoEXT -> IO ValidationCacheCreateInfoEXT)
-> ValidationCacheCreateInfoEXT -> IO ValidationCacheCreateInfoEXT
forall a b. (a -> b) -> a -> b
$ ValidationCacheCreateFlagsEXT
-> Word64 -> ("pData" ::: Ptr ()) -> ValidationCacheCreateInfoEXT
ValidationCacheCreateInfoEXT
ValidationCacheCreateFlagsEXT
flags ((\(CSize a :: Word64
a) -> Word64
a) CSize
initialDataSize) "pData" ::: Ptr ()
pInitialData
instance Storable ValidationCacheCreateInfoEXT where
sizeOf :: ValidationCacheCreateInfoEXT -> Int
sizeOf ~ValidationCacheCreateInfoEXT
_ = 40
alignment :: ValidationCacheCreateInfoEXT -> Int
alignment ~ValidationCacheCreateInfoEXT
_ = 8
peek :: ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> IO ValidationCacheCreateInfoEXT
peek = ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> IO ValidationCacheCreateInfoEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> ValidationCacheCreateInfoEXT -> IO ()
poke ptr :: "pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
ptr poked :: ValidationCacheCreateInfoEXT
poked = ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT)
-> ValidationCacheCreateInfoEXT -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT
ptr ValidationCacheCreateInfoEXT
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero ValidationCacheCreateInfoEXT where
zero :: ValidationCacheCreateInfoEXT
zero = ValidationCacheCreateFlagsEXT
-> Word64 -> ("pData" ::: Ptr ()) -> ValidationCacheCreateInfoEXT
ValidationCacheCreateInfoEXT
ValidationCacheCreateFlagsEXT
forall a. Zero a => a
zero
Word64
forall a. Zero a => a
zero
"pData" ::: Ptr ()
forall a. Zero a => a
zero
data ShaderModuleValidationCacheCreateInfoEXT = ShaderModuleValidationCacheCreateInfoEXT
{
ShaderModuleValidationCacheCreateInfoEXT -> ValidationCacheEXT
validationCache :: ValidationCacheEXT }
deriving (Typeable, ShaderModuleValidationCacheCreateInfoEXT
-> ShaderModuleValidationCacheCreateInfoEXT -> Bool
(ShaderModuleValidationCacheCreateInfoEXT
-> ShaderModuleValidationCacheCreateInfoEXT -> Bool)
-> (ShaderModuleValidationCacheCreateInfoEXT
-> ShaderModuleValidationCacheCreateInfoEXT -> Bool)
-> Eq ShaderModuleValidationCacheCreateInfoEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ShaderModuleValidationCacheCreateInfoEXT
-> ShaderModuleValidationCacheCreateInfoEXT -> Bool
$c/= :: ShaderModuleValidationCacheCreateInfoEXT
-> ShaderModuleValidationCacheCreateInfoEXT -> Bool
== :: ShaderModuleValidationCacheCreateInfoEXT
-> ShaderModuleValidationCacheCreateInfoEXT -> Bool
$c== :: ShaderModuleValidationCacheCreateInfoEXT
-> ShaderModuleValidationCacheCreateInfoEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ShaderModuleValidationCacheCreateInfoEXT)
#endif
deriving instance Show ShaderModuleValidationCacheCreateInfoEXT
instance ToCStruct ShaderModuleValidationCacheCreateInfoEXT where
withCStruct :: ShaderModuleValidationCacheCreateInfoEXT
-> (Ptr ShaderModuleValidationCacheCreateInfoEXT -> IO b) -> IO b
withCStruct x :: ShaderModuleValidationCacheCreateInfoEXT
x f :: Ptr ShaderModuleValidationCacheCreateInfoEXT -> IO b
f = Int
-> Int
-> (Ptr ShaderModuleValidationCacheCreateInfoEXT -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 24 8 ((Ptr ShaderModuleValidationCacheCreateInfoEXT -> IO b) -> IO b)
-> (Ptr ShaderModuleValidationCacheCreateInfoEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr ShaderModuleValidationCacheCreateInfoEXT
p -> Ptr ShaderModuleValidationCacheCreateInfoEXT
-> ShaderModuleValidationCacheCreateInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ShaderModuleValidationCacheCreateInfoEXT
p ShaderModuleValidationCacheCreateInfoEXT
x (Ptr ShaderModuleValidationCacheCreateInfoEXT -> IO b
f Ptr ShaderModuleValidationCacheCreateInfoEXT
p)
pokeCStruct :: Ptr ShaderModuleValidationCacheCreateInfoEXT
-> ShaderModuleValidationCacheCreateInfoEXT -> IO b -> IO b
pokeCStruct p :: Ptr ShaderModuleValidationCacheCreateInfoEXT
p ShaderModuleValidationCacheCreateInfoEXT{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ShaderModuleValidationCacheCreateInfoEXT
p Ptr ShaderModuleValidationCacheCreateInfoEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT)
Ptr ("pData" ::: Ptr ()) -> ("pData" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ShaderModuleValidationCacheCreateInfoEXT
p Ptr ShaderModuleValidationCacheCreateInfoEXT
-> Int -> Ptr ("pData" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("pData" ::: Ptr ()
forall a. Ptr a
nullPtr)
("pValidationCache" ::: Ptr ValidationCacheEXT)
-> ValidationCacheEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ShaderModuleValidationCacheCreateInfoEXT
p Ptr ShaderModuleValidationCacheCreateInfoEXT
-> Int -> "pValidationCache" ::: Ptr ValidationCacheEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr ValidationCacheEXT)) (ValidationCacheEXT
validationCache)
IO b
f
cStructSize :: Int
cStructSize = 24
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr ShaderModuleValidationCacheCreateInfoEXT -> IO b -> IO b
pokeZeroCStruct p :: Ptr ShaderModuleValidationCacheCreateInfoEXT
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ShaderModuleValidationCacheCreateInfoEXT
p Ptr ShaderModuleValidationCacheCreateInfoEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT)
Ptr ("pData" ::: Ptr ()) -> ("pData" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ShaderModuleValidationCacheCreateInfoEXT
p Ptr ShaderModuleValidationCacheCreateInfoEXT
-> Int -> Ptr ("pData" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) ("pData" ::: Ptr ()
forall a. Ptr a
nullPtr)
("pValidationCache" ::: Ptr ValidationCacheEXT)
-> ValidationCacheEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ShaderModuleValidationCacheCreateInfoEXT
p Ptr ShaderModuleValidationCacheCreateInfoEXT
-> Int -> "pValidationCache" ::: Ptr ValidationCacheEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr ValidationCacheEXT)) (ValidationCacheEXT
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct ShaderModuleValidationCacheCreateInfoEXT where
peekCStruct :: Ptr ShaderModuleValidationCacheCreateInfoEXT
-> IO ShaderModuleValidationCacheCreateInfoEXT
peekCStruct p :: Ptr ShaderModuleValidationCacheCreateInfoEXT
p = do
ValidationCacheEXT
validationCache <- ("pValidationCache" ::: Ptr ValidationCacheEXT)
-> IO ValidationCacheEXT
forall a. Storable a => Ptr a -> IO a
peek @ValidationCacheEXT ((Ptr ShaderModuleValidationCacheCreateInfoEXT
p Ptr ShaderModuleValidationCacheCreateInfoEXT
-> Int -> "pValidationCache" ::: Ptr ValidationCacheEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr ValidationCacheEXT))
ShaderModuleValidationCacheCreateInfoEXT
-> IO ShaderModuleValidationCacheCreateInfoEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ShaderModuleValidationCacheCreateInfoEXT
-> IO ShaderModuleValidationCacheCreateInfoEXT)
-> ShaderModuleValidationCacheCreateInfoEXT
-> IO ShaderModuleValidationCacheCreateInfoEXT
forall a b. (a -> b) -> a -> b
$ ValidationCacheEXT -> ShaderModuleValidationCacheCreateInfoEXT
ShaderModuleValidationCacheCreateInfoEXT
ValidationCacheEXT
validationCache
instance Storable ShaderModuleValidationCacheCreateInfoEXT where
sizeOf :: ShaderModuleValidationCacheCreateInfoEXT -> Int
sizeOf ~ShaderModuleValidationCacheCreateInfoEXT
_ = 24
alignment :: ShaderModuleValidationCacheCreateInfoEXT -> Int
alignment ~ShaderModuleValidationCacheCreateInfoEXT
_ = 8
peek :: Ptr ShaderModuleValidationCacheCreateInfoEXT
-> IO ShaderModuleValidationCacheCreateInfoEXT
peek = Ptr ShaderModuleValidationCacheCreateInfoEXT
-> IO ShaderModuleValidationCacheCreateInfoEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr ShaderModuleValidationCacheCreateInfoEXT
-> ShaderModuleValidationCacheCreateInfoEXT -> IO ()
poke ptr :: Ptr ShaderModuleValidationCacheCreateInfoEXT
ptr poked :: ShaderModuleValidationCacheCreateInfoEXT
poked = Ptr ShaderModuleValidationCacheCreateInfoEXT
-> ShaderModuleValidationCacheCreateInfoEXT -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ShaderModuleValidationCacheCreateInfoEXT
ptr ShaderModuleValidationCacheCreateInfoEXT
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero ShaderModuleValidationCacheCreateInfoEXT where
zero :: ShaderModuleValidationCacheCreateInfoEXT
zero = ValidationCacheEXT -> ShaderModuleValidationCacheCreateInfoEXT
ShaderModuleValidationCacheCreateInfoEXT
ValidationCacheEXT
forall a. Zero a => a
zero
newtype ValidationCacheCreateFlagsEXT = ValidationCacheCreateFlagsEXT Flags
deriving newtype (ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool
(ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool)
-> (ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool)
-> Eq ValidationCacheCreateFlagsEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool
$c/= :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool
== :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool
$c== :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool
Eq, Eq ValidationCacheCreateFlagsEXT
Eq ValidationCacheCreateFlagsEXT =>
(ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Ordering)
-> (ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool)
-> (ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool)
-> (ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool)
-> (ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool)
-> (ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT)
-> Ord ValidationCacheCreateFlagsEXT
ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool
ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Ordering
ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT
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
min :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT
$cmin :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT
max :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT
$cmax :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT
>= :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool
$c>= :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool
> :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool
$c> :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool
<= :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool
$c<= :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool
< :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool
$c< :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Bool
compare :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Ordering
$ccompare :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> Ordering
$cp1Ord :: Eq ValidationCacheCreateFlagsEXT
Ord, Ptr b -> Int -> IO ValidationCacheCreateFlagsEXT
Ptr b -> Int -> ValidationCacheCreateFlagsEXT -> IO ()
Ptr ValidationCacheCreateFlagsEXT
-> IO ValidationCacheCreateFlagsEXT
Ptr ValidationCacheCreateFlagsEXT
-> Int -> IO ValidationCacheCreateFlagsEXT
Ptr ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT -> IO ()
Ptr ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> IO ()
ValidationCacheCreateFlagsEXT -> Int
(ValidationCacheCreateFlagsEXT -> Int)
-> (ValidationCacheCreateFlagsEXT -> Int)
-> (Ptr ValidationCacheCreateFlagsEXT
-> Int -> IO ValidationCacheCreateFlagsEXT)
-> (Ptr ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO ValidationCacheCreateFlagsEXT)
-> (forall b.
Ptr b -> Int -> ValidationCacheCreateFlagsEXT -> IO ())
-> (Ptr ValidationCacheCreateFlagsEXT
-> IO ValidationCacheCreateFlagsEXT)
-> (Ptr ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> IO ())
-> Storable ValidationCacheCreateFlagsEXT
forall b. Ptr b -> Int -> IO ValidationCacheCreateFlagsEXT
forall b. Ptr b -> Int -> ValidationCacheCreateFlagsEXT -> 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
poke :: Ptr ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> IO ()
$cpoke :: Ptr ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> IO ()
peek :: Ptr ValidationCacheCreateFlagsEXT
-> IO ValidationCacheCreateFlagsEXT
$cpeek :: Ptr ValidationCacheCreateFlagsEXT
-> IO ValidationCacheCreateFlagsEXT
pokeByteOff :: Ptr b -> Int -> ValidationCacheCreateFlagsEXT -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> ValidationCacheCreateFlagsEXT -> IO ()
peekByteOff :: Ptr b -> Int -> IO ValidationCacheCreateFlagsEXT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ValidationCacheCreateFlagsEXT
pokeElemOff :: Ptr ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT -> IO ()
$cpokeElemOff :: Ptr ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT -> IO ()
peekElemOff :: Ptr ValidationCacheCreateFlagsEXT
-> Int -> IO ValidationCacheCreateFlagsEXT
$cpeekElemOff :: Ptr ValidationCacheCreateFlagsEXT
-> Int -> IO ValidationCacheCreateFlagsEXT
alignment :: ValidationCacheCreateFlagsEXT -> Int
$calignment :: ValidationCacheCreateFlagsEXT -> Int
sizeOf :: ValidationCacheCreateFlagsEXT -> Int
$csizeOf :: ValidationCacheCreateFlagsEXT -> Int
Storable, ValidationCacheCreateFlagsEXT
ValidationCacheCreateFlagsEXT -> Zero ValidationCacheCreateFlagsEXT
forall a. a -> Zero a
zero :: ValidationCacheCreateFlagsEXT
$czero :: ValidationCacheCreateFlagsEXT
Zero, Eq ValidationCacheCreateFlagsEXT
ValidationCacheCreateFlagsEXT
Eq ValidationCacheCreateFlagsEXT =>
(ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT)
-> ValidationCacheCreateFlagsEXT
-> (Int -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT -> Int -> Bool)
-> (ValidationCacheCreateFlagsEXT -> Maybe Int)
-> (ValidationCacheCreateFlagsEXT -> Int)
-> (ValidationCacheCreateFlagsEXT -> Bool)
-> (ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT)
-> (ValidationCacheCreateFlagsEXT -> Int)
-> Bits ValidationCacheCreateFlagsEXT
Int -> ValidationCacheCreateFlagsEXT
ValidationCacheCreateFlagsEXT -> Bool
ValidationCacheCreateFlagsEXT -> Int
ValidationCacheCreateFlagsEXT -> Maybe Int
ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT
ValidationCacheCreateFlagsEXT -> Int -> Bool
ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT
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
popCount :: ValidationCacheCreateFlagsEXT -> Int
$cpopCount :: ValidationCacheCreateFlagsEXT -> Int
rotateR :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
$crotateR :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
rotateL :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
$crotateL :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
unsafeShiftR :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
$cunsafeShiftR :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
shiftR :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
$cshiftR :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
unsafeShiftL :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
$cunsafeShiftL :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
shiftL :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
$cshiftL :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
isSigned :: ValidationCacheCreateFlagsEXT -> Bool
$cisSigned :: ValidationCacheCreateFlagsEXT -> Bool
bitSize :: ValidationCacheCreateFlagsEXT -> Int
$cbitSize :: ValidationCacheCreateFlagsEXT -> Int
bitSizeMaybe :: ValidationCacheCreateFlagsEXT -> Maybe Int
$cbitSizeMaybe :: ValidationCacheCreateFlagsEXT -> Maybe Int
testBit :: ValidationCacheCreateFlagsEXT -> Int -> Bool
$ctestBit :: ValidationCacheCreateFlagsEXT -> Int -> Bool
complementBit :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
$ccomplementBit :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
clearBit :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
$cclearBit :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
setBit :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
$csetBit :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
bit :: Int -> ValidationCacheCreateFlagsEXT
$cbit :: Int -> ValidationCacheCreateFlagsEXT
zeroBits :: ValidationCacheCreateFlagsEXT
$czeroBits :: ValidationCacheCreateFlagsEXT
rotate :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
$crotate :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
shift :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
$cshift :: ValidationCacheCreateFlagsEXT
-> Int -> ValidationCacheCreateFlagsEXT
complement :: ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT
$ccomplement :: ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT
xor :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT
$cxor :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT
.|. :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT
$c.|. :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT
.&. :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT
$c.&. :: ValidationCacheCreateFlagsEXT
-> ValidationCacheCreateFlagsEXT -> ValidationCacheCreateFlagsEXT
$cp1Bits :: Eq ValidationCacheCreateFlagsEXT
Bits)
instance Show ValidationCacheCreateFlagsEXT where
showsPrec :: Int -> ValidationCacheCreateFlagsEXT -> ShowS
showsPrec p :: Int
p = \case
ValidationCacheCreateFlagsEXT x :: "srcCacheCount" ::: Word32
x -> Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 11) (String -> ShowS
showString "ValidationCacheCreateFlagsEXT 0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ("srcCacheCount" ::: Word32) -> ShowS
forall a. (Integral a, Show a) => a -> ShowS
showHex "srcCacheCount" ::: Word32
x)
instance Read ValidationCacheCreateFlagsEXT where
readPrec :: ReadPrec ValidationCacheCreateFlagsEXT
readPrec = ReadPrec ValidationCacheCreateFlagsEXT
-> ReadPrec ValidationCacheCreateFlagsEXT
forall a. ReadPrec a -> ReadPrec a
parens ([(String, ReadPrec ValidationCacheCreateFlagsEXT)]
-> ReadPrec ValidationCacheCreateFlagsEXT
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose []
ReadPrec ValidationCacheCreateFlagsEXT
-> ReadPrec ValidationCacheCreateFlagsEXT
-> ReadPrec ValidationCacheCreateFlagsEXT
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
Int
-> ReadPrec ValidationCacheCreateFlagsEXT
-> ReadPrec ValidationCacheCreateFlagsEXT
forall a. Int -> ReadPrec a -> ReadPrec a
prec 10 (do
Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident "ValidationCacheCreateFlagsEXT")
"srcCacheCount" ::: Word32
v <- ReadPrec ("srcCacheCount" ::: Word32)
-> ReadPrec ("srcCacheCount" ::: Word32)
forall a. ReadPrec a -> ReadPrec a
step ReadPrec ("srcCacheCount" ::: Word32)
forall a. Read a => ReadPrec a
readPrec
ValidationCacheCreateFlagsEXT
-> ReadPrec ValidationCacheCreateFlagsEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (("srcCacheCount" ::: Word32) -> ValidationCacheCreateFlagsEXT
ValidationCacheCreateFlagsEXT "srcCacheCount" ::: Word32
v)))
newtype = Int32
deriving newtype (ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool
(ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool)
-> (ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool)
-> Eq ValidationCacheHeaderVersionEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool
$c/= :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool
== :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool
$c== :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool
Eq, Eq ValidationCacheHeaderVersionEXT
Eq ValidationCacheHeaderVersionEXT =>
(ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Ordering)
-> (ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool)
-> (ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool)
-> (ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool)
-> (ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool)
-> (ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT)
-> (ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT)
-> Ord ValidationCacheHeaderVersionEXT
ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool
ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Ordering
ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT
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
min :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT
$cmin :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT
max :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT
$cmax :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT
>= :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool
$c>= :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool
> :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool
$c> :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool
<= :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool
$c<= :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool
< :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool
$c< :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Bool
compare :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Ordering
$ccompare :: ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> Ordering
$cp1Ord :: Eq ValidationCacheHeaderVersionEXT
Ord, Ptr b -> Int -> IO ValidationCacheHeaderVersionEXT
Ptr b -> Int -> ValidationCacheHeaderVersionEXT -> IO ()
Ptr ValidationCacheHeaderVersionEXT
-> IO ValidationCacheHeaderVersionEXT
Ptr ValidationCacheHeaderVersionEXT
-> Int -> IO ValidationCacheHeaderVersionEXT
Ptr ValidationCacheHeaderVersionEXT
-> Int -> ValidationCacheHeaderVersionEXT -> IO ()
Ptr ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> IO ()
ValidationCacheHeaderVersionEXT -> Int
(ValidationCacheHeaderVersionEXT -> Int)
-> (ValidationCacheHeaderVersionEXT -> Int)
-> (Ptr ValidationCacheHeaderVersionEXT
-> Int -> IO ValidationCacheHeaderVersionEXT)
-> (Ptr ValidationCacheHeaderVersionEXT
-> Int -> ValidationCacheHeaderVersionEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO ValidationCacheHeaderVersionEXT)
-> (forall b.
Ptr b -> Int -> ValidationCacheHeaderVersionEXT -> IO ())
-> (Ptr ValidationCacheHeaderVersionEXT
-> IO ValidationCacheHeaderVersionEXT)
-> (Ptr ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> IO ())
-> Storable ValidationCacheHeaderVersionEXT
forall b. Ptr b -> Int -> IO ValidationCacheHeaderVersionEXT
forall b. Ptr b -> Int -> ValidationCacheHeaderVersionEXT -> 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
poke :: Ptr ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> IO ()
$cpoke :: Ptr ValidationCacheHeaderVersionEXT
-> ValidationCacheHeaderVersionEXT -> IO ()
peek :: Ptr ValidationCacheHeaderVersionEXT
-> IO ValidationCacheHeaderVersionEXT
$cpeek :: Ptr ValidationCacheHeaderVersionEXT
-> IO ValidationCacheHeaderVersionEXT
pokeByteOff :: Ptr b -> Int -> ValidationCacheHeaderVersionEXT -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> ValidationCacheHeaderVersionEXT -> IO ()
peekByteOff :: Ptr b -> Int -> IO ValidationCacheHeaderVersionEXT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ValidationCacheHeaderVersionEXT
pokeElemOff :: Ptr ValidationCacheHeaderVersionEXT
-> Int -> ValidationCacheHeaderVersionEXT -> IO ()
$cpokeElemOff :: Ptr ValidationCacheHeaderVersionEXT
-> Int -> ValidationCacheHeaderVersionEXT -> IO ()
peekElemOff :: Ptr ValidationCacheHeaderVersionEXT
-> Int -> IO ValidationCacheHeaderVersionEXT
$cpeekElemOff :: Ptr ValidationCacheHeaderVersionEXT
-> Int -> IO ValidationCacheHeaderVersionEXT
alignment :: ValidationCacheHeaderVersionEXT -> Int
$calignment :: ValidationCacheHeaderVersionEXT -> Int
sizeOf :: ValidationCacheHeaderVersionEXT -> Int
$csizeOf :: ValidationCacheHeaderVersionEXT -> Int
Storable, ValidationCacheHeaderVersionEXT
ValidationCacheHeaderVersionEXT
-> Zero ValidationCacheHeaderVersionEXT
forall a. a -> Zero a
zero :: ValidationCacheHeaderVersionEXT
$czero :: ValidationCacheHeaderVersionEXT
Zero)
pattern = ValidationCacheHeaderVersionEXT 1
{-# complete VALIDATION_CACHE_HEADER_VERSION_ONE_EXT :: ValidationCacheHeaderVersionEXT #-}
instance Show ValidationCacheHeaderVersionEXT where
showsPrec :: Int -> ValidationCacheHeaderVersionEXT -> ShowS
showsPrec p :: Int
p = \case
VALIDATION_CACHE_HEADER_VERSION_ONE_EXT -> String -> ShowS
showString "VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"
ValidationCacheHeaderVersionEXT x :: Int32
x -> Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 11) (String -> ShowS
showString "ValidationCacheHeaderVersionEXT " ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 Int32
x)
instance Read ValidationCacheHeaderVersionEXT where
readPrec :: ReadPrec ValidationCacheHeaderVersionEXT
readPrec = ReadPrec ValidationCacheHeaderVersionEXT
-> ReadPrec ValidationCacheHeaderVersionEXT
forall a. ReadPrec a -> ReadPrec a
parens ([(String, ReadPrec ValidationCacheHeaderVersionEXT)]
-> ReadPrec ValidationCacheHeaderVersionEXT
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose [("VALIDATION_CACHE_HEADER_VERSION_ONE_EXT", ValidationCacheHeaderVersionEXT
-> ReadPrec ValidationCacheHeaderVersionEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure ValidationCacheHeaderVersionEXT
VALIDATION_CACHE_HEADER_VERSION_ONE_EXT)]
ReadPrec ValidationCacheHeaderVersionEXT
-> ReadPrec ValidationCacheHeaderVersionEXT
-> ReadPrec ValidationCacheHeaderVersionEXT
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
Int
-> ReadPrec ValidationCacheHeaderVersionEXT
-> ReadPrec ValidationCacheHeaderVersionEXT
forall a. Int -> ReadPrec a -> ReadPrec a
prec 10 (do
Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident "ValidationCacheHeaderVersionEXT")
Int32
v <- ReadPrec Int32 -> ReadPrec Int32
forall a. ReadPrec a -> ReadPrec a
step ReadPrec Int32
forall a. Read a => ReadPrec a
readPrec
ValidationCacheHeaderVersionEXT
-> ReadPrec ValidationCacheHeaderVersionEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Int32 -> ValidationCacheHeaderVersionEXT
ValidationCacheHeaderVersionEXT Int32
v)))
type EXT_VALIDATION_CACHE_SPEC_VERSION = 1
pattern EXT_VALIDATION_CACHE_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_VALIDATION_CACHE_SPEC_VERSION :: a
$mEXT_VALIDATION_CACHE_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
EXT_VALIDATION_CACHE_SPEC_VERSION = 1
type EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache"
pattern EXT_VALIDATION_CACHE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_VALIDATION_CACHE_EXTENSION_NAME :: a
$mEXT_VALIDATION_CACHE_EXTENSION_NAME :: forall r a.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache"