{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_frame_boundary ( FrameBoundaryEXT(..)
, PhysicalDeviceFrameBoundaryFeaturesEXT(..)
, FrameBoundaryFlagsEXT
, FrameBoundaryFlagBitsEXT( FRAME_BOUNDARY_FRAME_END_BIT_EXT
, ..
)
, EXT_FRAME_BOUNDARY_SPEC_VERSION
, pattern EXT_FRAME_BOUNDARY_SPEC_VERSION
, EXT_FRAME_BOUNDARY_EXTENSION_NAME
, pattern EXT_FRAME_BOUNDARY_EXTENSION_NAME
) where
import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Control.Monad (unless)
import Foreign.Marshal.Alloc (allocaBytes)
import GHC.IO (throwIO)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showString)
import Numeric (showHex)
import Data.Coerce (coerce)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Data.Vector (generateM)
import qualified Data.Vector (imapM_)
import qualified Data.Vector (length)
import qualified Data.Vector (null)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.C.Types (CSize)
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 Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Data.Word (Word32)
import Data.Word (Word64)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Data.Vector (Vector)
import Vulkan.CStruct.Utils (advancePtrBytes)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Handles (Buffer)
import Vulkan.Core10.FundamentalTypes (Flags)
import Vulkan.Core10.Handles (Image)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FRAME_BOUNDARY_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT))
data FrameBoundaryEXT = FrameBoundaryEXT
{
FrameBoundaryEXT -> FrameBoundaryFlagsEXT
flags :: FrameBoundaryFlagsEXT
,
FrameBoundaryEXT -> Word64
frameID :: Word64
,
FrameBoundaryEXT -> Flags
imageCount :: Word32
,
FrameBoundaryEXT -> Vector Image
images :: Vector Image
,
FrameBoundaryEXT -> Flags
bufferCount :: Word32
,
FrameBoundaryEXT -> Vector Buffer
buffers :: Vector Buffer
,
FrameBoundaryEXT -> Word64
tagName :: Word64
,
FrameBoundaryEXT -> Word64
tagSize :: Word64
,
FrameBoundaryEXT -> Ptr ()
tag :: Ptr ()
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (FrameBoundaryEXT)
#endif
deriving instance Show FrameBoundaryEXT
instance ToCStruct FrameBoundaryEXT where
withCStruct :: forall b.
FrameBoundaryEXT -> (Ptr FrameBoundaryEXT -> IO b) -> IO b
withCStruct FrameBoundaryEXT
x Ptr FrameBoundaryEXT -> IO b
f = Int -> (Ptr FrameBoundaryEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
88 ((Ptr FrameBoundaryEXT -> IO b) -> IO b)
-> (Ptr FrameBoundaryEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr FrameBoundaryEXT
p -> Ptr FrameBoundaryEXT -> FrameBoundaryEXT -> IO b -> IO b
forall b. Ptr FrameBoundaryEXT -> FrameBoundaryEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr FrameBoundaryEXT
p FrameBoundaryEXT
x (Ptr FrameBoundaryEXT -> IO b
f Ptr FrameBoundaryEXT
p)
pokeCStruct :: forall b. Ptr FrameBoundaryEXT -> FrameBoundaryEXT -> IO b -> IO b
pokeCStruct Ptr FrameBoundaryEXT
p FrameBoundaryEXT{Flags
Word64
Ptr ()
Vector Buffer
Vector Image
FrameBoundaryFlagsEXT
$sel:flags:FrameBoundaryEXT :: FrameBoundaryEXT -> FrameBoundaryFlagsEXT
$sel:frameID:FrameBoundaryEXT :: FrameBoundaryEXT -> Word64
$sel:imageCount:FrameBoundaryEXT :: FrameBoundaryEXT -> Flags
$sel:images:FrameBoundaryEXT :: FrameBoundaryEXT -> Vector Image
$sel:bufferCount:FrameBoundaryEXT :: FrameBoundaryEXT -> Flags
$sel:buffers:FrameBoundaryEXT :: FrameBoundaryEXT -> Vector Buffer
$sel:tagName:FrameBoundaryEXT :: FrameBoundaryEXT -> Word64
$sel:tagSize:FrameBoundaryEXT :: FrameBoundaryEXT -> Word64
$sel:tag:FrameBoundaryEXT :: FrameBoundaryEXT -> Ptr ()
flags :: FrameBoundaryFlagsEXT
frameID :: Word64
imageCount :: Flags
images :: Vector Image
bufferCount :: Flags
buffers :: Vector Buffer
tagName :: Word64
tagSize :: Word64
tag :: Ptr ()
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_FRAME_BOUNDARY_EXT)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr FrameBoundaryFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr FrameBoundaryFlagsEXT)) (FrameBoundaryFlagsEXT
flags)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word64 -> Word64 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word64)) (Word64
frameID)
let pImagesLength :: Int
pImagesLength = Vector Image -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Image -> Int) -> Vector Image -> Int
forall a b. (a -> b) -> a -> b
$ (Vector Image
images)
Flags
imageCount'' <- IO Flags -> ContT b IO Flags
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Flags -> ContT b IO Flags) -> IO Flags -> ContT b IO Flags
forall a b. (a -> b) -> a -> b
$ if (Flags
imageCount) Flags -> Flags -> Bool
forall a. Eq a => a -> a -> Bool
== Flags
0
then Flags -> IO Flags
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags -> IO Flags) -> Flags -> IO Flags
forall a b. (a -> b) -> a -> b
$ Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pImagesLength
else do
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pImagesLength Flags -> Flags -> Bool
forall a. Eq a => a -> a -> Bool
== (Flags
imageCount) Bool -> Bool -> Bool
|| Int
pImagesLength Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
0) (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 String
"" String
"pImages must be empty or have 'imageCount' elements" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
Flags -> IO Flags
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags
imageCount)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32)) (Flags
imageCount'')
Ptr Image
pImages'' <- if Vector Image -> Bool
forall a. Vector a -> Bool
Data.Vector.null (Vector Image
images)
then Ptr Image -> ContT b IO (Ptr Image)
forall a. a -> ContT b IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr Image
forall a. Ptr a
nullPtr
else do
Ptr Image
pPImages <- ((Ptr Image -> IO b) -> IO b) -> ContT b IO (Ptr Image)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr Image -> IO b) -> IO b) -> ContT b IO (Ptr Image))
-> ((Ptr Image -> IO b) -> IO b) -> ContT b IO (Ptr Image)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @Image (((Vector Image -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Image
images))) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
8)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> Image -> IO ()) -> Vector Image -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i Image
e -> Ptr Image -> Image -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Image
pPImages Ptr Image -> Int -> Ptr Image
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Image) (Image
e)) ((Vector Image
images))
Ptr Image -> ContT b IO (Ptr Image)
forall a. a -> ContT b IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Ptr Image -> ContT b IO (Ptr Image))
-> Ptr Image -> ContT b IO (Ptr Image)
forall a b. (a -> b) -> a -> b
$ Ptr Image
pPImages
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr Image) -> Ptr Image -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr (Ptr Image)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr (Ptr Image))) Ptr Image
pImages''
let pBuffersLength :: Int
pBuffersLength = Vector Buffer -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Buffer -> Int) -> Vector Buffer -> Int
forall a b. (a -> b) -> a -> b
$ (Vector Buffer
buffers)
Flags
bufferCount'' <- IO Flags -> ContT b IO Flags
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Flags -> ContT b IO Flags) -> IO Flags -> ContT b IO Flags
forall a b. (a -> b) -> a -> b
$ if (Flags
bufferCount) Flags -> Flags -> Bool
forall a. Eq a => a -> a -> Bool
== Flags
0
then Flags -> IO Flags
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags -> IO Flags) -> Flags -> IO Flags
forall a b. (a -> b) -> a -> b
$ Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pBuffersLength
else do
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pBuffersLength Flags -> Flags -> Bool
forall a. Eq a => a -> a -> Bool
== (Flags
bufferCount) Bool -> Bool -> Bool
|| Int
pBuffersLength Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
0) (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 String
"" String
"pBuffers must be empty or have 'bufferCount' elements" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
Flags -> IO Flags
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags
bufferCount)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Word32)) (Flags
bufferCount'')
Ptr Buffer
pBuffers'' <- if Vector Buffer -> Bool
forall a. Vector a -> Bool
Data.Vector.null (Vector Buffer
buffers)
then Ptr Buffer -> ContT b IO (Ptr Buffer)
forall a. a -> ContT b IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr Buffer
forall a. Ptr a
nullPtr
else do
Ptr Buffer
pPBuffers <- ((Ptr Buffer -> IO b) -> IO b) -> ContT b IO (Ptr Buffer)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr Buffer -> IO b) -> IO b) -> ContT b IO (Ptr Buffer))
-> ((Ptr Buffer -> IO b) -> IO b) -> ContT b IO (Ptr Buffer)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @Buffer (((Vector Buffer -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Buffer
buffers))) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
8)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> Buffer -> IO ()) -> Vector Buffer -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i Buffer
e -> Ptr Buffer -> Buffer -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Buffer
pPBuffers Ptr Buffer -> Int -> Ptr Buffer
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Buffer) (Buffer
e)) ((Vector Buffer
buffers))
Ptr Buffer -> ContT b IO (Ptr Buffer)
forall a. a -> ContT b IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Ptr Buffer -> ContT b IO (Ptr Buffer))
-> Ptr Buffer -> ContT b IO (Ptr Buffer)
forall a b. (a -> b) -> a -> b
$ Ptr Buffer
pPBuffers
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr Buffer) -> Ptr Buffer -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr (Ptr Buffer)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr (Ptr Buffer))) Ptr Buffer
pBuffers''
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word64 -> Word64 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Word64)) (Word64
tagName)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr CSize -> CSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr CSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr CSize)) (Word64 -> CSize
CSize (Word64
tagSize))
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr (Ptr ()))) (Ptr ()
tag)
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = Int
88
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr FrameBoundaryEXT -> IO b -> IO b
pokeZeroCStruct Ptr FrameBoundaryEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_FRAME_BOUNDARY_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word64 -> Word64 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word64)) (Word64
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct FrameBoundaryEXT where
peekCStruct :: Ptr FrameBoundaryEXT -> IO FrameBoundaryEXT
peekCStruct Ptr FrameBoundaryEXT
p = do
FrameBoundaryFlagsEXT
flags <- forall a. Storable a => Ptr a -> IO a
peek @FrameBoundaryFlagsEXT ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr FrameBoundaryFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr FrameBoundaryFlagsEXT))
Word64
frameID <- forall a. Storable a => Ptr a -> IO a
peek @Word64 ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word64))
Flags
imageCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32))
Ptr Image
pImages <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr Image) ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr (Ptr Image)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr (Ptr Image)))
let pImagesLength :: Int
pImagesLength = if Ptr Image
pImages Ptr Image -> Ptr Image -> Bool
forall a. Eq a => a -> a -> Bool
== Ptr Image
forall a. Ptr a
nullPtr then Int
0 else (Flags -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Flags
imageCount)
Vector Image
pImages' <- Int -> (Int -> IO Image) -> IO (Vector Image)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM Int
pImagesLength (\Int
i -> forall a. Storable a => Ptr a -> IO a
peek @Image ((Ptr Image
pImages Ptr Image -> Int -> Ptr Image
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Image)))
Flags
bufferCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Word32))
Ptr Buffer
pBuffers <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr Buffer) ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr (Ptr Buffer)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr (Ptr Buffer)))
let pBuffersLength :: Int
pBuffersLength = if Ptr Buffer
pBuffers Ptr Buffer -> Ptr Buffer -> Bool
forall a. Eq a => a -> a -> Bool
== Ptr Buffer
forall a. Ptr a
nullPtr then Int
0 else (Flags -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Flags
bufferCount)
Vector Buffer
pBuffers' <- Int -> (Int -> IO Buffer) -> IO (Vector Buffer)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM Int
pBuffersLength (\Int
i -> forall a. Storable a => Ptr a -> IO a
peek @Buffer ((Ptr Buffer
pBuffers Ptr Buffer -> Int -> Ptr Buffer
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Buffer)))
Word64
tagName <- forall a. Storable a => Ptr a -> IO a
peek @Word64 ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr Word64))
CSize
tagSize <- forall a. Storable a => Ptr a -> IO a
peek @CSize ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr CSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr CSize))
Ptr ()
pTag <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) ((Ptr FrameBoundaryEXT
p Ptr FrameBoundaryEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr (Ptr ())))
FrameBoundaryEXT -> IO FrameBoundaryEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (FrameBoundaryEXT -> IO FrameBoundaryEXT)
-> FrameBoundaryEXT -> IO FrameBoundaryEXT
forall a b. (a -> b) -> a -> b
$ FrameBoundaryFlagsEXT
-> Word64
-> Flags
-> Vector Image
-> Flags
-> Vector Buffer
-> Word64
-> Word64
-> Ptr ()
-> FrameBoundaryEXT
FrameBoundaryEXT
FrameBoundaryFlagsEXT
flags
Word64
frameID
Flags
imageCount
Vector Image
pImages'
Flags
bufferCount
Vector Buffer
pBuffers'
Word64
tagName
(forall a b. Coercible a b => a -> b
forall a b. Coercible a b => a -> b
coerce @CSize @Word64 CSize
tagSize)
Ptr ()
pTag
instance Zero FrameBoundaryEXT where
zero :: FrameBoundaryEXT
zero = FrameBoundaryFlagsEXT
-> Word64
-> Flags
-> Vector Image
-> Flags
-> Vector Buffer
-> Word64
-> Word64
-> Ptr ()
-> FrameBoundaryEXT
FrameBoundaryEXT
FrameBoundaryFlagsEXT
forall a. Zero a => a
zero
Word64
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
Vector Image
forall a. Monoid a => a
mempty
Flags
forall a. Zero a => a
zero
Vector Buffer
forall a. Monoid a => a
mempty
Word64
forall a. Zero a => a
zero
Word64
forall a. Zero a => a
zero
Ptr ()
forall a. Zero a => a
zero
data PhysicalDeviceFrameBoundaryFeaturesEXT = PhysicalDeviceFrameBoundaryFeaturesEXT
{
PhysicalDeviceFrameBoundaryFeaturesEXT -> Bool
frameBoundary :: Bool }
deriving (Typeable, PhysicalDeviceFrameBoundaryFeaturesEXT
-> PhysicalDeviceFrameBoundaryFeaturesEXT -> Bool
(PhysicalDeviceFrameBoundaryFeaturesEXT
-> PhysicalDeviceFrameBoundaryFeaturesEXT -> Bool)
-> (PhysicalDeviceFrameBoundaryFeaturesEXT
-> PhysicalDeviceFrameBoundaryFeaturesEXT -> Bool)
-> Eq PhysicalDeviceFrameBoundaryFeaturesEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceFrameBoundaryFeaturesEXT
-> PhysicalDeviceFrameBoundaryFeaturesEXT -> Bool
== :: PhysicalDeviceFrameBoundaryFeaturesEXT
-> PhysicalDeviceFrameBoundaryFeaturesEXT -> Bool
$c/= :: PhysicalDeviceFrameBoundaryFeaturesEXT
-> PhysicalDeviceFrameBoundaryFeaturesEXT -> Bool
/= :: PhysicalDeviceFrameBoundaryFeaturesEXT
-> PhysicalDeviceFrameBoundaryFeaturesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceFrameBoundaryFeaturesEXT)
#endif
deriving instance Show PhysicalDeviceFrameBoundaryFeaturesEXT
instance ToCStruct PhysicalDeviceFrameBoundaryFeaturesEXT where
withCStruct :: forall b.
PhysicalDeviceFrameBoundaryFeaturesEXT
-> (Ptr PhysicalDeviceFrameBoundaryFeaturesEXT -> IO b) -> IO b
withCStruct PhysicalDeviceFrameBoundaryFeaturesEXT
x Ptr PhysicalDeviceFrameBoundaryFeaturesEXT -> IO b
f = Int -> (Ptr PhysicalDeviceFrameBoundaryFeaturesEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceFrameBoundaryFeaturesEXT -> IO b) -> IO b)
-> (Ptr PhysicalDeviceFrameBoundaryFeaturesEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
p -> Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
-> PhysicalDeviceFrameBoundaryFeaturesEXT -> IO b -> IO b
forall b.
Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
-> PhysicalDeviceFrameBoundaryFeaturesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
p PhysicalDeviceFrameBoundaryFeaturesEXT
x (Ptr PhysicalDeviceFrameBoundaryFeaturesEXT -> IO b
f Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
-> PhysicalDeviceFrameBoundaryFeaturesEXT -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
p PhysicalDeviceFrameBoundaryFeaturesEXT{Bool
$sel:frameBoundary:PhysicalDeviceFrameBoundaryFeaturesEXT :: PhysicalDeviceFrameBoundaryFeaturesEXT -> Bool
frameBoundary :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
p Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
p Ptr PhysicalDeviceFrameBoundaryFeaturesEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
p Ptr PhysicalDeviceFrameBoundaryFeaturesEXT -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
frameBoundary))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceFrameBoundaryFeaturesEXT -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
p Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
p Ptr PhysicalDeviceFrameBoundaryFeaturesEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
p Ptr PhysicalDeviceFrameBoundaryFeaturesEXT -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceFrameBoundaryFeaturesEXT where
peekCStruct :: Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
-> IO PhysicalDeviceFrameBoundaryFeaturesEXT
peekCStruct Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
p = do
Bool32
frameBoundary <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
p Ptr PhysicalDeviceFrameBoundaryFeaturesEXT -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
PhysicalDeviceFrameBoundaryFeaturesEXT
-> IO PhysicalDeviceFrameBoundaryFeaturesEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceFrameBoundaryFeaturesEXT
-> IO PhysicalDeviceFrameBoundaryFeaturesEXT)
-> PhysicalDeviceFrameBoundaryFeaturesEXT
-> IO PhysicalDeviceFrameBoundaryFeaturesEXT
forall a b. (a -> b) -> a -> b
$ Bool -> PhysicalDeviceFrameBoundaryFeaturesEXT
PhysicalDeviceFrameBoundaryFeaturesEXT
(Bool32 -> Bool
bool32ToBool Bool32
frameBoundary)
instance Storable PhysicalDeviceFrameBoundaryFeaturesEXT where
sizeOf :: PhysicalDeviceFrameBoundaryFeaturesEXT -> Int
sizeOf ~PhysicalDeviceFrameBoundaryFeaturesEXT
_ = Int
24
alignment :: PhysicalDeviceFrameBoundaryFeaturesEXT -> Int
alignment ~PhysicalDeviceFrameBoundaryFeaturesEXT
_ = Int
8
peek :: Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
-> IO PhysicalDeviceFrameBoundaryFeaturesEXT
peek = Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
-> IO PhysicalDeviceFrameBoundaryFeaturesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
-> PhysicalDeviceFrameBoundaryFeaturesEXT -> IO ()
poke Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
ptr PhysicalDeviceFrameBoundaryFeaturesEXT
poked = Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
-> PhysicalDeviceFrameBoundaryFeaturesEXT -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
-> PhysicalDeviceFrameBoundaryFeaturesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFrameBoundaryFeaturesEXT
ptr PhysicalDeviceFrameBoundaryFeaturesEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceFrameBoundaryFeaturesEXT where
zero :: PhysicalDeviceFrameBoundaryFeaturesEXT
zero = Bool -> PhysicalDeviceFrameBoundaryFeaturesEXT
PhysicalDeviceFrameBoundaryFeaturesEXT
Bool
forall a. Zero a => a
zero
type FrameBoundaryFlagsEXT = FrameBoundaryFlagBitsEXT
newtype FrameBoundaryFlagBitsEXT = FrameBoundaryFlagBitsEXT Flags
deriving newtype (FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool
(FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool)
-> (FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool)
-> Eq FrameBoundaryFlagsEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool
== :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool
$c/= :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool
/= :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool
Eq, Eq FrameBoundaryFlagsEXT
Eq FrameBoundaryFlagsEXT =>
(FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Ordering)
-> (FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool)
-> (FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool)
-> (FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool)
-> (FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool)
-> (FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT)
-> Ord FrameBoundaryFlagsEXT
FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool
FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Ordering
FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Ordering
compare :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Ordering
$c< :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool
< :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool
$c<= :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool
<= :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool
$c> :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool
> :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool
$c>= :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool
>= :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> Bool
$cmax :: FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT
max :: FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT
$cmin :: FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT
min :: FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT
Ord, Ptr FrameBoundaryFlagsEXT -> IO FrameBoundaryFlagsEXT
Ptr FrameBoundaryFlagsEXT -> Int -> IO FrameBoundaryFlagsEXT
Ptr FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT -> IO ()
Ptr FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> IO ()
FrameBoundaryFlagsEXT -> Int
(FrameBoundaryFlagsEXT -> Int)
-> (FrameBoundaryFlagsEXT -> Int)
-> (Ptr FrameBoundaryFlagsEXT -> Int -> IO FrameBoundaryFlagsEXT)
-> (Ptr FrameBoundaryFlagsEXT
-> Int -> FrameBoundaryFlagsEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO FrameBoundaryFlagsEXT)
-> (forall b. Ptr b -> Int -> FrameBoundaryFlagsEXT -> IO ())
-> (Ptr FrameBoundaryFlagsEXT -> IO FrameBoundaryFlagsEXT)
-> (Ptr FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> IO ())
-> Storable FrameBoundaryFlagsEXT
forall b. Ptr b -> Int -> IO FrameBoundaryFlagsEXT
forall b. Ptr b -> Int -> FrameBoundaryFlagsEXT -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
$csizeOf :: FrameBoundaryFlagsEXT -> Int
sizeOf :: FrameBoundaryFlagsEXT -> Int
$calignment :: FrameBoundaryFlagsEXT -> Int
alignment :: FrameBoundaryFlagsEXT -> Int
$cpeekElemOff :: Ptr FrameBoundaryFlagsEXT -> Int -> IO FrameBoundaryFlagsEXT
peekElemOff :: Ptr FrameBoundaryFlagsEXT -> Int -> IO FrameBoundaryFlagsEXT
$cpokeElemOff :: Ptr FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT -> IO ()
pokeElemOff :: Ptr FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO FrameBoundaryFlagsEXT
peekByteOff :: forall b. Ptr b -> Int -> IO FrameBoundaryFlagsEXT
$cpokeByteOff :: forall b. Ptr b -> Int -> FrameBoundaryFlagsEXT -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> FrameBoundaryFlagsEXT -> IO ()
$cpeek :: Ptr FrameBoundaryFlagsEXT -> IO FrameBoundaryFlagsEXT
peek :: Ptr FrameBoundaryFlagsEXT -> IO FrameBoundaryFlagsEXT
$cpoke :: Ptr FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> IO ()
poke :: Ptr FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT -> IO ()
Storable, FrameBoundaryFlagsEXT
FrameBoundaryFlagsEXT -> Zero FrameBoundaryFlagsEXT
forall a. a -> Zero a
$czero :: FrameBoundaryFlagsEXT
zero :: FrameBoundaryFlagsEXT
Zero, Eq FrameBoundaryFlagsEXT
FrameBoundaryFlagsEXT
Eq FrameBoundaryFlagsEXT =>
(FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT)
-> FrameBoundaryFlagsEXT
-> (Int -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT -> Int -> Bool)
-> (FrameBoundaryFlagsEXT -> Maybe Int)
-> (FrameBoundaryFlagsEXT -> Int)
-> (FrameBoundaryFlagsEXT -> Bool)
-> (FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT)
-> (FrameBoundaryFlagsEXT -> Int)
-> Bits FrameBoundaryFlagsEXT
Int -> FrameBoundaryFlagsEXT
FrameBoundaryFlagsEXT -> Bool
FrameBoundaryFlagsEXT -> Int
FrameBoundaryFlagsEXT -> Maybe Int
FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT
FrameBoundaryFlagsEXT -> Int -> Bool
FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT
.&. :: FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT
$c.|. :: FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT
.|. :: FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT
$cxor :: FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT
xor :: FrameBoundaryFlagsEXT
-> FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT
$ccomplement :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT
complement :: FrameBoundaryFlagsEXT -> FrameBoundaryFlagsEXT
$cshift :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
shift :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
$crotate :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
rotate :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
$czeroBits :: FrameBoundaryFlagsEXT
zeroBits :: FrameBoundaryFlagsEXT
$cbit :: Int -> FrameBoundaryFlagsEXT
bit :: Int -> FrameBoundaryFlagsEXT
$csetBit :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
setBit :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
$cclearBit :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
clearBit :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
$ccomplementBit :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
complementBit :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
$ctestBit :: FrameBoundaryFlagsEXT -> Int -> Bool
testBit :: FrameBoundaryFlagsEXT -> Int -> Bool
$cbitSizeMaybe :: FrameBoundaryFlagsEXT -> Maybe Int
bitSizeMaybe :: FrameBoundaryFlagsEXT -> Maybe Int
$cbitSize :: FrameBoundaryFlagsEXT -> Int
bitSize :: FrameBoundaryFlagsEXT -> Int
$cisSigned :: FrameBoundaryFlagsEXT -> Bool
isSigned :: FrameBoundaryFlagsEXT -> Bool
$cshiftL :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
shiftL :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
$cunsafeShiftL :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
unsafeShiftL :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
$cshiftR :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
shiftR :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
$cunsafeShiftR :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
unsafeShiftR :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
$crotateL :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
rotateL :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
$crotateR :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
rotateR :: FrameBoundaryFlagsEXT -> Int -> FrameBoundaryFlagsEXT
$cpopCount :: FrameBoundaryFlagsEXT -> Int
popCount :: FrameBoundaryFlagsEXT -> Int
Bits, Bits FrameBoundaryFlagsEXT
Bits FrameBoundaryFlagsEXT =>
(FrameBoundaryFlagsEXT -> Int)
-> (FrameBoundaryFlagsEXT -> Int)
-> (FrameBoundaryFlagsEXT -> Int)
-> FiniteBits FrameBoundaryFlagsEXT
FrameBoundaryFlagsEXT -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: FrameBoundaryFlagsEXT -> Int
finiteBitSize :: FrameBoundaryFlagsEXT -> Int
$ccountLeadingZeros :: FrameBoundaryFlagsEXT -> Int
countLeadingZeros :: FrameBoundaryFlagsEXT -> Int
$ccountTrailingZeros :: FrameBoundaryFlagsEXT -> Int
countTrailingZeros :: FrameBoundaryFlagsEXT -> Int
FiniteBits)
pattern $bFRAME_BOUNDARY_FRAME_END_BIT_EXT :: FrameBoundaryFlagsEXT
$mFRAME_BOUNDARY_FRAME_END_BIT_EXT :: forall {r}.
FrameBoundaryFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
FRAME_BOUNDARY_FRAME_END_BIT_EXT = FrameBoundaryFlagBitsEXT 0x00000001
conNameFrameBoundaryFlagBitsEXT :: String
conNameFrameBoundaryFlagBitsEXT :: String
conNameFrameBoundaryFlagBitsEXT = String
"FrameBoundaryFlagBitsEXT"
enumPrefixFrameBoundaryFlagBitsEXT :: String
enumPrefixFrameBoundaryFlagBitsEXT :: String
enumPrefixFrameBoundaryFlagBitsEXT = String
"FRAME_BOUNDARY_FRAME_END_BIT_EXT"
showTableFrameBoundaryFlagBitsEXT :: [(FrameBoundaryFlagBitsEXT, String)]
showTableFrameBoundaryFlagBitsEXT :: [(FrameBoundaryFlagsEXT, String)]
showTableFrameBoundaryFlagBitsEXT = [(FrameBoundaryFlagsEXT
FRAME_BOUNDARY_FRAME_END_BIT_EXT, String
"")]
instance Show FrameBoundaryFlagBitsEXT where
showsPrec :: Int -> FrameBoundaryFlagsEXT -> ShowS
showsPrec =
String
-> [(FrameBoundaryFlagsEXT, String)]
-> String
-> (FrameBoundaryFlagsEXT -> Flags)
-> (Flags -> ShowS)
-> Int
-> FrameBoundaryFlagsEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
String
enumPrefixFrameBoundaryFlagBitsEXT
[(FrameBoundaryFlagsEXT, String)]
showTableFrameBoundaryFlagBitsEXT
String
conNameFrameBoundaryFlagBitsEXT
(\(FrameBoundaryFlagBitsEXT Flags
x) -> Flags
x)
(\Flags
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Flags -> ShowS
forall a. Integral a => a -> ShowS
showHex Flags
x)
instance Read FrameBoundaryFlagBitsEXT where
readPrec :: ReadPrec FrameBoundaryFlagsEXT
readPrec =
String
-> [(FrameBoundaryFlagsEXT, String)]
-> String
-> (Flags -> FrameBoundaryFlagsEXT)
-> ReadPrec FrameBoundaryFlagsEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
String
enumPrefixFrameBoundaryFlagBitsEXT
[(FrameBoundaryFlagsEXT, String)]
showTableFrameBoundaryFlagBitsEXT
String
conNameFrameBoundaryFlagBitsEXT
Flags -> FrameBoundaryFlagsEXT
FrameBoundaryFlagBitsEXT
type EXT_FRAME_BOUNDARY_SPEC_VERSION = 1
pattern EXT_FRAME_BOUNDARY_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_FRAME_BOUNDARY_SPEC_VERSION :: forall a. Integral a => a
$mEXT_FRAME_BOUNDARY_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_FRAME_BOUNDARY_SPEC_VERSION = 1
type EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary"
pattern EXT_FRAME_BOUNDARY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_FRAME_BOUNDARY_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mEXT_FRAME_BOUNDARY_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_FRAME_BOUNDARY_EXTENSION_NAME = "VK_EXT_frame_boundary"