summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimur Kristóf <timur.kristof@gmail.com>2026-04-21 01:55:04 +0200
committerAlex Deucher <alexander.deucher@amd.com>2026-04-21 16:55:02 -0400
commit6be8ced880dfe29ce38c2d5e74489822da5c250e (patch)
treee52e457602aa2fc3f3dc0871997ff17b484c5e62
parent9d47b2c36b9a6c6b844c33cab407a5d7ad102234 (diff)
downloadlinux-6be8ced880dfe29ce38c2d5e74489822da5c250e.tar.gz
linux-6be8ced880dfe29ce38c2d5e74489822da5c250e.zip
drm/amd/display: Disable 10-bit truncation and dithering on DCE 6.x
DCE 6.x doesn't support 10-bit truncation and 10-bit dithering because the following fields are 1-bit only: FMT_TEMPORAL_DITHER_DEPTH FMT_SPATIAL_DITHER_DEPTH FMT_TRUNCATE_DEPTH Programming these fields to "2" will program them as if the dithering option was 6-bit, resulting in sub-par picture quality and an ugly "color banding" effect. Note that a recent commit changed the default 10-bit dithering option to DITHER_OPTION_SPATIAL10 which improves the picture quality because it happens to look better, but is still not actually supported by DCE 6.x versions. When the color depth is 10-bit or more, just disable any kind of dithering options on DCE 6.x. Closes: https://gitlab.freedesktop.org/drm/amd/-/work_items/5151 Fixes: 529cad0f945c ("drm/amd/display: Add function to set dither option") Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/display/dc/core/dc_resource.c6
1 files changed, 6 insertions, 0 deletions
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 19526a278b2a..1ab76c2d0f72 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
@@ -5069,6 +5069,12 @@ void resource_build_bit_depth_reduction_params(struct dc_stream_state *stream,
}
}
+ if (stream->ctx->dce_version < DCE_VERSION_8_0 &&
+ stream->timing.display_color_depth >= COLOR_DEPTH_101010) {
+ /* DCE 6.x doesn't support 10-bit truncation or dither options. */
+ option = DITHER_OPTION_DISABLE;
+ }
+
if (option == DITHER_OPTION_DISABLE)
return;