intel_frontbuffer_flip(dev, atomic->fb_bits);
+ if (crtc->atomic.update_wm_post)
+ intel_update_watermarks(&crtc->base);
+
if (atomic->update_fbc) {
mutex_lock(&dev->struct_mutex);
intel_fbc_update(dev);
plane->base.id, was_visible, visible,
turn_off, turn_on, mode_changed);
- if (intel_wm_need_update(plane, plane_state))
- intel_crtc->atomic.update_wm = true;
+ if (turn_on)
+ intel_crtc->atomic.update_wm_pre = true;
+ else if (turn_off)
+ intel_crtc->atomic.update_wm_post = true;
+ else if (intel_wm_need_update(plane, plane_state))
+ intel_crtc->atomic.update_wm_pre = true;
if (visible)
intel_crtc->atomic.fb_bits |=
intel_crtc_check_initial_planes(crtc, crtc_state);
if (mode_changed)
- intel_crtc->atomic.update_wm = !crtc_state->active;
+ intel_crtc->atomic.update_wm_post = !crtc_state->active;
if (mode_changed && crtc_state->enable &&
dev_priv->display.crtc_compute_clock &&
if (!needs_modeset(crtc->state))
intel_pre_plane_update(intel_crtc);
- if (intel_crtc->atomic.update_wm)
+ if (intel_crtc->atomic.update_wm_pre)
intel_update_watermarks(crtc);
intel_runtime_pm_get(dev_priv);