{-# 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.Buffer (VkBufferCreateBitmask(VkBufferCreateBitmask, VkBufferCreateFlags, VkBufferCreateFlagBits, VK_BUFFER_CREATE_SPARSE_BINDING_BIT, VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, VK_BUFFER_CREATE_SPARSE_ALIASED_BIT), VkBufferCreateFlags, VkBufferCreateFlagBits, VkBufferUsageBitmask(VkBufferUsageBitmask, VkBufferUsageFlags, VkBufferUsageFlagBits, VK_BUFFER_USAGE_TRANSFER_SRC_BIT, VK_BUFFER_USAGE_TRANSFER_DST_BIT, VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, VK_BUFFER_USAGE_INDEX_BUFFER_BIT, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT), VkBufferUsageFlags, VkBufferUsageFlagBits, VkBufferViewCreateFlagBits(..)) where import Data.Bits (Bits, FiniteBits) import Data.Coerce (coerce) 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 VkBufferCreateBitmask (a :: FlagType) = VkBufferCreateBitmask VkFlags deriving (Eq, Ord, Storable) type VkBufferCreateFlags = VkBufferCreateBitmask FlagMask type VkBufferCreateFlagBits = VkBufferCreateBitmask FlagBit pattern VkBufferCreateFlagBits :: VkFlags -> VkBufferCreateBitmask FlagBit pattern VkBufferCreateFlagBits n = VkBufferCreateBitmask n pattern VkBufferCreateFlags :: VkFlags -> VkBufferCreateBitmask FlagMask pattern VkBufferCreateFlags n = VkBufferCreateBitmask n deriving instance Bits (VkBufferCreateBitmask FlagMask) deriving instance FiniteBits (VkBufferCreateBitmask FlagMask) instance Show (VkBufferCreateBitmask a) where showsPrec _ VK_BUFFER_CREATE_SPARSE_BINDING_BIT = showString "VK_BUFFER_CREATE_SPARSE_BINDING_BIT" showsPrec _ VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = showString "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT" showsPrec _ VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = showString "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT" showsPrec p (VkBufferCreateBitmask x) = showParen (p >= 11) (showString "VkBufferCreateBitmask " . showsPrec 11 x) instance Read (VkBufferCreateBitmask a) where readPrec = parens (choose [("VK_BUFFER_CREATE_SPARSE_BINDING_BIT", pure VK_BUFFER_CREATE_SPARSE_BINDING_BIT), ("VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT", pure VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT), ("VK_BUFFER_CREATE_SPARSE_ALIASED_BIT", pure VK_BUFFER_CREATE_SPARSE_ALIASED_BIT)] +++ prec 10 (expectP (Ident "VkBufferCreateBitmask") >> (VkBufferCreateBitmask <$> step readPrec))) -- | Buffer should support sparse backing -- -- bitpos = @0@ pattern VK_BUFFER_CREATE_SPARSE_BINDING_BIT :: VkBufferCreateBitmask a pattern VK_BUFFER_CREATE_SPARSE_BINDING_BIT = VkBufferCreateBitmask 1 -- | Buffer should support sparse backing with partial residency -- -- bitpos = @1@ pattern VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT :: VkBufferCreateBitmask a pattern VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = VkBufferCreateBitmask 2 -- | Buffer should support constent data access to physical memory ranges mapped into multiple locations of sparse buffers -- -- bitpos = @2@ pattern VK_BUFFER_CREATE_SPARSE_ALIASED_BIT :: VkBufferCreateBitmask a pattern VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = VkBufferCreateBitmask 4 newtype VkBufferUsageBitmask (a :: FlagType) = VkBufferUsageBitmask VkFlags deriving (Eq, Ord, Storable) type VkBufferUsageFlags = VkBufferUsageBitmask FlagMask type VkBufferUsageFlagBits = VkBufferUsageBitmask FlagBit pattern VkBufferUsageFlagBits :: VkFlags -> VkBufferUsageBitmask FlagBit pattern VkBufferUsageFlagBits n = VkBufferUsageBitmask n pattern VkBufferUsageFlags :: VkFlags -> VkBufferUsageBitmask FlagMask pattern VkBufferUsageFlags n = VkBufferUsageBitmask n deriving instance Bits (VkBufferUsageBitmask FlagMask) deriving instance FiniteBits (VkBufferUsageBitmask FlagMask) instance Show (VkBufferUsageBitmask a) where showsPrec _ VK_BUFFER_USAGE_TRANSFER_SRC_BIT = showString "VK_BUFFER_USAGE_TRANSFER_SRC_BIT" showsPrec _ VK_BUFFER_USAGE_TRANSFER_DST_BIT = showString "VK_BUFFER_USAGE_TRANSFER_DST_BIT" showsPrec _ VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = showString "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT" showsPrec _ VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = showString "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT" showsPrec _ VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = showString "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT" showsPrec _ VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = showString "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT" showsPrec _ VK_BUFFER_USAGE_INDEX_BUFFER_BIT = showString "VK_BUFFER_USAGE_INDEX_BUFFER_BIT" showsPrec _ VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = showString "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT" showsPrec _ VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = showString "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT" showsPrec p (VkBufferUsageBitmask x) = showParen (p >= 11) (showString "VkBufferUsageBitmask " . showsPrec 11 x) instance Read (VkBufferUsageBitmask a) where readPrec = parens (choose [("VK_BUFFER_USAGE_TRANSFER_SRC_BIT", pure VK_BUFFER_USAGE_TRANSFER_SRC_BIT), ("VK_BUFFER_USAGE_TRANSFER_DST_BIT", pure VK_BUFFER_USAGE_TRANSFER_DST_BIT), ("VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT", pure VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT), ("VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT", pure VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT), ("VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT", pure VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT), ("VK_BUFFER_USAGE_STORAGE_BUFFER_BIT", pure VK_BUFFER_USAGE_STORAGE_BUFFER_BIT), ("VK_BUFFER_USAGE_INDEX_BUFFER_BIT", pure VK_BUFFER_USAGE_INDEX_BUFFER_BIT), ("VK_BUFFER_USAGE_VERTEX_BUFFER_BIT", pure VK_BUFFER_USAGE_VERTEX_BUFFER_BIT), ("VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT", pure VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT)] +++ prec 10 (expectP (Ident "VkBufferUsageBitmask") >> (VkBufferUsageBitmask <$> step readPrec))) -- | Can be used as a source of transfer operations -- -- bitpos = @0@ pattern VK_BUFFER_USAGE_TRANSFER_SRC_BIT :: VkBufferUsageBitmask a pattern VK_BUFFER_USAGE_TRANSFER_SRC_BIT = VkBufferUsageBitmask 1 -- | Can be used as a destination of transfer operations -- -- bitpos = @1@ pattern VK_BUFFER_USAGE_TRANSFER_DST_BIT :: VkBufferUsageBitmask a pattern VK_BUFFER_USAGE_TRANSFER_DST_BIT = VkBufferUsageBitmask 2 -- | Can be used as TBO -- -- bitpos = @2@ pattern VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT :: VkBufferUsageBitmask a pattern VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = VkBufferUsageBitmask 4 -- | Can be used as IBO -- -- bitpos = @3@ pattern VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT :: VkBufferUsageBitmask a pattern VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = VkBufferUsageBitmask 8 -- | Can be used as UBO -- -- bitpos = @4@ pattern VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT :: VkBufferUsageBitmask a pattern VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = VkBufferUsageBitmask 16 -- | Can be used as SSBO -- -- bitpos = @5@ pattern VK_BUFFER_USAGE_STORAGE_BUFFER_BIT :: VkBufferUsageBitmask a pattern VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = VkBufferUsageBitmask 32 -- | Can be used as source of fixed-function index fetch (index buffer) -- -- bitpos = @6@ pattern VK_BUFFER_USAGE_INDEX_BUFFER_BIT :: VkBufferUsageBitmask a pattern VK_BUFFER_USAGE_INDEX_BUFFER_BIT = VkBufferUsageBitmask 64 -- | Can be used as source of fixed-function vertex fetch (VBO) -- -- bitpos = @7@ pattern VK_BUFFER_USAGE_VERTEX_BUFFER_BIT :: VkBufferUsageBitmask a pattern VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = VkBufferUsageBitmask 128 -- | Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer) -- -- bitpos = @8@ pattern VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT :: VkBufferUsageBitmask a pattern VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = VkBufferUsageBitmask 256 newtype VkBufferViewCreateFlagBits = VkBufferViewCreateFlagBits VkFlags deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable) instance Show VkBufferViewCreateFlagBits where {-# INLINE showsPrec #-} showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS) instance Read VkBufferViewCreateFlagBits where {-# INLINE readsPrec #-} readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)