Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Name
VK_EXT_custom_border_color - device extension
VK_EXT_custom_border_color
- Name String
VK_EXT_custom_border_color
- Extension Type
- Device extension
- Registered Extension Number
- 288
- Revision
- 12
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- VK_KHR_get_physical_device_properties2 or Version 1.1
- Special Uses
- Contact
Other Extension Metadata
- Last Modified Date
- 2020-04-16
- IP Status
- No known IP claims.
- Contributors
- Joshua Ashton, Valve
- Hans-Kristian Arntzen, Valve
- Philip Rebohle, Valve
- Liam Middlebrook, NVIDIA
- Jeff Bolz, NVIDIA
- Tobias Hector, AMD
- Faith Ekstrand, Intel
- Spencer Fricke, Samsung Electronics
- Graeme Leese, Broadcom
- Jesse Hall, Google
- Jan-Harald Fredriksen, ARM
- Tom Olson, ARM
- Stuart Smith, Imagination Technologies
- Donald Scorgie, Imagination Technologies
- Alex Walters, Imagination Technologies
- Peter Quayle, Imagination Technologies
Description
This extension provides cross-vendor functionality to specify a custom
border color for use when the sampler address mode
SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
is used.
To create a sampler which uses a custom border color set
SamplerCreateInfo
::borderColor
to one of:
When BORDER_COLOR_FLOAT_CUSTOM_EXT
or
BORDER_COLOR_INT_CUSTOM_EXT
is used,
applications must provide a SamplerCustomBorderColorCreateInfoEXT
in
the pNext
chain for SamplerCreateInfo
.
New Structures
Extending
PhysicalDeviceProperties2
:Extending
SamplerCreateInfo
:
New Enum Constants
EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION
Extending
BorderColor
:Extending
StructureType
:
Issues
1) Should VkClearColorValue be used for the border color value, or should we have our own struct/union? Do we need to specify the type of the input values for the components? This is more of a concern if VkClearColorValue is used here because it provides a union of float,int,uint types.
RESOLVED: Will reuse existing VkClearColorValue structure in order to easily take advantage of float,int,uint borderColor types.
2) For hardware which supports a limited number of border colors what happens if that number is exceeded? Should this be handled by the driver unbeknownst to the application? In Revision 1 we had solved this issue using a new Object type, however that may have lead to additional system resource consumption which would otherwise not be required.
RESOLVED: Added
PhysicalDeviceCustomBorderColorPropertiesEXT
::maxCustomBorderColorSamplers
for tracking implementation-specific limit, and Valid Usage statement
handling overflow.
3) Should this be supported for immutable samplers at all, or by a feature bit? Some implementations may not be able to support custom border colors on immutable samplers — is it worthwhile enabling this to work on them for implementations that can support it, or forbidding it entirely.
RESOLVED: Samplers created with a custom border color are forbidden from being immutable. This resolves concerns for implementations where the custom border color is an index to a LUT instead of being directly embedded into sampler state.
4) Should UINT and SINT (unsigned integer and signed integer) border color types be separated or should they be combined into one generic INT (integer) type?
RESOLVED: Separating these does not make much sense as the existing fixed border color types do not have this distinction, and there is no reason in hardware to do so. This separation would also create unnecessary work and considerations for the application.
Version History
Revision 1, 2019-10-10 (Joshua Ashton)
- Internal revisions.
Revision 2, 2019-10-11 (Liam Middlebrook)
- Remove VkCustomBorderColor object and associated functions
- Add issues concerning HW limitations for custom border color count
Revision 3, 2019-10-12 (Joshua Ashton)
- Re-expose the limits for the maximum number of unique border colors
- Add extra details about border color tracking
- Fix typos
Revision 4, 2019-10-12 (Joshua Ashton)
- Changed maxUniqueCustomBorderColors to a uint32_t from a VkDeviceSize
Revision 5, 2019-10-14 (Liam Middlebrook)
- Added features bit
Revision 6, 2019-10-15 (Joshua Ashton)
- Type-ize VK_BORDER_COLOR_CUSTOM
- Fix const-ness on
pNext
of VkSamplerCustomBorderColorCreateInfoEXT
Revision 7, 2019-11-26 (Liam Middlebrook)
- Renamed maxUniqueCustomBorderColors to maxCustomBorderColors
Revision 8, 2019-11-29 (Joshua Ashton)
- Renamed borderColor member of VkSamplerCustomBorderColorCreateInfoEXT to customBorderColor
Revision 9, 2020-02-19 (Joshua Ashton)
- Renamed maxCustomBorderColors to maxCustomBorderColorSamplers
Revision 10, 2020-02-21 (Joshua Ashton)
- Added format to VkSamplerCustomBorderColorCreateInfoEXT and feature bit
Revision 11, 2020-04-07 (Joshua Ashton)
- Dropped UINT/SINT border color differences, consolidated types
Revision 12, 2020-04-16 (Joshua Ashton)
- Renamed VK_BORDER_COLOR_CUSTOM_FLOAT_EXT to VK_BORDER_COLOR_FLOAT_CUSTOM_EXT for consistency
See Also
PhysicalDeviceCustomBorderColorFeaturesEXT
,
PhysicalDeviceCustomBorderColorPropertiesEXT
,
SamplerCustomBorderColorCreateInfoEXT
Document Notes
For more information, see the Vulkan Specification
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.
Synopsis
- data SamplerCustomBorderColorCreateInfoEXT = SamplerCustomBorderColorCreateInfoEXT {}
- data PhysicalDeviceCustomBorderColorPropertiesEXT = PhysicalDeviceCustomBorderColorPropertiesEXT {}
- data PhysicalDeviceCustomBorderColorFeaturesEXT = PhysicalDeviceCustomBorderColorFeaturesEXT {}
- type EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12
- pattern EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION :: forall a. Integral a => a
- type EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color"
- pattern EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
data SamplerCustomBorderColorCreateInfoEXT Source #
VkSamplerCustomBorderColorCreateInfoEXT - Structure specifying custom border color
Description
Note
If format
is a depth/stencil format, the aspect is determined by the
value of SamplerCreateInfo
::borderColor
. If
SamplerCreateInfo
::borderColor
is
BORDER_COLOR_FLOAT_CUSTOM_EXT
, the
depth aspect is considered. If
SamplerCreateInfo
::borderColor
is
BORDER_COLOR_INT_CUSTOM_EXT
, the
stencil aspect is considered.
If format
is FORMAT_UNDEFINED
, the
SamplerCreateInfo
::borderColor
is
BORDER_COLOR_INT_CUSTOM_EXT
, and the
sampler is used with an image with a stencil format, then the
implementation must source the custom border color from either the
first or second components of
SamplerCreateInfo
::customBorderColor
and
should source it from the first component.
Valid Usage
- If
format
is notFORMAT_UNDEFINED
andformat
is not a depth/stencil format then theSamplerCreateInfo
::borderColor
type must match the sampled type of the providedformat
, as shown in the SPIR-V Type column of the https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-numericformat table
- If the
customBorderColorWithoutFormat
feature is not enabled then
format
must not beFORMAT_UNDEFINED
- If the
sampler is used to sample an image view of
FORMAT_B4G4R4A4_UNORM_PACK16
,FORMAT_B5G6R5_UNORM_PACK16
,FORMAT_A1B5G5R5_UNORM_PACK16_KHR
, orFORMAT_B5G5R5A1_UNORM_PACK16
format thenformat
must not beFORMAT_UNDEFINED
Valid Usage (Implicit)
-
format
must be a validFormat
value
See Also
VK_EXT_custom_border_color,
ClearColorValue
,
Format
,
StructureType
SamplerCustomBorderColorCreateInfoEXT | |
|
Instances
data PhysicalDeviceCustomBorderColorPropertiesEXT Source #
VkPhysicalDeviceCustomBorderColorPropertiesEXT - Structure describing whether custom border colors can be supported by an implementation
Description
If the PhysicalDeviceCustomBorderColorPropertiesEXT
structure is
included in the pNext
chain of the
PhysicalDeviceProperties2
structure passed to
getPhysicalDeviceProperties2
,
it is filled in with each corresponding implementation-dependent
property.
Valid Usage (Implicit)
See Also
Instances
data PhysicalDeviceCustomBorderColorFeaturesEXT Source #
VkPhysicalDeviceCustomBorderColorFeaturesEXT - Structure describing whether custom border colors can be supported by an implementation
Members
This structure describes the following features:
Description
If the PhysicalDeviceCustomBorderColorFeaturesEXT
structure is
included in the pNext
chain of the
PhysicalDeviceFeatures2
structure passed to
getPhysicalDeviceFeatures2
,
it is filled in to indicate whether each corresponding feature is
supported. PhysicalDeviceCustomBorderColorFeaturesEXT
can also be
used in the pNext
chain of DeviceCreateInfo
to
selectively enable these features.
Valid Usage (Implicit)
See Also
PhysicalDeviceCustomBorderColorFeaturesEXT | |
|
Instances
type EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 Source #
pattern EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION :: forall a. Integral a => a Source #
type EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" Source #
pattern EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #