[PATCH] drm/amd/display: Allow spatial dither to 10 bpc on all != DCE-11.0.

Mario Kleiner mario.kleiner.de at gmail.com
Fri Feb 12 22:29:54 UTC 2021


Spatial dithering to 10 bpc depth was disabled for all DCE's.
Restrict this to DCE-11.0, but allow it on other DCE's.

Testing on DCE-8.3 and DCE-11.2 did not show any obvious ill
effects, but a measureable precision improvement (via colorimeter)
when displaying a fp16 framebuffer to a 10 bpc DP or HDMI connected
HDR-10 monitor.

Alex suggests this may have been a workaround for some DCE-11.0
Carrizo and Stoney Asics, so lets try to restrict this to DCE 11.0.

Signed-off-by: Mario Kleiner <mario.kleiner.de at gmail.com>
Cc: Alex Deucher <alexdeucher at gmail.com>
---
 drivers/gpu/drm/amd/display/dc/dce/dce_opp.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c b/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c
index 4600231da6cb..4ed886cdb8d8 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c
@@ -216,9 +216,12 @@ static void set_spatial_dither(
 	REG_UPDATE(FMT_BIT_DEPTH_CONTROL,
 		FMT_TEMPORAL_DITHER_EN, 0);
 
-	/* no 10bpc on DCE11*/
-	if (params->flags.SPATIAL_DITHER_ENABLED == 0 ||
-		params->flags.SPATIAL_DITHER_DEPTH == 2)
+	if (params->flags.SPATIAL_DITHER_ENABLED == 0)
+		return;
+
+	/* No dithering to 10 bpc on DCE-11.0 */
+	if (params->flags.SPATIAL_DITHER_DEPTH == 2 &&
+		opp110->base.ctx->dce_version == DCE_VERSION_11_0)
 		return;
 
 	/* only use FRAME_COUNTER_MAX if frameRandom == 1*/
-- 
2.25.1



More information about the amd-gfx mailing list