{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_fragment_density_map_offset ( pattern STRUCTURE_TYPE_RENDERING_END_INFO_EXT
, cmdEndRendering2EXT
, PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT(..)
, PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT(..)
, RenderPassFragmentDensityMapOffsetEndInfoEXT(..)
, RenderingEndInfoEXT
, EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION
, pattern EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION
, EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME
, pattern EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME
, RenderingEndInfoKHR(..)
, cmdEndRendering2KHR
) 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.Extensions.VK_KHR_maintenance10 (cmdEndRendering2KHR)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.FundamentalTypes (Extent2D)
import Vulkan.Core10.FundamentalTypes (Offset2D)
import Vulkan.Extensions.VK_KHR_maintenance10 (RenderingEndInfoKHR)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_END_INFO_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT))
import Vulkan.Extensions.VK_KHR_maintenance10 (cmdEndRendering2KHR)
import Vulkan.Extensions.VK_KHR_maintenance10 (RenderingEndInfoKHR(..))
pattern $mSTRUCTURE_TYPE_RENDERING_END_INFO_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSTRUCTURE_TYPE_RENDERING_END_INFO_EXT :: StructureType
STRUCTURE_TYPE_RENDERING_END_INFO_EXT = STRUCTURE_TYPE_RENDERING_END_INFO_KHR
cmdEndRendering2EXT :: CommandBuffer
-> ("renderingEndInfo" ::: Maybe (RenderingEndInfoKHR a)) -> io ()
cmdEndRendering2EXT = CommandBuffer
-> ("renderingEndInfo" ::: Maybe (RenderingEndInfoKHR a)) -> io ()
forall (a :: [*]) (io :: * -> *).
(Extendss RenderingEndInfoKHR a, PokeChain a, MonadIO io) =>
CommandBuffer
-> ("renderingEndInfo" ::: Maybe (RenderingEndInfoKHR a)) -> io ()
cmdEndRendering2KHR
data PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT = PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
{
PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> Bool
fragmentDensityMapOffset :: Bool }
deriving (Typeable, PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> Bool
(PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> Bool)
-> (PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> Bool)
-> Eq PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> Bool
== :: PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> Bool
$c/= :: PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> Bool
/= :: PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT)
#endif
deriving instance Show PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
instance ToCStruct PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT where
withCStruct :: forall b.
PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> (Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> IO b)
-> IO b
withCStruct PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
x Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> IO b
f = Int
-> (Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
p -> Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> IO b
-> IO b
forall b.
Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
p PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
x (Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> IO b
f Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
p PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT{Bool
fragmentDensityMapOffset :: PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> Bool
fragmentDensityMapOffset :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
p Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
p Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> 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 PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
p Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
fragmentDensityMapOffset))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
p Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
p Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> 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 PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
p Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> 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 PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT where
peekCStruct :: Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> IO PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
peekCStruct Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
p = do
fragmentDensityMapOffset <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
p Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
pure $ PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
(bool32ToBool fragmentDensityMapOffset)
instance Storable PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT where
sizeOf :: PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> Int
sizeOf ~PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
_ = Int
24
alignment :: PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> Int
alignment ~PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
_ = Int
8
peek :: Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> IO PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
peek = Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> IO PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT -> IO ()
poke Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
poked = Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> IO ()
-> IO ()
forall b.
Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
ptr PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT where
zero :: PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
zero = Bool -> PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT
Bool
forall a. Zero a => a
zero
data PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT = PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
{
PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -> Extent2D
fragmentDensityOffsetGranularity :: Extent2D }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT)
#endif
deriving instance Show PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
instance ToCStruct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT where
withCStruct :: forall b.
PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> (Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> IO b)
-> IO b
withCStruct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
x Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -> IO b
f = Int
-> (Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
p -> Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> IO b
-> IO b
forall b.
Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
p PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
x (Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -> IO b
f Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
p PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT{Extent2D
fragmentDensityOffsetGranularity :: PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -> Extent2D
fragmentDensityOffsetGranularity :: Extent2D
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
p Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
p Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Extent2D -> Extent2D -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
p Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> Int -> Ptr Extent2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Extent2D)) (Extent2D
fragmentDensityOffsetGranularity)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
p Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
p Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Extent2D -> Extent2D -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
p Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> Int -> Ptr Extent2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Extent2D)) (Extent2D
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT where
peekCStruct :: Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> IO PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
peekCStruct Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
p = do
fragmentDensityOffsetGranularity <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @Extent2D ((Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
p Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> Int -> Ptr Extent2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Extent2D))
pure $ PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
fragmentDensityOffsetGranularity
instance Storable PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT where
sizeOf :: PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -> Int
sizeOf ~PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
_ = Int
24
alignment :: PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -> Int
alignment ~PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
_ = Int
8
peek :: Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> IO PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
peek = Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> IO PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT -> IO ()
poke Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
poked = Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> IO ()
-> IO ()
forall b.
Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
ptr PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT where
zero :: PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
zero = Extent2D -> PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT
Extent2D
forall a. Zero a => a
zero
data RenderPassFragmentDensityMapOffsetEndInfoEXT = RenderPassFragmentDensityMapOffsetEndInfoEXT
{
RenderPassFragmentDensityMapOffsetEndInfoEXT -> Vector Offset2D
fragmentDensityOffsets :: Vector Offset2D }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (RenderPassFragmentDensityMapOffsetEndInfoEXT)
#endif
deriving instance Show RenderPassFragmentDensityMapOffsetEndInfoEXT
instance ToCStruct RenderPassFragmentDensityMapOffsetEndInfoEXT where
withCStruct :: forall b.
RenderPassFragmentDensityMapOffsetEndInfoEXT
-> (Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT -> IO b)
-> IO b
withCStruct RenderPassFragmentDensityMapOffsetEndInfoEXT
x Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT -> IO b
f = Int
-> (Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT -> IO b)
-> IO b)
-> (Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
p -> Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
-> RenderPassFragmentDensityMapOffsetEndInfoEXT -> IO b -> IO b
forall b.
Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
-> RenderPassFragmentDensityMapOffsetEndInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
p RenderPassFragmentDensityMapOffsetEndInfoEXT
x (Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT -> IO b
f Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
p)
pokeCStruct :: forall b.
Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
-> RenderPassFragmentDensityMapOffsetEndInfoEXT -> IO b -> IO b
pokeCStruct Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
p RenderPassFragmentDensityMapOffsetEndInfoEXT{Vector Offset2D
fragmentDensityOffsets :: RenderPassFragmentDensityMapOffsetEndInfoEXT -> Vector Offset2D
fragmentDensityOffsets :: Vector Offset2D
..} 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 RenderPassFragmentDensityMapOffsetEndInfoEXT
p Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_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 RenderPassFragmentDensityMapOffsetEndInfoEXT
p Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
-> 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 RenderPassFragmentDensityMapOffsetEndInfoEXT
p Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
-> 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 Offset2D -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Offset2D -> Int) -> Vector Offset2D -> Int
forall a b. (a -> b) -> a -> b
$ (Vector Offset2D
fragmentDensityOffsets)) :: Word32))
pPFragmentDensityOffsets' <- ((Ptr Offset2D -> IO b) -> IO b) -> ContT b IO (Ptr Offset2D)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr Offset2D -> IO b) -> IO b) -> ContT b IO (Ptr Offset2D))
-> ((Ptr Offset2D -> IO b) -> IO b) -> ContT b IO (Ptr Offset2D)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @Offset2D ((Vector Offset2D -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Offset2D
fragmentDensityOffsets)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
8)
lift $ Data.Vector.imapM_ (\Int
i Offset2D
e -> Ptr Offset2D -> Offset2D -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Offset2D
pPFragmentDensityOffsets' Ptr Offset2D -> Int -> Ptr Offset2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Offset2D) (Offset2D
e)) (fragmentDensityOffsets)
lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Offset2D))) (pPFragmentDensityOffsets')
lift $ f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT -> IO b -> IO b
pokeZeroCStruct Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
p Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
p Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
-> 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 RenderPassFragmentDensityMapOffsetEndInfoEXT where
peekCStruct :: Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
-> IO RenderPassFragmentDensityMapOffsetEndInfoEXT
peekCStruct Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
p = do
fragmentDensityOffsetCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
p Ptr RenderPassFragmentDensityMapOffsetEndInfoEXT
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
pFragmentDensityOffsets <- peek @(Ptr Offset2D) ((p `plusPtr` 24 :: Ptr (Ptr Offset2D)))
pFragmentDensityOffsets' <- generateM (fromIntegral fragmentDensityOffsetCount) (\Int
i -> forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @Offset2D ((Ptr Offset2D
pFragmentDensityOffsets Ptr Offset2D -> Int -> Ptr Offset2D
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Offset2D)))
pure $ RenderPassFragmentDensityMapOffsetEndInfoEXT
pFragmentDensityOffsets'
instance Zero RenderPassFragmentDensityMapOffsetEndInfoEXT where
zero :: RenderPassFragmentDensityMapOffsetEndInfoEXT
zero = Vector Offset2D -> RenderPassFragmentDensityMapOffsetEndInfoEXT
RenderPassFragmentDensityMapOffsetEndInfoEXT
Vector Offset2D
forall a. Monoid a => a
mempty
type RenderingEndInfoEXT = RenderingEndInfoKHR
type EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1
pattern EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION :: forall a . Integral a => a
pattern $mEXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION :: forall a. Integral a => a
EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION = 1
type EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset"
pattern EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mEXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME = "VK_EXT_fragment_density_map_offset"