Commit 55a01d40 authored by Krunoslav Kovac's avatar Krunoslav Kovac Committed by Alex Deucher

drm/amd/display: Add user_regamma to color module

Signed-off-by: default avatarKrunoslav Kovac <Krunoslav.Kovac@amd.com>
Reviewed-by: default avatarAnthony Koo <Anthony.Koo@amd.com>
Acked-by: default avatarHarry Wentland <harry.wentland@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 8a79593d
...@@ -32,6 +32,47 @@ struct dc_transfer_func_distributed_points; ...@@ -32,6 +32,47 @@ struct dc_transfer_func_distributed_points;
struct dc_rgb_fixed; struct dc_rgb_fixed;
enum dc_transfer_func_predefined; enum dc_transfer_func_predefined;
/* For SetRegamma ADL interface support
* Must match escape type
*/
union regamma_flags {
unsigned int raw;
struct {
unsigned int gammaRampArray :1; // RegammaRamp is in use
unsigned int gammaFromEdid :1; //gamma from edid is in use
unsigned int gammaFromEdidEx :1; //gamma from edid is in use , but only for Display Id 1.2
unsigned int gammaFromUser :1; //user custom gamma is used
unsigned int coeffFromUser :1; //coeff. A0-A3 from user is in use
unsigned int coeffFromEdid :1; //coeff. A0-A3 from edid is in use
unsigned int applyDegamma :1; //flag for additional degamma correction in driver
unsigned int gammaPredefinedSRGB :1; //flag for SRGB gamma
unsigned int gammaPredefinedPQ :1; //flag for PQ gamma
unsigned int gammaPredefinedPQ2084Interim :1; //flag for PQ gamma, lower max nits
unsigned int gammaPredefined36 :1; //flag for 3.6 gamma
unsigned int gammaPredefinedReset :1; //flag to return to previous gamma
} bits;
};
struct regamma_ramp {
unsigned short gamma[256*3]; // gamma ramp packed in same way as OS windows ,r , g & b
};
struct regamma_coeff {
int gamma[3];
int A0[3];
int A1[3];
int A2[3];
int A3[3];
};
struct regamma_lut {
union regamma_flags flags;
union {
struct regamma_ramp ramp;
struct regamma_coeff coeff;
};
};
void setup_x_points_distribution(void); void setup_x_points_distribution(void);
void precompute_pq(void); void precompute_pq(void);
void precompute_de_pq(void); void precompute_de_pq(void);
...@@ -48,6 +89,11 @@ bool mod_color_calculate_curve(enum dc_transfer_func_predefined trans, ...@@ -48,6 +89,11 @@ bool mod_color_calculate_curve(enum dc_transfer_func_predefined trans,
bool mod_color_calculate_degamma_curve(enum dc_transfer_func_predefined trans, bool mod_color_calculate_degamma_curve(enum dc_transfer_func_predefined trans,
struct dc_transfer_func_distributed_points *points); struct dc_transfer_func_distributed_points *points);
bool calculate_user_regamma_coeff(struct dc_transfer_func *output_tf,
const struct regamma_lut *regamma);
bool calculate_user_regamma_ramp(struct dc_transfer_func *output_tf,
const struct regamma_lut *regamma);
#endif /* COLOR_MOD_COLOR_GAMMA_H_ */ #endif /* COLOR_MOD_COLOR_GAMMA_H_ */
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