{-# language CPP #-}
module Vulkan.Extensions.VK_NV_representative_fragment_test  ( PhysicalDeviceRepresentativeFragmentTestFeaturesNV(..)
                                                             , PipelineRepresentativeFragmentTestStateCreateInfoNV(..)
                                                             , NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION
                                                             , pattern NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION
                                                             , NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME
                                                             , pattern NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME
                                                             ) where

import Foreign.Marshal.Alloc (allocaBytesAligned)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
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.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV))
-- | VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV - Structure
-- describing the representative fragment test features that can be
-- supported by an implementation
--
-- = Members
--
-- The members of the 'PhysicalDeviceRepresentativeFragmentTestFeaturesNV'
-- structure describe the following features:
--
-- = Description
--
-- If the 'PhysicalDeviceRepresentativeFragmentTestFeaturesNV' structure is
-- included in the @pNext@ chain of
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
-- it is filled with values indicating whether the feature is supported.
-- 'PhysicalDeviceRepresentativeFragmentTestFeaturesNV' /can/ also be
-- included in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
-- to enable the feature.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceRepresentativeFragmentTestFeaturesNV = PhysicalDeviceRepresentativeFragmentTestFeaturesNV
  { -- | @representativeFragmentTest@ indicates whether the implementation
    -- supports the representative fragment test. See
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-rep-frag-test Representative Fragment Test>.
    PhysicalDeviceRepresentativeFragmentTestFeaturesNV -> Bool
representativeFragmentTest :: Bool }
  deriving (Typeable, PhysicalDeviceRepresentativeFragmentTestFeaturesNV
-> PhysicalDeviceRepresentativeFragmentTestFeaturesNV -> Bool
(PhysicalDeviceRepresentativeFragmentTestFeaturesNV
 -> PhysicalDeviceRepresentativeFragmentTestFeaturesNV -> Bool)
-> (PhysicalDeviceRepresentativeFragmentTestFeaturesNV
    -> PhysicalDeviceRepresentativeFragmentTestFeaturesNV -> Bool)
-> Eq PhysicalDeviceRepresentativeFragmentTestFeaturesNV
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceRepresentativeFragmentTestFeaturesNV
-> PhysicalDeviceRepresentativeFragmentTestFeaturesNV -> Bool
$c/= :: PhysicalDeviceRepresentativeFragmentTestFeaturesNV
-> PhysicalDeviceRepresentativeFragmentTestFeaturesNV -> Bool
== :: PhysicalDeviceRepresentativeFragmentTestFeaturesNV
-> PhysicalDeviceRepresentativeFragmentTestFeaturesNV -> Bool
$c== :: PhysicalDeviceRepresentativeFragmentTestFeaturesNV
-> PhysicalDeviceRepresentativeFragmentTestFeaturesNV -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceRepresentativeFragmentTestFeaturesNV)
#endif
deriving instance Show PhysicalDeviceRepresentativeFragmentTestFeaturesNV

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

instance FromCStruct PhysicalDeviceRepresentativeFragmentTestFeaturesNV where
  peekCStruct :: Ptr PhysicalDeviceRepresentativeFragmentTestFeaturesNV
-> IO PhysicalDeviceRepresentativeFragmentTestFeaturesNV
peekCStruct p :: Ptr PhysicalDeviceRepresentativeFragmentTestFeaturesNV
p = do
    Bool32
representativeFragmentTest <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceRepresentativeFragmentTestFeaturesNV
p Ptr PhysicalDeviceRepresentativeFragmentTestFeaturesNV
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Bool32))
    PhysicalDeviceRepresentativeFragmentTestFeaturesNV
-> IO PhysicalDeviceRepresentativeFragmentTestFeaturesNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceRepresentativeFragmentTestFeaturesNV
 -> IO PhysicalDeviceRepresentativeFragmentTestFeaturesNV)
-> PhysicalDeviceRepresentativeFragmentTestFeaturesNV
-> IO PhysicalDeviceRepresentativeFragmentTestFeaturesNV
forall a b. (a -> b) -> a -> b
$ Bool -> PhysicalDeviceRepresentativeFragmentTestFeaturesNV
PhysicalDeviceRepresentativeFragmentTestFeaturesNV
             (Bool32 -> Bool
bool32ToBool Bool32
representativeFragmentTest)

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

instance Zero PhysicalDeviceRepresentativeFragmentTestFeaturesNV where
  zero :: PhysicalDeviceRepresentativeFragmentTestFeaturesNV
