aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2017-02-28 09:28:47 -0500
committerJani Nikula <jani.nikula@intel.com>2017-03-09 03:45:44 -0500
commit38230243ef316ac696956d75dc78a22e3aa789b9 (patch)
treeb9ac81df5712a723b07675e8cfe57a2f78b83506
parentd253371c4c2f5fc2d884ef25f64decd7549aff5a (diff)
drm/i915: Move updating color management to before vblank evasion
This cannot be done reliably during vblank evasasion since the color management registers are not double buffered. The original commit that moved it always during vblank evasion was wrong, so revert it to before vblank evasion again. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Fixes: 20a34e78f0d7 ("drm/i915: Update color management during vblank evasion.") Cc: stable@vger.kernel.org # v4.7+ Link: http://patchwork.freedesktop.org/patch/msgid/1488292128-14540-1-git-send-email-maarten.lankhorst@linux.intel.com Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> (cherry picked from commit 567f0792a6ad11c0c2620944b8eeb777359fb85a) Signed-off-by: Jani Nikula <jani.nikula@intel.com>
-rw-r--r--drivers/gpu/drm/i915/intel_display.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 01341670738f..9a8b6a13233d 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -14946,17 +14946,19 @@ static void intel_begin_crtc_commit(struct drm_crtc *crtc,
14946 to_intel_atomic_state(old_crtc_state->state); 14946 to_intel_atomic_state(old_crtc_state->state);
14947 bool modeset = needs_modeset(crtc->state); 14947 bool modeset = needs_modeset(crtc->state);
14948 14948
14949 if (!modeset &&
14950 (intel_cstate->base.color_mgmt_changed ||
14951 intel_cstate->update_pipe)) {
14952 intel_color_set_csc(crtc->state);
14953 intel_color_load_luts(crtc->state);
14954 }
14955
14949 /* Perform vblank evasion around commit operation */ 14956 /* Perform vblank evasion around commit operation */
14950 intel_pipe_update_start(intel_crtc); 14957 intel_pipe_update_start(intel_crtc);
14951 14958
14952 if (modeset) 14959 if (modeset)
14953 goto out; 14960 goto out;
14954 14961
14955 if (crtc->state->color_mgmt_changed || to_intel_crtc_state(crtc->state)->update_pipe) {
14956 intel_color_set_csc(crtc->state);
14957 intel_color_load_luts(crtc->state);
14958 }
14959
14960 if (intel_cstate->update_pipe) 14962 if (intel_cstate->update_pipe)
14961 intel_update_pipe_config(intel_crtc, old_intel_cstate); 14963 intel_update_pipe_config(intel_crtc, old_intel_cstate);
14962 else if (INTEL_GEN(dev_priv) >= 9) 14964 else if (INTEL_GEN(dev_priv) >= 9)