{-# language CPP #-}
module Vulkan.Extensions.VK_HUAWEI_hdr_vivid ( HdrVividDynamicMetadataHUAWEI(..)
, PhysicalDeviceHdrVividFeaturesHUAWEI(..)
, HUAWEI_HDR_VIVID_SPEC_VERSION
, pattern HUAWEI_HDR_VIVID_SPEC_VERSION
, HUAWEI_HDR_VIVID_EXTENSION_NAME
, pattern HUAWEI_HDR_VIVID_EXTENSION_NAME
) where
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Data.Coerce (coerce)
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.C.Types (CSize)
import Foreign.C.Types (CSize(..))
import Foreign.C.Types (CSize(CSize))
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.Word (Word64)
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_HDR_VIVID_DYNAMIC_METADATA_HUAWEI))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI))
data HdrVividDynamicMetadataHUAWEI = HdrVividDynamicMetadataHUAWEI
{
HdrVividDynamicMetadataHUAWEI -> Word64
dynamicMetadataSize :: Word64
,
HdrVividDynamicMetadataHUAWEI -> Ptr ()
dynamicMetadata :: Ptr ()
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (HdrVividDynamicMetadataHUAWEI)
#endif
deriving instance Show HdrVividDynamicMetadataHUAWEI
instance ToCStruct HdrVividDynamicMetadataHUAWEI where
withCStruct :: forall b.
HdrVividDynamicMetadataHUAWEI
-> (Ptr HdrVividDynamicMetadataHUAWEI -> IO b) -> IO b
withCStruct HdrVividDynamicMetadataHUAWEI
x Ptr HdrVividDynamicMetadataHUAWEI -> IO b
f = Int -> (Ptr HdrVividDynamicMetadataHUAWEI -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr HdrVividDynamicMetadataHUAWEI -> IO b) -> IO b)
-> (Ptr HdrVividDynamicMetadataHUAWEI -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr HdrVividDynamicMetadataHUAWEI
p -> Ptr HdrVividDynamicMetadataHUAWEI
-> HdrVividDynamicMetadataHUAWEI -> IO b -> IO b
forall b.
Ptr HdrVividDynamicMetadataHUAWEI
-> HdrVividDynamicMetadataHUAWEI -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr HdrVividDynamicMetadataHUAWEI
p HdrVividDynamicMetadataHUAWEI
x (Ptr HdrVividDynamicMetadataHUAWEI -> IO b
f Ptr HdrVividDynamicMetadataHUAWEI
p)
pokeCStruct :: forall b.
Ptr HdrVividDynamicMetadataHUAWEI
-> HdrVividDynamicMetadataHUAWEI -> IO b -> IO b
pokeCStruct Ptr HdrVividDynamicMetadataHUAWEI
p HdrVividDynamicMetadataHUAWEI{Word64
Ptr ()
dynamicMetadataSize :: HdrVividDynamicMetadataHUAWEI -> Word64
dynamicMetadata :: HdrVividDynamicMetadataHUAWEI -> Ptr ()
dynamicMetadataSize :: Word64
dynamicMetadata :: Ptr ()
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr HdrVividDynamicMetadataHUAWEI
p Ptr HdrVividDynamicMetadataHUAWEI -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr HdrVividDynamicMetadataHUAWEI
p Ptr HdrVividDynamicMetadataHUAWEI -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr CSize -> CSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr HdrVividDynamicMetadataHUAWEI
p Ptr HdrVividDynamicMetadataHUAWEI -> Int -> Ptr CSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr CSize)) (Word64 -> CSize
CSize (Word64
dynamicMetadataSize))
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr HdrVividDynamicMetadataHUAWEI
p Ptr HdrVividDynamicMetadataHUAWEI -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ()))) (Ptr ()
dynamicMetadata)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr HdrVividDynamicMetadataHUAWEI -> IO b -> IO b
pokeZeroCStruct Ptr HdrVividDynamicMetadataHUAWEI
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr HdrVividDynamicMetadataHUAWEI
p Ptr HdrVividDynamicMetadataHUAWEI -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr HdrVividDynamicMetadataHUAWEI
p Ptr HdrVividDynamicMetadataHUAWEI -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr CSize -> CSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr HdrVividDynamicMetadataHUAWEI
p Ptr HdrVividDynamicMetadataHUAWEI -> Int -> Ptr CSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr CSize)) (Word64 -> CSize
CSize (Word64
forall a. Zero a => a
zero))
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr HdrVividDynamicMetadataHUAWEI
p Ptr HdrVividDynamicMetadataHUAWEI -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ()))) (Ptr ()
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct HdrVividDynamicMetadataHUAWEI where
peekCStruct :: Ptr HdrVividDynamicMetadataHUAWEI
-> IO HdrVividDynamicMetadataHUAWEI
peekCStruct Ptr HdrVividDynamicMetadataHUAWEI
p = do
dynamicMetadataSize <- forall a. Storable a => Ptr a -> IO a
peek @CSize ((Ptr HdrVividDynamicMetadataHUAWEI
p Ptr HdrVividDynamicMetadataHUAWEI -> Int -> Ptr CSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr CSize))
pDynamicMetadata <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))
pure $ HdrVividDynamicMetadataHUAWEI
(coerce @CSize @Word64 dynamicMetadataSize) pDynamicMetadata
instance Storable HdrVividDynamicMetadataHUAWEI where
sizeOf :: HdrVividDynamicMetadataHUAWEI -> Int
sizeOf ~HdrVividDynamicMetadataHUAWEI
_ = Int
32
alignment :: HdrVividDynamicMetadataHUAWEI -> Int
alignment ~HdrVividDynamicMetadataHUAWEI
_ = Int
8
peek :: Ptr HdrVividDynamicMetadataHUAWEI
-> IO HdrVividDynamicMetadataHUAWEI
peek = Ptr HdrVividDynamicMetadataHUAWEI
-> IO HdrVividDynamicMetadataHUAWEI
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr HdrVividDynamicMetadataHUAWEI
-> HdrVividDynamicMetadataHUAWEI -> IO ()
poke Ptr HdrVividDynamicMetadataHUAWEI
ptr HdrVividDynamicMetadataHUAWEI
poked = Ptr HdrVividDynamicMetadataHUAWEI
-> HdrVividDynamicMetadataHUAWEI -> IO () -> IO ()
forall b.
Ptr HdrVividDynamicMetadataHUAWEI
-> HdrVividDynamicMetadataHUAWEI -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr HdrVividDynamicMetadataHUAWEI
ptr HdrVividDynamicMetadataHUAWEI
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero HdrVividDynamicMetadataHUAWEI where
zero :: HdrVividDynamicMetadataHUAWEI
zero = Word64 -> Ptr () -> HdrVividDynamicMetadataHUAWEI
HdrVividDynamicMetadataHUAWEI
Word64
forall a. Zero a => a
zero
Ptr ()
forall a. Zero a => a
zero
data PhysicalDeviceHdrVividFeaturesHUAWEI = PhysicalDeviceHdrVividFeaturesHUAWEI
{
PhysicalDeviceHdrVividFeaturesHUAWEI -> Bool
hdrVivid :: Bool }
deriving (Typeable, PhysicalDeviceHdrVividFeaturesHUAWEI
-> PhysicalDeviceHdrVividFeaturesHUAWEI -> Bool
(PhysicalDeviceHdrVividFeaturesHUAWEI
-> PhysicalDeviceHdrVividFeaturesHUAWEI -> Bool)
-> (PhysicalDeviceHdrVividFeaturesHUAWEI
-> PhysicalDeviceHdrVividFeaturesHUAWEI -> Bool)
-> Eq PhysicalDeviceHdrVividFeaturesHUAWEI
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceHdrVividFeaturesHUAWEI
-> PhysicalDeviceHdrVividFeaturesHUAWEI -> Bool
== :: PhysicalDeviceHdrVividFeaturesHUAWEI
-> PhysicalDeviceHdrVividFeaturesHUAWEI -> Bool
$c/= :: PhysicalDeviceHdrVividFeaturesHUAWEI
-> PhysicalDeviceHdrVividFeaturesHUAWEI -> Bool
/= :: PhysicalDeviceHdrVividFeaturesHUAWEI
-> PhysicalDeviceHdrVividFeaturesHUAWEI -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceHdrVividFeaturesHUAWEI)
#endif
deriving instance Show PhysicalDeviceHdrVividFeaturesHUAWEI
instance ToCStruct PhysicalDeviceHdrVividFeaturesHUAWEI where
withCStruct :: forall b.
PhysicalDeviceHdrVividFeaturesHUAWEI
-> (Ptr PhysicalDeviceHdrVividFeaturesHUAWEI -> IO b) -> IO b
withCStruct PhysicalDeviceHdrVividFeaturesHUAWEI
x Ptr PhysicalDeviceHdrVividFeaturesHUAWEI -> IO b
f = Int -> (Ptr PhysicalDeviceHdrVividFeaturesHUAWEI -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceHdrVividFeaturesHUAWEI -> IO b) -> IO b)
-> (Ptr PhysicalDeviceHdrVividFeaturesHUAWEI -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
p -> Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
-> PhysicalDeviceHdrVividFeaturesHUAWEI -> IO b -> IO b
forall b.
Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
-> PhysicalDeviceHdrVividFeaturesHUAWEI -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
p PhysicalDeviceHdrVividFeaturesHUAWEI
x (Ptr PhysicalDeviceHdrVividFeaturesHUAWEI -> IO b
f Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
-> PhysicalDeviceHdrVividFeaturesHUAWEI -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
p PhysicalDeviceHdrVividFeaturesHUAWEI{Bool
hdrVivid :: PhysicalDeviceHdrVividFeaturesHUAWEI -> Bool
hdrVivid :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
p Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
p Ptr PhysicalDeviceHdrVividFeaturesHUAWEI -> 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 PhysicalDeviceHdrVividFeaturesHUAWEI
p Ptr PhysicalDeviceHdrVividFeaturesHUAWEI -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
hdrVivid))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr PhysicalDeviceHdrVividFeaturesHUAWEI -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
p Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
p Ptr PhysicalDeviceHdrVividFeaturesHUAWEI -> 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 PhysicalDeviceHdrVividFeaturesHUAWEI
p Ptr PhysicalDeviceHdrVividFeaturesHUAWEI -> 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 PhysicalDeviceHdrVividFeaturesHUAWEI where
peekCStruct :: Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
-> IO PhysicalDeviceHdrVividFeaturesHUAWEI
peekCStruct Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
p = do
hdrVivid <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
p Ptr PhysicalDeviceHdrVividFeaturesHUAWEI -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
pure $ PhysicalDeviceHdrVividFeaturesHUAWEI
(bool32ToBool hdrVivid)
instance Storable PhysicalDeviceHdrVividFeaturesHUAWEI where
sizeOf :: PhysicalDeviceHdrVividFeaturesHUAWEI -> Int
sizeOf ~PhysicalDeviceHdrVividFeaturesHUAWEI
_ = Int
24
alignment :: PhysicalDeviceHdrVividFeaturesHUAWEI -> Int
alignment ~PhysicalDeviceHdrVividFeaturesHUAWEI
_ = Int
8
peek :: Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
-> IO PhysicalDeviceHdrVividFeaturesHUAWEI
peek = Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
-> IO PhysicalDeviceHdrVividFeaturesHUAWEI
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
-> PhysicalDeviceHdrVividFeaturesHUAWEI -> IO ()
poke Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
ptr PhysicalDeviceHdrVividFeaturesHUAWEI
poked = Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
-> PhysicalDeviceHdrVividFeaturesHUAWEI -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
-> PhysicalDeviceHdrVividFeaturesHUAWEI -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceHdrVividFeaturesHUAWEI
ptr PhysicalDeviceHdrVividFeaturesHUAWEI
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceHdrVividFeaturesHUAWEI where
zero :: PhysicalDeviceHdrVividFeaturesHUAWEI
zero = Bool -> PhysicalDeviceHdrVividFeaturesHUAWEI
PhysicalDeviceHdrVividFeaturesHUAWEI
Bool
forall a. Zero a => a
zero
type HUAWEI_HDR_VIVID_SPEC_VERSION = 1
pattern HUAWEI_HDR_VIVID_SPEC_VERSION :: forall a . Integral a => a
pattern $mHUAWEI_HDR_VIVID_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bHUAWEI_HDR_VIVID_SPEC_VERSION :: forall a. Integral a => a
HUAWEI_HDR_VIVID_SPEC_VERSION = 1
type HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid"
pattern HUAWEI_HDR_VIVID_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mHUAWEI_HDR_VIVID_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bHUAWEI_HDR_VIVID_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
HUAWEI_HDR_VIVID_EXTENSION_NAME = "VK_HUAWEI_hdr_vivid"