{-# language CPP #-}
module Vulkan.Extensions.VK_QNX_external_memory_screen_buffer ( getScreenBufferPropertiesQNX
, ImportScreenBufferInfoQNX(..)
, ScreenBufferPropertiesQNX(..)
, ScreenBufferFormatPropertiesQNX(..)
, ExternalFormatQNX(..)
, PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX(..)
, QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_SPEC_VERSION
, pattern QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_SPEC_VERSION
, QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME
, pattern QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME
, Screen_buffer
) where
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Data.Typeable (eqT)
import Foreign.Marshal.Alloc (allocaBytes)
import GHC.Base (when)
import GHC.IO (throwIO)
import GHC.Ptr (castPtr)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
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.String (IsString)
import Data.Type.Equality ((:~:)(Refl))
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 (Word32)
import Data.Word (Word64)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.CStruct.Extends (forgetExtensions)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.CStruct.Extends (Chain)
import Vulkan.Core11.Enums.ChromaLocation (ChromaLocation)
import Vulkan.Core10.ImageView (ComponentMapping)
import Vulkan.Core10.Handles (Device)
import Vulkan.Core10.Handles (Device(..))
import Vulkan.Core10.Handles (Device(Device))
import Vulkan.Dynamic (DeviceCmds(pVkGetScreenBufferPropertiesQNX))
import Vulkan.Core10.FundamentalTypes (DeviceSize)
import Vulkan.Core10.Handles (Device_T)
import Vulkan.CStruct.Extends (Extends)
import Vulkan.CStruct.Extends (Extendss)
import Vulkan.CStruct.Extends (Extensible(..))
import Vulkan.Core10.Enums.Format (Format)
import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)
import Vulkan.CStruct.Extends (PeekChain)
import Vulkan.CStruct.Extends (PeekChain(..))
import Vulkan.CStruct.Extends (PokeChain)
import Vulkan.CStruct.Extends (PokeChain(..))
import Vulkan.Core10.Enums.Result (Result)
import Vulkan.Core10.Enums.Result (Result(..))
import Vulkan.Core11.Enums.SamplerYcbcrModelConversion (SamplerYcbcrModelConversion)
import Vulkan.Core11.Enums.SamplerYcbcrRange (SamplerYcbcrRange)
import Vulkan.CStruct.Extends (SomeStruct)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Exception (VulkanException(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetScreenBufferPropertiesQNX
:: FunPtr (Ptr Device_T -> Ptr Screen_buffer -> Ptr (SomeStruct ScreenBufferPropertiesQNX) -> IO Result) -> Ptr Device_T -> Ptr Screen_buffer -> Ptr (SomeStruct ScreenBufferPropertiesQNX) -> IO Result
getScreenBufferPropertiesQNX :: forall a io
. ( Extendss ScreenBufferPropertiesQNX a
, PokeChain a
, PeekChain a
, MonadIO io )
=>
Device
->
(Ptr Screen_buffer)
-> io (ScreenBufferPropertiesQNX a)
getScreenBufferPropertiesQNX :: forall (a :: [*]) (io :: * -> *).
(Extendss ScreenBufferPropertiesQNX a, PokeChain a, PeekChain a,
MonadIO io) =>
Device -> Ptr Screen_buffer -> io (ScreenBufferPropertiesQNX a)
getScreenBufferPropertiesQNX Device
device Ptr Screen_buffer
buffer = IO (ScreenBufferPropertiesQNX a)
-> io (ScreenBufferPropertiesQNX a)
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (ScreenBufferPropertiesQNX a)
-> io (ScreenBufferPropertiesQNX a))
-> (ContT
(ScreenBufferPropertiesQNX a) IO (ScreenBufferPropertiesQNX a)
-> IO (ScreenBufferPropertiesQNX a))
-> ContT
(ScreenBufferPropertiesQNX a) IO (ScreenBufferPropertiesQNX a)
-> io (ScreenBufferPropertiesQNX a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT
(ScreenBufferPropertiesQNX a) IO (ScreenBufferPropertiesQNX a)
-> IO (ScreenBufferPropertiesQNX a)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT
(ScreenBufferPropertiesQNX a) IO (ScreenBufferPropertiesQNX a)
-> io (ScreenBufferPropertiesQNX a))
-> ContT
(ScreenBufferPropertiesQNX a) IO (ScreenBufferPropertiesQNX a)
-> io (ScreenBufferPropertiesQNX a)
forall a b. (a -> b) -> a -> b
$ do
let vkGetScreenBufferPropertiesQNXPtr :: FunPtr
(Ptr Device_T
-> Ptr Screen_buffer
-> Ptr (SomeStruct ScreenBufferPropertiesQNX)
-> IO Result)
vkGetScreenBufferPropertiesQNXPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> Ptr Screen_buffer
-> Ptr (SomeStruct ScreenBufferPropertiesQNX)
-> IO Result)
pVkGetScreenBufferPropertiesQNX (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT (ScreenBufferPropertiesQNX a) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (ScreenBufferPropertiesQNX a) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (ScreenBufferPropertiesQNX a) IO ())
-> IO () -> ContT (ScreenBufferPropertiesQNX a) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> Ptr Screen_buffer
-> Ptr (SomeStruct ScreenBufferPropertiesQNX)
-> IO Result)
vkGetScreenBufferPropertiesQNXPtr FunPtr
(Ptr Device_T
-> Ptr Screen_buffer
-> Ptr (SomeStruct ScreenBufferPropertiesQNX)
-> IO Result)
-> FunPtr
(Ptr Device_T
-> Ptr Screen_buffer
-> Ptr (SomeStruct ScreenBufferPropertiesQNX)
-> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> Ptr Screen_buffer
-> Ptr (SomeStruct ScreenBufferPropertiesQNX)
-> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetScreenBufferPropertiesQNX is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetScreenBufferPropertiesQNX' :: Ptr Device_T
-> Ptr Screen_buffer
-> Ptr (SomeStruct ScreenBufferPropertiesQNX)
-> IO Result
vkGetScreenBufferPropertiesQNX' = FunPtr
(Ptr Device_T
-> Ptr Screen_buffer
-> Ptr (SomeStruct ScreenBufferPropertiesQNX)
-> IO Result)
-> Ptr Device_T
-> Ptr Screen_buffer
-> Ptr (SomeStruct ScreenBufferPropertiesQNX)
-> IO Result
mkVkGetScreenBufferPropertiesQNX FunPtr
(Ptr Device_T
-> Ptr Screen_buffer
-> Ptr (SomeStruct ScreenBufferPropertiesQNX)
-> IO Result)
vkGetScreenBufferPropertiesQNXPtr
Ptr (ScreenBufferPropertiesQNX a)
pPProperties <- ((Ptr (ScreenBufferPropertiesQNX a)
-> IO (ScreenBufferPropertiesQNX a))
-> IO (ScreenBufferPropertiesQNX a))
-> ContT
(ScreenBufferPropertiesQNX a)
IO
(Ptr (ScreenBufferPropertiesQNX a))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @(ScreenBufferPropertiesQNX _))
Result
r <- IO Result -> ContT (ScreenBufferPropertiesQNX a) IO Result
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (ScreenBufferPropertiesQNX a) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result -> ContT (ScreenBufferPropertiesQNX a) IO Result)
-> IO Result -> ContT (ScreenBufferPropertiesQNX a) IO Result
forall a b. (a -> b) -> a -> b
$ String -> IO Result -> IO Result
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetScreenBufferPropertiesQNX" (Ptr Device_T
-> Ptr Screen_buffer
-> Ptr (SomeStruct ScreenBufferPropertiesQNX)
-> IO Result
vkGetScreenBufferPropertiesQNX'
(Device -> Ptr Device_T
deviceHandle (Device
device))
(Ptr Screen_buffer
buffer)
(Ptr (ScreenBufferPropertiesQNX a)
-> Ptr (SomeStruct ScreenBufferPropertiesQNX)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (ScreenBufferPropertiesQNX a)
pPProperties)))
IO () -> ContT (ScreenBufferPropertiesQNX a) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (ScreenBufferPropertiesQNX a) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (ScreenBufferPropertiesQNX a) IO ())
-> IO () -> ContT (ScreenBufferPropertiesQNX a) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
ScreenBufferPropertiesQNX a
pProperties <- IO (ScreenBufferPropertiesQNX a)
-> ContT
(ScreenBufferPropertiesQNX a) IO (ScreenBufferPropertiesQNX a)
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (ScreenBufferPropertiesQNX a) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO (ScreenBufferPropertiesQNX a)
-> ContT
(ScreenBufferPropertiesQNX a) IO (ScreenBufferPropertiesQNX a))
-> IO (ScreenBufferPropertiesQNX a)
-> ContT
(ScreenBufferPropertiesQNX a) IO (ScreenBufferPropertiesQNX a)
forall a b. (a -> b) -> a -> b
$ forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @(ScreenBufferPropertiesQNX _) Ptr (ScreenBufferPropertiesQNX a)
pPProperties
ScreenBufferPropertiesQNX a
-> ContT
(ScreenBufferPropertiesQNX a) IO (ScreenBufferPropertiesQNX a)
forall a. a -> ContT (ScreenBufferPropertiesQNX a) IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ScreenBufferPropertiesQNX a
-> ContT
(ScreenBufferPropertiesQNX a) IO (ScreenBufferPropertiesQNX a))
-> ScreenBufferPropertiesQNX a
-> ContT
(ScreenBufferPropertiesQNX a) IO (ScreenBufferPropertiesQNX a)
forall a b. (a -> b) -> a -> b
$ (ScreenBufferPropertiesQNX a
pProperties)
data ImportScreenBufferInfoQNX = ImportScreenBufferInfoQNX
{
ImportScreenBufferInfoQNX -> Ptr Screen_buffer
buffer :: Ptr Screen_buffer }
deriving (Typeable, ImportScreenBufferInfoQNX -> ImportScreenBufferInfoQNX -> Bool
(ImportScreenBufferInfoQNX -> ImportScreenBufferInfoQNX -> Bool)
-> (ImportScreenBufferInfoQNX -> ImportScreenBufferInfoQNX -> Bool)
-> Eq ImportScreenBufferInfoQNX
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ImportScreenBufferInfoQNX -> ImportScreenBufferInfoQNX -> Bool
== :: ImportScreenBufferInfoQNX -> ImportScreenBufferInfoQNX -> Bool
$c/= :: ImportScreenBufferInfoQNX -> ImportScreenBufferInfoQNX -> Bool
/= :: ImportScreenBufferInfoQNX -> ImportScreenBufferInfoQNX -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ImportScreenBufferInfoQNX)
#endif
deriving instance Show ImportScreenBufferInfoQNX
instance ToCStruct ImportScreenBufferInfoQNX where
withCStruct :: forall b.
ImportScreenBufferInfoQNX
-> (Ptr ImportScreenBufferInfoQNX -> IO b) -> IO b
withCStruct ImportScreenBufferInfoQNX
x Ptr ImportScreenBufferInfoQNX -> IO b
f = Int -> (Ptr ImportScreenBufferInfoQNX -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr ImportScreenBufferInfoQNX -> IO b) -> IO b)
-> (Ptr ImportScreenBufferInfoQNX -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr ImportScreenBufferInfoQNX
p -> Ptr ImportScreenBufferInfoQNX
-> ImportScreenBufferInfoQNX -> IO b -> IO b
forall b.
Ptr ImportScreenBufferInfoQNX
-> ImportScreenBufferInfoQNX -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ImportScreenBufferInfoQNX
p ImportScreenBufferInfoQNX
x (Ptr ImportScreenBufferInfoQNX -> IO b
f Ptr ImportScreenBufferInfoQNX
p)
pokeCStruct :: forall b.
Ptr ImportScreenBufferInfoQNX
-> ImportScreenBufferInfoQNX -> IO b -> IO b
pokeCStruct Ptr ImportScreenBufferInfoQNX
p ImportScreenBufferInfoQNX{Ptr Screen_buffer
$sel:buffer:ImportScreenBufferInfoQNX :: ImportScreenBufferInfoQNX -> Ptr Screen_buffer
buffer :: Ptr Screen_buffer
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImportScreenBufferInfoQNX
p Ptr ImportScreenBufferInfoQNX -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImportScreenBufferInfoQNX
p Ptr ImportScreenBufferInfoQNX -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr (Ptr Screen_buffer) -> Ptr Screen_buffer -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImportScreenBufferInfoQNX
p Ptr ImportScreenBufferInfoQNX -> Int -> Ptr (Ptr Screen_buffer)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (Ptr Screen_buffer))) (Ptr Screen_buffer
buffer)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr ImportScreenBufferInfoQNX -> IO b -> IO b
pokeZeroCStruct Ptr ImportScreenBufferInfoQNX
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImportScreenBufferInfoQNX
p Ptr ImportScreenBufferInfoQNX -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImportScreenBufferInfoQNX
p Ptr ImportScreenBufferInfoQNX -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr (Ptr Screen_buffer) -> Ptr Screen_buffer -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImportScreenBufferInfoQNX
p Ptr ImportScreenBufferInfoQNX -> Int -> Ptr (Ptr Screen_buffer)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (Ptr Screen_buffer))) (Ptr Screen_buffer
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct ImportScreenBufferInfoQNX where
peekCStruct :: Ptr ImportScreenBufferInfoQNX -> IO ImportScreenBufferInfoQNX
peekCStruct Ptr ImportScreenBufferInfoQNX
p = do
Ptr Screen_buffer
buffer <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr Screen_buffer) ((Ptr ImportScreenBufferInfoQNX
p Ptr ImportScreenBufferInfoQNX -> Int -> Ptr (Ptr Screen_buffer)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (Ptr Screen_buffer)))
ImportScreenBufferInfoQNX -> IO ImportScreenBufferInfoQNX
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ImportScreenBufferInfoQNX -> IO ImportScreenBufferInfoQNX)
-> ImportScreenBufferInfoQNX -> IO ImportScreenBufferInfoQNX
forall a b. (a -> b) -> a -> b
$ Ptr Screen_buffer -> ImportScreenBufferInfoQNX
ImportScreenBufferInfoQNX
Ptr Screen_buffer
buffer
instance Storable ImportScreenBufferInfoQNX where
sizeOf :: ImportScreenBufferInfoQNX -> Int
sizeOf ~ImportScreenBufferInfoQNX
_ = Int
24
alignment :: ImportScreenBufferInfoQNX -> Int
alignment ~ImportScreenBufferInfoQNX
_ = Int
8
peek :: Ptr ImportScreenBufferInfoQNX -> IO ImportScreenBufferInfoQNX
peek = Ptr ImportScreenBufferInfoQNX -> IO ImportScreenBufferInfoQNX
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr ImportScreenBufferInfoQNX -> ImportScreenBufferInfoQNX -> IO ()
poke Ptr ImportScreenBufferInfoQNX
ptr ImportScreenBufferInfoQNX
poked = Ptr ImportScreenBufferInfoQNX
-> ImportScreenBufferInfoQNX -> IO () -> IO ()
forall b.
Ptr ImportScreenBufferInfoQNX
-> ImportScreenBufferInfoQNX -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ImportScreenBufferInfoQNX
ptr ImportScreenBufferInfoQNX
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero ImportScreenBufferInfoQNX where
zero :: ImportScreenBufferInfoQNX
zero = Ptr Screen_buffer -> ImportScreenBufferInfoQNX
ImportScreenBufferInfoQNX
Ptr Screen_buffer
forall a. Zero a => a
zero
data ScreenBufferPropertiesQNX (es :: [Type]) = ScreenBufferPropertiesQNX
{
forall (es :: [*]). ScreenBufferPropertiesQNX es -> Chain es
next :: Chain es
,
forall (es :: [*]). ScreenBufferPropertiesQNX es -> DeviceSize
allocationSize :: DeviceSize
,
forall (es :: [*]). ScreenBufferPropertiesQNX es -> Word32
memoryTypeBits :: Word32
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ScreenBufferPropertiesQNX (es :: [Type]))
#endif
deriving instance Show (Chain es) => Show (ScreenBufferPropertiesQNX es)
instance Extensible ScreenBufferPropertiesQNX where
extensibleTypeName :: String
extensibleTypeName = String
"ScreenBufferPropertiesQNX"
setNext :: forall (ds :: [*]) (es :: [*]).
ScreenBufferPropertiesQNX ds
-> Chain es -> ScreenBufferPropertiesQNX es
setNext ScreenBufferPropertiesQNX{Word32
DeviceSize
Chain ds
$sel:next:ScreenBufferPropertiesQNX :: forall (es :: [*]). ScreenBufferPropertiesQNX es -> Chain es
$sel:allocationSize:ScreenBufferPropertiesQNX :: forall (es :: [*]). ScreenBufferPropertiesQNX es -> DeviceSize
$sel:memoryTypeBits:ScreenBufferPropertiesQNX :: forall (es :: [*]). ScreenBufferPropertiesQNX es -> Word32
next :: Chain ds
allocationSize :: DeviceSize
memoryTypeBits :: Word32
..} Chain es
next' = ScreenBufferPropertiesQNX{$sel:next:ScreenBufferPropertiesQNX :: Chain es
next = Chain es
next', Word32
DeviceSize
$sel:allocationSize:ScreenBufferPropertiesQNX :: DeviceSize
$sel:memoryTypeBits:ScreenBufferPropertiesQNX :: Word32
allocationSize :: DeviceSize
memoryTypeBits :: Word32
..}
getNext :: forall (es :: [*]). ScreenBufferPropertiesQNX es -> Chain es
getNext ScreenBufferPropertiesQNX{Word32
DeviceSize
Chain es
$sel:next:ScreenBufferPropertiesQNX :: forall (es :: [*]). ScreenBufferPropertiesQNX es -> Chain es
$sel:allocationSize:ScreenBufferPropertiesQNX :: forall (es :: [*]). ScreenBufferPropertiesQNX es -> DeviceSize
$sel:memoryTypeBits:ScreenBufferPropertiesQNX :: forall (es :: [*]). ScreenBufferPropertiesQNX es -> Word32
next :: Chain es
allocationSize :: DeviceSize
memoryTypeBits :: Word32
..} = Chain es
next
extends :: forall e b proxy. Typeable e => proxy e -> (Extends ScreenBufferPropertiesQNX e => b) -> Maybe b
extends :: forall e b (proxy :: * -> *).
Typeable e =>
proxy e -> (Extends ScreenBufferPropertiesQNX e => b) -> Maybe b
extends proxy e
_ Extends ScreenBufferPropertiesQNX e => b
f
| Just e :~: ScreenBufferFormatPropertiesQNX
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @ScreenBufferFormatPropertiesQNX = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends ScreenBufferPropertiesQNX e => b
f
| Bool
otherwise = Maybe b
forall a. Maybe a
Nothing
instance ( Extendss ScreenBufferPropertiesQNX es
, PokeChain es ) => ToCStruct (ScreenBufferPropertiesQNX es) where
withCStruct :: forall b.
ScreenBufferPropertiesQNX es
-> (Ptr (ScreenBufferPropertiesQNX es) -> IO b) -> IO b
withCStruct ScreenBufferPropertiesQNX es
x Ptr (ScreenBufferPropertiesQNX es) -> IO b
f = Int -> (Ptr (ScreenBufferPropertiesQNX es) -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr (ScreenBufferPropertiesQNX es) -> IO b) -> IO b)
-> (Ptr (ScreenBufferPropertiesQNX es) -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr (ScreenBufferPropertiesQNX es)
p -> Ptr (ScreenBufferPropertiesQNX es)
-> ScreenBufferPropertiesQNX es -> IO b -> IO b
forall b.
Ptr (ScreenBufferPropertiesQNX es)
-> ScreenBufferPropertiesQNX es -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr (ScreenBufferPropertiesQNX es)
p ScreenBufferPropertiesQNX es
x (Ptr (ScreenBufferPropertiesQNX es) -> IO b
f Ptr (ScreenBufferPropertiesQNX es)
p)
pokeCStruct :: forall b.
Ptr (ScreenBufferPropertiesQNX es)
-> ScreenBufferPropertiesQNX es -> IO b -> IO b
pokeCStruct Ptr (ScreenBufferPropertiesQNX es)
p ScreenBufferPropertiesQNX{Word32
DeviceSize
Chain es
$sel:next:ScreenBufferPropertiesQNX :: forall (es :: [*]). ScreenBufferPropertiesQNX es -> Chain es
$sel:allocationSize:ScreenBufferPropertiesQNX :: forall (es :: [*]). ScreenBufferPropertiesQNX es -> DeviceSize
$sel:memoryTypeBits:ScreenBufferPropertiesQNX :: forall (es :: [*]). ScreenBufferPropertiesQNX es -> Word32
next :: Chain es
allocationSize :: DeviceSize
memoryTypeBits :: Word32
..} 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 (ScreenBufferPropertiesQNX es)
p Ptr (ScreenBufferPropertiesQNX es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX)
Ptr ()
pNext'' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ Chain es -> (Ptr (Chain es) -> IO b) -> IO b
forall (es :: [*]) a.
PokeChain es =>
Chain es -> (Ptr (Chain es) -> IO a) -> IO a
forall a. Chain es -> (Ptr (Chain es) -> IO a) -> IO a
withChain (Chain es
next)
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 (ScreenBufferPropertiesQNX es)
p Ptr (ScreenBufferPropertiesQNX es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext''
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 DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (ScreenBufferPropertiesQNX es)
p Ptr (ScreenBufferPropertiesQNX es) -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceSize)) (DeviceSize
allocationSize)
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 (ScreenBufferPropertiesQNX es)
p Ptr (ScreenBufferPropertiesQNX es) -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
memoryTypeBits)
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 (ScreenBufferPropertiesQNX es) -> IO b -> IO b
pokeZeroCStruct Ptr (ScreenBufferPropertiesQNX es)
p 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 (ScreenBufferPropertiesQNX es)
p Ptr (ScreenBufferPropertiesQNX es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX)
Ptr ()
pNext' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ forall (es :: [*]) a.
PokeChain es =>
(Ptr (Chain es) -> IO a) -> IO a
withZeroChain @es
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 (ScreenBufferPropertiesQNX es)
p Ptr (ScreenBufferPropertiesQNX es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext'
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 DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (ScreenBufferPropertiesQNX es)
p Ptr (ScreenBufferPropertiesQNX es) -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
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 (ScreenBufferPropertiesQNX es)
p Ptr (ScreenBufferPropertiesQNX es) -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
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
instance ( Extendss ScreenBufferPropertiesQNX es
, PeekChain es ) => FromCStruct (ScreenBufferPropertiesQNX es) where
peekCStruct :: Ptr (ScreenBufferPropertiesQNX es)
-> IO (ScreenBufferPropertiesQNX es)
peekCStruct Ptr (ScreenBufferPropertiesQNX es)
p = do
Ptr ()
pNext <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) ((Ptr (ScreenBufferPropertiesQNX es)
p Ptr (ScreenBufferPropertiesQNX es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ())))
Chain es
next <- Ptr (Chain es) -> IO (Chain es)
forall (es :: [*]). PeekChain es => Ptr (Chain es) -> IO (Chain es)
peekChain (Ptr () -> Ptr (Chain es)
forall a b. Ptr a -> Ptr b
castPtr Ptr ()
pNext)
DeviceSize
allocationSize <- forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr (ScreenBufferPropertiesQNX es)
p Ptr (ScreenBufferPropertiesQNX es) -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceSize))
Word32
memoryTypeBits <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr (ScreenBufferPropertiesQNX es)
p Ptr (ScreenBufferPropertiesQNX es) -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32))
ScreenBufferPropertiesQNX es -> IO (ScreenBufferPropertiesQNX es)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ScreenBufferPropertiesQNX es -> IO (ScreenBufferPropertiesQNX es))
-> ScreenBufferPropertiesQNX es
-> IO (ScreenBufferPropertiesQNX es)
forall a b. (a -> b) -> a -> b
$ Chain es -> DeviceSize -> Word32 -> ScreenBufferPropertiesQNX es
forall (es :: [*]).
Chain es -> DeviceSize -> Word32 -> ScreenBufferPropertiesQNX es
ScreenBufferPropertiesQNX
Chain es
next DeviceSize
allocationSize Word32
memoryTypeBits
instance es ~ '[] => Zero (ScreenBufferPropertiesQNX es) where
zero :: ScreenBufferPropertiesQNX es
zero = Chain es -> DeviceSize -> Word32 -> ScreenBufferPropertiesQNX es
forall (es :: [*]).
Chain es -> DeviceSize -> Word32 -> ScreenBufferPropertiesQNX es
ScreenBufferPropertiesQNX
()
DeviceSize
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
data ScreenBufferFormatPropertiesQNX = ScreenBufferFormatPropertiesQNX
{
ScreenBufferFormatPropertiesQNX -> Format
format :: Format
,
ScreenBufferFormatPropertiesQNX -> DeviceSize
externalFormat :: Word64
,
ScreenBufferFormatPropertiesQNX -> DeviceSize
screenUsage :: Word64
,
ScreenBufferFormatPropertiesQNX -> FormatFeatureFlags
formatFeatures :: FormatFeatureFlags
,
ScreenBufferFormatPropertiesQNX -> ComponentMapping
samplerYcbcrConversionComponents :: ComponentMapping
,
ScreenBufferFormatPropertiesQNX -> SamplerYcbcrModelConversion
suggestedYcbcrModel :: SamplerYcbcrModelConversion
,
ScreenBufferFormatPropertiesQNX -> SamplerYcbcrRange
suggestedYcbcrRange :: SamplerYcbcrRange
,
ScreenBufferFormatPropertiesQNX -> ChromaLocation
suggestedXChromaOffset :: ChromaLocation
,
ScreenBufferFormatPropertiesQNX -> ChromaLocation
suggestedYChromaOffset :: ChromaLocation
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ScreenBufferFormatPropertiesQNX)
#endif
deriving instance Show ScreenBufferFormatPropertiesQNX
instance ToCStruct ScreenBufferFormatPropertiesQNX where
withCStruct :: forall b.
ScreenBufferFormatPropertiesQNX
-> (Ptr ScreenBufferFormatPropertiesQNX -> IO b) -> IO b
withCStruct ScreenBufferFormatPropertiesQNX
x Ptr ScreenBufferFormatPropertiesQNX -> IO b
f = Int -> (Ptr ScreenBufferFormatPropertiesQNX -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
80 ((Ptr ScreenBufferFormatPropertiesQNX -> IO b) -> IO b)
-> (Ptr ScreenBufferFormatPropertiesQNX -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr ScreenBufferFormatPropertiesQNX
p -> Ptr ScreenBufferFormatPropertiesQNX
-> ScreenBufferFormatPropertiesQNX -> IO b -> IO b
forall b.
Ptr ScreenBufferFormatPropertiesQNX
-> ScreenBufferFormatPropertiesQNX -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ScreenBufferFormatPropertiesQNX
p ScreenBufferFormatPropertiesQNX
x (Ptr ScreenBufferFormatPropertiesQNX -> IO b
f Ptr ScreenBufferFormatPropertiesQNX
p)
pokeCStruct :: forall b.
Ptr ScreenBufferFormatPropertiesQNX
-> ScreenBufferFormatPropertiesQNX -> IO b -> IO b
pokeCStruct Ptr ScreenBufferFormatPropertiesQNX
p ScreenBufferFormatPropertiesQNX{DeviceSize
SamplerYcbcrRange
SamplerYcbcrModelConversion
ChromaLocation
FormatFeatureFlags
Format
ComponentMapping
$sel:format:ScreenBufferFormatPropertiesQNX :: ScreenBufferFormatPropertiesQNX -> Format
$sel:externalFormat:ScreenBufferFormatPropertiesQNX :: ScreenBufferFormatPropertiesQNX -> DeviceSize
$sel:screenUsage:ScreenBufferFormatPropertiesQNX :: ScreenBufferFormatPropertiesQNX -> DeviceSize
$sel:formatFeatures:ScreenBufferFormatPropertiesQNX :: ScreenBufferFormatPropertiesQNX -> FormatFeatureFlags
$sel:samplerYcbcrConversionComponents:ScreenBufferFormatPropertiesQNX :: ScreenBufferFormatPropertiesQNX -> ComponentMapping
$sel:suggestedYcbcrModel:ScreenBufferFormatPropertiesQNX :: ScreenBufferFormatPropertiesQNX -> SamplerYcbcrModelConversion
$sel:suggestedYcbcrRange:ScreenBufferFormatPropertiesQNX :: ScreenBufferFormatPropertiesQNX -> SamplerYcbcrRange
$sel:suggestedXChromaOffset:ScreenBufferFormatPropertiesQNX :: ScreenBufferFormatPropertiesQNX -> ChromaLocation
$sel:suggestedYChromaOffset:ScreenBufferFormatPropertiesQNX :: ScreenBufferFormatPropertiesQNX -> ChromaLocation
format :: Format
externalFormat :: DeviceSize
screenUsage :: DeviceSize
formatFeatures :: FormatFeatureFlags
samplerYcbcrConversionComponents :: ComponentMapping
suggestedYcbcrModel :: SamplerYcbcrModelConversion
suggestedYcbcrRange :: SamplerYcbcrRange
suggestedXChromaOffset :: ChromaLocation
suggestedYChromaOffset :: ChromaLocation
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Format -> Format -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr Format
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Format)) (Format
format)
Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word64)) (DeviceSize
externalFormat)
Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word64)) (DeviceSize
screenUsage)
Ptr FormatFeatureFlags -> FormatFeatureFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX
-> Int -> Ptr FormatFeatureFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr FormatFeatureFlags)) (FormatFeatureFlags
formatFeatures)
Ptr ComponentMapping -> ComponentMapping -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr ComponentMapping
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr ComponentMapping)) (ComponentMapping
samplerYcbcrConversionComponents)
Ptr SamplerYcbcrModelConversion
-> SamplerYcbcrModelConversion -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX
-> Int -> Ptr SamplerYcbcrModelConversion
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr SamplerYcbcrModelConversion)) (SamplerYcbcrModelConversion
suggestedYcbcrModel)
Ptr SamplerYcbcrRange -> SamplerYcbcrRange -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr SamplerYcbcrRange
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr SamplerYcbcrRange)) (SamplerYcbcrRange
suggestedYcbcrRange)
Ptr ChromaLocation -> ChromaLocation -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr ChromaLocation
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr ChromaLocation)) (ChromaLocation
suggestedXChromaOffset)
Ptr ChromaLocation -> ChromaLocation -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr ChromaLocation
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr ChromaLocation)) (ChromaLocation
suggestedYChromaOffset)
IO b
f
cStructSize :: Int
cStructSize = Int
80
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr ScreenBufferFormatPropertiesQNX -> IO b -> IO b
pokeZeroCStruct Ptr ScreenBufferFormatPropertiesQNX
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Format -> Format -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr Format
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Format)) (Format
forall a. Zero a => a
zero)
Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word64)) (DeviceSize
forall a. Zero a => a
zero)
Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word64)) (DeviceSize
forall a. Zero a => a
zero)
Ptr FormatFeatureFlags -> FormatFeatureFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX
-> Int -> Ptr FormatFeatureFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr FormatFeatureFlags)) (FormatFeatureFlags
forall a. Zero a => a
zero)
Ptr ComponentMapping -> ComponentMapping -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr ComponentMapping
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr ComponentMapping)) (ComponentMapping
forall a. Zero a => a
zero)
Ptr SamplerYcbcrModelConversion
-> SamplerYcbcrModelConversion -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX
-> Int -> Ptr SamplerYcbcrModelConversion
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr SamplerYcbcrModelConversion)) (SamplerYcbcrModelConversion
forall a. Zero a => a
zero)
Ptr SamplerYcbcrRange -> SamplerYcbcrRange -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr SamplerYcbcrRange
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr SamplerYcbcrRange)) (SamplerYcbcrRange
forall a. Zero a => a
zero)
Ptr ChromaLocation -> ChromaLocation -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr ChromaLocation
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr ChromaLocation)) (ChromaLocation
forall a. Zero a => a
zero)
Ptr ChromaLocation -> ChromaLocation -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr ChromaLocation
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr ChromaLocation)) (ChromaLocation
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct ScreenBufferFormatPropertiesQNX where
peekCStruct :: Ptr ScreenBufferFormatPropertiesQNX
-> IO ScreenBufferFormatPropertiesQNX
peekCStruct Ptr ScreenBufferFormatPropertiesQNX
p = do
Format
format <- forall a. Storable a => Ptr a -> IO a
peek @Format ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr Format
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Format))
DeviceSize
externalFormat <- forall a. Storable a => Ptr a -> IO a
peek @Word64 ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word64))
DeviceSize
screenUsage <- forall a. Storable a => Ptr a -> IO a
peek @Word64 ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word64))
FormatFeatureFlags
formatFeatures <- forall a. Storable a => Ptr a -> IO a
peek @FormatFeatureFlags ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX
-> Int -> Ptr FormatFeatureFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr FormatFeatureFlags))
ComponentMapping
samplerYcbcrConversionComponents <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @ComponentMapping ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr ComponentMapping
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr ComponentMapping))
SamplerYcbcrModelConversion
suggestedYcbcrModel <- forall a. Storable a => Ptr a -> IO a
peek @SamplerYcbcrModelConversion ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX
-> Int -> Ptr SamplerYcbcrModelConversion
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr SamplerYcbcrModelConversion))
SamplerYcbcrRange
suggestedYcbcrRange <- forall a. Storable a => Ptr a -> IO a
peek @SamplerYcbcrRange ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr SamplerYcbcrRange
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr SamplerYcbcrRange))
ChromaLocation
suggestedXChromaOffset <- forall a. Storable a => Ptr a -> IO a
peek @ChromaLocation ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr ChromaLocation
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
68 :: Ptr ChromaLocation))
ChromaLocation
suggestedYChromaOffset <- forall a. Storable a => Ptr a -> IO a
peek @ChromaLocation ((Ptr ScreenBufferFormatPropertiesQNX
p Ptr ScreenBufferFormatPropertiesQNX -> Int -> Ptr ChromaLocation
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr ChromaLocation))
ScreenBufferFormatPropertiesQNX
-> IO ScreenBufferFormatPropertiesQNX
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ScreenBufferFormatPropertiesQNX
-> IO ScreenBufferFormatPropertiesQNX)
-> ScreenBufferFormatPropertiesQNX
-> IO ScreenBufferFormatPropertiesQNX
forall a b. (a -> b) -> a -> b
$ Format
-> DeviceSize
-> DeviceSize
-> FormatFeatureFlags
-> ComponentMapping
-> SamplerYcbcrModelConversion
-> SamplerYcbcrRange
-> ChromaLocation
-> ChromaLocation
-> ScreenBufferFormatPropertiesQNX
ScreenBufferFormatPropertiesQNX
Format
format
DeviceSize
externalFormat
DeviceSize
screenUsage
FormatFeatureFlags
formatFeatures
ComponentMapping
samplerYcbcrConversionComponents
SamplerYcbcrModelConversion
suggestedYcbcrModel
SamplerYcbcrRange
suggestedYcbcrRange
ChromaLocation
suggestedXChromaOffset
ChromaLocation
suggestedYChromaOffset
instance Storable ScreenBufferFormatPropertiesQNX where
sizeOf :: ScreenBufferFormatPropertiesQNX -> Int
sizeOf ~ScreenBufferFormatPropertiesQNX
_ = Int
80
alignment :: ScreenBufferFormatPropertiesQNX -> Int
alignment ~ScreenBufferFormatPropertiesQNX
_ = Int
8
peek :: Ptr ScreenBufferFormatPropertiesQNX
-> IO ScreenBufferFormatPropertiesQNX
peek = Ptr ScreenBufferFormatPropertiesQNX
-> IO ScreenBufferFormatPropertiesQNX
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr ScreenBufferFormatPropertiesQNX
-> ScreenBufferFormatPropertiesQNX -> IO ()
poke Ptr ScreenBufferFormatPropertiesQNX
ptr ScreenBufferFormatPropertiesQNX
poked = Ptr ScreenBufferFormatPropertiesQNX
-> ScreenBufferFormatPropertiesQNX -> IO () -> IO ()
forall b.
Ptr ScreenBufferFormatPropertiesQNX
-> ScreenBufferFormatPropertiesQNX -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ScreenBufferFormatPropertiesQNX
ptr ScreenBufferFormatPropertiesQNX
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero ScreenBufferFormatPropertiesQNX where
zero :: ScreenBufferFormatPropertiesQNX
zero = Format
-> DeviceSize
-> DeviceSize
-> FormatFeatureFlags
-> ComponentMapping
-> SamplerYcbcrModelConversion
-> SamplerYcbcrRange
-> ChromaLocation
-> ChromaLocation
-> ScreenBufferFormatPropertiesQNX
ScreenBufferFormatPropertiesQNX
Format
forall a. Zero a => a
zero
DeviceSize
forall a. Zero a => a
zero
DeviceSize
forall a. Zero a => a
zero
FormatFeatureFlags
forall a. Zero a => a
zero
ComponentMapping
forall a. Zero a => a
zero
SamplerYcbcrModelConversion
forall a. Zero a => a
zero
SamplerYcbcrRange
forall a. Zero a => a
zero
ChromaLocation
forall a. Zero a => a
zero
ChromaLocation
forall a. Zero a => a
zero
data ExternalFormatQNX = ExternalFormatQNX
{
ExternalFormatQNX -> DeviceSize
externalFormat :: Word64 }
deriving (Typeable, ExternalFormatQNX -> ExternalFormatQNX -> Bool
(ExternalFormatQNX -> ExternalFormatQNX -> Bool)
-> (ExternalFormatQNX -> ExternalFormatQNX -> Bool)
-> Eq ExternalFormatQNX
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ExternalFormatQNX -> ExternalFormatQNX -> Bool
== :: ExternalFormatQNX -> ExternalFormatQNX -> Bool
$c/= :: ExternalFormatQNX -> ExternalFormatQNX -> Bool
/= :: ExternalFormatQNX -> ExternalFormatQNX -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ExternalFormatQNX)
#endif
deriving instance Show ExternalFormatQNX
instance ToCStruct ExternalFormatQNX where
withCStruct :: forall b.
ExternalFormatQNX -> (Ptr ExternalFormatQNX -> IO b) -> IO b
withCStruct ExternalFormatQNX
x Ptr ExternalFormatQNX -> IO b
f = Int -> (Ptr ExternalFormatQNX -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr ExternalFormatQNX -> IO b) -> IO b)
-> (Ptr ExternalFormatQNX -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr ExternalFormatQNX
p -> Ptr ExternalFormatQNX -> ExternalFormatQNX -> IO b -> IO b
forall b.
Ptr ExternalFormatQNX -> ExternalFormatQNX -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ExternalFormatQNX
p ExternalFormatQNX
x (Ptr ExternalFormatQNX -> IO b
f Ptr ExternalFormatQNX
p)
pokeCStruct :: forall b.
Ptr ExternalFormatQNX -> ExternalFormatQNX -> IO b -> IO b
pokeCStruct Ptr ExternalFormatQNX
p ExternalFormatQNX{DeviceSize
$sel:externalFormat:ExternalFormatQNX :: ExternalFormatQNX -> DeviceSize
externalFormat :: DeviceSize
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalFormatQNX
p Ptr ExternalFormatQNX -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalFormatQNX
p Ptr ExternalFormatQNX -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalFormatQNX
p Ptr ExternalFormatQNX -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word64)) (DeviceSize
externalFormat)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr ExternalFormatQNX -> IO b -> IO b
pokeZeroCStruct Ptr ExternalFormatQNX
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalFormatQNX
p Ptr ExternalFormatQNX -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalFormatQNX
p Ptr ExternalFormatQNX -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalFormatQNX
p Ptr ExternalFormatQNX -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word64)) (DeviceSize
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct ExternalFormatQNX where
peekCStruct :: Ptr ExternalFormatQNX -> IO ExternalFormatQNX
peekCStruct Ptr ExternalFormatQNX
p = do
DeviceSize
externalFormat <- forall a. Storable a => Ptr a -> IO a
peek @Word64 ((Ptr ExternalFormatQNX
p Ptr ExternalFormatQNX -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word64))
ExternalFormatQNX -> IO ExternalFormatQNX
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ExternalFormatQNX -> IO ExternalFormatQNX)
-> ExternalFormatQNX -> IO ExternalFormatQNX
forall a b. (a -> b) -> a -> b
$ DeviceSize -> ExternalFormatQNX
ExternalFormatQNX
DeviceSize
externalFormat
instance Storable ExternalFormatQNX where
sizeOf :: ExternalFormatQNX -> Int
sizeOf ~ExternalFormatQNX
_ = Int
24
alignment :: ExternalFormatQNX -> Int
alignment ~ExternalFormatQNX
_ = Int
8
peek :: Ptr ExternalFormatQNX -> IO ExternalFormatQNX
peek = Ptr ExternalFormatQNX -> IO ExternalFormatQNX
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr ExternalFormatQNX -> ExternalFormatQNX -> IO ()
poke Ptr ExternalFormatQNX
ptr ExternalFormatQNX
poked = Ptr ExternalFormatQNX -> ExternalFormatQNX -> IO () -> IO ()
forall b.
Ptr ExternalFormatQNX -> ExternalFormatQNX -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ExternalFormatQNX
ptr ExternalFormatQNX
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero ExternalFormatQNX where
zero :: ExternalFormatQNX
zero = DeviceSize -> ExternalFormatQNX
ExternalFormatQNX
DeviceSize
forall a. Zero a => a
zero
data PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX = PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
{
PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX -> Bool
screenBufferImport :: Bool }
deriving (Typeable, PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX -> Bool
(PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX -> Bool)
-> (PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX -> Bool)
-> Eq PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX -> Bool
== :: PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX -> Bool
$c/= :: PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX -> Bool
/= :: PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX)
#endif
deriving instance Show PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
instance ToCStruct PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX where
withCStruct :: forall b.
PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> (Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> IO b)
-> IO b
withCStruct PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
x Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX -> IO b
f = Int
-> (Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
p -> Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> IO b
-> IO b
forall b.
Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
p PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
x (Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX -> IO b
f Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
p PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX{Bool
$sel:screenBufferImport:PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX :: PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX -> Bool
screenBufferImport :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
p Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
p Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> 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 PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
p Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
screenBufferImport))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
p Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
p Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> 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 PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
p Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> 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 PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX where
peekCStruct :: Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> IO PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
peekCStruct Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
p = do
Bool32
screenBufferImport <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
p Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> IO PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> IO PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX)
-> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> IO PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
forall a b. (a -> b) -> a -> b
$ Bool -> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
(Bool32 -> Bool
bool32ToBool Bool32
screenBufferImport)
instance Storable PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX where
sizeOf :: PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX -> Int
sizeOf ~PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
_ = Int
24
alignment :: PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX -> Int
alignment ~PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
_ = Int
8
peek :: Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> IO PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
peek = Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> IO PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX -> IO ()
poke Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
poked = Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> IO ()
-> IO ()
forall b.
Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
ptr PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX where
zero :: PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
zero = Bool -> PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
Bool
forall a. Zero a => a
zero
type QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_SPEC_VERSION = 1
pattern QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_SPEC_VERSION :: forall a . Integral a => a
pattern $bQNX_EXTERNAL_MEMORY_SCREEN_BUFFER_SPEC_VERSION :: forall a. Integral a => a
$mQNX_EXTERNAL_MEMORY_SCREEN_BUFFER_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_SPEC_VERSION = 1
type QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME = "VK_QNX_external_memory_screen_buffer"
pattern QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bQNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mQNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME = "VK_QNX_external_memory_screen_buffer"
data Screen_buffer