{-# language CPP #-}
module Vulkan.Extensions.VK_QCOM_rotated_copy_commands ( CopyCommandTransformInfoQCOM(..)
, QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION
, pattern QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION
, QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME
, pattern QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME
, SurfaceTransformFlagBitsKHR(..)
, SurfaceTransformFlagsKHR
) where
import Foreign.Marshal.Alloc (allocaBytes)
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 Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import Foreign.Ptr (Ptr)
import Data.Kind (Type)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagBitsKHR)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM))
import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagsKHR)
data CopyCommandTransformInfoQCOM = CopyCommandTransformInfoQCOM
{
CopyCommandTransformInfoQCOM -> SurfaceTransformFlagBitsKHR
transform :: SurfaceTransformFlagBitsKHR }
deriving (Typeable, CopyCommandTransformInfoQCOM
-> CopyCommandTransformInfoQCOM -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CopyCommandTransformInfoQCOM
-> CopyCommandTransformInfoQCOM -> Bool
$c/= :: CopyCommandTransformInfoQCOM
-> CopyCommandTransformInfoQCOM -> Bool
== :: CopyCommandTransformInfoQCOM
-> CopyCommandTransformInfoQCOM -> Bool
$c== :: CopyCommandTransformInfoQCOM
-> CopyCommandTransformInfoQCOM -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (CopyCommandTransformInfoQCOM)
#endif
deriving instance Show CopyCommandTransformInfoQCOM
instance ToCStruct CopyCommandTransformInfoQCOM where
withCStruct :: forall b.
CopyCommandTransformInfoQCOM
-> (Ptr CopyCommandTransformInfoQCOM -> IO b) -> IO b
withCStruct CopyCommandTransformInfoQCOM
x Ptr CopyCommandTransformInfoQCOM -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr CopyCommandTransformInfoQCOM
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr CopyCommandTransformInfoQCOM
p CopyCommandTransformInfoQCOM
x (Ptr CopyCommandTransformInfoQCOM -> IO b
f Ptr CopyCommandTransformInfoQCOM
p)
pokeCStruct :: forall b.
Ptr CopyCommandTransformInfoQCOM
-> CopyCommandTransformInfoQCOM -> IO b -> IO b
pokeCStruct Ptr CopyCommandTransformInfoQCOM
p CopyCommandTransformInfoQCOM{SurfaceTransformFlagBitsKHR
transform :: SurfaceTransformFlagBitsKHR
$sel:transform:CopyCommandTransformInfoQCOM :: CopyCommandTransformInfoQCOM -> SurfaceTransformFlagBitsKHR
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CopyCommandTransformInfoQCOM
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CopyCommandTransformInfoQCOM
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CopyCommandTransformInfoQCOM
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr SurfaceTransformFlagBitsKHR)) (SurfaceTransformFlagBitsKHR
transform)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr CopyCommandTransformInfoQCOM -> IO b -> IO b
pokeZeroCStruct Ptr CopyCommandTransformInfoQCOM
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CopyCommandTransformInfoQCOM
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CopyCommandTransformInfoQCOM
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CopyCommandTransformInfoQCOM
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr SurfaceTransformFlagBitsKHR)) (forall a. Zero a => a
zero)
IO b
f
instance FromCStruct CopyCommandTransformInfoQCOM where
peekCStruct :: Ptr CopyCommandTransformInfoQCOM -> IO CopyCommandTransformInfoQCOM
peekCStruct Ptr CopyCommandTransformInfoQCOM
p = do
SurfaceTransformFlagBitsKHR
transform <- forall a. Storable a => Ptr a -> IO a
peek @SurfaceTransformFlagBitsKHR ((Ptr CopyCommandTransformInfoQCOM
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr SurfaceTransformFlagBitsKHR))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ SurfaceTransformFlagBitsKHR -> CopyCommandTransformInfoQCOM
CopyCommandTransformInfoQCOM
SurfaceTransformFlagBitsKHR
transform
instance Storable CopyCommandTransformInfoQCOM where
sizeOf :: CopyCommandTransformInfoQCOM -> Int
sizeOf ~CopyCommandTransformInfoQCOM
_ = Int
24
alignment :: CopyCommandTransformInfoQCOM -> Int
alignment ~CopyCommandTransformInfoQCOM
_ = Int
8
peek :: Ptr CopyCommandTransformInfoQCOM -> IO CopyCommandTransformInfoQCOM
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr CopyCommandTransformInfoQCOM
-> CopyCommandTransformInfoQCOM -> IO ()
poke Ptr CopyCommandTransformInfoQCOM
ptr CopyCommandTransformInfoQCOM
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr CopyCommandTransformInfoQCOM
ptr CopyCommandTransformInfoQCOM
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero CopyCommandTransformInfoQCOM where
zero :: CopyCommandTransformInfoQCOM
zero = SurfaceTransformFlagBitsKHR -> CopyCommandTransformInfoQCOM
CopyCommandTransformInfoQCOM
forall a. Zero a => a
zero
type QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1
pattern QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION :: forall a . Integral a => a
pattern $bQCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION :: forall a. Integral a => a
$mQCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1
type QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands"
pattern QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bQCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mQCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands"