Commit 578393cd authored by Keith Packard's avatar Keith Packard

drm/i915: Enable dither whenever display bpc < frame buffer bpc

We want to enable dithering on any pipe where the frame buffer has
more color resolution than the output device.

The previous code was incorrectly clamping the frame buffer bpc to the
display bpc, effectively disabling dithering all of the time as the
computed frame buffer bpc would never be larger than the display bpc.
Signed-off-by: default avatarKeith Packard <keithp@keithp.com>
Reported-by: default avatarOliver Hartkopp <socketcan@hartkopp.net>
Tested-by: default avatarOliver Hartkopp <socketcan@hartkopp.net>
parent 88ef4e3f
...@@ -4687,13 +4687,13 @@ static bool intel_choose_pipe_bpp_dither(struct drm_crtc *crtc, ...@@ -4687,13 +4687,13 @@ static bool intel_choose_pipe_bpp_dither(struct drm_crtc *crtc,
bpc = 6; /* min is 18bpp */ bpc = 6; /* min is 18bpp */
break; break;
case 24: case 24:
bpc = min((unsigned int)8, display_bpc); bpc = 8;
break; break;
case 30: case 30:
bpc = min((unsigned int)10, display_bpc); bpc = 10;
break; break;
case 48: case 48:
bpc = min((unsigned int)12, display_bpc); bpc = 12;
break; break;
default: default:
DRM_DEBUG("unsupported depth, assuming 24 bits\n"); DRM_DEBUG("unsupported depth, assuming 24 bits\n");
...@@ -4701,10 +4701,12 @@ static bool intel_choose_pipe_bpp_dither(struct drm_crtc *crtc, ...@@ -4701,10 +4701,12 @@ static bool intel_choose_pipe_bpp_dither(struct drm_crtc *crtc,
break; break;
} }
display_bpc = min(display_bpc, bpc);
DRM_DEBUG_DRIVER("setting pipe bpc to %d (max display bpc %d)\n", DRM_DEBUG_DRIVER("setting pipe bpc to %d (max display bpc %d)\n",
bpc, display_bpc); bpc, display_bpc);
*pipe_bpp = bpc * 3; *pipe_bpp = display_bpc * 3;
return display_bpc != bpc; return display_bpc != bpc;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment