VK_QCOM_filter_cubic_clamp
Other Extension Metadata
Last Modified Date
2023-08-02
Contributors
- Jeff Leger, Qualcomm Technologies, Inc.
Description
This extension extends cubic filtering by adding the ability to enable an
anti-ringing clamp.
Cubic filtering samples from a 4x4 region of texels and computes a cubic
weighted average of the region.
In some cases, the resulting value is outside the range of any of the texels
in the 4x4 region.
This is sometimes referred to as filter overshoot
or filter ringing
and can occur when there is a sharp discontinuity in the 4x4 region being
filtered.
For some use cases this ringing
can produces unacceptable artifacts.
The solution to the ringing problem is to clamp the post-cubic-filtered
value to be within the max and min of texel values in the 4x4 region.
While such range clamping
can be performed in shader code, the
additional texture fetches and clamping ALU operations can be costly.
Certain Adreno GPUs are able to perform the range clamp in the texture unit during cubic filtering at significant performance/power savings versus a shader-based clamping approach. This extension exposes such hardware functionality.
This extension extends VkSamplerReductionMode, adding
VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM
which
enables the range clamp operation.
New Structures
New Enum Constants
VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME
VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION
- Extending VkSamplerReductionMode:
VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM
- Extending VkStructureType:
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM
Version History
- Revision 1, 2023-08-02 (jleger)
- Initial version