{-# language CPP #-}
module Vulkan.Extensions.VK_QCOM_render_pass_transform  ( RenderPassTransformBeginInfoQCOM(..)
                                                        , CommandBufferInheritanceRenderPassTransformInfoQCOM(..)
                                                        , QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION
                                                        , pattern QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION
                                                        , QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME
                                                        , pattern QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME
                                                        , SurfaceTransformFlagBitsKHR(..)
                                                        , SurfaceTransformFlagsKHR
                                                        ) where

import Foreign.Marshal.Alloc (allocaBytesAligned)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
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 Control.Monad.Trans.Cont (ContT(..))
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.Core10.FundamentalTypes (Rect2D)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagBitsKHR)
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM))
import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagsKHR)
-- | VkRenderPassTransformBeginInfoQCOM - Structure describing transform
-- parameters of a render pass instance
--
-- == Valid Usage
--
-- -   @transform@ /must/ be
--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
--     or
--     'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR'
--
-- -   The @renderpass@ /must/ have been created with
--     'Vulkan.Core10.Pass.RenderPassCreateInfo'::@flags@ containing
--     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM'
--
-- == Valid Usage (Implicit)
--
-- -   @sType@ /must/ be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM'
--
-- = See Also
--
-- 'Vulkan.Core10.Enums.StructureType.StructureType',
-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagBitsKHR'
data RenderPassTransformBeginInfoQCOM = RenderPassTransformBeginInfoQCOM
  { -- | @transform@ is a
    -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagBitsKHR' value
    -- describing the transform to be applied to rasterization.
    RenderPassTransformBeginInfoQCOM -> SurfaceTransformFlagBitsKHR
transform :: SurfaceTransformFlagBitsKHR }
  deriving (Typeable, RenderPassTransformBeginInfoQCOM
-> RenderPassTransformBeginInfoQCOM -> Bool
(RenderPassTransformBeginInfoQCOM
 -> RenderPassTransformBeginInfoQCOM -> Bool)
-> (RenderPassTransformBeginInfoQCOM
    -> RenderPassTransformBeginInfoQCOM -> Bool)
-> Eq RenderPassTransformBeginInfoQCOM
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RenderPassTransformBeginInfoQCOM
-> RenderPassTransformBeginInfoQCOM -> Bool
$c/= :: RenderPassTransformBeginInfoQCOM
-> RenderPassTransformBeginInfoQCOM -> Bool
== :: RenderPassTransformBeginInfoQCOM
-> RenderPassTransformBeginInfoQCOM -> Bool
$c== :: RenderPassTransformBeginInfoQCOM
-> RenderPassTransformBeginInfoQCOM -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (RenderPassTransformBeginInfoQCOM)
#endif
deriving instance Show RenderPassTransformBeginInfoQCOM

instance ToCStruct RenderPassTransformBeginInfoQCOM where
  withCStruct :: RenderPassTransformBeginInfoQCOM
-> (Ptr RenderPassTransformBeginInfoQCOM -> IO b) -> IO b
withCStruct x :: RenderPassTransformBeginInfoQCOM
x f :: Ptr RenderPassTransformBeginInfoQCOM -> IO b
f = Int
-> Int -> (Ptr RenderPassTransformBeginInfoQCOM -> IO b) -> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 24 8 ((Ptr RenderPassTransformBeginInfoQCOM -> IO b) -> IO b)
-> (Ptr RenderPassTransformBeginInfoQCOM -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr RenderPassTransformBeginInfoQCOM
p -> Ptr RenderPassTransformBeginInfoQCOM
-> RenderPassTransformBeginInfoQCOM -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr RenderPassTransformBeginInfoQCOM
p RenderPassTransformBeginInfoQCOM
x (Ptr RenderPassTransformBeginInfoQCOM -> IO b
f Ptr RenderPassTransformBeginInfoQCOM
p)
  pokeCStruct :: Ptr RenderPassTransformBeginInfoQCOM
-> RenderPassTransformBeginInfoQCOM -> IO b -> IO b
pokeCStruct p :: Ptr RenderPassTransformBeginInfoQCOM
p RenderPassTransformBeginInfoQCOM{..} f :: IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderPassTransformBeginInfoQCOM
p Ptr RenderPassTransformBeginInfoQCOM -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderPassTransformBeginInfoQCOM
p Ptr RenderPassTransformBeginInfoQCOM -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr SurfaceTransformFlagBitsKHR
-> SurfaceTransformFlagBitsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderPassTransformBeginInfoQCOM
p Ptr RenderPassTransformBeginInfoQCOM
-> Int -> Ptr SurfaceTransformFlagBitsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR)) (SurfaceTransformFlagBitsKHR
transform)
    IO b
f
  cStructSize :: Int
cStructSize = 24
  cStructAlignment :: Int
cStructAlignment = 8
  pokeZeroCStruct :: Ptr RenderPassTransformBeginInfoQCOM -> IO b -> IO b
