{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_image_compression_control_swapchain ( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(..)
, EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION
, pattern EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION
, EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME
, pattern EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME
) 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.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT))
data PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT = PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
{
PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT -> Bool
imageCompressionControlSwapchain :: Bool }
deriving (Typeable, PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> Bool
$c/= :: PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> Bool
== :: PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> Bool
$c== :: PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT)
#endif
deriving instance Show PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
instance ToCStruct PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT where
withCStruct :: forall b.
PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> (Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> IO b)
-> IO b
withCStruct PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
x Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
p PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
x (Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> IO b
f Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
p PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT{Bool
imageCompressionControlSwapchain :: Bool
$sel:imageCompressionControlSwapchain:PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT :: PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT -> Bool
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
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 PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
imageCompressionControlSwapchain))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
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 PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT where
peekCStruct :: Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> IO PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
peekCStruct Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
p = do
Bool32
imageCompressionControlSwapchain <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Bool -> PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
(Bool32 -> Bool
bool32ToBool Bool32
imageCompressionControlSwapchain)
instance Storable PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT where
sizeOf :: PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT -> Int
sizeOf ~PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
_ = Int
24
alignment :: PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT -> Int
alignment ~PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
_ = Int
8
peek :: Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> IO PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
-> IO ()
poke Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
ptr PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT where
zero :: PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
zero = Bool -> PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
forall a. Zero a => a
zero
type EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION = 1
pattern EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION :: forall a. Integral a => a
$mEXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION = 1
type EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME = "VK_EXT_image_compression_control_swapchain"
pattern EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mEXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME = "VK_EXT_image_compression_control_swapchain"