crtc_state->fifo_changed = false;
        crtc_state->wm.need_postvbl_update = false;
        crtc_state->fb_bits = 0;
+       crtc_state->update_planes = 0;
 
        return &crtc_state->base;
 }
 
        if (state->visible && state->fb->format->format == DRM_FORMAT_NV12)
                crtc_state->nv12_planes |= BIT(intel_plane->id);
 
+       if (state->visible || old_plane_state->base.visible)
+               crtc_state->update_planes |= BIT(intel_plane->id);
+
        return intel_plane_atomic_calc_changes(old_crtc_state,
                                               &crtc_state->base,
                                               old_plane_state,
                                 struct intel_crtc_state *old_crtc_state,
                                 struct intel_crtc_state *new_crtc_state)
 {
+       u32 update_mask = new_crtc_state->update_planes;
        struct intel_plane_state *new_plane_state;
        struct intel_plane *plane;
-       u32 update_mask;
        int i;
 
-       update_mask = old_crtc_state->active_planes;
-       update_mask |= new_crtc_state->active_planes;
-
        for_each_new_intel_plane_in_state(old_state, plane, new_plane_state, i) {
                if (crtc->pipe != plane->pipe ||
                    !(update_mask & BIT(plane->id)))
 
                        continue;
 
                plane_state->linked_plane = NULL;
-               if (plane_state->slave && !plane_state->base.visible)
+               if (plane_state->slave && !plane_state->base.visible) {
                        crtc_state->active_planes &= ~BIT(plane->id);
+                       crtc_state->update_planes |= BIT(plane->id);
+               }
 
                plane_state->slave = false;
        }
                linked_state->slave = true;
                linked_state->linked_plane = plane;
                crtc_state->active_planes |= BIT(linked->id);
+               crtc_state->update_planes |= BIT(linked->id);
                DRM_DEBUG_KMS("Using %s as Y plane for %s\n", linked->base.name, plane->base.name);
        }