| // Copyright 2019-2021 The Khronos Group Inc. |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| include::{generated}/meta/{refprefix}VK_EXT_custom_border_color.txt[] |
| |
| === 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 |
| - Jason 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 |
| ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER is used. |
| |
| To create a sampler which uses a custom border color set |
| slink:VkSamplerCreateInfo::pname:borderColor to one of: |
| |
| * ename:VK_BORDER_COLOR_FLOAT_CUSTOM_EXT |
| * ename:VK_BORDER_COLOR_INT_CUSTOM_EXT |
| |
| When ename:VK_BORDER_COLOR_FLOAT_CUSTOM_EXT or |
| ename:VK_BORDER_COLOR_INT_CUSTOM_EXT is used, applications must provide a |
| slink:VkSamplerCustomBorderColorCreateInfoEXT in the pname:pNext chain for |
| slink:VkSamplerCreateInfo. |
| |
| include::{generated}/interfaces/VK_EXT_custom_border_color.txt[] |
| |
| === 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 |
| sname:VkPhysicalDeviceCustomBorderColorPropertiesEXT::pname: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 pname: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 |