drm/i915: Pass the correct crtc state to .update_plane()
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 9 Mar 2016 17:07:24 +0000 (19:07 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 10 Mar 2016 11:49:31 +0000 (13:49 +0200)
Pass the current crtc state, not the old crtc state, to the
.update_plane() hook.

Noticed on BSW when PRIMSIZE was getting programmed to a stale value
which produced utter garbage on screen eg. wwhen going from 1920x1080
to 1024x768.

Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Fixes: a758e6845825 ("drm/i915: Do not use commit_plane for sprite planes.")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1457543247-13987-3-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
drivers/gpu/drm/i915/intel_atomic_plane.c

index e0b851a0004abd3dc2dde47e9b7af90e5a177510..7de7721f65bcee9f2d9df2736396809b078b965b 100644 (file)
@@ -195,12 +195,10 @@ static void intel_plane_atomic_update(struct drm_plane *plane,
        struct intel_plane_state *intel_state =
                to_intel_plane_state(plane->state);
        struct drm_crtc *crtc = plane->state->crtc ?: old_state->crtc;
-       struct drm_crtc_state *crtc_state =
-               drm_atomic_get_existing_crtc_state(old_state->state, crtc);
 
        if (intel_state->visible)
                intel_plane->update_plane(plane,
-                                         to_intel_crtc_state(crtc_state),
+                                         to_intel_crtc_state(crtc->state),
                                          intel_state);
        else
                intel_plane->disable_plane(plane, crtc);