Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 567f0792 authored by Maarten Lankhorst's avatar Maarten Lankhorst
Browse files

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: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Fixes: 20a34e78 ("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: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
parent d9321a03
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -13343,17 +13343,19 @@ static void intel_begin_crtc_commit(struct drm_crtc *crtc,
		to_intel_atomic_state(old_crtc_state->state);
	bool modeset = needs_modeset(crtc->state);

	if (!modeset &&
	    (intel_cstate->base.color_mgmt_changed ||
	     intel_cstate->update_pipe)) {
		intel_color_set_csc(crtc->state);
		intel_color_load_luts(crtc->state);
	}

	/* Perform vblank evasion around commit operation */
	intel_pipe_update_start(intel_crtc);

	if (modeset)
		goto out;

	if (crtc->state->color_mgmt_changed || to_intel_crtc_state(crtc->state)->update_pipe) {
		intel_color_set_csc(crtc->state);
		intel_color_load_luts(crtc->state);
	}

	if (intel_cstate->update_pipe)
		intel_update_pipe_config(intel_crtc, old_intel_cstate);
	else if (INTEL_GEN(dev_priv) >= 9)