{-# language CPP #-}
module Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color ( PipelineCoverageToColorStateCreateInfoNV(..)
, PipelineCoverageToColorStateCreateFlagsNV(..)
, NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION
, pattern NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION
, NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME
, pattern NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME
) where
import Foreign.Marshal.Alloc (allocaBytesAligned)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Read (choose)
import GHC.Read (expectP)
import GHC.Read (parens)
import GHC.Show (showParen)
import GHC.Show (showString)
import Numeric (showHex)
import Text.ParserCombinators.ReadPrec ((+++))
import Text.ParserCombinators.ReadPrec (prec)
import Text.ParserCombinators.ReadPrec (step)
import Data.Bits (Bits)
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 Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import Data.Word (Word32)
import Text.Read.Lex (Lexeme(Ident))
import Data.Kind (Type)
import Graphics.Vulkan.Core10.BaseType (bool32ToBool)
import Graphics.Vulkan.Core10.BaseType (boolToBool32)
import Graphics.Vulkan.Core10.BaseType (Bool32)
import Graphics.Vulkan.Core10.BaseType (Flags)
import Graphics.Vulkan.CStruct (FromCStruct)
import Graphics.Vulkan.CStruct (FromCStruct(..))
import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)
import Graphics.Vulkan.CStruct (ToCStruct)
import Graphics.Vulkan.CStruct (ToCStruct(..))
import Graphics.Vulkan.Zero (Zero)
import Graphics.Vulkan.Zero (Zero(..))
import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV))
data PipelineCoverageToColorStateCreateInfoNV = PipelineCoverageToColorStateCreateInfoNV
{
flags :: PipelineCoverageToColorStateCreateFlagsNV
,
coverageToColorEnable :: Bool
,
coverageToColorLocation :: Word32
}
deriving (Typeable)
deriving instance Show PipelineCoverageToColorStateCreateInfoNV
instance ToCStruct PipelineCoverageToColorStateCreateInfoNV where
withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)
pokeCStruct p PipelineCoverageToColorStateCreateInfoNV{..} f = do
poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV)
poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
poke ((p `plusPtr` 16 :: Ptr PipelineCoverageToColorStateCreateFlagsNV)) (flags)
poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (coverageToColorEnable))
poke ((p `plusPtr` 24 :: Ptr Word32)) (coverageToColorLocation)
f
cStructSize = 32
cStructAlignment = 8
pokeZeroCStruct p f = do
poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV)
poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
f
instance FromCStruct PipelineCoverageToColorStateCreateInfoNV where
peekCStruct p = do
flags <- peek @PipelineCoverageToColorStateCreateFlagsNV ((p `plusPtr` 16 :: Ptr PipelineCoverageToColorStateCreateFlagsNV))
coverageToColorEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
coverageToColorLocation <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
pure $ PipelineCoverageToColorStateCreateInfoNV
flags (bool32ToBool coverageToColorEnable) coverageToColorLocation
instance Storable PipelineCoverageToColorStateCreateInfoNV where
sizeOf ~_ = 32
alignment ~_ = 8
peek = peekCStruct
poke ptr poked = pokeCStruct ptr poked (pure ())
instance Zero PipelineCoverageToColorStateCreateInfoNV where
zero = PipelineCoverageToColorStateCreateInfoNV
zero
zero
zero
newtype PipelineCoverageToColorStateCreateFlagsNV = PipelineCoverageToColorStateCreateFlagsNV Flags
deriving newtype (Eq, Ord, Storable, Zero, Bits)
instance Show PipelineCoverageToColorStateCreateFlagsNV where
showsPrec p = \case
PipelineCoverageToColorStateCreateFlagsNV x -> showParen (p >= 11) (showString "PipelineCoverageToColorStateCreateFlagsNV 0x" . showHex x)
instance Read PipelineCoverageToColorStateCreateFlagsNV where
readPrec = parens (choose []
+++
prec 10 (do
expectP (Ident "PipelineCoverageToColorStateCreateFlagsNV")
v <- step readPrec
pure (PipelineCoverageToColorStateCreateFlagsNV v)))
type NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1
pattern NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION :: forall a . Integral a => a
pattern NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1
type NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color"
pattern NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color"