{-# language CPP #-}
module Vulkan.Core14.Promoted_From_VK_KHR_line_rasterizationRoadmap ( cmdSetLineStipple
, PhysicalDeviceLineRasterizationFeatures(..)
, PhysicalDeviceLineRasterizationProperties(..)
, PipelineRasterizationLineStateCreateInfo(..)
, StructureType(..)
, DynamicState(..)
, LineRasterizationMode(..)
) where
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Foreign.Marshal.Alloc (allocaBytes)
import GHC.IO (throwIO)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
import Control.Monad.IO.Class (MonadIO)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import GHC.IO.Exception (IOErrorType(..))
import GHC.IO.Exception (IOException(..))
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import Data.Word (Word16)
import Data.Word (Word32)
import Data.Kind (Type)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.NamedType ((:::))
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Handles (CommandBuffer)
import Vulkan.Core10.Handles (CommandBuffer(..))
import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
import Vulkan.Core10.Handles (CommandBuffer_T)
import Vulkan.Dynamic (DeviceCmds(pVkCmdSetLineStipple))
import Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO))
import Vulkan.Core10.Enums.DynamicState (DynamicState(..))
import Vulkan.Core14.Enums.LineRasterizationMode (LineRasterizationMode(..))
import Vulkan.Core10.Enums.StructureType (StructureType(..))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCmdSetLineStipple
:: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word16 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word16 -> IO ()
cmdSetLineStipple :: forall io
. (MonadIO io)
=>
CommandBuffer
->
("lineStippleFactor" ::: Word32)
->
("lineStipplePattern" ::: Word16)
-> io ()
cmdSetLineStipple :: forall (io :: * -> *).
MonadIO io =>
CommandBuffer
-> ("lineStippleFactor" ::: Word32)
-> ("lineStipplePattern" ::: Word16)
-> io ()
cmdSetLineStipple CommandBuffer
commandBuffer
"lineStippleFactor" ::: Word32
lineStippleFactor
"lineStipplePattern" ::: Word16
lineStipplePattern = IO () -> io ()
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ()) -> IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkCmdSetLineStipplePtr :: FunPtr
(Ptr CommandBuffer_T
-> ("lineStippleFactor" ::: Word32)
-> ("lineStipplePattern" ::: Word16)
-> IO ())
vkCmdSetLineStipplePtr = DeviceCmds
-> FunPtr
(Ptr CommandBuffer_T
-> ("lineStippleFactor" ::: Word32)
-> ("lineStipplePattern" ::: Word16)
-> IO ())
pVkCmdSetLineStipple (case CommandBuffer
commandBuffer of CommandBuffer{DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds :: CommandBuffer -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr CommandBuffer_T
-> ("lineStippleFactor" ::: Word32)
-> ("lineStipplePattern" ::: Word16)
-> IO ())
vkCmdSetLineStipplePtr FunPtr
(Ptr CommandBuffer_T
-> ("lineStippleFactor" ::: Word32)
-> ("lineStipplePattern" ::: Word16)
-> IO ())
-> FunPtr
(Ptr CommandBuffer_T
-> ("lineStippleFactor" ::: Word32)
-> ("lineStipplePattern" ::: Word16)
-> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr CommandBuffer_T
-> ("lineStippleFactor" ::: Word32)
-> ("lineStipplePattern" ::: Word16)
-> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. (HasCallStack, 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
"The function pointer for vkCmdSetLineStipple is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCmdSetLineStipple' :: Ptr CommandBuffer_T
-> ("lineStippleFactor" ::: Word32)
-> ("lineStipplePattern" ::: Word16)
-> IO ()
vkCmdSetLineStipple' = FunPtr
(Ptr CommandBuffer_T
-> ("lineStippleFactor" ::: Word32)
-> ("lineStipplePattern" ::: Word16)
-> IO ())
-> Ptr CommandBuffer_T
-> ("lineStippleFactor" ::: Word32)
-> ("lineStipplePattern" ::: Word16)
-> IO ()
mkVkCmdSetLineStipple FunPtr
(Ptr CommandBuffer_T
-> ("lineStippleFactor" ::: Word32)
-> ("lineStipplePattern" ::: Word16)
-> IO ())
vkCmdSetLineStipplePtr
String -> IO () -> IO ()
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkCmdSetLineStipple" (Ptr CommandBuffer_T
-> ("lineStippleFactor" ::: Word32)
-> ("lineStipplePattern" ::: Word16)
-> IO ()
vkCmdSetLineStipple'
(CommandBuffer -> Ptr CommandBuffer_T
commandBufferHandle (CommandBuffer
commandBuffer))
("lineStippleFactor" ::: Word32
lineStippleFactor)
("lineStipplePattern" ::: Word16
lineStipplePattern))
() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (() -> IO ()) -> () -> IO ()
forall a b. (a -> b) -> a -> b
$ ()
data PhysicalDeviceLineRasterizationFeatures = PhysicalDeviceLineRasterizationFeatures
{
PhysicalDeviceLineRasterizationFeatures -> Bool
rectangularLines :: Bool
,
PhysicalDeviceLineRasterizationFeatures -> Bool
bresenhamLines :: Bool
,
PhysicalDeviceLineRasterizationFeatures -> Bool
smoothLines :: Bool
,
PhysicalDeviceLineRasterizationFeatures -> Bool
stippledRectangularLines :: Bool
,
PhysicalDeviceLineRasterizationFeatures -> Bool
stippledBresenhamLines :: Bool
,
PhysicalDeviceLineRasterizationFeatures -> Bool
stippledSmoothLines :: Bool
}
deriving (Typeable, PhysicalDeviceLineRasterizationFeatures
-> PhysicalDeviceLineRasterizationFeatures -> Bool
(PhysicalDeviceLineRasterizationFeatures
-> PhysicalDeviceLineRasterizationFeatures -> Bool)
-> (PhysicalDeviceLineRasterizationFeatures
-> PhysicalDeviceLineRasterizationFeatures -> Bool)
-> Eq PhysicalDeviceLineRasterizationFeatures
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceLineRasterizationFeatures
-> PhysicalDeviceLineRasterizationFeatures -> Bool
== :: PhysicalDeviceLineRasterizationFeatures
-> PhysicalDeviceLineRasterizationFeatures -> Bool
$c/= :: PhysicalDeviceLineRasterizationFeatures
-> PhysicalDeviceLineRasterizationFeatures -> Bool
/= :: PhysicalDeviceLineRasterizationFeatures
-> PhysicalDeviceLineRasterizationFeatures -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceLineRasterizationFeatures)
#endif
deriving instance Show PhysicalDeviceLineRasterizationFeatures
instance ToCStruct PhysicalDeviceLineRasterizationFeatures where
withCStruct :: forall b.
PhysicalDeviceLineRasterizationFeatures
-> (Ptr PhysicalDeviceLineRasterizationFeatures -> IO b) -> IO b
withCStruct PhysicalDeviceLineRasterizationFeatures
x Ptr PhysicalDeviceLineRasterizationFeatures -> IO b
f = Int
-> (Ptr PhysicalDeviceLineRasterizationFeatures -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
40 ((Ptr PhysicalDeviceLineRasterizationFeatures -> IO b) -> IO b)
-> (Ptr PhysicalDeviceLineRasterizationFeatures -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceLineRasterizationFeatures
p -> Ptr PhysicalDeviceLineRasterizationFeatures
-> PhysicalDeviceLineRasterizationFeatures -> IO b -> IO b
forall b.
Ptr PhysicalDeviceLineRasterizationFeatures
-> PhysicalDeviceLineRasterizationFeatures -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceLineRasterizationFeatures
p PhysicalDeviceLineRasterizationFeatures
x (Ptr PhysicalDeviceLineRasterizationFeatures -> IO b
f Ptr PhysicalDeviceLineRasterizationFeatures
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceLineRasterizationFeatures
-> PhysicalDeviceLineRasterizationFeatures -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceLineRasterizationFeatures
p PhysicalDeviceLineRasterizationFeatures{Bool
rectangularLines :: PhysicalDeviceLineRasterizationFeatures -> Bool
bresenhamLines :: PhysicalDeviceLineRasterizationFeatures -> Bool
smoothLines :: PhysicalDeviceLineRasterizationFeatures -> Bool
stippledRectangularLines :: PhysicalDeviceLineRasterizationFeatures -> Bool
stippledBresenhamLines :: PhysicalDeviceLineRasterizationFeatures -> Bool
stippledSmoothLines :: PhysicalDeviceLineRasterizationFeatures -> Bool
rectangularLines :: Bool
bresenhamLines :: Bool
smoothLines :: Bool
stippledRectangularLines :: Bool
stippledBresenhamLines :: Bool
stippledSmoothLines :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures -> 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 PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
rectangularLines))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
bresenhamLines))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
smoothLines))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
stippledRectangularLines))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
stippledBresenhamLines))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
stippledSmoothLines))
IO b
f
cStructSize :: Int
cStructSize = Int
40
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceLineRasterizationFeatures -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceLineRasterizationFeatures
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures -> 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 PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures -> 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))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceLineRasterizationFeatures where
peekCStruct :: Ptr PhysicalDeviceLineRasterizationFeatures
-> IO PhysicalDeviceLineRasterizationFeatures
peekCStruct Ptr PhysicalDeviceLineRasterizationFeatures
p = do
rectangularLines <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceLineRasterizationFeatures
p Ptr PhysicalDeviceLineRasterizationFeatures -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
bresenhamLines <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
smoothLines <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
stippledRectangularLines <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
stippledBresenhamLines <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
stippledSmoothLines <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
pure $ PhysicalDeviceLineRasterizationFeatures
(bool32ToBool rectangularLines)
(bool32ToBool bresenhamLines)
(bool32ToBool smoothLines)
(bool32ToBool stippledRectangularLines)
(bool32ToBool stippledBresenhamLines)
(bool32ToBool stippledSmoothLines)
instance Storable PhysicalDeviceLineRasterizationFeatures where
sizeOf :: PhysicalDeviceLineRasterizationFeatures -> Int
sizeOf ~PhysicalDeviceLineRasterizationFeatures
_ = Int
40
alignment :: PhysicalDeviceLineRasterizationFeatures -> Int
alignment ~PhysicalDeviceLineRasterizationFeatures
_ = Int
8
peek :: Ptr PhysicalDeviceLineRasterizationFeatures
-> IO PhysicalDeviceLineRasterizationFeatures
peek = Ptr PhysicalDeviceLineRasterizationFeatures
-> IO PhysicalDeviceLineRasterizationFeatures
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceLineRasterizationFeatures
-> PhysicalDeviceLineRasterizationFeatures -> IO ()
poke Ptr PhysicalDeviceLineRasterizationFeatures
ptr PhysicalDeviceLineRasterizationFeatures
poked = Ptr PhysicalDeviceLineRasterizationFeatures
-> PhysicalDeviceLineRasterizationFeatures -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceLineRasterizationFeatures
-> PhysicalDeviceLineRasterizationFeatures -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceLineRasterizationFeatures
ptr PhysicalDeviceLineRasterizationFeatures
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceLineRasterizationFeatures where
zero :: PhysicalDeviceLineRasterizationFeatures
zero = Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> PhysicalDeviceLineRasterizationFeatures
PhysicalDeviceLineRasterizationFeatures
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
data PhysicalDeviceLineRasterizationProperties = PhysicalDeviceLineRasterizationProperties
{
PhysicalDeviceLineRasterizationProperties
-> "lineStippleFactor" ::: Word32
lineSubPixelPrecisionBits :: Word32 }
deriving (Typeable, PhysicalDeviceLineRasterizationProperties
-> PhysicalDeviceLineRasterizationProperties -> Bool
(PhysicalDeviceLineRasterizationProperties
-> PhysicalDeviceLineRasterizationProperties -> Bool)
-> (PhysicalDeviceLineRasterizationProperties
-> PhysicalDeviceLineRasterizationProperties -> Bool)
-> Eq PhysicalDeviceLineRasterizationProperties
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceLineRasterizationProperties
-> PhysicalDeviceLineRasterizationProperties -> Bool
== :: PhysicalDeviceLineRasterizationProperties
-> PhysicalDeviceLineRasterizationProperties -> Bool
$c/= :: PhysicalDeviceLineRasterizationProperties
-> PhysicalDeviceLineRasterizationProperties -> Bool
/= :: PhysicalDeviceLineRasterizationProperties
-> PhysicalDeviceLineRasterizationProperties -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceLineRasterizationProperties)
#endif
deriving instance Show PhysicalDeviceLineRasterizationProperties
instance ToCStruct PhysicalDeviceLineRasterizationProperties where
withCStruct :: forall b.
PhysicalDeviceLineRasterizationProperties
-> (Ptr PhysicalDeviceLineRasterizationProperties -> IO b) -> IO b
withCStruct PhysicalDeviceLineRasterizationProperties
x Ptr PhysicalDeviceLineRasterizationProperties -> IO b
f = Int
-> (Ptr PhysicalDeviceLineRasterizationProperties -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceLineRasterizationProperties -> IO b) -> IO b)
-> (Ptr PhysicalDeviceLineRasterizationProperties -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceLineRasterizationProperties
p -> Ptr PhysicalDeviceLineRasterizationProperties
-> PhysicalDeviceLineRasterizationProperties -> IO b -> IO b
forall b.
Ptr PhysicalDeviceLineRasterizationProperties
-> PhysicalDeviceLineRasterizationProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceLineRasterizationProperties
p PhysicalDeviceLineRasterizationProperties
x (Ptr PhysicalDeviceLineRasterizationProperties -> IO b
f Ptr PhysicalDeviceLineRasterizationProperties
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceLineRasterizationProperties
-> PhysicalDeviceLineRasterizationProperties -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceLineRasterizationProperties
p PhysicalDeviceLineRasterizationProperties{"lineStippleFactor" ::: Word32
lineSubPixelPrecisionBits :: PhysicalDeviceLineRasterizationProperties
-> "lineStippleFactor" ::: Word32
lineSubPixelPrecisionBits :: "lineStippleFactor" ::: Word32
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationProperties
p Ptr PhysicalDeviceLineRasterizationProperties
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationProperties
p Ptr PhysicalDeviceLineRasterizationProperties
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr ("lineStippleFactor" ::: Word32)
-> ("lineStippleFactor" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationProperties
p Ptr PhysicalDeviceLineRasterizationProperties
-> Int -> Ptr ("lineStippleFactor" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) ("lineStippleFactor" ::: Word32
lineSubPixelPrecisionBits)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceLineRasterizationProperties -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceLineRasterizationProperties
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationProperties
p Ptr PhysicalDeviceLineRasterizationProperties
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationProperties
p Ptr PhysicalDeviceLineRasterizationProperties
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr ("lineStippleFactor" ::: Word32)
-> ("lineStippleFactor" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceLineRasterizationProperties
p Ptr PhysicalDeviceLineRasterizationProperties
-> Int -> Ptr ("lineStippleFactor" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) ("lineStippleFactor" ::: Word32
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PhysicalDeviceLineRasterizationProperties where
peekCStruct :: Ptr PhysicalDeviceLineRasterizationProperties
-> IO PhysicalDeviceLineRasterizationProperties
peekCStruct Ptr PhysicalDeviceLineRasterizationProperties
p = do
lineSubPixelPrecisionBits <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceLineRasterizationProperties
p Ptr PhysicalDeviceLineRasterizationProperties
-> Int -> Ptr ("lineStippleFactor" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
pure $ PhysicalDeviceLineRasterizationProperties
lineSubPixelPrecisionBits
instance Storable PhysicalDeviceLineRasterizationProperties where
sizeOf :: PhysicalDeviceLineRasterizationProperties -> Int
sizeOf ~PhysicalDeviceLineRasterizationProperties
_ = Int
24
alignment :: PhysicalDeviceLineRasterizationProperties -> Int
alignment ~PhysicalDeviceLineRasterizationProperties
_ = Int
8
peek :: Ptr PhysicalDeviceLineRasterizationProperties
-> IO PhysicalDeviceLineRasterizationProperties
peek = Ptr PhysicalDeviceLineRasterizationProperties
-> IO PhysicalDeviceLineRasterizationProperties
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceLineRasterizationProperties
-> PhysicalDeviceLineRasterizationProperties -> IO ()
poke Ptr PhysicalDeviceLineRasterizationProperties
ptr PhysicalDeviceLineRasterizationProperties
poked = Ptr PhysicalDeviceLineRasterizationProperties
-> PhysicalDeviceLineRasterizationProperties -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceLineRasterizationProperties
-> PhysicalDeviceLineRasterizationProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceLineRasterizationProperties
ptr PhysicalDeviceLineRasterizationProperties
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceLineRasterizationProperties where
zero :: PhysicalDeviceLineRasterizationProperties
zero = ("lineStippleFactor" ::: Word32)
-> PhysicalDeviceLineRasterizationProperties
PhysicalDeviceLineRasterizationProperties
"lineStippleFactor" ::: Word32
forall a. Zero a => a
zero
data PipelineRasterizationLineStateCreateInfo = PipelineRasterizationLineStateCreateInfo
{
PipelineRasterizationLineStateCreateInfo -> LineRasterizationMode
lineRasterizationMode :: LineRasterizationMode
,
PipelineRasterizationLineStateCreateInfo -> Bool
stippledLineEnable :: Bool
,
PipelineRasterizationLineStateCreateInfo
-> "lineStippleFactor" ::: Word32
lineStippleFactor :: Word32
,
PipelineRasterizationLineStateCreateInfo
-> "lineStipplePattern" ::: Word16
lineStipplePattern :: Word16
}
deriving (Typeable, PipelineRasterizationLineStateCreateInfo
-> PipelineRasterizationLineStateCreateInfo -> Bool
(PipelineRasterizationLineStateCreateInfo
-> PipelineRasterizationLineStateCreateInfo -> Bool)
-> (PipelineRasterizationLineStateCreateInfo
-> PipelineRasterizationLineStateCreateInfo -> Bool)
-> Eq PipelineRasterizationLineStateCreateInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PipelineRasterizationLineStateCreateInfo
-> PipelineRasterizationLineStateCreateInfo -> Bool
== :: PipelineRasterizationLineStateCreateInfo
-> PipelineRasterizationLineStateCreateInfo -> Bool
$c/= :: PipelineRasterizationLineStateCreateInfo
-> PipelineRasterizationLineStateCreateInfo -> Bool
/= :: PipelineRasterizationLineStateCreateInfo
-> PipelineRasterizationLineStateCreateInfo -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PipelineRasterizationLineStateCreateInfo)
#endif
deriving instance Show PipelineRasterizationLineStateCreateInfo
instance ToCStruct PipelineRasterizationLineStateCreateInfo where
withCStruct :: forall b.
PipelineRasterizationLineStateCreateInfo
-> (Ptr PipelineRasterizationLineStateCreateInfo -> IO b) -> IO b
withCStruct PipelineRasterizationLineStateCreateInfo
x Ptr PipelineRasterizationLineStateCreateInfo -> IO b
f = Int
-> (Ptr PipelineRasterizationLineStateCreateInfo -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr PipelineRasterizationLineStateCreateInfo -> IO b) -> IO b)
-> (Ptr PipelineRasterizationLineStateCreateInfo -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PipelineRasterizationLineStateCreateInfo
p -> Ptr PipelineRasterizationLineStateCreateInfo
-> PipelineRasterizationLineStateCreateInfo -> IO b -> IO b
forall b.
Ptr PipelineRasterizationLineStateCreateInfo
-> PipelineRasterizationLineStateCreateInfo -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelineRasterizationLineStateCreateInfo
p PipelineRasterizationLineStateCreateInfo
x (Ptr PipelineRasterizationLineStateCreateInfo -> IO b
f Ptr PipelineRasterizationLineStateCreateInfo
p)
pokeCStruct :: forall b.
Ptr PipelineRasterizationLineStateCreateInfo
-> PipelineRasterizationLineStateCreateInfo -> IO b -> IO b
pokeCStruct Ptr PipelineRasterizationLineStateCreateInfo
p PipelineRasterizationLineStateCreateInfo{Bool
"lineStipplePattern" ::: Word16
"lineStippleFactor" ::: Word32
LineRasterizationMode
lineRasterizationMode :: PipelineRasterizationLineStateCreateInfo -> LineRasterizationMode
stippledLineEnable :: PipelineRasterizationLineStateCreateInfo -> Bool
lineStippleFactor :: PipelineRasterizationLineStateCreateInfo
-> "lineStippleFactor" ::: Word32
lineStipplePattern :: PipelineRasterizationLineStateCreateInfo
-> "lineStipplePattern" ::: Word16
lineRasterizationMode :: LineRasterizationMode
stippledLineEnable :: Bool
lineStippleFactor :: "lineStippleFactor" ::: Word32
lineStipplePattern :: "lineStipplePattern" ::: Word16
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationLineStateCreateInfo
p Ptr PipelineRasterizationLineStateCreateInfo
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationLineStateCreateInfo
p Ptr PipelineRasterizationLineStateCreateInfo -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr LineRasterizationMode -> LineRasterizationMode -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationLineStateCreateInfo
p Ptr PipelineRasterizationLineStateCreateInfo
-> Int -> Ptr LineRasterizationMode
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr LineRasterizationMode)) (LineRasterizationMode
lineRasterizationMode)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationLineStateCreateInfo
p Ptr PipelineRasterizationLineStateCreateInfo -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
stippledLineEnable))
Ptr ("lineStippleFactor" ::: Word32)
-> ("lineStippleFactor" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationLineStateCreateInfo
p Ptr PipelineRasterizationLineStateCreateInfo
-> Int -> Ptr ("lineStippleFactor" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) ("lineStippleFactor" ::: Word32
lineStippleFactor)
Ptr ("lineStipplePattern" ::: Word16)
-> ("lineStipplePattern" ::: Word16) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationLineStateCreateInfo
p Ptr PipelineRasterizationLineStateCreateInfo
-> Int -> Ptr ("lineStipplePattern" ::: Word16)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Word16)) ("lineStipplePattern" ::: Word16
lineStipplePattern)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PipelineRasterizationLineStateCreateInfo -> IO b -> IO b
pokeZeroCStruct Ptr PipelineRasterizationLineStateCreateInfo
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationLineStateCreateInfo
p Ptr PipelineRasterizationLineStateCreateInfo
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationLineStateCreateInfo
p Ptr PipelineRasterizationLineStateCreateInfo -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr LineRasterizationMode -> LineRasterizationMode -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationLineStateCreateInfo
p Ptr PipelineRasterizationLineStateCreateInfo
-> Int -> Ptr LineRasterizationMode
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr LineRasterizationMode)) (LineRasterizationMode
forall a. Zero a => a
zero)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationLineStateCreateInfo
p Ptr PipelineRasterizationLineStateCreateInfo -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr ("lineStippleFactor" ::: Word32)
-> ("lineStippleFactor" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationLineStateCreateInfo
p Ptr PipelineRasterizationLineStateCreateInfo
-> Int -> Ptr ("lineStippleFactor" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) ("lineStippleFactor" ::: Word32
forall a. Zero a => a
zero)
Ptr ("lineStipplePattern" ::: Word16)
-> ("lineStipplePattern" ::: Word16) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationLineStateCreateInfo
p Ptr PipelineRasterizationLineStateCreateInfo
-> Int -> Ptr ("lineStipplePattern" ::: Word16)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Word16)) ("lineStipplePattern" ::: Word16
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PipelineRasterizationLineStateCreateInfo where
peekCStruct :: Ptr PipelineRasterizationLineStateCreateInfo
-> IO PipelineRasterizationLineStateCreateInfo
peekCStruct Ptr PipelineRasterizationLineStateCreateInfo
p = do
lineRasterizationMode <- forall a. Storable a => Ptr a -> IO a
peek @LineRasterizationMode ((Ptr PipelineRasterizationLineStateCreateInfo
p Ptr PipelineRasterizationLineStateCreateInfo
-> Int -> Ptr LineRasterizationMode
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr LineRasterizationMode))
stippledLineEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
lineStippleFactor <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
lineStipplePattern <- peek @Word16 ((p `plusPtr` 28 :: Ptr Word16))
pure $ PipelineRasterizationLineStateCreateInfo
lineRasterizationMode
(bool32ToBool stippledLineEnable)
lineStippleFactor
lineStipplePattern
instance Storable PipelineRasterizationLineStateCreateInfo where
sizeOf :: PipelineRasterizationLineStateCreateInfo -> Int
sizeOf ~PipelineRasterizationLineStateCreateInfo
_ = Int
32
alignment :: PipelineRasterizationLineStateCreateInfo -> Int
alignment ~PipelineRasterizationLineStateCreateInfo
_ = Int
8
peek :: Ptr PipelineRasterizationLineStateCreateInfo
-> IO PipelineRasterizationLineStateCreateInfo
peek = Ptr PipelineRasterizationLineStateCreateInfo
-> IO PipelineRasterizationLineStateCreateInfo
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PipelineRasterizationLineStateCreateInfo
-> PipelineRasterizationLineStateCreateInfo -> IO ()
poke Ptr PipelineRasterizationLineStateCreateInfo
ptr PipelineRasterizationLineStateCreateInfo
poked = Ptr PipelineRasterizationLineStateCreateInfo
-> PipelineRasterizationLineStateCreateInfo -> IO () -> IO ()
forall b.
Ptr PipelineRasterizationLineStateCreateInfo
-> PipelineRasterizationLineStateCreateInfo -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelineRasterizationLineStateCreateInfo
ptr PipelineRasterizationLineStateCreateInfo
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PipelineRasterizationLineStateCreateInfo where
zero :: PipelineRasterizationLineStateCreateInfo
zero = LineRasterizationMode
-> Bool
-> ("lineStippleFactor" ::: Word32)
-> ("lineStipplePattern" ::: Word16)
-> PipelineRasterizationLineStateCreateInfo
PipelineRasterizationLineStateCreateInfo
LineRasterizationMode
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
"lineStippleFactor" ::: Word32
forall a. Zero a => a
zero
"lineStipplePattern" ::: Word16
forall a. Zero a => a
zero