/* Dithering seems to not pass-through bits correctly when it should, so
- * only enable it on 6bpc panels. */
- pipe_config->dither = pipe_config->pipe_bpp == 6*3;
+ * only enable it on 6bpc panels and when its not a compliance
+ * test requesting 6bpc video pattern.
+ */
+ pipe_config->dither = (pipe_config->pipe_bpp == 6*3) &&
+ !pipe_config->dither_force_disable; DRM_DEBUG_KMS("hw max bpp: %i, pipe bpp: %i, dithering: %i\n", base_bpp, pipe_config->pipe_bpp, pipe_config->dither);
Wait a minute... it sounds like dithering is always going to be disabled (since commit 611032bfa71a7) for the case of (pipe_config- >pipe_bpp == 6*3).
index 5a9da484bb23. .ef65b4be5e56 100644 gpu/drm/ i915/intel_ display. c gpu/drm/ i915/intel_ display. c pipe_config( struct drm_crtc *crtc,
--- a/drivers/
+++ b/drivers/
@@ -13060,8 +13060,11 @@ intel_modeset_
}
/* Dithering seems to not pass-through bits correctly when it should, so >pipe_bpp == 6*3; >pipe_bpp == 6*3) && >dither_ force_disable;
DRM_DEBUG_ KMS("hw max bpp: %i, pipe bpp: %i, dithering: %i\n",
base_bpp, pipe_config- >pipe_bpp, pipe_config- >dither) ;
- * only enable it on 6bpc panels. */
- pipe_config->dither = pipe_config-
+ * only enable it on 6bpc panels and when its not a compliance
+ * test requesting 6bpc video pattern.
+ */
+ pipe_config->dither = (pipe_config-
+ !pipe_config-
diff --git a/drivers/ gpu/drm/ i915/intel_ dp.c b/drivers/ gpu/drm/ i915/intel_ dp.c .0fafbec6dacf 100644 gpu/drm/ i915/intel_ dp.c gpu/drm/ i915/intel_ dp.c atomic_ helper. h> compute_ bpp(struct intel_dp *intel_dp,
index e245802c5727.
--- a/drivers/
+++ b/drivers/
@@ -28,8 +28,10 @@
#include <linux/i2c.h>
#include <linux/slab.h>
#include <linux/export.h>
+#include <linux/types.h>
#include <linux/notifier.h>
#include <linux/reboot.h>
+#include <asm/byteorder.h>
#include <drm/drmP.h>
#include <drm/drm_
#include <drm/drm_crtc.h>
@@ -1593,6 +1595,13 @@ static int intel_dp_
if (bpc > 0)
bpp = min(bpp, 3*bpc);
+ /* For DP Compliance we override the computed bpp for the pipe */ dp->compliance. test_data. bpc != 0) { >pipe_bpp = 3*intel_ dp->compliance. test_data. bpc; >dither_ force_disable = pipe_config- >pipe_bpp == 6*3; KMS("Setting pipe_bpp to %d\n", >pipe_bpp) ;
+ if (intel_
+ pipe_config-
+ pipe_config-
+ DRM_DEBUG_
+ pipe_config-
+ }
return bpp;
}