vulkan-3.4: src/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs
{-# language CPP #-}
module Vulkan.Core11.Enums.SubgroupFeatureFlagBits ( SubgroupFeatureFlagBits( SUBGROUP_FEATURE_BASIC_BIT
, SUBGROUP_FEATURE_VOTE_BIT
, SUBGROUP_FEATURE_ARITHMETIC_BIT
, SUBGROUP_FEATURE_BALLOT_BIT
, SUBGROUP_FEATURE_SHUFFLE_BIT
, SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT
, SUBGROUP_FEATURE_CLUSTERED_BIT
, SUBGROUP_FEATURE_QUAD_BIT
, SUBGROUP_FEATURE_PARTITIONED_BIT_NV
, ..
)
, SubgroupFeatureFlags
) where
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 Foreign.Storable (Storable)
import GHC.Read (Read(readPrec))
import Text.Read.Lex (Lexeme(Ident))
import Vulkan.Core10.FundamentalTypes (Flags)
import Vulkan.Zero (Zero)
-- | VkSubgroupFeatureFlagBits - Enum describing what group operations are
-- supported with subgroup scope
--
-- = See Also
--
-- 'SubgroupFeatureFlags'
newtype SubgroupFeatureFlagBits = SubgroupFeatureFlagBits Flags
deriving newtype (Eq, Ord, Storable, Zero, Bits)
-- | 'SUBGROUP_FEATURE_BASIC_BIT' specifies the device will accept SPIR-V
-- shader modules containing the @GroupNonUniform@ capability.
pattern SUBGROUP_FEATURE_BASIC_BIT = SubgroupFeatureFlagBits 0x00000001
-- | 'SUBGROUP_FEATURE_VOTE_BIT' specifies the device will accept SPIR-V
-- shader modules containing the @GroupNonUniformVote@ capability.
pattern SUBGROUP_FEATURE_VOTE_BIT = SubgroupFeatureFlagBits 0x00000002
-- | 'SUBGROUP_FEATURE_ARITHMETIC_BIT' specifies the device will accept
-- SPIR-V shader modules containing the @GroupNonUniformArithmetic@
-- capability.
pattern SUBGROUP_FEATURE_ARITHMETIC_BIT = SubgroupFeatureFlagBits 0x00000004
-- | 'SUBGROUP_FEATURE_BALLOT_BIT' specifies the device will accept SPIR-V
-- shader modules containing the @GroupNonUniformBallot@ capability.
pattern SUBGROUP_FEATURE_BALLOT_BIT = SubgroupFeatureFlagBits 0x00000008
-- | 'SUBGROUP_FEATURE_SHUFFLE_BIT' specifies the device will accept SPIR-V
-- shader modules containing the @GroupNonUniformShuffle@ capability.
pattern SUBGROUP_FEATURE_SHUFFLE_BIT = SubgroupFeatureFlagBits 0x00000010
-- | 'SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT' specifies the device will accept
-- SPIR-V shader modules containing the @GroupNonUniformShuffleRelative@
-- capability.
pattern SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = SubgroupFeatureFlagBits 0x00000020
-- | 'SUBGROUP_FEATURE_CLUSTERED_BIT' specifies the device will accept SPIR-V
-- shader modules containing the @GroupNonUniformClustered@ capability.
pattern SUBGROUP_FEATURE_CLUSTERED_BIT = SubgroupFeatureFlagBits 0x00000040
-- | 'SUBGROUP_FEATURE_QUAD_BIT' specifies the device will accept SPIR-V
-- shader modules containing the @GroupNonUniformQuad@ capability.
pattern SUBGROUP_FEATURE_QUAD_BIT = SubgroupFeatureFlagBits 0x00000080
-- | 'SUBGROUP_FEATURE_PARTITIONED_BIT_NV' specifies the device will accept
-- SPIR-V shader modules containing the @GroupNonUniformPartitionedNV@
-- capability.
pattern SUBGROUP_FEATURE_PARTITIONED_BIT_NV = SubgroupFeatureFlagBits 0x00000100
type SubgroupFeatureFlags = SubgroupFeatureFlagBits
instance Show SubgroupFeatureFlagBits where
showsPrec p = \case
SUBGROUP_FEATURE_BASIC_BIT -> showString "SUBGROUP_FEATURE_BASIC_BIT"
SUBGROUP_FEATURE_VOTE_BIT -> showString "SUBGROUP_FEATURE_VOTE_BIT"
SUBGROUP_FEATURE_ARITHMETIC_BIT -> showString "SUBGROUP_FEATURE_ARITHMETIC_BIT"
SUBGROUP_FEATURE_BALLOT_BIT -> showString "SUBGROUP_FEATURE_BALLOT_BIT"
SUBGROUP_FEATURE_SHUFFLE_BIT -> showString "SUBGROUP_FEATURE_SHUFFLE_BIT"
SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT -> showString "SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"
SUBGROUP_FEATURE_CLUSTERED_BIT -> showString "SUBGROUP_FEATURE_CLUSTERED_BIT"
SUBGROUP_FEATURE_QUAD_BIT -> showString "SUBGROUP_FEATURE_QUAD_BIT"
SUBGROUP_FEATURE_PARTITIONED_BIT_NV -> showString "SUBGROUP_FEATURE_PARTITIONED_BIT_NV"
SubgroupFeatureFlagBits x -> showParen (p >= 11) (showString "SubgroupFeatureFlagBits 0x" . showHex x)
instance Read SubgroupFeatureFlagBits where
readPrec = parens (choose [("SUBGROUP_FEATURE_BASIC_BIT", pure SUBGROUP_FEATURE_BASIC_BIT)
, ("SUBGROUP_FEATURE_VOTE_BIT", pure SUBGROUP_FEATURE_VOTE_BIT)
, ("SUBGROUP_FEATURE_ARITHMETIC_BIT", pure SUBGROUP_FEATURE_ARITHMETIC_BIT)
, ("SUBGROUP_FEATURE_BALLOT_BIT", pure SUBGROUP_FEATURE_BALLOT_BIT)
, ("SUBGROUP_FEATURE_SHUFFLE_BIT", pure SUBGROUP_FEATURE_SHUFFLE_BIT)
, ("SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT", pure SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT)
, ("SUBGROUP_FEATURE_CLUSTERED_BIT", pure SUBGROUP_FEATURE_CLUSTERED_BIT)
, ("SUBGROUP_FEATURE_QUAD_BIT", pure SUBGROUP_FEATURE_QUAD_BIT)
, ("SUBGROUP_FEATURE_PARTITIONED_BIT_NV", pure SUBGROUP_FEATURE_PARTITIONED_BIT_NV)]
+++
prec 10 (do
expectP (Ident "SubgroupFeatureFlagBits")
v <- step readPrec
pure (SubgroupFeatureFlagBits v)))