{-# language CPP #-}
-- No documentation found for Chapter "SampleCountFlagBits"
module Vulkan.Core10.Enums.SampleCountFlagBits  ( SampleCountFlags
                                                , SampleCountFlagBits( SAMPLE_COUNT_1_BIT
                                                                     , SAMPLE_COUNT_2_BIT
                                                                     , SAMPLE_COUNT_4_BIT
                                                                     , SAMPLE_COUNT_8_BIT
                                                                     , SAMPLE_COUNT_16_BIT
                                                                     , SAMPLE_COUNT_32_BIT
                                                                     , SAMPLE_COUNT_64_BIT
                                                                     , ..
                                                                     )
                                                ) where

import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import GHC.Show (showString)
import Numeric (showHex)
import Vulkan.Zero (Zero)
import Foreign.Storable (Storable)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Vulkan.Core10.FundamentalTypes (Flags)
type SampleCountFlags = SampleCountFlagBits

-- | VkSampleCountFlagBits - Bitmask specifying sample counts supported for
-- an image used for storage operations
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
-- 'Vulkan.Core10.Pass.AttachmentDescription',
-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',
-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD',
-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo',
-- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.FramebufferMixedSamplesCombinationNV',
-- 'Vulkan.Core10.Image.ImageCreateInfo',
-- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT',
-- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsPropertiesNV',
-- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRatePropertiesKHR',
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',
-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo',
-- 'SampleCountFlags',
-- 'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT',
-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetRasterizationSamplesEXT',
-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT',
-- 'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT',
-- 'Vulkan.Core10.SparseResourceMemoryManagement.getPhysicalDeviceSparseImageFormatProperties'
newtype SampleCountFlagBits = SampleCountFlagBits Flags
  deriving newtype (SampleCountFlagBits -> SampleCountFlagBits -> Bool
(SampleCountFlagBits -> SampleCountFlagBits -> Bool)
-> (SampleCountFlagBits -> SampleCountFlagBits -> Bool)
-> Eq SampleCountFlagBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SampleCountFlagBits -> SampleCountFlagBits -> Bool
== :: SampleCountFlagBits -> SampleCountFlagBits -> Bool
$c/= :: SampleCountFlagBits -> SampleCountFlagBits -> Bool
/= :: SampleCountFlagBits -> SampleCountFlagBits -> Bool
Eq, Eq SampleCountFlagBits
Eq SampleCountFlagBits =>
(SampleCountFlagBits -> SampleCountFlagBits -> Ordering)
-> (SampleCountFlagBits -> SampleCountFlagBits -> Bool)
-> (SampleCountFlagBits -> SampleCountFlagBits -> Bool)
-> (SampleCountFlagBits -> SampleCountFlagBits -> Bool)
-> (SampleCountFlagBits -> SampleCountFlagBits -> Bool)
-> (SampleCountFlagBits
    -> SampleCountFlagBits -> SampleCountFlagBits)
-> (SampleCountFlagBits
    -> SampleCountFlagBits -> SampleCountFlagBits)
-> Ord SampleCountFlagBits
SampleCountFlagBits -> SampleCountFlagBits -> Bool
SampleCountFlagBits -> SampleCountFlagBits -> Ordering
SampleCountFlagBits -> SampleCountFlagBits -> SampleCountFlagBits
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: SampleCountFlagBits -> SampleCountFlagBits -> Ordering
compare :: SampleCountFlagBits -> SampleCountFlagBits -> Ordering
$c< :: SampleCountFlagBits -> SampleCountFlagBits -> Bool
< :: SampleCountFlagBits -> SampleCountFlagBits -> Bool
$c<= :: SampleCountFlagBits -> SampleCountFlagBits -> Bool
<= :: SampleCountFlagBits -> SampleCountFlagBits -> Bool
$c> :: SampleCountFlagBits -> SampleCountFlagBits -> Bool
> :: SampleCountFlagBits -> SampleCountFlagBits -> Bool
$c>= :: SampleCountFlagBits -> SampleCountFlagBits -> Bool
>= :: SampleCountFlagBits -> SampleCountFlagBits -> Bool
$cmax :: SampleCountFlagBits -> SampleCountFlagBits -> SampleCountFlagBits
max :: SampleCountFlagBits -> SampleCountFlagBits -> SampleCountFlagBits
$cmin :: SampleCountFlagBits -> SampleCountFlagBits -> SampleCountFlagBits
min :: SampleCountFlagBits -> SampleCountFlagBits -> SampleCountFlagBits
Ord, Ptr SampleCountFlagBits -> IO SampleCountFlagBits
Ptr SampleCountFlagBits -> Int -> IO SampleCountFlagBits
Ptr SampleCountFlagBits -> Int -> SampleCountFlagBits -> IO ()
Ptr SampleCountFlagBits -> SampleCountFlagBits -> IO ()
SampleCountFlagBits -> Int
(SampleCountFlagBits -> Int)
-> (SampleCountFlagBits -> Int)
-> (Ptr SampleCountFlagBits -> Int -> IO SampleCountFlagBits)
-> (Ptr SampleCountFlagBits -> Int -> SampleCountFlagBits -> IO ())
-> (forall b. Ptr b -> Int -> IO SampleCountFlagBits)
-> (forall b. Ptr b -> Int -> SampleCountFlagBits -> IO ())
-> (Ptr SampleCountFlagBits -> IO SampleCountFlagBits)
-> (Ptr SampleCountFlagBits -> SampleCountFlagBits -> IO ())
-> Storable SampleCountFlagBits
forall b. Ptr b -> Int -> IO SampleCountFlagBits
forall b. Ptr b -> Int -> SampleCountFlagBits -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
$csizeOf :: SampleCountFlagBits -> Int
sizeOf :: SampleCountFlagBits -> Int
$calignment :: SampleCountFlagBits -> Int
alignment :: SampleCountFlagBits -> Int
$cpeekElemOff :: Ptr SampleCountFlagBits -> Int -> IO SampleCountFlagBits
peekElemOff :: Ptr SampleCountFlagBits -> Int -> IO SampleCountFlagBits
$cpokeElemOff :: Ptr SampleCountFlagBits -> Int -> SampleCountFlagBits -> IO ()
pokeElemOff :: Ptr SampleCountFlagBits -> Int -> SampleCountFlagBits -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SampleCountFlagBits
peekByteOff :: forall b. Ptr b -> Int -> IO SampleCountFlagBits
$cpokeByteOff :: forall b. Ptr b -> Int -> SampleCountFlagBits -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> SampleCountFlagBits -> IO ()
$cpeek :: Ptr SampleCountFlagBits -> IO SampleCountFlagBits
peek :: Ptr SampleCountFlagBits -> IO SampleCountFlagBits
$cpoke :: Ptr SampleCountFlagBits -> SampleCountFlagBits -> IO ()
poke :: Ptr SampleCountFlagBits -> SampleCountFlagBits -> IO ()
Storable, SampleCountFlagBits
SampleCountFlagBits -> Zero SampleCountFlagBits
forall a. a -> Zero a
$czero :: SampleCountFlagBits
zero :: SampleCountFlagBits
Zero, Eq SampleCountFlagBits
SampleCountFlagBits
Eq SampleCountFlagBits =>
(SampleCountFlagBits -> SampleCountFlagBits -> SampleCountFlagBits)
-> (SampleCountFlagBits
    -> SampleCountFlagBits -> SampleCountFlagBits)
-> (SampleCountFlagBits
    -> SampleCountFlagBits -> SampleCountFlagBits)
-> (SampleCountFlagBits -> SampleCountFlagBits)
-> (SampleCountFlagBits -> Int -> SampleCountFlagBits)
-> (SampleCountFlagBits -> Int -> SampleCountFlagBits)
-> SampleCountFlagBits
-> (Int -> SampleCountFlagBits)
-> (SampleCountFlagBits -> Int -> SampleCountFlagBits)
-> (SampleCountFlagBits -> Int -> SampleCountFlagBits)
-> (SampleCountFlagBits -> Int -> SampleCountFlagBits)
-> (SampleCountFlagBits -> Int -> Bool)
-> (SampleCountFlagBits -> Maybe Int)
-> (SampleCountFlagBits -> Int)
-> (SampleCountFlagBits -> Bool)
-> (SampleCountFlagBits -> Int -> SampleCountFlagBits)
-> (SampleCountFlagBits -> Int -> SampleCountFlagBits)
-> (SampleCountFlagBits -> Int -> SampleCountFlagBits)
-> (SampleCountFlagBits -> Int -> SampleCountFlagBits)
-> (SampleCountFlagBits -> Int -> SampleCountFlagBits)
-> (SampleCountFlagBits -> Int -> SampleCountFlagBits)
-> (SampleCountFlagBits -> Int)
-> Bits SampleCountFlagBits
Int -> SampleCountFlagBits
SampleCountFlagBits -> Bool
SampleCountFlagBits -> Int
SampleCountFlagBits -> Maybe Int
SampleCountFlagBits -> SampleCountFlagBits
SampleCountFlagBits -> Int -> Bool
SampleCountFlagBits -> Int -> SampleCountFlagBits
SampleCountFlagBits -> SampleCountFlagBits -> SampleCountFlagBits
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: SampleCountFlagBits -> SampleCountFlagBits -> SampleCountFlagBits
.&. :: SampleCountFlagBits -> SampleCountFlagBits -> SampleCountFlagBits
$c.|. :: SampleCountFlagBits -> SampleCountFlagBits -> SampleCountFlagBits
.|. :: SampleCountFlagBits -> SampleCountFlagBits -> SampleCountFlagBits
$cxor :: SampleCountFlagBits -> SampleCountFlagBits -> SampleCountFlagBits
xor :: SampleCountFlagBits -> SampleCountFlagBits -> SampleCountFlagBits
$ccomplement :: SampleCountFlagBits -> SampleCountFlagBits
complement :: SampleCountFlagBits -> SampleCountFlagBits
$cshift :: SampleCountFlagBits -> Int -> SampleCountFlagBits
shift :: SampleCountFlagBits -> Int -> SampleCountFlagBits
$crotate :: SampleCountFlagBits -> Int -> SampleCountFlagBits
rotate :: SampleCountFlagBits -> Int -> SampleCountFlagBits
$czeroBits :: SampleCountFlagBits
zeroBits :: SampleCountFlagBits
$cbit :: Int -> SampleCountFlagBits
bit :: Int -> SampleCountFlagBits
$csetBit :: SampleCountFlagBits -> Int -> SampleCountFlagBits
setBit :: SampleCountFlagBits -> Int -> SampleCountFlagBits
$cclearBit :: SampleCountFlagBits -> Int -> SampleCountFlagBits
clearBit :: SampleCountFlagBits -> Int -> SampleCountFlagBits
$ccomplementBit :: SampleCountFlagBits -> Int -> SampleCountFlagBits
complementBit :: SampleCountFlagBits -> Int -> SampleCountFlagBits
$ctestBit :: SampleCountFlagBits -> Int -> Bool
testBit :: SampleCountFlagBits -> Int -> Bool
$cbitSizeMaybe :: SampleCountFlagBits -> Maybe Int
bitSizeMaybe :: SampleCountFlagBits -> Maybe Int
$cbitSize :: SampleCountFlagBits -> Int
bitSize :: SampleCountFlagBits -> Int
$cisSigned :: SampleCountFlagBits -> Bool
isSigned :: SampleCountFlagBits -> Bool
$cshiftL :: SampleCountFlagBits -> Int -> SampleCountFlagBits
shiftL :: SampleCountFlagBits -> Int -> SampleCountFlagBits
$cunsafeShiftL :: SampleCountFlagBits -> Int -> SampleCountFlagBits
unsafeShiftL :: SampleCountFlagBits -> Int -> SampleCountFlagBits
$cshiftR :: SampleCountFlagBits -> Int -> SampleCountFlagBits
shiftR :: SampleCountFlagBits -> Int -> SampleCountFlagBits
$cunsafeShiftR :: SampleCountFlagBits -> Int -> SampleCountFlagBits
unsafeShiftR :: SampleCountFlagBits -> Int -> SampleCountFlagBits
$crotateL :: SampleCountFlagBits -> Int -> SampleCountFlagBits
rotateL :: SampleCountFlagBits -> Int -> SampleCountFlagBits
$crotateR :: SampleCountFlagBits -> Int -> SampleCountFlagBits
rotateR :: SampleCountFlagBits -> Int -> SampleCountFlagBits
$cpopCount :: SampleCountFlagBits -> Int
popCount :: SampleCountFlagBits -> Int
Bits, Bits SampleCountFlagBits
Bits SampleCountFlagBits =>
(SampleCountFlagBits -> Int)
-> (SampleCountFlagBits -> Int)
-> (SampleCountFlagBits -> Int)
-> FiniteBits SampleCountFlagBits
SampleCountFlagBits -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: SampleCountFlagBits -> Int
finiteBitSize :: SampleCountFlagBits -> Int
$ccountLeadingZeros :: SampleCountFlagBits -> Int
countLeadingZeros :: SampleCountFlagBits -> Int
$ccountTrailingZeros :: SampleCountFlagBits -> Int
countTrailingZeros :: SampleCountFlagBits -> Int
FiniteBits)

-- | 'SAMPLE_COUNT_1_BIT' specifies an image with one sample per pixel.
pattern $bSAMPLE_COUNT_1_BIT :: SampleCountFlagBits
$mSAMPLE_COUNT_1_BIT :: forall {r}.
SampleCountFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
SAMPLE_COUNT_1_BIT = SampleCountFlagBits 0x00000001

-- | 'SAMPLE_COUNT_2_BIT' specifies an image with 2 samples per pixel.
pattern $bSAMPLE_COUNT_2_BIT :: SampleCountFlagBits
$mSAMPLE_COUNT_2_BIT :: forall {r}.
SampleCountFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
SAMPLE_COUNT_2_BIT = SampleCountFlagBits 0x00000002

-- | 'SAMPLE_COUNT_4_BIT' specifies an image with 4 samples per pixel.
pattern $bSAMPLE_COUNT_4_BIT :: SampleCountFlagBits
$mSAMPLE_COUNT_4_BIT :: forall {r}.
SampleCountFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
SAMPLE_COUNT_4_BIT = SampleCountFlagBits 0x00000004

-- | 'SAMPLE_COUNT_8_BIT' specifies an image with 8 samples per pixel.
pattern $bSAMPLE_COUNT_8_BIT :: SampleCountFlagBits
$mSAMPLE_COUNT_8_BIT :: forall {r}.
SampleCountFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
SAMPLE_COUNT_8_BIT = SampleCountFlagBits 0x00000008

-- | 'SAMPLE_COUNT_16_BIT' specifies an image with 16 samples per pixel.
pattern $bSAMPLE_COUNT_16_BIT :: SampleCountFlagBits
$mSAMPLE_COUNT_16_BIT :: forall {r}.
SampleCountFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
SAMPLE_COUNT_16_BIT = SampleCountFlagBits 0x00000010

-- | 'SAMPLE_COUNT_32_BIT' specifies an image with 32 samples per pixel.
pattern $bSAMPLE_COUNT_32_BIT :: SampleCountFlagBits
$mSAMPLE_COUNT_32_BIT :: forall {r}.
SampleCountFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
SAMPLE_COUNT_32_BIT = SampleCountFlagBits 0x00000020

-- | 'SAMPLE_COUNT_64_BIT' specifies an image with 64 samples per pixel.
pattern $bSAMPLE_COUNT_64_BIT :: SampleCountFlagBits
$mSAMPLE_COUNT_64_BIT :: forall {r}.
SampleCountFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
SAMPLE_COUNT_64_BIT = SampleCountFlagBits 0x00000040

conNameSampleCountFlagBits :: String
conNameSampleCountFlagBits :: String
conNameSampleCountFlagBits = String
"SampleCountFlagBits"

enumPrefixSampleCountFlagBits :: String
enumPrefixSampleCountFlagBits :: String
enumPrefixSampleCountFlagBits = String
"SAMPLE_COUNT_"

showTableSampleCountFlagBits :: [(SampleCountFlagBits, String)]
showTableSampleCountFlagBits :: [(SampleCountFlagBits, String)]
showTableSampleCountFlagBits =
  [ (SampleCountFlagBits
SAMPLE_COUNT_1_BIT, String
"1_BIT")
  , (SampleCountFlagBits
SAMPLE_COUNT_2_BIT, String
"2_BIT")
  , (SampleCountFlagBits
SAMPLE_COUNT_4_BIT, String
"4_BIT")
  , (SampleCountFlagBits
SAMPLE_COUNT_8_BIT, String
"8_BIT")
  , (SampleCountFlagBits
SAMPLE_COUNT_16_BIT, String
"16_BIT")
  , (SampleCountFlagBits
SAMPLE_COUNT_32_BIT, String
"32_BIT")
  , (SampleCountFlagBits
SAMPLE_COUNT_64_BIT, String
"64_BIT")
  ]

instance Show SampleCountFlagBits where
  showsPrec :: Int -> SampleCountFlagBits -> ShowS
showsPrec =
    String
-> [(SampleCountFlagBits, String)]
-> String
-> (SampleCountFlagBits -> Flags)
-> (Flags -> ShowS)
-> Int
-> SampleCountFlagBits
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixSampleCountFlagBits
      [(SampleCountFlagBits, String)]
showTableSampleCountFlagBits
      String
conNameSampleCountFlagBits
      (\(SampleCountFlagBits Flags
x) -> Flags
x)
      (\Flags
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Flags -> ShowS
forall a. Integral a => a -> ShowS
showHex Flags
x)

instance Read SampleCountFlagBits where
  readPrec :: ReadPrec SampleCountFlagBits
readPrec =
    String
-> [(SampleCountFlagBits, String)]
-> String
-> (Flags -> SampleCountFlagBits)
-> ReadPrec SampleCountFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixSampleCountFlagBits
      [(SampleCountFlagBits, String)]
showTableSampleCountFlagBits
      String
conNameSampleCountFlagBits
      Flags -> SampleCountFlagBits
SampleCountFlagBits