pokeZeroCStruct p :: Ptr RenderPassTransformBeginInfoQCOM
p f :: IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderPassTransformBeginInfoQCOM
p Ptr RenderPassTransformBeginInfoQCOM -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderPassTransformBeginInfoQCOM
p Ptr RenderPassTransformBeginInfoQCOM -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr SurfaceTransformFlagBitsKHR
-> SurfaceTransformFlagBitsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderPassTransformBeginInfoQCOM
p Ptr RenderPassTransformBeginInfoQCOM
-> Int -> Ptr SurfaceTransformFlagBitsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR)) (SurfaceTransformFlagBitsKHR
forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct RenderPassTransformBeginInfoQCOM where
  peekCStruct :: Ptr RenderPassTransformBeginInfoQCOM
-> IO RenderPassTransformBeginInfoQCOM
peekCStruct p :: Ptr RenderPassTransformBeginInfoQCOM
p = do
    SurfaceTransformFlagBitsKHR
transform <- Ptr SurfaceTransformFlagBitsKHR -> IO SurfaceTransformFlagBitsKHR
forall a. Storable a => Ptr a -> IO a
peek @SurfaceTransformFlagBitsKHR ((Ptr RenderPassTransformBeginInfoQCOM
p Ptr RenderPassTransformBeginInfoQCOM
-> Int -> Ptr SurfaceTransformFlagBitsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR))
    RenderPassTransformBeginInfoQCOM
-> IO RenderPassTransformBeginInfoQCOM
forall (f :: * -> *) a. Applicative f => a -> f a
pure (RenderPassTransformBeginInfoQCOM
 -> IO RenderPassTransformBeginInfoQCOM)
-> RenderPassTransformBeginInfoQCOM
-> IO RenderPassTransformBeginInfoQCOM
forall a b. (a -> b) -> a -> b
$ SurfaceTransformFlagBitsKHR -> RenderPassTransformBeginInfoQCOM
RenderPassTransformBeginInfoQCOM
             SurfaceTransformFlagBitsKHR
transform

instance Storable RenderPassTransformBeginInfoQCOM where
  sizeOf :: RenderPassTransformBeginInfoQCOM -> Int
sizeOf ~RenderPassTransformBeginInfoQCOM
_ = 24
  alignment :: RenderPassTransformBeginInfoQCOM -> Int
alignment ~RenderPassTransformBeginInfoQCOM
_ = 8
  peek :: Ptr RenderPassTransformBeginInfoQCOM
-> IO RenderPassTransformBeginInfoQCOM
peek = Ptr RenderPassTransformBeginInfoQCOM
-> IO RenderPassTransformBeginInfoQCOM
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr RenderPassTransformBeginInfoQCOM
-> RenderPassTransformBeginInfoQCOM -> IO ()
poke ptr :: Ptr RenderPassTransformBeginInfoQCOM
ptr poked :: RenderPassTransformBeginInfoQCOM
poked = Ptr RenderPassTransformBeginInfoQCOM
-> RenderPassTransformBeginInfoQCOM -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr RenderPassTransformBeginInfoQCOM
ptr RenderPassTransformBeginInfoQCOM
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero RenderPassTransformBeginInfoQCOM where
  zero :: RenderPassTransformBeginInfoQCOM
zero = SurfaceTransformFlagBitsKHR -> RenderPassTransformBeginInfoQCOM
RenderPassTransformBeginInfoQCOM
           SurfaceTransformFlagBitsKHR
forall a. Zero a => a
zero


-- | VkCommandBufferInheritanceRenderPassTransformInfoQCOM - Structure
-- describing transformed render pass parameters command buffer
--
-- = Description
--
-- When the secondary is recorded to execute within a render pass instance
-- using 'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands', the
-- render pass transform parameters of the secondary command buffer /must/
-- be consistent with the render pass transform parameters specified for
-- the render pass instance. In particular, the @transform@ and
-- @renderArea@ for command buffer /must/ be identical to the @transform@
-- and @renderArea@ of the render pass instance.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- 'Vulkan.Core10.FundamentalTypes.Rect2D',
-- 'Vulkan.Core10.Enums.StructureType.StructureType',
-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagBitsKHR'
data CommandBufferInheritanceRenderPassTransformInfoQCOM = CommandBufferInheritanceRenderPassTransformInfoQCOM
  { -- | @transform@ is a
    -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagBitsKHR' value
    -- describing the transform to be applied to the render pass.
    --
    -- @transform@ /must/ be
    -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
    -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',
    -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',
    -- or
    -- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR'
    CommandBufferInheritanceRenderPassTransformInfoQCOM
-> SurfaceTransformFlagBitsKHR
transform :: SurfaceTransformFlagBitsKHR
  , -- | @renderArea@ is the render area that is affected by the command buffer.
    CommandBufferInheritanceRenderPassTransformInfoQCOM -> Rect2D
renderArea :: Rect2D
  }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (CommandBufferInheritanceRenderPassTransformInfoQCOM)
#endif
deriving instance Show CommandBufferInheritanceRenderPassTransformInfoQCOM

instance ToCStruct CommandBufferInheritanceRenderPassTransformInfoQCOM where
  withCStruct :: CommandBufferInheritanceRenderPassTransformInfoQCOM
-> (Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
    -> IO b)
-> IO b
withCStruct x :: CommandBufferInheritanceRenderPassTransformInfoQCOM
x f :: Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM -> IO b
f = Int
-> Int
-> (Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
    -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 40 8 ((Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM -> IO b)
 -> IO b)
-> (Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
    -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
p -> Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
-> CommandBufferInheritanceRenderPassTransformInfoQCOM
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
p CommandBufferInheritanceRenderPassTransformInfoQCOM
x (Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM -> IO b
f Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
p)
  pokeCStruct :: Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
-> CommandBufferInheritanceRenderPassTransformInfoQCOM
-> IO b
-> IO b
pokeCStruct p :: Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
p CommandBufferInheritanceRenderPassTransformInfoQCOM{..} f :: 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 (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 CommandBufferInheritanceRenderPassTransformInfoQCOM
p Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM)
    IO () -> ContT b IO ()
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 CommandBufferInheritanceRenderPassTransformInfoQCOM
p Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    IO () -> ContT b IO ()
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 SurfaceTransformFlagBitsKHR
-> SurfaceTransformFlagBitsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
p Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
-> Int -> Ptr SurfaceTransformFlagBitsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR)) (SurfaceTransformFlagBitsKHR
transform)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Rect2D -> Rect2D -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
p Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
-> Int -> Ptr Rect2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Rect2D)) (Rect2D
renderArea) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO b -> ContT b IO b
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 = 40
  cStructAlignment :: Int
