drm/atomic: Use explicit old crtc state in drm_atomic_add_affected_planes()
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 1 Nov 2018 18:46:44 +0000 (20:46 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 7 Nov 2018 17:21:56 +0000 (19:21 +0200)
Replace 'crtc->state' with the explicit old crtc state.

Actually it shouldn't matter whether we use the old or the new
crtc state here since any plane that has been removed from the
crtc since the crtc state was duplicated will have been added
to the atomic state already. That is, you can't call
drm_atomic_set_crtc_for_plane() without having the new
plane state already in hand.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181101184646.14753-1-ville.syrjala@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: Harry Wentland <harry.wentland@amd.com>
drivers/gpu/drm/drm_atomic.c

index 2870ae20523709e24c1499873b35131e578f082b..fca22998b75bb7559471771d8a5d52e2d2b5e8ce 100644 (file)
@@ -922,6 +922,8 @@ int
 drm_atomic_add_affected_planes(struct drm_atomic_state *state,
                               struct drm_crtc *crtc)
 {
+       const struct drm_crtc_state *old_crtc_state =
+               drm_atomic_get_old_crtc_state(state, crtc);
        struct drm_plane *plane;
 
        WARN_ON(!drm_atomic_get_new_crtc_state(state, crtc));
@@ -929,7 +931,7 @@ drm_atomic_add_affected_planes(struct drm_atomic_state *state,
        DRM_DEBUG_ATOMIC("Adding all current planes for [CRTC:%d:%s] to %p\n",
                         crtc->base.id, crtc->name, state);
 
-       drm_for_each_plane_mask(plane, state->dev, crtc->state->plane_mask) {
+       drm_for_each_plane_mask(plane, state->dev, old_crtc_state->plane_mask) {
                struct drm_plane_state *plane_state =
                        drm_atomic_get_plane_state(state, plane);