|
@@ -12213,6 +12213,18 @@ intel_modeset_update_crtc_state(struct drm_atomic_state *state)
|
|
crtc->hwmode = crtc->state->adjusted_mode;
|
|
crtc->hwmode = crtc->state->adjusted_mode;
|
|
else
|
|
else
|
|
crtc->hwmode.crtc_clock = 0;
|
|
crtc->hwmode.crtc_clock = 0;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * Update legacy state to satisfy fbc code. This can
|
|
|
|
+ * be removed when fbc uses the atomic state.
|
|
|
|
+ */
|
|
|
|
+ if (drm_atomic_get_existing_plane_state(state, crtc->primary)) {
|
|
|
|
+ struct drm_plane_state *plane_state = crtc->primary->state;
|
|
|
|
+
|
|
|
|
+ crtc->primary->fb = plane_state->fb;
|
|
|
|
+ crtc->x = plane_state->src_x >> 16;
|
|
|
|
+ crtc->y = plane_state->src_y >> 16;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -13457,15 +13469,8 @@ intel_commit_primary_plane(struct drm_plane *plane,
|
|
struct drm_framebuffer *fb = state->base.fb;
|
|
struct drm_framebuffer *fb = state->base.fb;
|
|
struct drm_device *dev = plane->dev;
|
|
struct drm_device *dev = plane->dev;
|
|
struct drm_i915_private *dev_priv = dev->dev_private;
|
|
struct drm_i915_private *dev_priv = dev->dev_private;
|
|
- struct intel_crtc *intel_crtc;
|
|
|
|
- struct drm_rect *src = &state->src;
|
|
|
|
|
|
|
|
crtc = crtc ? crtc : plane->crtc;
|
|
crtc = crtc ? crtc : plane->crtc;
|
|
- intel_crtc = to_intel_crtc(crtc);
|
|
|
|
-
|
|
|
|
- plane->fb = fb;
|
|
|
|
- crtc->x = src->x1 >> 16;
|
|
|
|
- crtc->y = src->y1 >> 16;
|
|
|
|
|
|
|
|
if (!crtc->state->active)
|
|
if (!crtc->state->active)
|
|
return;
|
|
return;
|