summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/display
diff options
context:
space:
mode:
authorVitaly Prosyak <vitaly.prosyak@amd.com>2019-04-18 09:51:12 -0500
committerAlex Deucher <alexander.deucher@amd.com>2019-06-22 09:34:12 -0500
commitf99b6f4f216ac0ff7f477dd36c88e7b229292dec (patch)
tree4dca2e358668c0115b1798ac61b2638ff927b213 /drivers/gpu/drm/amd/display
parent8bb3d7e7b5de731a990af8fe6d99a30751602f15 (diff)
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: Vitaly Prosyak <vitaly.prosyak@amd.com> Reviewed-by: Aric Cyr <Aric.Cyr@amd.com> Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> Acked-by: Krunoslav Kovac <Krunoslav.Kovac@amd.com> Acked-by: Vitaly Prosyak <Vitaly.Prosyak@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/display')
-rw-r--r--drivers/gpu/drm/amd/display/dc/core/dc.c7
-rw-r--r--drivers/gpu/drm/amd/display/dc/core/dc_surface.c10
-rw-r--r--drivers/gpu/drm/amd/display/dc/dc.h1
-rw-r--r--drivers/gpu/drm/amd/display/modules/inc/mod_shared.h7
4 files changed, 22 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
index 6abf22aaf571..867a84c2bfbf 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -1669,6 +1669,13 @@ static void copy_surface_update_to_plane(
srf_update->lut3d_func))
memcpy(surface->lut3d_func, srf_update->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
if (srf_update->input_csc_color_matrix)
surface->input_csc_color_matrix =
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c
index 60f20d96f9e0..394a87981614 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c
@@ -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->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
}
@@ -85,6 +90,11 @@ static void destruct(struct dc_plane_state *plane_state)
plane_state->lut3d_func);
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
}
diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h
index 139ea7354910..53a3876841cc 100644
--- a/drivers/gpu/drm/amd/display/dc/dc.h
+++ b/drivers/gpu/drm/amd/display/dc/dc.h
@@ -761,6 +761,7 @@ struct dc_surface_update {
#if defined(CONFIG_DRM_AMD_DC_DCN2_0)
const struct dc_transfer_func *func_shaper;
const struct dc_3dlut *lut3d_func;
+ const struct dc_transfer_func *blend_tf;
#endif
};
diff --git a/drivers/gpu/drm/amd/display/modules/inc/mod_shared.h b/drivers/gpu/drm/amd/display/modules/inc/mod_shared.h
index 6c877eeba429..b45f7d65e76a 100644
--- a/drivers/gpu/drm/amd/display/modules/inc/mod_shared.h
+++ b/drivers/gpu/drm/amd/display/modules/inc/mod_shared.h
@@ -64,7 +64,8 @@ union lut3d_control_flags {
unsigned int use_gamut_map_lib :1;
unsigned int chromatic_adaptation_src :1;
unsigned int chromatic_adaptation_dst :1;
- unsigned int reseved :5;
+ unsigned int do_blender_lut_degamma :1;
+ unsigned int reseved :4;
} bits;
};
@@ -78,8 +79,8 @@ enum lut3d_control_gamut_map {
lut3d_control_gamut_map_none = 0,
lut3d_control_gamut_map_tonemap,
lut3d_control_gamut_map_chto,
- lut3d_control_gamut_map_chto_chso,
- lut3d_control_gamut_map_chto_chci
+ lut3d_control_gamut_map_chso,
+ lut3d_control_gamut_map_chci
};
enum lut3d_control_rotation_mode {