{-# 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.VkSparseImageFormatFlags (VkSparseImageFormatBitmask(VkSparseImageFormatBitmask, VkSparseImageFormatFlags, VkSparseImageFormatFlagBits, VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT, VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT, VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT), VkSparseImageFormatFlags, VkSparseImageFormatFlagBits) 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 VkSparseImageFormatBitmask (a :: FlagType) = VkSparseImageFormatBitmask VkFlags deriving (Eq, Ord, Storable, Data, Generic) type VkSparseImageFormatFlags = VkSparseImageFormatBitmask FlagMask type VkSparseImageFormatFlagBits = VkSparseImageFormatBitmask FlagBit pattern VkSparseImageFormatFlagBits :: VkFlags -> VkSparseImageFormatBitmask FlagBit pattern VkSparseImageFormatFlagBits n = VkSparseImageFormatBitmask n pattern VkSparseImageFormatFlags :: VkFlags -> VkSparseImageFormatBitmask FlagMask pattern VkSparseImageFormatFlags n = VkSparseImageFormatBitmask n deriving instance Bits (VkSparseImageFormatBitmask FlagMask) deriving instance FiniteBits (VkSparseImageFormatBitmask FlagMask) deriving instance Integral (VkSparseImageFormatBitmask FlagMask) deriving instance Num (VkSparseImageFormatBitmask FlagMask) deriving instance Bounded (VkSparseImageFormatBitmask FlagMask) deriving instance Enum (VkSparseImageFormatBitmask FlagMask) deriving instance Real (VkSparseImageFormatBitmask FlagMask) instance Show (VkSparseImageFormatBitmask a) where showsPrec _ VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = showString "VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT" showsPrec _ VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = showString "VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT" showsPrec _ VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = showString "VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT" showsPrec p (VkSparseImageFormatBitmask x) = showParen (p >= 11) (showString "VkSparseImageFormatBitmask " . showsPrec 11 x) instance Read (VkSparseImageFormatBitmask a) where readPrec = parens (choose [("VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT", pure VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT), ("VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT", pure VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT), ("VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT", pure VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT)] +++ prec 10 (expectP (Ident "VkSparseImageFormatBitmask") >> (VkSparseImageFormatBitmask <$> step readPrec))) -- | Image uses a single mip tail region for all array layers -- -- bitpos = @0@ pattern VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT :: VkSparseImageFormatBitmask a pattern VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = VkSparseImageFormatBitmask 1 -- | Image requires mip level dimensions to be an integer multiple of the sparse image block dimensions for non-tail mip levels. -- -- bitpos = @1@ pattern VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT :: VkSparseImageFormatBitmask a pattern VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = VkSparseImageFormatBitmask 2 -- | Image uses a non-standard sparse image block dimensions -- -- bitpos = @2@ pattern VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT :: VkSparseImageFormatBitmask a pattern VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = VkSparseImageFormatBitmask 4