xref: /linux/drivers/gpu/drm/amd/display/dc/sspl/dc_spl_isharp_filters.h (revision 53b2e0c24afa4c24a2bf42bc850fe1565d978805)
1 // SPDX-License-Identifier: MIT
2 //
3 // Copyright 2024 Advanced Micro Devices, Inc.
4 
5 #ifndef __DC_SPL_ISHARP_FILTERS_H__
6 #define __DC_SPL_ISHARP_FILTERS_H__
7 
8 #include "dc_spl_types.h"
9 
10 #define NUM_SHARPNESS_ADJ_LEVELS 6
11 struct scale_ratio_to_sharpness_level_adj {
12 	unsigned int ratio_numer;
13 	unsigned int ratio_denom;
14 	unsigned int level_down_adj; /* adjust sharpness level down */
15 };
16 
17 struct isharp_1D_lut_pregen {
18 	unsigned int sharpness_numer;
19 	unsigned int sharpness_denom;
20 	uint32_t value[ISHARP_LUT_TABLE_SIZE];
21 };
22 
23 enum system_setup {
24 	SDR_NL = 0,
25 	SDR_L,
26 	HDR_NL,
27 	HDR_L,
28 	NUM_SHARPNESS_SETUPS
29 };
30 
31 void spl_set_blur_scale_data(struct dscl_prog_data *dscl_prog_data,
32 	const struct spl_scaler_data *data);
33 
34 void spl_build_isharp_1dlut_from_reference_curve(struct spl_fixed31_32 ratio, enum system_setup setup,
35 	struct adaptive_sharpness sharpness, enum scale_to_sharpness_policy scale_to_sharpness_policy);
36 uint32_t *spl_get_pregen_filter_isharp_1D_lut(enum system_setup setup);
37 
38 // public API
39 const uint16_t *spl_dscl_get_blur_scale_coeffs_64p(int taps);
40 const uint16_t *spl_dscl_get_blur_scale_coeffs_64p_s1_10(int taps);
41 
42 #endif /* __DC_SPL_ISHARP_FILTERS_H__ */
43