vulkan
Safe HaskellNone
LanguageHaskell2010

Vulkan.Core10.Sampler

Synopsis

Documentation

createSampler Source #

Arguments

:: forall (a :: [Type]) io. (Extendss SamplerCreateInfo a, PokeChain a, MonadIO io) 
=> Device

device is the logical device that creates the sampler.

-> SamplerCreateInfo a

pCreateInfo is a pointer to a SamplerCreateInfo structure specifying the state of the sampler object.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io Sampler 

vkCreateSampler - Create a new sampler object

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle
  • pCreateInfo must be a valid pointer to a valid SamplerCreateInfo structure
  • If pAllocator is not NULL, pAllocator must be a valid pointer to a valid AllocationCallbacks structure
  • pSampler must be a valid pointer to a Sampler handle

Return Codes

Success
Failure

See Also

VK_VERSION_1_0, AllocationCallbacks, Device, Sampler, SamplerCreateInfo

withSampler :: forall (a :: [Type]) io r. (Extendss SamplerCreateInfo a, PokeChain a, MonadIO io) => Device -> SamplerCreateInfo a -> Maybe AllocationCallbacks -> (io Sampler -> (Sampler -> io ()) -> r) -> r Source #

A convenience wrapper to make a compatible pair of calls to createSampler and destroySampler

To ensure that destroySampler is always called: pass bracket (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.

destroySampler Source #

Arguments

:: MonadIO io 
=> Device

device is the logical device that destroys the sampler.

-> Sampler

sampler is the sampler to destroy.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io () 

vkDestroySampler - Destroy a sampler object

Valid Usage

  • All submitted commands that refer to sampler must have completed execution
  • If AllocationCallbacks were provided when sampler was created, a compatible set of callbacks must be provided here
  • If no AllocationCallbacks were provided when sampler was created, pAllocator must be NULL

Valid Usage (Implicit)

  • device must be a valid Device handle
  • If sampler is not NULL_HANDLE, sampler must be a valid Sampler handle
  • If pAllocator is not NULL, pAllocator must be a valid pointer to a valid AllocationCallbacks structure
  • If sampler is a valid handle, it must have been created, allocated, or retrieved from device

Host Synchronization

  • Host access to sampler must be externally synchronized

See Also

VK_VERSION_1_0, AllocationCallbacks, Device, Sampler

data SamplerCreateInfo (es :: [Type]) Source #

VkSamplerCreateInfo - Structure specifying parameters of a newly created sampler

Description

Mapping of OpenGL to Vulkan Filter Modes

magFilter values of FILTER_NEAREST and FILTER_LINEAR directly correspond to GL_NEAREST and GL_LINEAR magnification filters. minFilter and mipmapMode combine to correspond to the similarly named OpenGL minification filter of GL_minFilter_MIPMAP_mipmapMode (e.g. minFilter of FILTER_LINEAR and mipmapMode of SAMPLER_MIPMAP_MODE_NEAREST correspond to GL_LINEAR_MIPMAP_NEAREST).

There are no Vulkan filter modes that directly correspond to OpenGL minification filters of GL_LINEAR or GL_NEAREST, but they can be emulated using SAMPLER_MIPMAP_MODE_NEAREST, minLod = 0, and maxLod = 0.25, and using minFilter = FILTER_LINEAR or minFilter = FILTER_NEAREST, respectively.

Note that using a maxLod of zero would cause magnification to always be performed, and the magFilter to always be used. This is valid, just not an exact match for OpenGL behavior. Clamping the maximum LOD to 0.25 allows the λ value to be non-zero and minification to be performed, while still always rounding down to the base level. If the minFilter and magFilter are equal, then using a maxLod of zero also works.

The maximum number of sampler objects which can be simultaneously created on a device is implementation-dependent and specified by the maxSamplerAllocationCount member of the PhysicalDeviceLimits structure.

For historical reasons, if maxSamplerAllocationCount is exceeded, some implementations may return ERROR_TOO_MANY_OBJECTS. Exceeding this limit will result in undefined behavior, and an application should not rely on the use of the returned error code in order to identify when the limit is reached.

Since Sampler is a non-dispatchable handle type, implementations may return the same handle for sampler state vectors that are identical. In such cases, all such objects would only count once against the maxSamplerAllocationCount limit.

When this structure is used to write a descriptor via writeSamplerDescriptorsEXT, applications can give the descriptor a debug name in a similar way to naming an object, via the DebugUtilsObjectNameInfoEXT structure. However, as there is no actual object, DebugUtilsObjectNameInfoEXT must be passed via the pNext chain of this structure, with a objectType of OBJECT_TYPE_UNKNOWN and a objectHandle of NULL_HANDLE. The name is attached to the unique set of descriptor bits written by the implementation, and writing the same bits again with new debug info may rename the original descriptor.

Implementations are not prevented from returning the same bits for different descriptors. This can result in multiple different samplers mapping to the same name.

DescriptorSetAndBindingMappingEXT can also be chained in the same way when defining an embedded sampler via DescriptorSetAndBindingMappingEXT, naming the embedded sampler.

Valid Usage

  • The absolute value of mipLodBias must be less than or equal to PhysicalDeviceLimits::maxSamplerLodBias

Valid Usage (Implicit)

See Also

VK_VERSION_1_0, Bool32, BorderColor, CompareOp, DescriptorMappingSourceConstantOffsetEXT, DescriptorMappingSourceIndirectIndexArrayEXT, DescriptorMappingSourceIndirectIndexEXT, DescriptorMappingSourcePushIndexEXT, DescriptorMappingSourceShaderRecordIndexEXT, Filter, SamplerAddressMode, SamplerCreateFlags, SamplerMipmapMode, StructureType, createSampler, writeSamplerDescriptorsEXT

Constructors

SamplerCreateInfo 

Fields

Instances

Instances details
Extensible SamplerCreateInfo Source # 
Instance details

Defined in Vulkan.Core10.Sampler

Methods

extensibleTypeName :: String Source #

getNext :: forall (es :: [Type]). SamplerCreateInfo es -> Chain es Source #

setNext :: forall (ds :: [Type]) (es :: [Type]). SamplerCreateInfo ds -> Chain es -> SamplerCreateInfo es Source #

extends :: forall e b proxy. Typeable e => proxy e -> (Extends SamplerCreateInfo e => b) -> Maybe b Source #

Show (Chain es) => Show (SamplerCreateInfo es) Source # 
Instance details

Defined in Vulkan.Core10.Sampler

(Extendss SamplerCreateInfo es, PeekChain es) => FromCStruct (SamplerCreateInfo es) Source # 
Instance details

Defined in Vulkan.Core10.Sampler

(Extendss SamplerCreateInfo es, PokeChain es) => ToCStruct (SamplerCreateInfo es) Source # 
Instance details

Defined in Vulkan.Core10.Sampler

es ~ ('[] :: [Type]) => Zero (SamplerCreateInfo es) Source # 
Instance details

Defined in Vulkan.Core10.Sampler

newtype Sampler Source #

Constructors

Sampler Word64 

Instances

Instances details
Eq Sampler Source # 
Instance details

Defined in Vulkan.Core10.Handles

Methods

(==) :: Sampler -> Sampler -> Bool #

(/=) :: Sampler -> Sampler -> Bool #

Ord Sampler Source # 
Instance details

Defined in Vulkan.Core10.Handles

Storable Sampler Source # 
Instance details

Defined in Vulkan.Core10.Handles

Show Sampler Source # 
Instance details

Defined in Vulkan.Core10.Handles

HasObjectType Sampler Source # 
Instance details

Defined in Vulkan.Core10.Handles

IsHandle Sampler Source # 
Instance details

Defined in Vulkan.Core10.Handles

Zero Sampler Source # 
Instance details

Defined in Vulkan.Core10.Handles

Methods

zero :: Sampler Source #

newtype BorderColor Source #

VkBorderColor - Specify border color used for texture lookups

Description

These colors are described in detail in Border Replacement.

See Also

VK_VERSION_1_0, SamplerCreateInfo

Constructors

BorderColor Int32 

Instances

Instances details
Eq BorderColor Source # 
Instance details

Defined in Vulkan.Core10.Enums.BorderColor

Ord BorderColor Source # 
Instance details

Defined in Vulkan.Core10.Enums.BorderColor

Storable BorderColor Source # 
Instance details

Defined in Vulkan.Core10.Enums.BorderColor

Read BorderColor Source # 
Instance details

Defined in Vulkan.Core10.Enums.BorderColor

Show BorderColor Source # 
Instance details

Defined in Vulkan.Core10.Enums.BorderColor

Zero BorderColor Source # 
Instance details

Defined in Vulkan.Core10.Enums.BorderColor

newtype Filter Source #

VkFilter - Specify filters used for texture lookups

Description

These filters are described in detail in Texel Filtering.

See Also

VK_VERSION_1_0, BlitImageInfo2, SamplerCreateInfo, SamplerYcbcrConversionCreateInfo, cmdBlitImage

Constructors

Filter Int32 

Bundled Patterns

pattern FILTER_CUBIC_EXT :: Filter 
pattern FILTER_LINEAR :: Filter 
pattern FILTER_NEAREST :: Filter 

Instances

Instances details
Eq Filter Source # 
Instance details

Defined in Vulkan.Core10.Enums.Filter

Methods

(==) :: Filter -> Filter -> Bool #

(/=) :: Filter -> Filter -> Bool #

Ord Filter Source # 
Instance details

Defined in Vulkan.Core10.Enums.Filter

Storable Filter Source # 
Instance details

Defined in Vulkan.Core10.Enums.Filter

Read Filter Source # 
Instance details

Defined in Vulkan.Core10.Enums.Filter

Show Filter Source # 
Instance details

Defined in Vulkan.Core10.Enums.Filter

Zero Filter Source # 
Instance details

Defined in Vulkan.Core10.Enums.Filter

Methods

zero :: Filter Source #

newtype SamplerMipmapMode Source #

VkSamplerMipmapMode - Specify mipmap mode used for texture lookups

Description

These modes are described in detail in Texel Filtering.

See Also

VK_VERSION_1_0, SamplerCreateInfo

Constructors

SamplerMipmapMode Int32 

Instances

Instances details
Eq SamplerMipmapMode Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerMipmapMode

Ord SamplerMipmapMode Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerMipmapMode

Storable SamplerMipmapMode Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerMipmapMode

Read SamplerMipmapMode Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerMipmapMode

Show SamplerMipmapMode Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerMipmapMode

Zero SamplerMipmapMode Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerMipmapMode

newtype SamplerAddressMode Source #

VkSamplerAddressMode - Specify behavior of sampling with texture coordinates outside an image

Description

See Also

VK_VERSION_1_0, SamplerCreateInfo

Instances

Instances details
Eq SamplerAddressMode Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerAddressMode

Ord SamplerAddressMode Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerAddressMode

Storable SamplerAddressMode Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerAddressMode

Read SamplerAddressMode Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerAddressMode

Show SamplerAddressMode Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerAddressMode

Zero SamplerAddressMode Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerAddressMode

newtype SamplerCreateFlagBits Source #

VkSamplerCreateFlagBits - Bitmask specifying additional parameters of sampler

Description

The approximations used when SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT is specified are implementation defined. Some implementations may interpolate between fragment density levels in a subsampled image. In that case, this bit may be used to decide whether the interpolation factors are calculated per fragment or at a coarser granularity.

See Also

VK_VERSION_1_0, SamplerCreateFlags

Instances

Instances details
Bits SamplerCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerCreateFlagBits

FiniteBits SamplerCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerCreateFlagBits

Eq SamplerCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerCreateFlagBits

Ord SamplerCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerCreateFlagBits

Storable SamplerCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerCreateFlagBits

Read SamplerCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerCreateFlagBits

Show SamplerCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerCreateFlagBits

Zero SamplerCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.SamplerCreateFlagBits