Commit f99b6f4f authored by Vitaly Prosyak's avatar Vitaly Prosyak Committed by Alex Deucher

drm/amd/display: Integrate color transform3x4 with 3dlut tm

[Why & How]
Reuse existent code path (dcn1+) and in order to do that apply de gamma
in 1D blender LUT and re use MPC OGAM.
Follow up is required.
Signed-off-by: default avatarVitaly Prosyak <vitaly.prosyak@amd.com>
Reviewed-by: default avatarAric Cyr <Aric.Cyr@amd.com>
Acked-by: default avatarBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Acked-by: default avatarKrunoslav Kovac <Krunoslav.Kovac@amd.com>
Acked-by: default avatarVitaly Prosyak <Vitaly.Prosyak@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 8bb3d7e7
...@@ -1669,6 +1669,13 @@ static void copy_surface_update_to_plane( ...@@ -1669,6 +1669,13 @@ static void copy_surface_update_to_plane(
srf_update->lut3d_func)) srf_update->lut3d_func))
memcpy(surface->lut3d_func, srf_update->lut3d_func, memcpy(surface->lut3d_func, srf_update->lut3d_func,
sizeof(*surface->lut3d_func)); sizeof(*surface->lut3d_func));
if (srf_update->blend_tf &&
(surface->blend_tf !=
srf_update->blend_tf))
memcpy(surface->blend_tf, srf_update->blend_tf,
sizeof(*surface->blend_tf));
#endif #endif
if (srf_update->input_csc_color_matrix) if (srf_update->input_csc_color_matrix)
surface->input_csc_color_matrix = surface->input_csc_color_matrix =
......
...@@ -60,6 +60,11 @@ static void construct(struct dc_context *ctx, struct dc_plane_state *plane_state ...@@ -60,6 +60,11 @@ static void construct(struct dc_context *ctx, struct dc_plane_state *plane_state
plane_state->lut3d_func->ctx = ctx; plane_state->lut3d_func->ctx = ctx;
plane_state->lut3d_func->initialized = false; plane_state->lut3d_func->initialized = false;
} }
plane_state->blend_tf = dc_create_transfer_func();
if (plane_state->blend_tf != NULL) {
plane_state->blend_tf->type = TF_TYPE_BYPASS;
plane_state->blend_tf->ctx = ctx;
}
#endif #endif
} }
...@@ -85,6 +90,11 @@ static void destruct(struct dc_plane_state *plane_state) ...@@ -85,6 +90,11 @@ static void destruct(struct dc_plane_state *plane_state)
plane_state->lut3d_func); plane_state->lut3d_func);
plane_state->lut3d_func = NULL; plane_state->lut3d_func = NULL;
} }
if (plane_state->blend_tf != NULL) {
dc_transfer_func_release(
plane_state->blend_tf);
plane_state->blend_tf = NULL;
}
#endif #endif
} }
......
...@@ -761,6 +761,7 @@ struct dc_surface_update { ...@@ -761,6 +761,7 @@ struct dc_surface_update {
#if defined(CONFIG_DRM_AMD_DC_DCN2_0) #if defined(CONFIG_DRM_AMD_DC_DCN2_0)
const struct dc_transfer_func *func_shaper; const struct dc_transfer_func *func_shaper;
const struct dc_3dlut *lut3d_func; const struct dc_3dlut *lut3d_func;
const struct dc_transfer_func *blend_tf;
#endif #endif
}; };
......
...@@ -64,7 +64,8 @@ union lut3d_control_flags { ...@@ -64,7 +64,8 @@ union lut3d_control_flags {
unsigned int use_gamut_map_lib :1; unsigned int use_gamut_map_lib :1;
unsigned int chromatic_adaptation_src :1; unsigned int chromatic_adaptation_src :1;
unsigned int chromatic_adaptation_dst :1; unsigned int chromatic_adaptation_dst :1;
unsigned int reseved :5; unsigned int do_blender_lut_degamma :1;
unsigned int reseved :4;
} bits; } bits;
}; };
...@@ -78,8 +79,8 @@ enum lut3d_control_gamut_map { ...@@ -78,8 +79,8 @@ enum lut3d_control_gamut_map {
lut3d_control_gamut_map_none = 0, lut3d_control_gamut_map_none = 0,
lut3d_control_gamut_map_tonemap, lut3d_control_gamut_map_tonemap,
lut3d_control_gamut_map_chto, lut3d_control_gamut_map_chto,
lut3d_control_gamut_map_chto_chso, lut3d_control_gamut_map_chso,
lut3d_control_gamut_map_chto_chci lut3d_control_gamut_map_chci
}; };
enum lut3d_control_rotation_mode { enum lut3d_control_rotation_mode {
......
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