drm/i915: Allow ICL pipe "HDR mode" when the cursor is visible
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 2 May 2019 20:06:07 +0000 (23:06 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 3 May 2019 16:22:33 +0000 (19:22 +0300)
Turns out the cursor is compatible with the pipe "HDR mode". It's
only the actual SDR planes that get entirely bypassed during
blending. So let's ignore the cursor when checking if we have
any planes active that aren't HDR compatible. This fixes the
regressions in the kms_cursor_crc and kms_plane_cursor tests.

Cc: Uma Shankar <uma.shankar@intel.com>
Cc: Shashank Sharma <shashank.sharma@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110579
Fixes: 09b25812db10 ("drm/i915: Enable pipe HDR mode on ICL if only HDR planes are used")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190502200607.14504-2-ville.syrjala@linux.intel.com
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
drivers/gpu/drm/i915/intel_display.c

index 45a8c6e3c5cf6613d9934340eae042a748874539..b83c238faee18c921242241eb81842af3680f0e6 100644 (file)
@@ -8944,7 +8944,8 @@ static void bdw_set_pipemisc(const struct intel_crtc_state *crtc_state)
                        PIPEMISC_YUV420_MODE_FULL_BLEND;
 
        if (INTEL_GEN(dev_priv) >= 11 &&
-           (crtc_state->active_planes & ~icl_hdr_plane_mask()) == 0)
+           (crtc_state->active_planes & ~(icl_hdr_plane_mask() |
+                                          BIT(PLANE_CURSOR))) == 0)
                val |= PIPEMISC_HDR_MODE_PRECISION;
 
        I915_WRITE(PIPEMISC(crtc->pipe), val);