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 SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM which enables the range clamp operation.
VK_QCOM_filter_cubic_clampVK_EXT_filter_cubic and Version 1.2 or VK_EXT_sampler_filter_minmax| Modifier and Type | Field and Description |
|---|---|
| public static final String | VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME
The extension name. |
| public static final int | VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION
The extension specification version. |
| public static final int | VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM
Extends |
| public static final int | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM
Extends |
| Access | Constructor and Description |
|---|---|
| private |
| VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME | back to summary |
|---|---|
| public static final String VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME The extension name. | |
| VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION | back to summary |
|---|---|
| public static final int VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION The extension specification version. | |
| VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM | back to summary |
|---|---|
| public static final int VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM Extends | |
| VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM | back to summary |
|---|---|
| public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM Extends | |
| QCOMFilterCubicClamp | back to summary |
|---|---|
| private QCOMFilterCubicClamp() | |