Commit 9b3d7652 authored by Jaehyun Chung's avatar Jaehyun Chung Committed by Alex Deucher

drm/amd/display: Revert adding degamma coefficients

[Why]
Degamma coefficients are calculated in our degamma formula using
the regamma coefficients. We do not need to add separate degamma
coefficients.

[How]
Remove the change to add separate degamma coefficients.
Reviewed-by: default avatarKrunoslav Kovac <Krunoslav.Kovac@amd.com>
Acked-by: default avatarMikita Lipski <mikita.lipski@amd.com>
Signed-off-by: default avatarJaehyun Chung <jaehyun.chung@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent db7b568e
...@@ -53,19 +53,18 @@ static struct hw_x_point coordinates_x[MAX_HW_POINTS + 2]; ...@@ -53,19 +53,18 @@ static struct hw_x_point coordinates_x[MAX_HW_POINTS + 2];
* So we compute and save x^gamma for the first 16 regions, and for every next region * So we compute and save x^gamma for the first 16 regions, and for every next region
* just multiply with 2^gamma which can be computed once, and save the result so we * just multiply with 2^gamma which can be computed once, and save the result so we
* recursively compute all the values. * recursively compute all the values.
*/
/*
* Regamma coefficients are used for both regamma and degamma. Degamma
* coefficients are calculated in our formula using the regamma coefficients.
*/ */
/*sRGB 709 2.2 2.4 P3*/ /*sRGB 709 2.2 2.4 P3*/
static const int32_t regamma_numerator01[] = { 31308, 180000, 0, 0, 0}; static const int32_t numerator01[] = { 31308, 180000, 0, 0, 0};
static const int32_t regamma_numerator02[] = { 12920, 4500, 0, 0, 0}; static const int32_t numerator02[] = { 12920, 4500, 0, 0, 0};
static const int32_t regamma_numerator03[] = { 55, 99, 0, 0, 0}; static const int32_t numerator03[] = { 55, 99, 0, 0, 0};
static const int32_t regamma_numerator04[] = { 55, 99, 0, 0, 0}; static const int32_t numerator04[] = { 55, 99, 0, 0, 0};
static const int32_t regamma_numerator05[] = { 2400, 2200, 2200, 2400, 2600}; static const int32_t numerator05[] = { 2400, 2200, 2200, 2400, 2600};
static const int32_t degamma_numerator01[] = { 404500, 180000, 0, 0, 0};
static const int32_t degamma_numerator02[] = { 12920, 4500, 0, 0, 0};
static const int32_t degamma_numerator03[] = { 55, 99, 0, 0, 0};
static const int32_t degamma_numerator04[] = { 55, 99, 0, 0, 0};
static const int32_t degamma_numerator05[] = { 2400, 2200, 2200, 2400, 2600};
/* one-time setup of X points */ /* one-time setup of X points */
void setup_x_points_distribution(void) void setup_x_points_distribution(void)
...@@ -295,7 +294,7 @@ struct dividers { ...@@ -295,7 +294,7 @@ struct dividers {
static bool build_coefficients(struct gamma_coefficients *coefficients, static bool build_coefficients(struct gamma_coefficients *coefficients,
enum dc_transfer_func_predefined type, bool isRegamma) enum dc_transfer_func_predefined type)
{ {
uint32_t i = 0; uint32_t i = 0;
...@@ -318,29 +317,16 @@ static bool build_coefficients(struct gamma_coefficients *coefficients, ...@@ -318,29 +317,16 @@ static bool build_coefficients(struct gamma_coefficients *coefficients,
} }
do { do {
if (isRegamma) {
coefficients->a0[i] = dc_fixpt_from_fraction(
regamma_numerator01[index], 10000000);
coefficients->a1[i] = dc_fixpt_from_fraction(
regamma_numerator02[index], 1000);
coefficients->a2[i] = dc_fixpt_from_fraction(
regamma_numerator03[index], 1000);
coefficients->a3[i] = dc_fixpt_from_fraction(
regamma_numerator04[index], 1000);
coefficients->user_gamma[i] = dc_fixpt_from_fraction(
regamma_numerator05[index], 1000);
} else {
coefficients->a0[i] = dc_fixpt_from_fraction( coefficients->a0[i] = dc_fixpt_from_fraction(
degamma_numerator01[index], 10000000); numerator01[index], 10000000);
coefficients->a1[i] = dc_fixpt_from_fraction( coefficients->a1[i] = dc_fixpt_from_fraction(
degamma_numerator02[index], 1000); numerator02[index], 1000);
coefficients->a2[i] = dc_fixpt_from_fraction( coefficients->a2[i] = dc_fixpt_from_fraction(
degamma_numerator03[index], 1000); numerator03[index], 1000);
coefficients->a3[i] = dc_fixpt_from_fraction( coefficients->a3[i] = dc_fixpt_from_fraction(
degamma_numerator04[index], 1000); numerator04[index], 1000);
coefficients->user_gamma[i] = dc_fixpt_from_fraction( coefficients->user_gamma[i] = dc_fixpt_from_fraction(
degamma_numerator05[index], 1000); numerator05[index], 1000);
}
++i; ++i;
} while (i != ARRAY_SIZE(coefficients->a0)); } while (i != ARRAY_SIZE(coefficients->a0));
...@@ -853,7 +839,7 @@ static bool build_regamma(struct pwl_float_data_ex *rgb_regamma, ...@@ -853,7 +839,7 @@ static bool build_regamma(struct pwl_float_data_ex *rgb_regamma,
if (!coeff) if (!coeff)
goto release; goto release;
if (!build_coefficients(coeff, type, true)) if (!build_coefficients(coeff, type))
goto release; goto release;
memset(cal_buffer->buffer, 0, NUM_PTS_IN_REGION * sizeof(struct fixed31_32)); memset(cal_buffer->buffer, 0, NUM_PTS_IN_REGION * sizeof(struct fixed31_32));
...@@ -1102,7 +1088,7 @@ static bool build_degamma(struct pwl_float_data_ex *curve, ...@@ -1102,7 +1088,7 @@ static bool build_degamma(struct pwl_float_data_ex *curve,
uint32_t begin_index, end_index; uint32_t begin_index, end_index;
bool ret = false; bool ret = false;
if (!build_coefficients(&coeff, type, false)) if (!build_coefficients(&coeff, type))
goto release; goto release;
i = 0; i = 0;
...@@ -1705,7 +1691,7 @@ static void apply_degamma_for_user_regamma(struct pwl_float_data_ex *rgb_regamma ...@@ -1705,7 +1691,7 @@ static void apply_degamma_for_user_regamma(struct pwl_float_data_ex *rgb_regamma
struct pwl_float_data_ex *rgb = rgb_regamma; struct pwl_float_data_ex *rgb = rgb_regamma;
const struct hw_x_point *coord_x = coordinates_x; const struct hw_x_point *coord_x = coordinates_x;
build_coefficients(&coeff, TRANSFER_FUNCTION_SRGB, true); build_coefficients(&coeff, true);
i = 0; i = 0;
while (i != hw_points_num + 1) { while (i != hw_points_num + 1) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment