Commit 820a84ed authored by Samson Tam's avatar Samson Tam Committed by Alex Deucher
Browse files

drm/amd/display: SPL cleanup



[Why & How]
Move from pointer to callback to reference callback directly
Missed renaming fixpt functions with spl prefix

Reviewed-by: default avatarNavid Assadian <Navid.Assadian@amd.com>
Signed-off-by: default avatarSamson Tam <Samson.Tam@amd.com>
Signed-off-by: default avatarZaeem Mohamed <zaeem.mohamed@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 7875afaf
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -8,13 +8,13 @@
#include "dcn32/dcn32_dpp.h"
#include "dcn401/dcn401_dpp.h"

static struct spl_funcs dcn2_spl_funcs = {
static struct spl_callbacks dcn2_spl_callbacks = {
	.spl_calc_lb_num_partitions = dscl2_spl_calc_lb_num_partitions,
};
static struct spl_funcs dcn32_spl_funcs = {
static struct spl_callbacks dcn32_spl_callbacks = {
	.spl_calc_lb_num_partitions = dscl32_spl_calc_lb_num_partitions,
};
static struct spl_funcs dcn401_spl_funcs = {
static struct spl_callbacks dcn401_spl_callbacks = {
	.spl_calc_lb_num_partitions = dscl401_spl_calc_lb_num_partitions,
};
static void populate_splrect_from_rect(struct spl_rect *spl_rect, const struct rect *rect)
@@ -77,16 +77,16 @@ void translate_SPL_in_params_from_pipe_ctx(struct pipe_ctx *pipe_ctx, struct spl
	// This is used to determine the vtap support
	switch (plane_state->ctx->dce_version)	{
	case DCN_VERSION_2_0:
		spl_in->funcs = &dcn2_spl_funcs;
		spl_in->callbacks = dcn2_spl_callbacks;
		break;
	case DCN_VERSION_3_2:
		spl_in->funcs = &dcn32_spl_funcs;
		spl_in->callbacks = dcn32_spl_callbacks;
		break;
	case DCN_VERSION_4_01:
		spl_in->funcs = &dcn401_spl_funcs;
		spl_in->callbacks = dcn401_spl_callbacks;
		break;
	default:
		spl_in->funcs = &dcn2_spl_funcs;
		spl_in->callbacks = dcn2_spl_callbacks;
	}
	// Make format field from spl_in point to plane_res scl_data format
	spl_in->basic_in.format = (enum spl_pixel_format)pipe_ctx->plane_res.scl_data.format;
+1 −1
Original line number Diff line number Diff line
@@ -981,7 +981,7 @@ static bool spl_get_optimal_number_of_taps(
	else
		lb_config = LB_MEMORY_CONFIG_0;
	// Determine max vtap support by calculating how much line buffer can fit
	spl_in->funcs->spl_calc_lb_num_partitions(spl_in->basic_out.alpha_en, &spl_scratch->scl_data,
	spl_in->callbacks.spl_calc_lb_num_partitions(spl_in->basic_out.alpha_en, &spl_scratch->scl_data,
			lb_config, &num_part_y, &num_part_c);
	/* MAX_V_TAPS = MIN (NUM_LINES - MAX(CEILING(V_RATIO,1)-2, 0), 8) */
	if (spl_fixpt_ceil(spl_scratch->scl_data.ratios.vert) > 2)
+2 −2
Original line number Diff line number Diff line
@@ -497,7 +497,7 @@ enum scale_to_sharpness_policy {
	SCALE_TO_SHARPNESS_ADJ_YUV = 1,
	SCALE_TO_SHARPNESS_ADJ_ALL = 2
};
struct spl_funcs	{
struct spl_callbacks {
	void (*spl_calc_lb_num_partitions)
		(bool alpha_en,
		const struct spl_scaler_data *scl_data,
@@ -518,7 +518,7 @@ struct spl_in {
	// Basic slice information
	int odm_slice_index;	// ODM Slice Index using get_odm_split_index
	struct spl_taps scaling_quality; // Explicit Scaling Quality
	struct spl_funcs *funcs;
	struct spl_callbacks callbacks;
	// Inputs for isharp and EASF
	struct adaptive_sharpness adaptive_sharpness;	//	Adaptive Sharpness
	enum linear_light_scaling lls_pref;	//	Linear Light Scaling
+17 −17
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ static inline unsigned long long abs_i64(
 * result = dividend / divisor
 * *remainder = dividend % divisor
 */
static inline unsigned long long complete_integer_division_u64(
static inline unsigned long long spl_complete_integer_division_u64(
	unsigned long long dividend,
	unsigned long long divisor,
	unsigned long long *remainder)
@@ -60,7 +60,7 @@ struct spl_fixed31_32 spl_fixpt_from_fraction(long long numerator, long long den

	/* determine integer part */

	unsigned long long res_value = complete_integer_division_u64(
	unsigned long long res_value = spl_complete_integer_division_u64(
		arg1_value, arg2_value, &remainder);

	SPL_ASSERT(res_value <= (unsigned long long)LONG_MAX);
@@ -286,7 +286,7 @@ struct spl_fixed31_32 spl_fixpt_cos(struct spl_fixed31_32 arg)
 *
 * Calculated as Taylor series.
 */
static struct spl_fixed31_32 fixed31_32_exp_from_taylor_series(struct spl_fixed31_32 arg)
static struct spl_fixed31_32 spl_fixed31_32_exp_from_taylor_series(struct spl_fixed31_32 arg)
{
	unsigned int n = 9;

@@ -345,14 +345,14 @@ struct spl_fixed31_32 spl_fixpt_exp(struct spl_fixed31_32 arg)

		if (m > 0)
			return spl_fixpt_shl(
				fixed31_32_exp_from_taylor_series(r),
				spl_fixed31_32_exp_from_taylor_series(r),
				(unsigned char)m);
		else
			return spl_fixpt_div_int(
				fixed31_32_exp_from_taylor_series(r),
				spl_fixed31_32_exp_from_taylor_series(r),
				1LL << -m);
	} else if (arg.value != 0)
		return fixed31_32_exp_from_taylor_series(arg);
		return spl_fixed31_32_exp_from_taylor_series(arg);
	else
		return spl_fixpt_one;
}
@@ -396,7 +396,7 @@ struct spl_fixed31_32 spl_fixpt_log(struct spl_fixed31_32 arg)
 * part in 32 bits. It is used in hw programming (scaler)
 */

static inline unsigned int ux_dy(
static inline unsigned int spl_ux_dy(
	long long value,
	unsigned int integer_bits,
	unsigned int fractional_bits)
@@ -415,13 +415,13 @@ static inline unsigned int ux_dy(
	return result | fractional_part;
}

static inline unsigned int clamp_ux_dy(
static inline unsigned int spl_clamp_ux_dy(
	long long value,
	unsigned int integer_bits,
	unsigned int fractional_bits,
	unsigned int min_clamp)
{
	unsigned int truncated_val = ux_dy(value, integer_bits, fractional_bits);
	unsigned int truncated_val = spl_ux_dy(value, integer_bits, fractional_bits);

	if (value >= (1LL << (integer_bits + FIXED31_32_BITS_PER_FRACTIONAL_PART)))
		return (1 << (integer_bits + fractional_bits)) - 1;
@@ -433,40 +433,40 @@ static inline unsigned int clamp_ux_dy(

unsigned int spl_fixpt_u4d19(struct spl_fixed31_32 arg)
{
	return ux_dy(arg.value, 4, 19);
	return spl_ux_dy(arg.value, 4, 19);
}

unsigned int spl_fixpt_u3d19(struct spl_fixed31_32 arg)
{
	return ux_dy(arg.value, 3, 19);
	return spl_ux_dy(arg.value, 3, 19);
}

unsigned int spl_fixpt_u2d19(struct spl_fixed31_32 arg)
{
	return ux_dy(arg.value, 2, 19);
	return spl_ux_dy(arg.value, 2, 19);
}

unsigned int spl_fixpt_u0d19(struct spl_fixed31_32 arg)
{
	return ux_dy(arg.value, 0, 19);
	return spl_ux_dy(arg.value, 0, 19);
}

unsigned int spl_fixpt_clamp_u0d14(struct spl_fixed31_32 arg)
{
	return clamp_ux_dy(arg.value, 0, 14, 1);
	return spl_clamp_ux_dy(arg.value, 0, 14, 1);
}

unsigned int spl_fixpt_clamp_u0d10(struct spl_fixed31_32 arg)
{
	return clamp_ux_dy(arg.value, 0, 10, 1);
	return spl_clamp_ux_dy(arg.value, 0, 10, 1);
}

int spl_fixpt_s4d19(struct spl_fixed31_32 arg)
{
	if (arg.value < 0)
		return -(int)ux_dy(spl_fixpt_abs(arg).value, 4, 19);
		return -(int)spl_ux_dy(spl_fixpt_abs(arg).value, 4, 19);
	else
		return ux_dy(arg.value, 4, 19);
		return spl_ux_dy(arg.value, 4, 19);
}

struct spl_fixed31_32 spl_fixpt_from_ux_dy(unsigned int value,