]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/display: Disable 10-bit truncation and dithering on DCE 6.x
authorTimur Kristóf <timur.kristof@gmail.com>
Mon, 20 Apr 2026 23:55:04 +0000 (01:55 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 21 Apr 2026 20:55:02 +0000 (16:55 -0400)
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>
drivers/gpu/drm/amd/display/dc/core/dc_resource.c

index 19526a278b2a51df54b71b94682e9ddb21e4a8a9..1ab76c2d0f72353d15cfd2e0cd3807078142f463 100644 (file)
@@ -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;