zero = Bool -> PhysicalDeviceRepresentativeFragmentTestFeaturesNV
PhysicalDeviceRepresentativeFragmentTestFeaturesNV
           Bool
forall a. Zero a => a
zero


-- | VkPipelineRepresentativeFragmentTestStateCreateInfoNV - Structure
-- specifying representative fragment test
--
-- = Description
--
-- If this structure is not present, @representativeFragmentTestEnable@ is
-- considered to be 'Vulkan.Core10.FundamentalTypes.FALSE', and the
-- representative fragment test is disabled.
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest early fragment tests>
-- are not enabled in the active fragment shader, the representative
-- fragment shader test has no effect, even if enabled.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PipelineRepresentativeFragmentTestStateCreateInfoNV = PipelineRepresentativeFragmentTestStateCreateInfoNV
  { -- | @representativeFragmentTestEnable@ controls whether the representative
    -- fragment test is enabled.
    PipelineRepresentativeFragmentTestStateCreateInfoNV -> Bool
representativeFragmentTestEnable :: Bool }
  deriving (Typeable, PipelineRepresentativeFragmentTestStateCreateInfoNV
-> PipelineRepresentativeFragmentTestStateCreateInfoNV -> Bool
(PipelineRepresentativeFragmentTestStateCreateInfoNV
 -> PipelineRepresentativeFragmentTestStateCreateInfoNV -> Bool)
-> (PipelineRepresentativeFragmentTestStateCreateInfoNV
    -> PipelineRepresentativeFragmentTestStateCreateInfoNV -> Bool)
-> Eq PipelineRepresentativeFragmentTestStateCreateInfoNV
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipelineRepresentativeFragmentTestStateCreateInfoNV
-> PipelineRepresentativeFragmentTestStateCreateInfoNV -> Bool
$c/= :: PipelineRepresentativeFragmentTestStateCreateInfoNV
-> PipelineRepresentativeFragmentTestStateCreateInfoNV -> Bool
== :: PipelineRepresentativeFragmentTestStateCreateInfoNV
-> PipelineRepresentativeFragmentTestStateCreateInfoNV -> Bool
$c== :: PipelineRepresentativeFragmentTestStateCreateInfoNV
-> PipelineRepresentativeFragmentTestStateCreateInfoNV -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PipelineRepresentativeFragmentTestStateCreateInfoNV)
#endif
deriving instance Show PipelineRepresentativeFragmentTestStateCreateInfoNV

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

instance FromCStruct PipelineRepresentativeFragmentTestStateCreateInfoNV where
  peekCStruct :: Ptr PipelineRepresentativeFragmentTestStateCreateInfoNV
-> IO PipelineRepresentativeFragmentTestStateCreateInfoNV
peekCStruct p :: Ptr PipelineRepresentativeFragmentTestStateCreateInfoNV
p = do
    Bool32
representativeFragmentTestEnable <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PipelineRepresentativeFragmentTestStateCreateInfoNV
p Ptr PipelineRepresentativeFragmentTestStateCreateInfoNV
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Bool32))
    PipelineRepresentativeFragmentTestStateCreateInfoNV
-> IO PipelineRepresentativeFragmentTestStateCreateInfoNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PipelineRepresentativeFragmentTestStateCreateInfoNV
 -> IO PipelineRepresentativeFragmentTestStateCreateInfoNV)
-> PipelineRepresentativeFragmentTestStateCreateInfoNV
-> IO PipelineRepresentativeFragmentTestStateCreateInfoNV
forall a b. (a -> b) -> a -> b
$ Bool -> PipelineRepresentativeFragmentTestStateCreateInfoNV
PipelineRepresentativeFragmentTestStateCreateInfoNV
             (Bool32 -> Bool
bool32ToBool Bool32
representativeFragmentTestEnable)

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

instance Zero PipelineRepresentativeFragmentTestStateCreateInfoNV where
  zero :: PipelineRepresentativeFragmentTestStateCreateInfoNV
zero = Bool -> PipelineRepresentativeFragmentTestStateCreateInfoNV
PipelineRepresentativeFragmentTestStateCreateInfoNV
           Bool
forall a. Zero a => a
zero


type NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2

-- No documentation found for TopLevel "VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION"
pattern NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION :: forall a . Integral a => a
pattern $bNV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION :: a
$mNV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2


type NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test"

-- No documentation found for TopLevel "VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME"
pattern NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bNV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME :: a
$mNV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME :: forall r a.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test"