{-# language CPP #-}
module Vulkan.Core10.Sampler ( createSampler
, withSampler
, destroySampler
, SamplerCreateInfo(..)
, Sampler(..)
, BorderColor(..)
, Filter(..)
, SamplerMipmapMode(..)
, SamplerAddressMode(..)
, SamplerCreateFlagBits(..)
, SamplerCreateFlags
) where
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Exception.Base (bracket)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Data.Typeable (eqT)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Marshal.Alloc (callocBytes)
import Foreign.Marshal.Alloc (free)
import GHC.Base (when)
import GHC.IO (throwIO)
import GHC.Ptr (castPtr)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Data.Coerce (coerce)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
import Control.Monad.IO.Class (MonadIO)
import Data.Type.Equality ((:~:)(Refl))
import Data.Typeable (Typeable)
import Foreign.C.Types (CFloat)
import Foreign.C.Types (CFloat(..))
import Foreign.C.Types (CFloat(CFloat))
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import GHC.Generics (Generic)
import GHC.IO.Exception (IOErrorType(..))
import GHC.IO.Exception (IOException(..))
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.CStruct.Extends (forgetExtensions)
import Vulkan.NamedType ((:::))
import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Enums.BorderColor (BorderColor)
import Vulkan.CStruct.Extends (Chain)
import Vulkan.Core10.Enums.CompareOp (CompareOp)
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectNameInfoEXT)
import Vulkan.Core10.Handles (Device)
import Vulkan.Core10.Handles (Device(..))
import Vulkan.Core10.Handles (Device(Device))
import Vulkan.Dynamic (DeviceCmds(pVkCreateSampler))
import Vulkan.Dynamic (DeviceCmds(pVkDestroySampler))
import Vulkan.Core10.Handles (Device_T)
import Vulkan.CStruct.Extends (Extends)
import Vulkan.CStruct.Extends (Extendss)
import Vulkan.CStruct.Extends (Extensible(..))
import Vulkan.Core10.Enums.Filter (Filter)
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
import Vulkan.CStruct.Extends (PeekChain)
import Vulkan.CStruct.Extends (PeekChain(..))
import Vulkan.CStruct.Extends (PokeChain)
import Vulkan.CStruct.Extends (PokeChain(..))
import Vulkan.Core10.Enums.Result (Result)
import Vulkan.Core10.Enums.Result (Result(..))
import Vulkan.Core10.Handles (Sampler)
import Vulkan.Core10.Handles (Sampler(..))
import Vulkan.Core10.Enums.SamplerAddressMode (SamplerAddressMode)
import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing2 (SamplerBlockMatchWindowCreateInfoQCOM)
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_border_color_swizzle (SamplerBorderColorComponentMappingCreateInfoEXT)
import Vulkan.Core10.Enums.SamplerCreateFlagBits (SamplerCreateFlags)
import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_filter_cubic_weights (SamplerCubicWeightsCreateInfoQCOM)
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (SamplerCustomBorderColorCreateInfoEXT)
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (SamplerCustomBorderColorIndexCreateInfoEXT)
import Vulkan.Core10.Enums.SamplerMipmapMode (SamplerMipmapMode)
import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (SamplerReductionModeCreateInfo)
import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionInfo)
import Vulkan.CStruct.Extends (SomeStruct)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Exception (VulkanException(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SAMPLER_CREATE_INFO))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
import Vulkan.Core10.Enums.BorderColor (BorderColor(..))
import Vulkan.Core10.Enums.Filter (Filter(..))
import Vulkan.Core10.Handles (Sampler(..))
import Vulkan.Core10.Enums.SamplerAddressMode (SamplerAddressMode(..))
import Vulkan.Core10.Enums.SamplerCreateFlagBits (SamplerCreateFlagBits(..))
import Vulkan.Core10.Enums.SamplerCreateFlagBits (SamplerCreateFlags)
import Vulkan.Core10.Enums.SamplerMipmapMode (SamplerMipmapMode(..))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCreateSampler
:: FunPtr (Ptr Device_T -> Ptr (SomeStruct SamplerCreateInfo) -> Ptr AllocationCallbacks -> Ptr Sampler -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct SamplerCreateInfo) -> Ptr AllocationCallbacks -> Ptr Sampler -> IO Result
createSampler :: forall a io
. (Extendss SamplerCreateInfo a, PokeChain a, MonadIO io)
=>
Device
->
(SamplerCreateInfo a)
->
("allocator" ::: Maybe AllocationCallbacks)
-> io (Sampler)
createSampler :: forall (a :: [*]) (io :: * -> *).
(Extendss SamplerCreateInfo a, PokeChain a, MonadIO io) =>
Device
-> SamplerCreateInfo a
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io Sampler
createSampler Device
device SamplerCreateInfo a
createInfo "allocator" ::: Maybe AllocationCallbacks
allocator = IO Sampler -> io Sampler
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Sampler -> io Sampler)
-> (ContT Sampler IO Sampler -> IO Sampler)
-> ContT Sampler IO Sampler
-> io Sampler
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT Sampler IO Sampler -> IO Sampler
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT Sampler IO Sampler -> io Sampler)
-> ContT Sampler IO Sampler -> io Sampler
forall a b. (a -> b) -> a -> b
$ do
let vkCreateSamplerPtr :: FunPtr
(Ptr Device_T
-> Ptr (SomeStruct SamplerCreateInfo)
-> Ptr AllocationCallbacks
-> Ptr Sampler
-> IO Result)
vkCreateSamplerPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> Ptr (SomeStruct SamplerCreateInfo)
-> Ptr AllocationCallbacks
-> Ptr Sampler
-> IO Result)
pVkCreateSampler (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds :: Device -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT Sampler IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT Sampler m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT Sampler IO ()) -> IO () -> ContT Sampler IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> Ptr (SomeStruct SamplerCreateInfo)
-> Ptr AllocationCallbacks
-> Ptr Sampler
-> IO Result)
vkCreateSamplerPtr FunPtr
(Ptr Device_T
-> Ptr (SomeStruct SamplerCreateInfo)
-> Ptr AllocationCallbacks
-> Ptr Sampler
-> IO Result)
-> FunPtr
(Ptr Device_T
-> Ptr (SomeStruct SamplerCreateInfo)
-> Ptr AllocationCallbacks
-> Ptr Sampler
-> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> Ptr (SomeStruct SamplerCreateInfo)
-> Ptr AllocationCallbacks
-> Ptr Sampler
-> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkCreateSampler is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCreateSampler' :: Ptr Device_T
-> Ptr (SomeStruct SamplerCreateInfo)
-> Ptr AllocationCallbacks
-> Ptr Sampler
-> IO Result
vkCreateSampler' = FunPtr
(Ptr Device_T
-> Ptr (SomeStruct SamplerCreateInfo)
-> Ptr AllocationCallbacks
-> Ptr Sampler
-> IO Result)
-> Ptr Device_T
-> Ptr (SomeStruct SamplerCreateInfo)
-> Ptr AllocationCallbacks
-> Ptr Sampler
-> IO Result
mkVkCreateSampler FunPtr
(Ptr Device_T
-> Ptr (SomeStruct SamplerCreateInfo)
-> Ptr AllocationCallbacks
-> Ptr Sampler
-> IO Result)
vkCreateSamplerPtr
pCreateInfo <- ((Ptr (SamplerCreateInfo a) -> IO Sampler) -> IO Sampler)
-> ContT Sampler IO (Ptr (SamplerCreateInfo a))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (SamplerCreateInfo a) -> IO Sampler) -> IO Sampler)
-> ContT Sampler IO (Ptr (SamplerCreateInfo a)))
-> ((Ptr (SamplerCreateInfo a) -> IO Sampler) -> IO Sampler)
-> ContT Sampler IO (Ptr (SamplerCreateInfo a))
forall a b. (a -> b) -> a -> b
$ SamplerCreateInfo a
-> (Ptr (SamplerCreateInfo a) -> IO Sampler) -> IO Sampler
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
SamplerCreateInfo a -> (Ptr (SamplerCreateInfo a) -> IO b) -> IO b
withCStruct (SamplerCreateInfo a
createInfo)
pAllocator <- case (allocator) of
"allocator" ::: Maybe AllocationCallbacks
Nothing -> Ptr AllocationCallbacks
-> ContT Sampler IO (Ptr AllocationCallbacks)
forall a. a -> ContT Sampler IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr AllocationCallbacks
forall a. Ptr a
nullPtr
Just AllocationCallbacks
j -> ((Ptr AllocationCallbacks -> IO Sampler) -> IO Sampler)
-> ContT Sampler IO (Ptr AllocationCallbacks)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr AllocationCallbacks -> IO Sampler) -> IO Sampler)
-> ContT Sampler IO (Ptr AllocationCallbacks))
-> ((Ptr AllocationCallbacks -> IO Sampler) -> IO Sampler)
-> ContT Sampler IO (Ptr AllocationCallbacks)
forall a b. (a -> b) -> a -> b
$ AllocationCallbacks
-> (Ptr AllocationCallbacks -> IO Sampler) -> IO Sampler
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
AllocationCallbacks -> (Ptr AllocationCallbacks -> IO b) -> IO b
withCStruct (AllocationCallbacks
j)
pPSampler <- ContT $ bracket (callocBytes @Sampler 8) free
r <- lift $ traceAroundEvent "vkCreateSampler" (vkCreateSampler'
(deviceHandle (device))
(forgetExtensions pCreateInfo)
pAllocator
(pPSampler))
lift $ when (r < SUCCESS) (throwIO (VulkanException r))
pSampler <- lift $ peek @Sampler pPSampler
pure $ (pSampler)
withSampler :: forall a io r . (Extendss SamplerCreateInfo a, PokeChain a, MonadIO io) => Device -> SamplerCreateInfo a -> Maybe AllocationCallbacks -> (io Sampler -> (Sampler -> io ()) -> r) -> r
withSampler :: forall (a :: [*]) (io :: * -> *) r.
(Extendss SamplerCreateInfo a, PokeChain a, MonadIO io) =>
Device
-> SamplerCreateInfo a
-> ("allocator" ::: Maybe AllocationCallbacks)
-> (io Sampler -> (Sampler -> io ()) -> r)
-> r
withSampler Device
device SamplerCreateInfo a
pCreateInfo "allocator" ::: Maybe AllocationCallbacks
pAllocator io Sampler -> (Sampler -> io ()) -> r
b =
io Sampler -> (Sampler -> io ()) -> r
b (Device
-> SamplerCreateInfo a
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io Sampler
forall (a :: [*]) (io :: * -> *).
(Extendss SamplerCreateInfo a, PokeChain a, MonadIO io) =>
Device
-> SamplerCreateInfo a
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io Sampler
createSampler Device
device SamplerCreateInfo a
pCreateInfo "allocator" ::: Maybe AllocationCallbacks
pAllocator)
(\(Sampler
o0) -> Device
-> Sampler -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
forall (io :: * -> *).
MonadIO io =>
Device
-> Sampler -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
destroySampler Device
device Sampler
o0 "allocator" ::: Maybe AllocationCallbacks
pAllocator)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkDestroySampler
:: FunPtr (Ptr Device_T -> Sampler -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> Sampler -> Ptr AllocationCallbacks -> IO ()
destroySampler :: forall io
. (MonadIO io)
=>
Device
->
Sampler
->
("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroySampler :: forall (io :: * -> *).
MonadIO io =>
Device
-> Sampler -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
destroySampler Device
device Sampler
sampler "allocator" ::: Maybe AllocationCallbacks
allocator = IO () -> io ()
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ())
-> (ContT () IO () -> IO ()) -> ContT () IO () -> io ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT () IO () -> IO ()
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkDestroySamplerPtr :: FunPtr
(Ptr Device_T -> Sampler -> Ptr AllocationCallbacks -> IO ())
vkDestroySamplerPtr = DeviceCmds
-> FunPtr
(Ptr Device_T -> Sampler -> Ptr AllocationCallbacks -> IO ())
pVkDestroySampler (case Device
device of Device{DeviceCmds
deviceCmds :: Device -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T -> Sampler -> Ptr AllocationCallbacks -> IO ())
vkDestroySamplerPtr FunPtr
(Ptr Device_T -> Sampler -> Ptr AllocationCallbacks -> IO ())
-> FunPtr
(Ptr Device_T -> Sampler -> Ptr AllocationCallbacks -> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T -> Sampler -> Ptr AllocationCallbacks -> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkDestroySampler is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkDestroySampler' :: Ptr Device_T -> Sampler -> Ptr AllocationCallbacks -> IO ()
vkDestroySampler' = FunPtr
(Ptr Device_T -> Sampler -> Ptr AllocationCallbacks -> IO ())
-> Ptr Device_T -> Sampler -> Ptr AllocationCallbacks -> IO ()
mkVkDestroySampler FunPtr
(Ptr Device_T -> Sampler -> Ptr AllocationCallbacks -> IO ())
vkDestroySamplerPtr
pAllocator <- case ("allocator" ::: Maybe AllocationCallbacks
allocator) of
"allocator" ::: Maybe AllocationCallbacks
Nothing -> Ptr AllocationCallbacks -> ContT () IO (Ptr AllocationCallbacks)
forall a. a -> ContT () IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr AllocationCallbacks
forall a. Ptr a
nullPtr
Just AllocationCallbacks
j -> ((Ptr AllocationCallbacks -> IO ()) -> IO ())
-> ContT () IO (Ptr AllocationCallbacks)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr AllocationCallbacks -> IO ()) -> IO ())
-> ContT () IO (Ptr AllocationCallbacks))
-> ((Ptr AllocationCallbacks -> IO ()) -> IO ())
-> ContT () IO (Ptr AllocationCallbacks)
forall a b. (a -> b) -> a -> b
$ AllocationCallbacks -> (Ptr AllocationCallbacks -> IO ()) -> IO ()
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
AllocationCallbacks -> (Ptr AllocationCallbacks -> IO b) -> IO b
withCStruct (AllocationCallbacks
j)
lift $ traceAroundEvent "vkDestroySampler" (vkDestroySampler'
(deviceHandle (device))
(sampler)
pAllocator)
pure $ ()
data SamplerCreateInfo (es :: [Type]) = SamplerCreateInfo
{
forall (es :: [*]). SamplerCreateInfo es -> Chain es
next :: Chain es
,
forall (es :: [*]). SamplerCreateInfo es -> SamplerCreateFlags
flags :: SamplerCreateFlags
,
forall (es :: [*]). SamplerCreateInfo es -> Filter
magFilter :: Filter
,
forall (es :: [*]). SamplerCreateInfo es -> Filter
minFilter :: Filter
,
forall (es :: [*]). SamplerCreateInfo es -> SamplerMipmapMode
mipmapMode :: SamplerMipmapMode
,
forall (es :: [*]). SamplerCreateInfo es -> SamplerAddressMode
addressModeU :: SamplerAddressMode
,
forall (es :: [*]). SamplerCreateInfo es -> SamplerAddressMode
addressModeV :: SamplerAddressMode
,
forall (es :: [*]). SamplerCreateInfo es -> SamplerAddressMode
addressModeW :: SamplerAddressMode
,
forall (es :: [*]). SamplerCreateInfo es -> Float
mipLodBias :: Float
,
forall (es :: [*]). SamplerCreateInfo es -> Bool
anisotropyEnable :: Bool
,
forall (es :: [*]). SamplerCreateInfo es -> Float
maxAnisotropy :: Float
,
forall (es :: [*]). SamplerCreateInfo es -> Bool
compareEnable :: Bool
,
forall (es :: [*]). SamplerCreateInfo es -> CompareOp
compareOp :: CompareOp
,
forall (es :: [*]). SamplerCreateInfo es -> Float
minLod :: Float
,
forall (es :: [*]). SamplerCreateInfo es -> Float
maxLod :: Float
,
forall (es :: [*]). SamplerCreateInfo es -> BorderColor
borderColor :: BorderColor
,
forall (es :: [*]). SamplerCreateInfo es -> Bool
unnormalizedCoordinates :: Bool
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SamplerCreateInfo (es :: [Type]))
#endif
deriving instance Show (Chain es) => Show (SamplerCreateInfo es)
instance Extensible SamplerCreateInfo where
extensibleTypeName :: String
extensibleTypeName = String
"SamplerCreateInfo"
setNext :: forall (ds :: [*]) (es :: [*]).
SamplerCreateInfo ds -> Chain es -> SamplerCreateInfo es
setNext SamplerCreateInfo{Bool
Float
SamplerMipmapMode
SamplerAddressMode
SamplerCreateFlags
Filter
CompareOp
BorderColor
Chain ds
next :: forall (es :: [*]). SamplerCreateInfo es -> Chain es
flags :: forall (es :: [*]). SamplerCreateInfo es -> SamplerCreateFlags
magFilter :: forall (es :: [*]). SamplerCreateInfo es -> Filter
minFilter :: forall (es :: [*]). SamplerCreateInfo es -> Filter
mipmapMode :: forall (es :: [*]). SamplerCreateInfo es -> SamplerMipmapMode
addressModeU :: forall (es :: [*]). SamplerCreateInfo es -> SamplerAddressMode
addressModeV :: forall (es :: [*]). SamplerCreateInfo es -> SamplerAddressMode
addressModeW :: forall (es :: [*]). SamplerCreateInfo es -> SamplerAddressMode
mipLodBias :: forall (es :: [*]). SamplerCreateInfo es -> Float
anisotropyEnable :: forall (es :: [*]). SamplerCreateInfo es -> Bool
maxAnisotropy :: forall (es :: [*]). SamplerCreateInfo es -> Float
compareEnable :: forall (es :: [*]). SamplerCreateInfo es -> Bool
compareOp :: forall (es :: [*]). SamplerCreateInfo es -> CompareOp
minLod :: forall (es :: [*]). SamplerCreateInfo es -> Float
maxLod :: forall (es :: [*]). SamplerCreateInfo es -> Float
borderColor :: forall (es :: [*]). SamplerCreateInfo es -> BorderColor
unnormalizedCoordinates :: forall (es :: [*]). SamplerCreateInfo es -> Bool
next :: Chain ds
flags :: SamplerCreateFlags
magFilter :: Filter
minFilter :: Filter
mipmapMode :: SamplerMipmapMode
addressModeU :: SamplerAddressMode
addressModeV :: SamplerAddressMode
addressModeW :: SamplerAddressMode
mipLodBias :: Float
anisotropyEnable :: Bool
maxAnisotropy :: Float
compareEnable :: Bool
compareOp :: CompareOp
minLod :: Float
maxLod :: Float
borderColor :: BorderColor
unnormalizedCoordinates :: Bool
..} Chain es
next' = SamplerCreateInfo{next :: Chain es
next = Chain es
next', Bool
Float
SamplerMipmapMode
SamplerAddressMode
SamplerCreateFlags
Filter
CompareOp
BorderColor
flags :: SamplerCreateFlags
magFilter :: Filter
minFilter :: Filter
mipmapMode :: SamplerMipmapMode
addressModeU :: SamplerAddressMode
addressModeV :: SamplerAddressMode
addressModeW :: SamplerAddressMode
mipLodBias :: Float
anisotropyEnable :: Bool
maxAnisotropy :: Float
compareEnable :: Bool
compareOp :: CompareOp
minLod :: Float
maxLod :: Float
borderColor :: BorderColor
unnormalizedCoordinates :: Bool
flags :: SamplerCreateFlags
magFilter :: Filter
minFilter :: Filter
mipmapMode :: SamplerMipmapMode
addressModeU :: SamplerAddressMode
addressModeV :: SamplerAddressMode
addressModeW :: SamplerAddressMode
mipLodBias :: Float
anisotropyEnable :: Bool
maxAnisotropy :: Float
compareEnable :: Bool
compareOp :: CompareOp
minLod :: Float
maxLod :: Float
borderColor :: BorderColor
unnormalizedCoordinates :: Bool
..}
getNext :: forall (es :: [*]). SamplerCreateInfo es -> Chain es
getNext SamplerCreateInfo{Bool
Float
SamplerMipmapMode
SamplerAddressMode
SamplerCreateFlags
Filter
CompareOp
BorderColor
Chain es
next :: forall (es :: [*]). SamplerCreateInfo es -> Chain es
flags :: forall (es :: [*]). SamplerCreateInfo es -> SamplerCreateFlags
magFilter :: forall (es :: [*]). SamplerCreateInfo es -> Filter
minFilter :: forall (es :: [*]). SamplerCreateInfo es -> Filter
mipmapMode :: forall (es :: [*]). SamplerCreateInfo es -> SamplerMipmapMode
addressModeU :: forall (es :: [*]). SamplerCreateInfo es -> SamplerAddressMode
addressModeV :: forall (es :: [*]). SamplerCreateInfo es -> SamplerAddressMode
addressModeW :: forall (es :: [*]). SamplerCreateInfo es -> SamplerAddressMode
mipLodBias :: forall (es :: [*]). SamplerCreateInfo es -> Float
anisotropyEnable :: forall (es :: [*]). SamplerCreateInfo es -> Bool
maxAnisotropy :: forall (es :: [*]). SamplerCreateInfo es -> Float
compareEnable :: forall (es :: [*]). SamplerCreateInfo es -> Bool
compareOp :: forall (es :: [*]). SamplerCreateInfo es -> CompareOp
minLod :: forall (es :: [*]). SamplerCreateInfo es -> Float
maxLod :: forall (es :: [*]). SamplerCreateInfo es -> Float
borderColor :: forall (es :: [*]). SamplerCreateInfo es -> BorderColor
unnormalizedCoordinates :: forall (es :: [*]). SamplerCreateInfo es -> Bool
next :: Chain es
flags :: SamplerCreateFlags
magFilter :: Filter
minFilter :: Filter
mipmapMode :: SamplerMipmapMode
addressModeU :: SamplerAddressMode
addressModeV :: SamplerAddressMode
addressModeW :: SamplerAddressMode
mipLodBias :: Float
anisotropyEnable :: Bool
maxAnisotropy :: Float
compareEnable :: Bool
compareOp :: CompareOp
minLod :: Float
maxLod :: Float
borderColor :: BorderColor
unnormalizedCoordinates :: Bool
..} = Chain es
next
extends :: forall e b proxy. Typeable e => proxy e -> (Extends SamplerCreateInfo e => b) -> Maybe b
extends :: forall e b (proxy :: * -> *).
Typeable e =>
proxy e -> (Extends SamplerCreateInfo e => b) -> Maybe b
extends proxy e
_ Extends SamplerCreateInfo e => b
f
| Just e :~: SamplerCustomBorderColorIndexCreateInfoEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @SamplerCustomBorderColorIndexCreateInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends SamplerCreateInfo e => b
f
| Just e :~: SamplerBlockMatchWindowCreateInfoQCOM
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @SamplerBlockMatchWindowCreateInfoQCOM = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends SamplerCreateInfo e => b
f
| Just e :~: SamplerCubicWeightsCreateInfoQCOM
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @SamplerCubicWeightsCreateInfoQCOM = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends SamplerCreateInfo e => b
f
| Just e :~: OpaqueCaptureDescriptorDataCreateInfoEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @OpaqueCaptureDescriptorDataCreateInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends SamplerCreateInfo e => b
f
| Just e :~: SamplerBorderColorComponentMappingCreateInfoEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @SamplerBorderColorComponentMappingCreateInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends SamplerCreateInfo e => b
f
| Just e :~: SamplerCustomBorderColorCreateInfoEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @SamplerCustomBorderColorCreateInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends SamplerCreateInfo e => b
f
| Just e :~: DebugUtilsObjectNameInfoEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @DebugUtilsObjectNameInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends SamplerCreateInfo e => b
f
| Just e :~: SamplerReductionModeCreateInfo
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @SamplerReductionModeCreateInfo = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends SamplerCreateInfo e => b
f
| Just e :~: SamplerYcbcrConversionInfo
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @SamplerYcbcrConversionInfo = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends SamplerCreateInfo e => b
f
| Bool
otherwise = Maybe b
forall a. Maybe a
Nothing
instance ( Extendss SamplerCreateInfo es
, PokeChain es ) => ToCStruct (SamplerCreateInfo es) where
withCStruct :: forall b.
SamplerCreateInfo es
-> (Ptr (SamplerCreateInfo es) -> IO b) -> IO b
withCStruct SamplerCreateInfo es
x Ptr (SamplerCreateInfo es) -> IO b
f = Int -> (Ptr (SamplerCreateInfo es) -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
80 ((Ptr (SamplerCreateInfo es) -> IO b) -> IO b)
-> (Ptr (SamplerCreateInfo es) -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr (SamplerCreateInfo es)
p -> Ptr (SamplerCreateInfo es) -> SamplerCreateInfo es -> IO b -> IO b
forall b.
Ptr (SamplerCreateInfo es) -> SamplerCreateInfo es -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr (SamplerCreateInfo es)
p SamplerCreateInfo es
x (Ptr (SamplerCreateInfo es) -> IO b
f Ptr (SamplerCreateInfo es)
p)
pokeCStruct :: forall b.
Ptr (SamplerCreateInfo es) -> SamplerCreateInfo es -> IO b -> IO b
pokeCStruct Ptr (SamplerCreateInfo es)
p SamplerCreateInfo{Bool
Float
SamplerMipmapMode
SamplerAddressMode
SamplerCreateFlags
Filter
CompareOp
BorderColor
Chain es
next :: forall (es :: [*]). SamplerCreateInfo es -> Chain es
flags :: forall (es :: [*]). SamplerCreateInfo es -> SamplerCreateFlags
magFilter :: forall (es :: [*]). SamplerCreateInfo es -> Filter
minFilter :: forall (es :: [*]). SamplerCreateInfo es -> Filter
mipmapMode :: forall (es :: [*]). SamplerCreateInfo es -> SamplerMipmapMode
addressModeU :: forall (es :: [*]). SamplerCreateInfo es -> SamplerAddressMode
addressModeV :: forall (es :: [*]). SamplerCreateInfo es -> SamplerAddressMode
addressModeW :: forall (es :: [*]). SamplerCreateInfo es -> SamplerAddressMode
mipLodBias :: forall (es :: [*]). SamplerCreateInfo es -> Float
anisotropyEnable :: forall (es :: [*]). SamplerCreateInfo es -> Bool
maxAnisotropy :: forall (es :: [*]). SamplerCreateInfo es -> Float
compareEnable :: forall (es :: [*]). SamplerCreateInfo es -> Bool
compareOp :: forall (es :: [*]). SamplerCreateInfo es -> CompareOp
minLod :: forall (es :: [*]). SamplerCreateInfo es -> Float
maxLod :: forall (es :: [*]). SamplerCreateInfo es -> Float
borderColor :: forall (es :: [*]). SamplerCreateInfo es -> BorderColor
unnormalizedCoordinates :: forall (es :: [*]). SamplerCreateInfo es -> Bool
next :: Chain es
flags :: SamplerCreateFlags
magFilter :: Filter
minFilter :: Filter
mipmapMode :: SamplerMipmapMode
addressModeU :: SamplerAddressMode
addressModeV :: SamplerAddressMode
addressModeW :: SamplerAddressMode
mipLodBias :: Float
anisotropyEnable :: Bool
maxAnisotropy :: Float
compareEnable :: Bool
compareOp :: CompareOp
minLod :: Float
maxLod :: Float
borderColor :: BorderColor
unnormalizedCoordinates :: Bool
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (SamplerCreateInfo es)
p Ptr (SamplerCreateInfo es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SAMPLER_CREATE_INFO)
pNext'' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ Chain es -> (Ptr (Chain es) -> IO b) -> IO b
forall (es :: [*]) a.
PokeChain es =>
Chain es -> (Ptr (Chain es) -> IO a) -> IO a
forall a. Chain es -> (Ptr (Chain es) -> IO a) -> IO a
withChain (Chain es
next)
lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
lift $ poke ((p `plusPtr` 16 :: Ptr SamplerCreateFlags)) (flags)
lift $ poke ((p `plusPtr` 20 :: Ptr Filter)) (magFilter)
lift $ poke ((p `plusPtr` 24 :: Ptr Filter)) (minFilter)
lift $ poke ((p `plusPtr` 28 :: Ptr SamplerMipmapMode)) (mipmapMode)
lift $ poke ((p `plusPtr` 32 :: Ptr SamplerAddressMode)) (addressModeU)
lift $ poke ((p `plusPtr` 36 :: Ptr SamplerAddressMode)) (addressModeV)
lift $ poke ((p `plusPtr` 40 :: Ptr SamplerAddressMode)) (addressModeW)
lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (mipLodBias))
lift $ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (anisotropyEnable))
lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (maxAnisotropy))
lift $ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (compareEnable))
lift $ poke ((p `plusPtr` 60 :: Ptr CompareOp)) (compareOp)
lift $ poke ((p `plusPtr` 64 :: Ptr CFloat)) (CFloat (minLod))
lift $ poke ((p `plusPtr` 68 :: Ptr CFloat)) (CFloat (maxLod))
lift $ poke ((p `plusPtr` 72 :: Ptr BorderColor)) (borderColor)
lift $ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (unnormalizedCoordinates))
lift $ f
cStructSize :: Int
cStructSize = Int
80
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr (SamplerCreateInfo es) -> IO b -> IO b
pokeZeroCStruct Ptr (SamplerCreateInfo es)
p IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (SamplerCreateInfo es)
p Ptr (SamplerCreateInfo es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SAMPLER_CREATE_INFO)
pNext' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ forall (es :: [*]) a.
PokeChain es =>
(Ptr (Chain es) -> IO a) -> IO a
withZeroChain @es
lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
lift $ poke ((p `plusPtr` 20 :: Ptr Filter)) (zero)
lift $ poke ((p `plusPtr` 24 :: Ptr Filter)) (zero)
lift $ poke ((p `plusPtr` 28 :: Ptr SamplerMipmapMode)) (zero)
lift $ poke ((p `plusPtr` 32 :: Ptr SamplerAddressMode)) (zero)
lift $ poke ((p `plusPtr` 36 :: Ptr SamplerAddressMode)) (zero)
lift $ poke ((p `plusPtr` 40 :: Ptr SamplerAddressMode)) (zero)
lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (zero))
lift $ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))
lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (zero))
lift $ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (zero))
lift $ poke ((p `plusPtr` 60 :: Ptr CompareOp)) (zero)
lift $ poke ((p `plusPtr` 64 :: Ptr CFloat)) (CFloat (zero))
lift $ poke ((p `plusPtr` 68 :: Ptr CFloat)) (CFloat (zero))
lift $ poke ((p `plusPtr` 72 :: Ptr BorderColor)) (zero)
lift $ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (zero))
lift $ f
instance ( Extendss SamplerCreateInfo es
, PeekChain es ) => FromCStruct (SamplerCreateInfo es) where
peekCStruct :: Ptr (SamplerCreateInfo es) -> IO (SamplerCreateInfo es)
peekCStruct Ptr (SamplerCreateInfo es)
p = do
pNext <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) ((Ptr (SamplerCreateInfo es)
p Ptr (SamplerCreateInfo es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ())))
next <- peekChain (castPtr pNext)
flags <- peek @SamplerCreateFlags ((p `plusPtr` 16 :: Ptr SamplerCreateFlags))
magFilter <- peek @Filter ((p `plusPtr` 20 :: Ptr Filter))
minFilter <- peek @Filter ((p `plusPtr` 24 :: Ptr Filter))
mipmapMode <- peek @SamplerMipmapMode ((p `plusPtr` 28 :: Ptr SamplerMipmapMode))
addressModeU <- peek @SamplerAddressMode ((p `plusPtr` 32 :: Ptr SamplerAddressMode))
addressModeV <- peek @SamplerAddressMode ((p `plusPtr` 36 :: Ptr SamplerAddressMode))
addressModeW <- peek @SamplerAddressMode ((p `plusPtr` 40 :: Ptr SamplerAddressMode))
mipLodBias <- peek @CFloat ((p `plusPtr` 44 :: Ptr CFloat))
anisotropyEnable <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))
maxAnisotropy <- peek @CFloat ((p `plusPtr` 52 :: Ptr CFloat))
compareEnable <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
compareOp <- peek @CompareOp ((p `plusPtr` 60 :: Ptr CompareOp))
minLod <- peek @CFloat ((p `plusPtr` 64 :: Ptr CFloat))
maxLod <- peek @CFloat ((p `plusPtr` 68 :: Ptr CFloat))
borderColor <- peek @BorderColor ((p `plusPtr` 72 :: Ptr BorderColor))
unnormalizedCoordinates <- peek @Bool32 ((p `plusPtr` 76 :: Ptr Bool32))
pure $ SamplerCreateInfo
next
flags
magFilter
minFilter
mipmapMode
addressModeU
addressModeV
addressModeW
(coerce @CFloat @Float mipLodBias)
(bool32ToBool anisotropyEnable)
(coerce @CFloat @Float maxAnisotropy)
(bool32ToBool compareEnable)
compareOp
(coerce @CFloat @Float minLod)
(coerce @CFloat @Float maxLod)
borderColor
(bool32ToBool unnormalizedCoordinates)
instance es ~ '[] => Zero (SamplerCreateInfo es) where
zero :: SamplerCreateInfo es
zero = Chain es
-> SamplerCreateFlags
-> Filter
-> Filter
-> SamplerMipmapMode
-> SamplerAddressMode
-> SamplerAddressMode
-> SamplerAddressMode
-> Float
-> Bool
-> Float
-> Bool
-> CompareOp
-> Float
-> Float
-> BorderColor
-> Bool
-> SamplerCreateInfo es
forall (es :: [*]).
Chain es
-> SamplerCreateFlags
-> Filter
-> Filter
-> SamplerMipmapMode
-> SamplerAddressMode
-> SamplerAddressMode
-> SamplerAddressMode
-> Float
-> Bool
-> Float
-> Bool
-> CompareOp
-> Float
-> Float
-> BorderColor
-> Bool
-> SamplerCreateInfo es
SamplerCreateInfo
()
SamplerCreateFlags
forall a. Zero a => a
zero
Filter
forall a. Zero a => a
zero
Filter
forall a. Zero a => a
zero
SamplerMipmapMode
forall a. Zero a => a
zero
SamplerAddressMode
forall a. Zero a => a
zero
SamplerAddressMode
forall a. Zero a => a
zero
SamplerAddressMode
forall a. Zero a => a
zero
Float
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Float
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
CompareOp
forall a. Zero a => a
zero
Float
forall a. Zero a => a
zero
Float
forall a. Zero a => a
zero
BorderColor
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero