aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2365-drm-amd-display-fix-default-dithering.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2365-drm-amd-display-fix-default-dithering.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2365-drm-amd-display-fix-default-dithering.patch105
1 files changed, 105 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2365-drm-amd-display-fix-default-dithering.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2365-drm-amd-display-fix-default-dithering.patch
new file mode 100644
index 00000000..fb094e1f
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2365-drm-amd-display-fix-default-dithering.patch
@@ -0,0 +1,105 @@
+From 9ccb564ea3ea2a2d4d8a537683455d54bcdbde7f Mon Sep 17 00:00:00 2001
+From: Tony Cheng <tony.cheng@amd.com>
+Date: Fri, 1 Sep 2017 16:14:01 -0400
+Subject: [PATCH 2365/4131] drm/amd/display: fix default dithering
+
+bug: default is mapped to no dithering.
+
+default to spatial dithering based on color depth
+
+Signed-off-by: Tony Cheng <tony.cheng@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Harry Wentland <Harry.Wentland@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/core/dc.c | 20 +++-----------------
+ drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 16 ++++++++++++++++
+ .../drm/amd/display/dc/dce110/dce110_hw_sequencer.c | 14 +++++---------
+ 3 files changed, 24 insertions(+), 26 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
+index afc8aac..66857b6 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
+@@ -341,23 +341,9 @@ void set_dither_option(struct dc_stream_state *stream,
+ return;
+ if (option > DITHER_OPTION_MAX)
+ return;
+- if (option == DITHER_OPTION_DEFAULT) {
+- switch (stream->timing.display_color_depth) {
+- case COLOR_DEPTH_666:
+- stream->dither_option = DITHER_OPTION_SPATIAL6;
+- break;
+- case COLOR_DEPTH_888:
+- stream->dither_option = DITHER_OPTION_SPATIAL8;
+- break;
+- case COLOR_DEPTH_101010:
+- stream->dither_option = DITHER_OPTION_SPATIAL10;
+- break;
+- default:
+- option = DITHER_OPTION_DISABLE;
+- }
+- } else {
+- stream->dither_option = option;
+- }
++
++ stream->dither_option = option;
++
+ resource_build_bit_depth_reduction_params(stream,
+ &params);
+ stream->bit_depth_params = params;
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+index 8e60e83..3eba2e5 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+@@ -2607,6 +2607,22 @@ void resource_build_bit_depth_reduction_params(struct dc_stream_state *stream,
+
+ memset(fmt_bit_depth, 0, sizeof(*fmt_bit_depth));
+
++ if (option == DITHER_OPTION_DEFAULT) {
++ switch (stream->timing.display_color_depth) {
++ case COLOR_DEPTH_666:
++ option = DITHER_OPTION_SPATIAL6;
++ break;
++ case COLOR_DEPTH_888:
++ option = DITHER_OPTION_SPATIAL8;
++ break;
++ case COLOR_DEPTH_101010:
++ option = DITHER_OPTION_SPATIAL10;
++ break;
++ default:
++ option = DITHER_OPTION_DISABLE;
++ }
++ }
++
+ if (option == DITHER_OPTION_DISABLE)
+ return;
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
+index 4c4cede..e5e28cd 100644
+--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
++++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
+@@ -1099,15 +1099,11 @@ static enum dc_status apply_single_controller_ctx_to_hw(
+ stream->timing.timing_3d_format != TIMING_3D_FORMAT_NONE);
+
+
+-/*vbios crtc_source_selection and encoder_setup will override fmt_C*/
+- if (pipe_ctx->stream->signal != SIGNAL_TYPE_EDP &&
+- pipe_ctx->stream->signal != SIGNAL_TYPE_LVDS) {
+- /*for embedded panel, don't override VBIOS's setting*/
+- pipe_ctx->stream_res.opp->funcs->opp_program_fmt(
+- pipe_ctx->stream_res.opp,
+- &stream->bit_depth_params,
+- &stream->clamping);
+- }
++ pipe_ctx->stream_res.opp->funcs->opp_program_fmt(
++ pipe_ctx->stream_res.opp,
++ &stream->bit_depth_params,
++ &stream->clamping);
++
+ if (dc_is_dp_signal(pipe_ctx->stream->signal))
+ pipe_ctx->stream_res.stream_enc->funcs->dp_set_stream_attribute(
+ pipe_ctx->stream_res.stream_enc,
+--
+2.7.4
+