{-# language CPP #-}
module Vulkan.Extensions.VK_QCOM_multiview_per_view_render_areas ( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM(..)
, MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM(..)
, QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION
, pattern QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION
, QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME
, pattern QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME
) where
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Data.Vector (generateM)
import qualified Data.Vector (imapM_)
import qualified Data.Vector (length)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import Foreign.Ptr (Ptr)
import Data.Word (Word32)
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.FundamentalTypes (Rect2D)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM))
data PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM = PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
{
PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM -> Bool
multiviewPerViewRenderAreas :: Bool }
deriving (Typeable, PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM -> Bool
(PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM -> Bool)
-> (PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM -> Bool)
-> Eq PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM -> Bool
== :: PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM -> Bool
$c/= :: PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM -> Bool
/= :: PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM)
#endif
deriving instance Show PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
instance ToCStruct PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM where
withCStruct :: forall b.
PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> (Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO b)
-> IO b
withCStruct PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
x Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM -> IO b
f = Int
-> (Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO b)
-> IO b)
-> (Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
p -> Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO b
-> IO b
forall b.
Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
p PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
x (Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM -> IO b
f Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
p PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM{Bool
$sel:multiviewPerViewRenderAreas:PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM :: PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM -> Bool
multiviewPerViewRenderAreas :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
p Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
p Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> 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 PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
p Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
multiviewPerViewRenderAreas))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
p Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
p Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> 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 PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
p Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> 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 PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM where
peekCStruct :: Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
peekCStruct Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
p = do
Bool32
multiviewPerViewRenderAreas <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
p Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM)
-> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
forall a b. (a -> b) -> a -> b
$ Bool -> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
(Bool32 -> Bool
bool32ToBool Bool32
multiviewPerViewRenderAreas)
instance Storable PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM where
sizeOf :: PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM -> Int
sizeOf ~PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
_ = Int
24
alignment :: PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM -> Int
alignment ~PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
_ = Int
8
peek :: Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
peek = Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM -> IO ()
poke Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
poked = Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO ()
-> IO ()
forall b.
Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
ptr PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM where
zero :: PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
zero = Bool -> PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
Bool
forall a. Zero a => a
zero
data MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM = MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
{
MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM -> Vector Rect2D
perViewRenderAreas :: Vector Rect2D }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM)
#endif
deriving instance Show MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
instance ToCStruct MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM where
withCStruct :: forall b.
MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> (Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM -> IO b)
-> IO b
withCStruct MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
x Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM -> IO b
f = Int
-> (Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM -> IO b)
-> IO b)
-> (Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
p -> Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> IO b
-> IO b
forall b.
Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
p MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
x (Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM -> IO b
f Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
p)
pokeCStruct :: forall b.
Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> IO b
-> IO b
pokeCStruct Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
p MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM{Vector Rect2D
$sel:perViewRenderAreas:MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM :: MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM -> Vector Rect2D
perViewRenderAreas :: Vector Rect2D
..} 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 MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
p Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM)
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 MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
p Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> 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 Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
p Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) ((Int -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector Rect2D -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Rect2D -> Int) -> Vector Rect2D -> Int
forall a b. (a -> b) -> a -> b
$ (Vector Rect2D
perViewRenderAreas)) :: Word32))
Ptr Rect2D
pPPerViewRenderAreas' <- ((Ptr Rect2D -> IO b) -> IO b) -> ContT b IO (Ptr Rect2D)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr Rect2D -> IO b) -> IO b) -> ContT b IO (Ptr Rect2D))
-> ((Ptr Rect2D -> IO b) -> IO b) -> ContT b IO (Ptr Rect2D)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @Rect2D ((Vector Rect2D -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Rect2D
perViewRenderAreas)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
16)
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 -> Rect2D -> IO ()) -> Vector Rect2D -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i Rect2D
e -> Ptr Rect2D -> Rect2D -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Rect2D
pPPerViewRenderAreas' Ptr Rect2D -> Int -> Ptr Rect2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
16 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Rect2D) (Rect2D
e)) (Vector Rect2D
perViewRenderAreas)
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 Rect2D) -> Ptr Rect2D -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
p Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> Int -> Ptr (Ptr Rect2D)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr Rect2D))) (Ptr Rect2D
pPPerViewRenderAreas')
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
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> IO b -> IO b
pokeZeroCStruct Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
p Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
p Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO b
f
instance FromCStruct MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM where
peekCStruct :: Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> IO MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
peekCStruct Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
p = do
Word32
perViewRenderAreaCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
p Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
Ptr Rect2D
pPerViewRenderAreas <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr Rect2D) ((Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
p Ptr MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> Int -> Ptr (Ptr Rect2D)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr Rect2D)))
Vector Rect2D
pPerViewRenderAreas' <- Int -> (Int -> IO Rect2D) -> IO (Vector Rect2D)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word32
perViewRenderAreaCount) (\Int
i -> forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @Rect2D ((Ptr Rect2D
pPerViewRenderAreas Ptr Rect2D -> Int -> Ptr Rect2D
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
16 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Rect2D)))
MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> IO MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> IO MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM)
-> MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
-> IO MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
forall a b. (a -> b) -> a -> b
$ Vector Rect2D -> MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
Vector Rect2D
pPerViewRenderAreas'
instance Zero MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM where
zero :: MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
zero = Vector Rect2D -> MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
Vector Rect2D
forall a. Monoid a => a
mempty
type QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1
pattern QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION :: forall a . Integral a => a
pattern $bQCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION :: forall a. Integral a => a
$mQCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION = 1
type QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas"
pattern QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bQCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mQCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME = "VK_QCOM_multiview_per_view_render_areas"