{-# language CPP #-}
-- | = Name
--
-- VK_HUAWEI_hdr_vivid - device extension
--
-- = VK_HUAWEI_hdr_vivid
--
-- [__Name String__]
--     @VK_HUAWEI_hdr_vivid@
--
-- [__Extension Type__]
--     Device extension
--
-- [__Registered Extension Number__]
--     591
--
-- [__Revision__]
--     1
--
-- [__Ratification Status__]
--     Not ratified
--
-- [__Extension and Version Dependencies__]
--         
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
--          or
--         
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
--     and
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain VK_KHR_swapchain>
--     and
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_hdr_metadata VK_EXT_hdr_metadata>
--
-- [__Contact__]
--
--     -   Zehui Lin
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_HUAWEI_hdr_vivid] @bactlink%0A*Here describe the issue or question you have about the VK_HUAWEI_hdr_vivid extension* >
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2024-10-08
--
-- [__IP Status__]
--     No known IP claims.
--
-- [__Contributors__]
--
--     -   Juntao Li, Huawei
--
--     -   Pan Gao, Huawei
--
--     -   Xiufeng Zhang, Huawei
--
--     -   Zehui Lin, Huawei
--
-- == Description
--
-- This extension allows applications to assign HDR Vivid (T\/UWA
-- 005.1-2022) metadata to swapchains.
--
-- HDR Vivid is an HDR standard released by UWA (UHD World Association). It
-- defines tone mapping from the metadata to better preserve the creator’s
-- intentions and achieve better consistency across devices with different
-- display capabilities.
--
-- == New Structures
--
-- -   Extending 'Vulkan.Extensions.VK_EXT_hdr_metadata.HdrMetadataEXT':
--
--     -   'HdrVividDynamicMetadataHUAWEI'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--     'Vulkan.Core10.Device.DeviceCreateInfo':
--
--     -   'PhysicalDeviceHdrVividFeaturesHUAWEI'
--
-- == New Enum Constants
--
-- -   'HUAWEI_HDR_VIVID_EXTENSION_NAME'
--
-- -   'HUAWEI_HDR_VIVID_SPEC_VERSION'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI'
--
-- == Version History
--
-- -   Revision 1, 2024-10-08 (Zehui Lin)
--
--     -   Initial version
--
-- == See Also
--
-- No cross-references are available
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_HUAWEI_hdr_vivid Vulkan Specification>.
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
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))
-- | VkHdrVividDynamicMetadataHUAWEI - specify HDR Vivid dynamic metadata
--
-- = Description
--
-- The HDR Vivid metadata is intended to be used as defined in the T\/UWA
-- 005.1-2022 specification. The validity and use of this data is outside
-- the scope of Vulkan.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_hdr_vivid VK_HUAWEI_hdr_vivid>,
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data HdrVividDynamicMetadataHUAWEI = HdrVividDynamicMetadataHUAWEI
  { -- | @dynamicMetadataSize@ is the size in bytes of the dynamic metadata.
    --
    -- #VUID-VkHdrVividDynamicMetadataHUAWEI-dynamicMetadataSize-arraylength#
    -- @dynamicMetadataSize@ /must/ be greater than @0@
    HdrVividDynamicMetadataHUAWEI -> Word64
dynamicMetadataSize :: Word64
  , -- | @pDynamicMetadata@ is a pointer to the dynamic metadata.
    --
    -- #VUID-VkHdrVividDynamicMetadataHUAWEI-pDynamicMetadata-parameter#
    -- @pDynamicMetadata@ /must/ be a valid pointer to an array of
    -- @dynamicMetadataSize@ bytes
    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


-- | VkPhysicalDeviceHdrVividFeaturesHUAWEI - Structure describing whether
-- HDR Vivid metadata is supported
--
-- = Description
--
-- If the 'PhysicalDeviceHdrVividFeaturesHUAWEI' structure is included in
-- the @pNext@ chain of the
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
-- structure passed to
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
-- it is filled in to indicate whether each corresponding feature is
-- supported. If the application wishes to use a
-- 'Vulkan.Core10.Handles.Device' with any features described by
-- 'PhysicalDeviceHdrVividFeaturesHUAWEI', it /must/ add an instance of the
-- structure, with the desired feature members set to
-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
-- 'Vulkan.Core10.Handles.Device'.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_hdr_vivid VK_HUAWEI_hdr_vivid>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceHdrVividFeaturesHUAWEI = PhysicalDeviceHdrVividFeaturesHUAWEI
  { -- | #features-hdrVivid# @hdrVivid@ specifies whether HDR Vivid metadata is
    -- supported.
    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

-- No documentation found for TopLevel "VK_HUAWEI_HDR_VIVID_SPEC_VERSION"
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"

-- No documentation found for TopLevel "VK_HUAWEI_HDR_VIVID_EXTENSION_NAME"
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"