{-# OPTIONS_HADDOCK ignore-exports#-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# 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 Data.Data (Data) import Foreign.Storable (Storable) import GHC.Generics (Generic) 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, Data, Generic) 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) deriving instance Integral (VkSubgroupFeatureBitmask FlagMask) deriving instance Num (VkSubgroupFeatureBitmask FlagMask) deriving instance Bounded (VkSubgroupFeatureBitmask FlagMask) deriving instance Enum (VkSubgroupFeatureBitmask FlagMask) deriving instance Real (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))) -- | Basic subgroup operations -- -- bitpos = @0@ pattern VK_SUBGROUP_FEATURE_BASIC_BIT :: VkSubgroupFeatureBitmask a pattern VK_SUBGROUP_FEATURE_BASIC_BIT = VkSubgroupFeatureBitmask 1 -- | Vote subgroup operations -- -- bitpos = @1@ pattern VK_SUBGROUP_FEATURE_VOTE_BIT :: VkSubgroupFeatureBitmask a pattern VK_SUBGROUP_FEATURE_VOTE_BIT = VkSubgroupFeatureBitmask 2 -- | Arithmetic subgroup operations -- -- bitpos = @2@ pattern VK_SUBGROUP_FEATURE_ARITHMETIC_BIT :: VkSubgroupFeatureBitmask a pattern VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = VkSubgroupFeatureBitmask 4 -- | Ballot subgroup operations -- -- bitpos = @3@ pattern VK_SUBGROUP_FEATURE_BALLOT_BIT :: VkSubgroupFeatureBitmask a pattern VK_SUBGROUP_FEATURE_BALLOT_BIT = VkSubgroupFeatureBitmask 8 -- | Shuffle subgroup operations -- -- bitpos = @4@ pattern VK_SUBGROUP_FEATURE_SHUFFLE_BIT :: VkSubgroupFeatureBitmask a pattern VK_SUBGROUP_FEATURE_SHUFFLE_BIT = VkSubgroupFeatureBitmask 16 -- | Shuffle relative subgroup operations -- -- bitpos = @5@ pattern VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT :: VkSubgroupFeatureBitmask a pattern VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = VkSubgroupFeatureBitmask 32 -- | Clustered subgroup operations -- -- bitpos = @6@ pattern VK_SUBGROUP_FEATURE_CLUSTERED_BIT :: VkSubgroupFeatureBitmask a pattern VK_SUBGROUP_FEATURE_CLUSTERED_BIT = VkSubgroupFeatureBitmask 64 -- | Quad subgroup operations -- -- bitpos = @7@ pattern VK_SUBGROUP_FEATURE_QUAD_BIT :: VkSubgroupFeatureBitmask a pattern VK_SUBGROUP_FEATURE_QUAD_BIT = VkSubgroupFeatureBitmask 128