{-# OPTIONS_HADDOCK ignore-exports#-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE Strict #-}
{-# LANGUAGE TypeSynonymInstances #-}
module Graphics.Vulkan.Types.Enum.SubgroupFeatureFlags
(VkSubgroupFeatureBitmask(VkSubgroupFeatureBitmask,
VkSubgroupFeatureFlags, VkSubgroupFeatureFlagBits,
VK_SUBGROUP_FEATURE_BASIC_BIT, VK_SUBGROUP_FEATURE_VOTE_BIT,
VK_SUBGROUP_FEATURE_ARITHMETIC_BIT, VK_SUBGROUP_FEATURE_BALLOT_BIT,
VK_SUBGROUP_FEATURE_SHUFFLE_BIT,
VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT,
VK_SUBGROUP_FEATURE_CLUSTERED_BIT, VK_SUBGROUP_FEATURE_QUAD_BIT),
VkSubgroupFeatureFlags, VkSubgroupFeatureFlagBits)
where
import Data.Bits (Bits, FiniteBits)
import Foreign.Storable (Storable)
import GHC.Read (choose, expectP)
import Graphics.Vulkan.Marshal (FlagBit, FlagMask, FlagType)
import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
import Text.ParserCombinators.ReadPrec (prec, step, (+++))
import Text.Read (Read (..), parens)
import Text.Read.Lex (Lexeme (..))
newtype VkSubgroupFeatureBitmask (a ::
FlagType) = VkSubgroupFeatureBitmask VkFlags
deriving (Eq, Ord, Storable)
type VkSubgroupFeatureFlags = VkSubgroupFeatureBitmask FlagMask
type VkSubgroupFeatureFlagBits = VkSubgroupFeatureBitmask FlagBit
pattern VkSubgroupFeatureFlagBits ::
VkFlags -> VkSubgroupFeatureBitmask FlagBit
pattern VkSubgroupFeatureFlagBits n = VkSubgroupFeatureBitmask n
pattern VkSubgroupFeatureFlags ::
VkFlags -> VkSubgroupFeatureBitmask FlagMask
pattern VkSubgroupFeatureFlags n = VkSubgroupFeatureBitmask n
deriving instance Bits (VkSubgroupFeatureBitmask FlagMask)
deriving instance FiniteBits (VkSubgroupFeatureBitmask FlagMask)
instance Show (VkSubgroupFeatureBitmask a) where
showsPrec _ VK_SUBGROUP_FEATURE_BASIC_BIT
= showString "VK_SUBGROUP_FEATURE_BASIC_BIT"
showsPrec _ VK_SUBGROUP_FEATURE_VOTE_BIT
= showString "VK_SUBGROUP_FEATURE_VOTE_BIT"
showsPrec _ VK_SUBGROUP_FEATURE_ARITHMETIC_BIT
= showString "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"
showsPrec _ VK_SUBGROUP_FEATURE_BALLOT_BIT
= showString "VK_SUBGROUP_FEATURE_BALLOT_BIT"
showsPrec _ VK_SUBGROUP_FEATURE_SHUFFLE_BIT
= showString "VK_SUBGROUP_FEATURE_SHUFFLE_BIT"
showsPrec _ VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT
= showString "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"
showsPrec _ VK_SUBGROUP_FEATURE_CLUSTERED_BIT
= showString "VK_SUBGROUP_FEATURE_CLUSTERED_BIT"
showsPrec _ VK_SUBGROUP_FEATURE_QUAD_BIT
= showString "VK_SUBGROUP_FEATURE_QUAD_BIT"
showsPrec p (VkSubgroupFeatureBitmask x)
= showParen (p >= 11)
(showString "VkSubgroupFeatureBitmask " . showsPrec 11 x)
instance Read (VkSubgroupFeatureBitmask a) where
readPrec
= parens
(choose
[("VK_SUBGROUP_FEATURE_BASIC_BIT",
pure VK_SUBGROUP_FEATURE_BASIC_BIT),
("VK_SUBGROUP_FEATURE_VOTE_BIT",
pure VK_SUBGROUP_FEATURE_VOTE_BIT),
("VK_SUBGROUP_FEATURE_ARITHMETIC_BIT",
pure VK_SUBGROUP_FEATURE_ARITHMETIC_BIT),
("VK_SUBGROUP_FEATURE_BALLOT_BIT",
pure VK_SUBGROUP_FEATURE_BALLOT_BIT),
("VK_SUBGROUP_FEATURE_SHUFFLE_BIT",
pure VK_SUBGROUP_FEATURE_SHUFFLE_BIT),
("VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT",
pure VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT),
("VK_SUBGROUP_FEATURE_CLUSTERED_BIT",
pure VK_SUBGROUP_FEATURE_CLUSTERED_BIT),
("VK_SUBGROUP_FEATURE_QUAD_BIT",
pure VK_SUBGROUP_FEATURE_QUAD_BIT)]
+++
prec 10
(expectP (Ident "VkSubgroupFeatureBitmask") >>
(VkSubgroupFeatureBitmask <$> step readPrec)))
pattern VK_SUBGROUP_FEATURE_BASIC_BIT :: VkSubgroupFeatureBitmask a
pattern VK_SUBGROUP_FEATURE_BASIC_BIT = VkSubgroupFeatureBitmask 1
pattern VK_SUBGROUP_FEATURE_VOTE_BIT :: VkSubgroupFeatureBitmask a
pattern VK_SUBGROUP_FEATURE_VOTE_BIT = VkSubgroupFeatureBitmask 2
pattern VK_SUBGROUP_FEATURE_ARITHMETIC_BIT ::
VkSubgroupFeatureBitmask a
pattern VK_SUBGROUP_FEATURE_ARITHMETIC_BIT =
VkSubgroupFeatureBitmask 4
pattern VK_SUBGROUP_FEATURE_BALLOT_BIT ::
VkSubgroupFeatureBitmask a
pattern VK_SUBGROUP_FEATURE_BALLOT_BIT = VkSubgroupFeatureBitmask 8
pattern VK_SUBGROUP_FEATURE_SHUFFLE_BIT ::
VkSubgroupFeatureBitmask a
pattern VK_SUBGROUP_FEATURE_SHUFFLE_BIT =
VkSubgroupFeatureBitmask 16
pattern VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT ::
VkSubgroupFeatureBitmask a
pattern VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT =
VkSubgroupFeatureBitmask 32
pattern VK_SUBGROUP_FEATURE_CLUSTERED_BIT ::
VkSubgroupFeatureBitmask a
pattern VK_SUBGROUP_FEATURE_CLUSTERED_BIT =
VkSubgroupFeatureBitmask 64
pattern VK_SUBGROUP_FEATURE_QUAD_BIT :: VkSubgroupFeatureBitmask a
pattern VK_SUBGROUP_FEATURE_QUAD_BIT = VkSubgroupFeatureBitmask 128