{-# 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.Sparse (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, VkSparseMemoryBindBitmask(VkSparseMemoryBindBitmask, VkSparseMemoryBindFlags, VkSparseMemoryBindFlagBits, VK_SPARSE_MEMORY_BIND_METADATA_BIT), VkSparseMemoryBindFlags, VkSparseMemoryBindFlagBits) 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 VkSparseImageFormatBitmask (a :: FlagType) = VkSparseImageFormatBitmask VkFlags deriving (Eq, Ord, Storable) 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) 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 newtype VkSparseMemoryBindBitmask (a :: FlagType) = VkSparseMemoryBindBitmask VkFlags deriving (Eq, Ord, Storable) type VkSparseMemoryBindFlags = VkSparseMemoryBindBitmask FlagMask type VkSparseMemoryBindFlagBits = VkSparseMemoryBindBitmask FlagBit pattern VkSparseMemoryBindFlagBits :: VkFlags -> VkSparseMemoryBindBitmask FlagBit pattern VkSparseMemoryBindFlagBits n = VkSparseMemoryBindBitmask n pattern VkSparseMemoryBindFlags :: VkFlags -> VkSparseMemoryBindBitmask FlagMask pattern VkSparseMemoryBindFlags n = VkSparseMemoryBindBitmask n deriving instance Bits (VkSparseMemoryBindBitmask FlagMask) deriving instance FiniteBits (VkSparseMemoryBindBitmask FlagMask) instance Show (VkSparseMemoryBindBitmask a) where showsPrec _ VK_SPARSE_MEMORY_BIND_METADATA_BIT = showString "VK_SPARSE_MEMORY_BIND_METADATA_BIT" showsPrec p (VkSparseMemoryBindBitmask x) = showParen (p >= 11) (showString "VkSparseMemoryBindBitmask " . showsPrec 11 x) instance Read (VkSparseMemoryBindBitmask a) where readPrec = parens (choose [("VK_SPARSE_MEMORY_BIND_METADATA_BIT", pure VK_SPARSE_MEMORY_BIND_METADATA_BIT)] +++ prec 10 (expectP (Ident "VkSparseMemoryBindBitmask") >> (VkSparseMemoryBindBitmask <$> step readPrec))) -- | Operation binds resource metadata to memory -- -- bitpos = @0@ pattern VK_SPARSE_MEMORY_BIND_METADATA_BIT :: VkSparseMemoryBindBitmask a pattern VK_SPARSE_MEMORY_BIND_METADATA_BIT = VkSparseMemoryBindBitmask 1