cStructAlignment = 8
  pokeZeroCStruct :: Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
-> IO b -> IO b
pokeZeroCStruct p :: Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
p f :: 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 (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 CommandBufferInheritanceRenderPassTransformInfoQCOM
p Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM)
    IO () -> ContT b IO ()
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 CommandBufferInheritanceRenderPassTransformInfoQCOM
p Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    IO () -> ContT b IO ()
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 SurfaceTransformFlagBitsKHR
-> SurfaceTransformFlagBitsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
p Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
-> Int -> Ptr SurfaceTransformFlagBitsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR)) (SurfaceTransformFlagBitsKHR
forall a. Zero a => a
zero)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Rect2D -> Rect2D -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
p Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
-> Int -> Ptr Rect2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Rect2D)) (Rect2D
forall a. Zero a => a
zero) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO b -> ContT b IO b
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 FromCStruct CommandBufferInheritanceRenderPassTransformInfoQCOM where
  peekCStruct :: Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
-> IO CommandBufferInheritanceRenderPassTransformInfoQCOM
peekCStruct p :: Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
p = do
    SurfaceTransformFlagBitsKHR
transform <- Ptr SurfaceTransformFlagBitsKHR -> IO SurfaceTransformFlagBitsKHR
forall a. Storable a => Ptr a -> IO a
peek @SurfaceTransformFlagBitsKHR ((Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
p Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
-> Int -> Ptr SurfaceTransformFlagBitsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR))
    Rect2D
renderArea <- Ptr Rect2D -> IO Rect2D
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @Rect2D ((Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
p Ptr CommandBufferInheritanceRenderPassTransformInfoQCOM
-> Int -> Ptr Rect2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Rect2D))
    CommandBufferInheritanceRenderPassTransformInfoQCOM
-> IO CommandBufferInheritanceRenderPassTransformInfoQCOM
forall (f :: * -> *) a. Applicative f => a -> f a
pure (CommandBufferInheritanceRenderPassTransformInfoQCOM
 -> IO CommandBufferInheritanceRenderPassTransformInfoQCOM)
-> CommandBufferInheritanceRenderPassTransformInfoQCOM
-> IO CommandBufferInheritanceRenderPassTransformInfoQCOM
forall a b. (a -> b) -> a -> b
$ SurfaceTransformFlagBitsKHR
-> Rect2D -> CommandBufferInheritanceRenderPassTransformInfoQCOM
CommandBufferInheritanceRenderPassTransformInfoQCOM
             SurfaceTransformFlagBitsKHR
transform Rect2D
renderArea

instance Zero CommandBufferInheritanceRenderPassTransformInfoQCOM where
  zero :: CommandBufferInheritanceRenderPassTransformInfoQCOM
zero = SurfaceTransformFlagBitsKHR
-> Rect2D -> CommandBufferInheritanceRenderPassTransformInfoQCOM
CommandBufferInheritanceRenderPassTransformInfoQCOM
           SurfaceTransformFlagBitsKHR
forall a. Zero a => a
zero
           Rect2D
forall a. Zero a => a
zero


type QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION"
pattern QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION :: forall a . Integral a => a
pattern $bQCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION :: a
$mQCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1


type QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform"

-- No documentation found for TopLevel "VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME"
pattern QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bQCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME :: a
$mQCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME :: forall r a.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform"