Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- newtype VkBorderColor = VkBorderColor Int32
- pattern VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK :: VkBorderColor
- pattern VK_BORDER_COLOR_INT_TRANSPARENT_BLACK :: VkBorderColor
- pattern VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK :: VkBorderColor
- pattern VK_BORDER_COLOR_INT_OPAQUE_BLACK :: VkBorderColor
- pattern VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE :: VkBorderColor
- pattern VK_BORDER_COLOR_INT_OPAQUE_WHITE :: VkBorderColor
- newtype VkSamplerAddressMode = VkSamplerAddressMode Int32
- pattern VK_SAMPLER_ADDRESS_MODE_REPEAT :: VkSamplerAddressMode
- pattern VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT :: VkSamplerAddressMode
- pattern VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE :: VkSamplerAddressMode
- pattern VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER :: VkSamplerAddressMode
- newtype VkFilter = VkFilter Int32
- pattern VK_FILTER_NEAREST :: VkFilter
- pattern VK_FILTER_LINEAR :: VkFilter
- newtype VkSamplerMipmapMode = VkSamplerMipmapMode Int32
- pattern VK_SAMPLER_MIPMAP_MODE_NEAREST :: VkSamplerMipmapMode
- pattern VK_SAMPLER_MIPMAP_MODE_LINEAR :: VkSamplerMipmapMode
- newtype VkSamplerCreateFlags = VkSamplerCreateFlags VkFlags
- type VkSampler = Ptr VkSampler_T
- vkCreateSampler :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSampler" ::: Ptr VkSampler) -> IO VkResult
- vkDestroySampler :: ("device" ::: VkDevice) -> ("sampler" ::: VkSampler) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
- data VkSamplerCreateInfo = VkSamplerCreateInfo {
- vkSType :: VkStructureType
- vkPNext :: Ptr ()
- vkFlags :: VkSamplerCreateFlags
- vkMagFilter :: VkFilter
- vkMinFilter :: VkFilter
- vkMipmapMode :: VkSamplerMipmapMode
- vkAddressModeU :: VkSamplerAddressMode
- vkAddressModeV :: VkSamplerAddressMode
- vkAddressModeW :: VkSamplerAddressMode
- vkMipLodBias :: CFloat
- vkAnisotropyEnable :: VkBool32
- vkMaxAnisotropy :: CFloat
- vkCompareEnable :: VkBool32
- vkCompareOp :: VkCompareOp
- vkMinLod :: CFloat
- vkMaxLod :: CFloat
- vkBorderColor :: VkBorderColor
- vkUnnormalizedCoordinates :: VkBool32
Documentation
newtype VkBorderColor Source #
VkBorderColor - Specify border color used for texture lookups
Description
VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK
specifies a transparent, floating-point format, black color.
VK_BORDER_COLOR_INT_TRANSPARENT_BLACK
specifies a transparent, integer format, black color.VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK
specifies an opaque, floating-point format, black color.VK_BORDER_COLOR_INT_OPAQUE_BLACK
specifies an opaque, integer format, black color.VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE
specifies an opaque, floating-point format, white color.VK_BORDER_COLOR_INT_OPAQUE_WHITE
specifies an opaque, integer format, white color.
These colors are described in detail in Texel Replacement.
See Also
Instances
pattern VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK :: VkBorderColor Source #
pattern VK_BORDER_COLOR_INT_OPAQUE_BLACK :: VkBorderColor Source #
pattern VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE :: VkBorderColor Source #
pattern VK_BORDER_COLOR_INT_OPAQUE_WHITE :: VkBorderColor Source #
newtype VkSamplerAddressMode Source #
VkSamplerAddressMode - Specify behavior of sampling with texture coordinates outside an image
See Also
Instances
pattern VK_SAMPLER_ADDRESS_MODE_REPEAT :: VkSamplerAddressMode Source #
VK_SAMPLER_ADDRESS_MODE_REPEAT
specifies that the repeat wrap mode
will be used.
pattern VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT :: VkSamplerAddressMode Source #
VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT
specifies that the mirrored
repeat wrap mode will be used.
pattern VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE :: VkSamplerAddressMode Source #
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
specifies that the clamp to edge
wrap mode will be used.
pattern VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER :: VkSamplerAddressMode Source #
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
specifies that the clamp to
border wrap mode will be used.
VkFilter - Specify filters used for texture lookups
Description
VK_FILTER_NEAREST
specifies nearest filtering.
VK_FILTER_LINEAR
specifies linear filtering.VK_FILTER_CUBIC_IMG
specifies cubic filtering.
These filters are described in detail in Texel Filtering.
See Also
VkSamplerCreateInfo
,
VkSamplerYcbcrConversionCreateInfo
,
vkCmdBlitImage
Instances
Eq VkFilter Source # | |
Ord VkFilter Source # | |
Read VkFilter Source # | |
Show VkFilter Source # | |
Storable VkFilter Source # | |
pattern VK_FILTER_NEAREST :: VkFilter Source #
pattern VK_FILTER_LINEAR :: VkFilter Source #
newtype VkSamplerMipmapMode Source #
VkSamplerMipmapMode - Specify mipmap mode used for texture lookups
Description
VK_SAMPLER_MIPMAP_MODE_NEAREST
specifies nearest filtering.
VK_SAMPLER_MIPMAP_MODE_LINEAR
specifies linear filtering.
These modes are described in detail in Texel Filtering.
See Also
Instances
pattern VK_SAMPLER_MIPMAP_MODE_NEAREST :: VkSamplerMipmapMode Source #
pattern VK_SAMPLER_MIPMAP_MODE_LINEAR :: VkSamplerMipmapMode Source #
newtype VkSamplerCreateFlags Source #
VkSamplerCreateFlags - Reserved for future use
Description
VkSamplerCreateFlags
is a bitmask type for setting a mask, but is
currently reserved for future use.
See Also
Instances
type VkSampler = Ptr VkSampler_T Source #
VkSampler - Opaque handle to a sampler object
See Also
VkDescriptorImageInfo
,
VkDescriptorSetLayoutBinding
,
vkCreateSampler
, vkDestroySampler
vkCreateSampler :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSampler" ::: Ptr VkSampler) -> IO VkResult Source #
vkCreateSampler - Create a new sampler object
Parameters
device
is the logical device that creates the sampler.
pCreateInfo
is a pointer to an instance of theVkSamplerCreateInfo
structure specifying the state of the sampler object.pAllocator
controls host memory allocation as described in the Memory Allocation chapter.pSampler
points to aVkSampler
handle in which the resulting sampler object is returned.
Valid Usage (Implicit)
device
must be a validVkDevice
handle
pCreateInfo
must be a valid pointer to a validVkSamplerCreateInfo
structure- If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validVkAllocationCallbacks
structure pSampler
must be a valid pointer to aVkSampler
handle
Return Codes
[Success]
- VK_SUCCESS
[Failure]
- VK_ERROR_OUT_OF_HOST_MEMORY
VK_ERROR_OUT_OF_DEVICE_MEMORY
VK_ERROR_TOO_MANY_OBJECTS
See Also
VkAllocationCallbacks
,
VkDevice
, VkSampler
,
VkSamplerCreateInfo
vkDestroySampler :: ("device" ::: VkDevice) -> ("sampler" ::: VkSampler) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO () Source #
vkDestroySampler - Destroy a sampler object
Parameters
device
is the logical device that destroys the sampler.
sampler
is the sampler to destroy.pAllocator
controls host memory allocation as described in the Memory Allocation chapter.
Valid Usage
- All submitted commands that refer to
sampler
must have completed execution
- If
VkAllocationCallbacks
were provided whensampler
was created, a compatible set of callbacks must be provided here - If no
VkAllocationCallbacks
were provided whensampler
was created,pAllocator
must beNULL
Valid Usage (Implicit)
device
must be a validVkDevice
handle
- If
sampler
is notVK_NULL_HANDLE
,sampler
must be a validVkSampler
handle - If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validVkAllocationCallbacks
structure - If
sampler
is a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
sampler
must be externally synchronized
See Also
data VkSamplerCreateInfo Source #
VkSamplerCreateInfo - Structure specifying parameters of a newly created sampler
Members
sType
is the type of this structure.
pNext
isNULL
or a pointer to an extension-specific structure.flags
is reserved for future use.magFilter
is aVkFilter
value specifying the magnification filter to apply to lookups.minFilter
is aVkFilter
value specifying the minification filter to apply to lookups.mipmapMode
is aVkSamplerMipmapMode
value specifying the mipmap filter to apply to lookups.addressModeU
is aVkSamplerAddressMode
value specifying the addressing mode for outside [0..1] range for U coordinate.addressModeV
is aVkSamplerAddressMode
value specifying the addressing mode for outside [0..1] range for V coordinate.addressModeW
is aVkSamplerAddressMode
value specifying the addressing mode for outside [0..1] range for W coordinate.mipLodBias
is the bias to be added to mipmap LOD (level-of-detail) calculation and bias provided by image sampling functions in SPIR-V, as described in the Level-of-Detail Operation section.anisotropyEnable
isVK_TRUE
to enable anisotropic filtering, as described in the Texel Anisotropic Filtering section, orVK_FALSE
otherwise.maxAnisotropy
is the anisotropy value clamp used by the sampler whenanisotropyEnable
isVK_TRUE
. IfanisotropyEnable
isVK_FALSE
,maxAnisotropy
is ignored.compareEnable
isVK_TRUE
to enable comparison against a reference value during lookups, orVK_FALSE
otherwise.- Note: Some implementations will default to shader state if this member does not match.
compareOp
is aVkCompareOp
value specifying the comparison function to apply to fetched data before filtering as described in the Depth Compare Operation section.minLod
andmaxLod
are the values used to clamp the computed LOD value, as described in the Level-of-Detail Operation section.maxLod
must be greater than or equal tominLod
.borderColor
is aVkBorderColor
value specifying the predefined border color to use.unnormalizedCoordinates
controls whether to use unnormalized or normalized texel coordinates to address texels of the image. When set toVK_TRUE
, the range of the image coordinates used to lookup the texel is in the range of zero to the image dimensions for x, y and z. When set toVK_FALSE
the range of image coordinates is zero to one. WhenunnormalizedCoordinates
isVK_TRUE
, samplers have the following requirements:minFilter
andmagFilter
must be equal.mipmapMode
must beVK_SAMPLER_MIPMAP_MODE_NEAREST
.minLod
andmaxLod
must be zero.addressModeU
andaddressModeV
must each be eitherVK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
orVK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
.anisotropyEnable
must beVK_FALSE
.compareEnable
must beVK_FALSE
.- The sampler must not enable sampler Y’CBCR conversion.
When
unnormalizedCoordinates
isVK_TRUE
, images the sampler is used with in the shader have the following requirements:- The
viewType
must be eitherVK_IMAGE_VIEW_TYPE_1D
orVK_IMAGE_VIEW_TYPE_2D
. - The image view must have a single layer and a single mip level.
- The
When
unnormalizedCoordinates
isVK_TRUE
, image built-in functions in the shader that use the sampler have the following requirements:- The functions must not use projection.
- The functions must not use offsets.
Description
Note
magFilter
values of VK_FILTER_NEAREST
and VK_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 VK_FILTER_LINEAR
and mipmapMode
of VK_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 VK_SAMPLER_MIPMAP_MODE_NEAREST
, minLod
= 0, and
maxLod
= 0.25, and using minFilter
= VK_FILTER_LINEAR
or
minFilter
= VK_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
VkPhysicalDeviceLimits
structure. If maxSamplerAllocationCount
is exceeded, vkCreateSampler
will return VK_ERROR_TOO_MANY_OBJECTS
.
Since VkSampler
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.
Valid Usage
- The absolute value of
mipLodBias
must be less than or equal toVkPhysicalDeviceLimits
::maxSamplerLodBias
- If the anisotropic
sampling
feature is not enabled,
anisotropyEnable
must beVK_FALSE
- If
anisotropyEnable
isVK_TRUE
,maxAnisotropy
must be between1.0
andVkPhysicalDeviceLimits
::maxSamplerAnisotropy
, inclusive - If sampler Y’CBCR
conversion
is enabled and
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
is not set for the format,minFilter
andmagFilter
must be equal to the sampler Y’CBCR conversion’schromaFilter
- If
unnormalizedCoordinates
isVK_TRUE
,minFilter
andmagFilter
must be equal - If
unnormalizedCoordinates
isVK_TRUE
,mipmapMode
must beVK_SAMPLER_MIPMAP_MODE_NEAREST
- If
unnormalizedCoordinates
isVK_TRUE
,minLod
andmaxLod
must be zero - If
unnormalizedCoordinates
isVK_TRUE
,addressModeU
andaddressModeV
must each be eitherVK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
orVK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
- If
unnormalizedCoordinates
isVK_TRUE
,anisotropyEnable
must beVK_FALSE
- If
unnormalizedCoordinates
isVK_TRUE
,compareEnable
must beVK_FALSE
- If any of
addressModeU
,addressModeV
oraddressModeW
areVK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
,borderColor
must be a validVkBorderColor
value - If sampler Y’CBCR
conversion
is enabled,
addressModeU
,addressModeV
, andaddressModeW
must beVK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
,anisotropyEnable
must beVK_FALSE
, andunnormalizedCoordinates
must beVK_FALSE
- The sampler reduction mode must be set to
VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT
if sampler Y’CBCR conversion is enabled - If the
{html_spec_relative}#VK_KHR_sampler_mirror_clamp_to_edge
extension is not enabled,addressModeU
,addressModeV
andaddressModeW
must not beVK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
- If
compareEnable
isVK_TRUE
,compareOp
must be a validVkCompareOp
value - If either
magFilter
orminFilter
isVK_FILTER_CUBIC_IMG
,anisotropyEnable
must beVK_FALSE
- If either
magFilter
orminFilter
isVK_FILTER_CUBIC_IMG
, thereductionMode
member ofVkSamplerReductionModeCreateInfoEXT
must beVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT
- If
compareEnable
isVK_TRUE
, thereductionMode
member ofVkSamplerReductionModeCreateInfoEXT
must beVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT
Valid Usage (Implicit)
sType
must beVK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
- Each
pNext
member of any structure (including this one) in thepNext
chain must be eitherNULL
or a pointer to a valid instance ofVkSamplerReductionModeCreateInfoEXT
orVkSamplerYcbcrConversionInfo
- Each
sType
member in thepNext
chain must be unique flags
must be0
magFilter
must be a validVkFilter
valueminFilter
must be a validVkFilter
valuemipmapMode
must be a validVkSamplerMipmapMode
valueaddressModeU
must be a validVkSamplerAddressMode
valueaddressModeV
must be a validVkSamplerAddressMode
valueaddressModeW
must be a validVkSamplerAddressMode
value
See Also
VkBool32
, VkBorderColor
,
VkCompareOp
, VkFilter
,
VkSamplerAddressMode
, VkSamplerCreateFlags
, VkSamplerMipmapMode
,
VkStructureType
, vkCreateSampler
Instances
Eq VkSamplerCreateInfo Source # | |
(==) :: VkSamplerCreateInfo -> VkSamplerCreateInfo -> Bool # (/=) :: VkSamplerCreateInfo -> VkSamplerCreateInfo -> Bool # | |
Show VkSamplerCreateInfo Source # | |
showsPrec :: Int -> VkSamplerCreateInfo -> ShowS # show :: VkSamplerCreateInfo -> String # showList :: [VkSamplerCreateInfo] -> ShowS # | |
Storable VkSamplerCreateInfo Source # | |
sizeOf :: VkSamplerCreateInfo -> Int # alignment :: VkSamplerCreateInfo -> Int # peekElemOff :: Ptr VkSamplerCreateInfo -> Int -> IO VkSamplerCreateInfo # pokeElemOff :: Ptr VkSamplerCreateInfo -> Int -> VkSamplerCreateInfo -> IO () # peekByteOff :: Ptr b -> Int -> IO VkSamplerCreateInfo # pokeByteOff :: Ptr b -> Int -> VkSamplerCreateInfo -> IO () # peek :: Ptr VkSamplerCreateInfo -> IO VkSamplerCreateInfo # poke :: Ptr VkSamplerCreateInfo -> VkSamplerCreateInfo -> IO () # |