|
@@ -3391,9 +3391,6 @@ static void skylake_update_primary_plane(struct drm_plane *plane,
|
|
|
struct drm_i915_private *dev_priv = to_i915(dev);
|
|
|
struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->base.crtc);
|
|
|
struct drm_framebuffer *fb = plane_state->base.fb;
|
|
|
- const struct skl_wm_values *wm = &dev_priv->wm.skl_results;
|
|
|
- const struct skl_plane_wm *p_wm =
|
|
|
- &crtc_state->wm.skl.optimal.planes[0];
|
|
|
int pipe = intel_crtc->pipe;
|
|
|
u32 plane_ctl;
|
|
|
unsigned int rotation = plane_state->base.rotation;
|
|
@@ -3429,9 +3426,6 @@ static void skylake_update_primary_plane(struct drm_plane *plane,
|
|
|
intel_crtc->adjusted_x = src_x;
|
|
|
intel_crtc->adjusted_y = src_y;
|
|
|
|
|
|
- if (wm->dirty_pipes & drm_crtc_mask(&intel_crtc->base))
|
|
|
- skl_write_plane_wm(intel_crtc, p_wm, &wm->ddb, 0);
|
|
|
-
|
|
|
I915_WRITE(PLANE_CTL(pipe, 0), plane_ctl);
|
|
|
I915_WRITE(PLANE_OFFSET(pipe, 0), (src_y << 16) | src_x);
|
|
|
I915_WRITE(PLANE_STRIDE(pipe, 0), stride);
|
|
@@ -3464,18 +3458,8 @@ static void skylake_disable_primary_plane(struct drm_plane *primary,
|
|
|
struct drm_device *dev = crtc->dev;
|
|
|
struct drm_i915_private *dev_priv = to_i915(dev);
|
|
|
struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
|
|
|
- struct intel_crtc_state *cstate = to_intel_crtc_state(crtc->state);
|
|
|
- const struct skl_plane_wm *p_wm = &cstate->wm.skl.optimal.planes[0];
|
|
|
int pipe = intel_crtc->pipe;
|
|
|
|
|
|
- /*
|
|
|
- * We only populate skl_results on watermark updates, and if the
|
|
|
- * plane's visiblity isn't actually changing neither is its watermarks.
|
|
|
- */
|
|
|
- if (!crtc->primary->state->visible)
|
|
|
- skl_write_plane_wm(intel_crtc, p_wm,
|
|
|
- &dev_priv->wm.skl_results.ddb, 0);
|
|
|
-
|
|
|
I915_WRITE(PLANE_CTL(pipe, 0), 0);
|
|
|
I915_WRITE(PLANE_SURF(pipe, 0), 0);
|
|
|
POSTING_READ(PLANE_SURF(pipe, 0));
|
|
@@ -10865,16 +10849,9 @@ static void i9xx_update_cursor(struct drm_crtc *crtc, u32 base,
|
|
|
struct drm_device *dev = crtc->dev;
|
|
|
struct drm_i915_private *dev_priv = to_i915(dev);
|
|
|
struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
|
|
|
- struct intel_crtc_state *cstate = to_intel_crtc_state(crtc->state);
|
|
|
- const struct skl_wm_values *wm = &dev_priv->wm.skl_results;
|
|
|
- const struct skl_plane_wm *p_wm =
|
|
|
- &cstate->wm.skl.optimal.planes[PLANE_CURSOR];
|
|
|
int pipe = intel_crtc->pipe;
|
|
|
uint32_t cntl = 0;
|
|
|
|
|
|
- if (INTEL_GEN(dev_priv) >= 9 && wm->dirty_pipes & drm_crtc_mask(crtc))
|
|
|
- skl_write_cursor_wm(intel_crtc, p_wm, &wm->ddb);
|
|
|
-
|
|
|
if (plane_state && plane_state->base.visible) {
|
|
|
cntl = MCURSOR_GAMMA_ENABLE;
|
|
|
switch (plane_state->base.crtc_w) {
|
|
@@ -14425,8 +14402,17 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)
|
|
|
intel_check_cpu_fifo_underruns(dev_priv);
|
|
|
intel_check_pch_fifo_underruns(dev_priv);
|
|
|
|
|
|
- if (!crtc->state->active)
|
|
|
- intel_update_watermarks(intel_crtc);
|
|
|
+ if (!crtc->state->active) {
|
|
|
+ /*
|
|
|
+ * Make sure we don't call initial_watermarks
|
|
|
+ * for ILK-style watermark updates.
|
|
|
+ */
|
|
|
+ if (dev_priv->display.atomic_update_watermarks)
|
|
|
+ dev_priv->display.initial_watermarks(intel_state,
|
|
|
+ to_intel_crtc_state(crtc->state));
|
|
|
+ else
|
|
|
+ intel_update_watermarks(intel_crtc);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -14622,7 +14608,6 @@ static int intel_atomic_commit(struct drm_device *dev,
|
|
|
|
|
|
drm_atomic_helper_swap_state(state, true);
|
|
|
dev_priv->wm.distrust_bios_wm = false;
|
|
|
- dev_priv->wm.skl_results = intel_state->wm_results;
|
|
|
intel_shared_dpll_commit(state);
|
|
|
intel_atomic_track_fbs(state);
|
|
|
|
|
@@ -14946,7 +14931,7 @@ static void intel_begin_crtc_commit(struct drm_crtc *crtc,
|
|
|
intel_pipe_update_start(intel_crtc);
|
|
|
|
|
|
if (modeset)
|
|
|
- return;
|
|
|
+ goto out;
|
|
|
|
|
|
if (crtc->state->color_mgmt_changed || to_intel_crtc_state(crtc->state)->update_pipe) {
|
|
|
intel_color_set_csc(crtc->state);
|
|
@@ -14958,6 +14943,7 @@ static void intel_begin_crtc_commit(struct drm_crtc *crtc,
|
|
|
else if (INTEL_GEN(dev_priv) >= 9)
|
|
|
skl_detach_scalers(intel_crtc);
|
|
|
|
|
|
+out:
|
|
|
if (dev_priv->display.atomic_update_watermarks)
|
|
|
dev_priv->display.atomic_update_watermarks(old_intel_state,
|
|
|
intel_cstate);
|