Commit 936e71e3 authored by Ville Syrjälä's avatar Ville Syrjälä Committed by Sean Paul
Browse files

drm/i915: Use drm_plane_state.{src,dst,visible}



Replace the private drm_rects/flags in intel_plane_state
with the ones now living in drm_plane_state.

Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1469549224-1860-5-git-send-email-ville.syrjala@linux.intel.com
parent df86af91
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -139,14 +139,14 @@ static int intel_plane_atomic_check(struct drm_plane *plane,
	 * we want to keep another copy internal to our driver that we can
	 * clip/modify ourselves.
	 */
	intel_state->src.x1 = state->src_x;
	intel_state->src.y1 = state->src_y;
	intel_state->src.x2 = state->src_x + state->src_w;
	intel_state->src.y2 = state->src_y + state->src_h;
	intel_state->dst.x1 = state->crtc_x;
	intel_state->dst.y1 = state->crtc_y;
	intel_state->dst.x2 = state->crtc_x + state->crtc_w;
	intel_state->dst.y2 = state->crtc_y + state->crtc_h;
	intel_state->base.src.x1 = state->src_x;
	intel_state->base.src.y1 = state->src_y;
	intel_state->base.src.x2 = state->src_x + state->src_w;
	intel_state->base.src.y2 = state->src_y + state->src_h;
	intel_state->base.dst.x1 = state->crtc_x;
	intel_state->base.dst.y1 = state->crtc_y;
	intel_state->base.dst.x2 = state->crtc_x + state->crtc_w;
	intel_state->base.dst.y2 = state->crtc_y + state->crtc_h;

	/* Clip all planes to CRTC size, or 0x0 if CRTC is disabled */
	intel_state->clip.x1 = 0;
@@ -180,7 +180,7 @@ static int intel_plane_atomic_check(struct drm_plane *plane,
		}
	}

	intel_state->visible = false;
	intel_state->base.visible = false;
	ret = intel_plane->check_plane(plane, crtc_state, intel_state);
	if (ret)
		return ret;
@@ -196,7 +196,7 @@ static void intel_plane_atomic_update(struct drm_plane *plane,
		to_intel_plane_state(plane->state);
	struct drm_crtc *crtc = plane->state->crtc ?: old_state->crtc;

	if (intel_state->visible)
	if (intel_state->base.visible)
		intel_plane->update_plane(plane,
					  to_intel_crtc_state(crtc->state),
					  intel_state);
+68 −64
Original line number Diff line number Diff line
@@ -2565,7 +2565,7 @@ intel_find_initial_plane_obj(struct intel_crtc *intel_crtc,
	 * simplest solution is to just disable the primary plane now and
	 * pretend the BIOS never had it enabled.
	 */
	to_intel_plane_state(plane_state)->visible = false;
	to_intel_plane_state(plane_state)->base.visible = false;
	crtc_state->plane_mask &= ~(1 << drm_plane_index(primary));
	intel_pre_disable_primary_noatomic(&intel_crtc->base);
	intel_plane->disable_plane(primary, &intel_crtc->base);
@@ -2583,14 +2583,14 @@ valid_fb:
	plane_state->crtc_w = fb->width;
	plane_state->crtc_h = fb->height;

	intel_state->src.x1 = plane_state->src_x;
	intel_state->src.y1 = plane_state->src_y;
	intel_state->src.x2 = plane_state->src_x + plane_state->src_w;
	intel_state->src.y2 = plane_state->src_y + plane_state->src_h;
	intel_state->dst.x1 = plane_state->crtc_x;
	intel_state->dst.y1 = plane_state->crtc_y;
	intel_state->dst.x2 = plane_state->crtc_x + plane_state->crtc_w;
	intel_state->dst.y2 = plane_state->crtc_y + plane_state->crtc_h;
	intel_state->base.src.x1 = plane_state->src_x;
	intel_state->base.src.y1 = plane_state->src_y;
	intel_state->base.src.x2 = plane_state->src_x + plane_state->src_w;
	intel_state->base.src.y2 = plane_state->src_y + plane_state->src_h;
	intel_state->base.dst.x1 = plane_state->crtc_x;
	intel_state->base.dst.y1 = plane_state->crtc_y;
	intel_state->base.dst.x2 = plane_state->crtc_x + plane_state->crtc_w;
	intel_state->base.dst.y2 = plane_state->crtc_y + plane_state->crtc_h;

	obj = intel_fb_obj(fb);
	if (obj->tiling_mode != I915_TILING_NONE)
@@ -2618,8 +2618,8 @@ static void i9xx_update_primary_plane(struct drm_plane *primary,
	i915_reg_t reg = DSPCNTR(plane);
	unsigned int rotation = plane_state->base.rotation;
	int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
	int x = plane_state->src.x1 >> 16;
	int y = plane_state->src.y1 >> 16;
	int x = plane_state->base.src.x1 >> 16;
	int y = plane_state->base.src.y1 >> 16;

	dspcntr = DISPPLANE_GAMMA_ENABLE;

@@ -2748,8 +2748,8 @@ static void ironlake_update_primary_plane(struct drm_plane *primary,
	i915_reg_t reg = DSPCNTR(plane);
	unsigned int rotation = plane_state->base.rotation;
	int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
	int x = plane_state->src.x1 >> 16;
	int y = plane_state->src.y1 >> 16;
	int x = plane_state->base.src.x1 >> 16;
	int y = plane_state->base.src.y1 >> 16;

	dspcntr = DISPPLANE_GAMMA_ENABLE;
	dspcntr |= DISPLAY_PLANE_ENABLE;
@@ -2987,14 +2987,14 @@ static void skylake_update_primary_plane(struct drm_plane *plane,
	int x_offset, y_offset;
	u32 surf_addr;
	int scaler_id = plane_state->scaler_id;
	int src_x = plane_state->src.x1 >> 16;
	int src_y = plane_state->src.y1 >> 16;
	int src_w = drm_rect_width(&plane_state->src) >> 16;
	int src_h = drm_rect_height(&plane_state->src) >> 16;
	int dst_x = plane_state->dst.x1;
	int dst_y = plane_state->dst.y1;
	int dst_w = drm_rect_width(&plane_state->dst);
	int dst_h = drm_rect_height(&plane_state->dst);
	int src_x = plane_state->base.src.x1 >> 16;
	int src_y = plane_state->base.src.y1 >> 16;
	int src_w = drm_rect_width(&plane_state->base.src) >> 16;
	int src_h = drm_rect_height(&plane_state->base.src) >> 16;
	int dst_x = plane_state->base.dst.x1;
	int dst_y = plane_state->base.dst.y1;
	int dst_w = drm_rect_width(&plane_state->base.dst);
	int dst_h = drm_rect_height(&plane_state->base.dst);

	plane_ctl = PLANE_CTL_ENABLE |
		    PLANE_CTL_PIPE_GAMMA_ENABLE |
@@ -3009,7 +3009,7 @@ static void skylake_update_primary_plane(struct drm_plane *plane,
					       fb->pixel_format);
	surf_addr = intel_plane_obj_offset(to_intel_plane(plane), obj, 0);

	WARN_ON(drm_rect_width(&plane_state->src) == 0);
	WARN_ON(drm_rect_width(&plane_state->base.src) == 0);

	if (intel_rotation_90_or_270(rotation)) {
		int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
@@ -3098,7 +3098,7 @@ static void intel_update_primary_planes(struct drm_device *dev)
		drm_modeset_lock_crtc(crtc, &plane->base);
		plane_state = to_intel_plane_state(plane->base.state);

		if (plane_state->visible)
		if (plane_state->base.visible)
			plane->update_plane(&plane->base,
					    to_intel_crtc_state(crtc->state),
					    plane_state);
@@ -4273,7 +4273,7 @@ static int skl_update_scaler_plane(struct intel_crtc_state *crtc_state,
	struct drm_framebuffer *fb = plane_state->base.fb;
	int ret;

	bool force_detach = !fb || !plane_state->visible;
	bool force_detach = !fb || !plane_state->base.visible;

	DRM_DEBUG_KMS("Updating scaler for [PLANE:%d:%s] scaler_user index %u.%u\n",
		      intel_plane->base.base.id, intel_plane->base.name,
@@ -4283,10 +4283,10 @@ static int skl_update_scaler_plane(struct intel_crtc_state *crtc_state,
				drm_plane_index(&intel_plane->base),
				&plane_state->scaler_id,
				plane_state->base.rotation,
				drm_rect_width(&plane_state->src) >> 16,
				drm_rect_height(&plane_state->src) >> 16,
				drm_rect_width(&plane_state->dst),
				drm_rect_height(&plane_state->dst));
				drm_rect_width(&plane_state->base.src) >> 16,
				drm_rect_height(&plane_state->base.src) >> 16,
				drm_rect_width(&plane_state->base.dst),
				drm_rect_height(&plane_state->base.dst));

	if (ret || plane_state->scaler_id < 0)
		return ret;
@@ -4584,9 +4584,9 @@ static void intel_post_plane_update(struct intel_crtc_state *old_crtc_state)

		intel_fbc_post_update(crtc);

		if (primary_state->visible &&
		if (primary_state->base.visible &&
		    (needs_modeset(&pipe_config->base) ||
		     !old_primary_state->visible))
		     !old_primary_state->base.visible))
			intel_post_enable_primary(&crtc->base);
	}
}
@@ -4612,8 +4612,8 @@ static void intel_pre_plane_update(struct intel_crtc_state *old_crtc_state)

		intel_fbc_pre_update(crtc, pipe_config, primary_state);

		if (old_primary_state->visible &&
		    (modeset || !primary_state->visible))
		if (old_primary_state->base.visible &&
		    (modeset || !primary_state->base.visible))
			intel_pre_disable_primary(&crtc->base);
	}

@@ -6298,13 +6298,13 @@ static void intel_crtc_disable_noatomic(struct drm_crtc *crtc)
	if (!intel_crtc->active)
		return;

	if (to_intel_plane_state(crtc->primary->state)->visible) {
	if (to_intel_plane_state(crtc->primary->state)->base.visible) {
		WARN_ON(intel_crtc->flip_work);

		intel_pre_disable_primary_noatomic(crtc);

		intel_crtc_disable_planes(crtc, 1 << drm_plane_index(crtc->primary));
		to_intel_plane_state(crtc->primary->state)->visible = false;
		to_intel_plane_state(crtc->primary->state)->base.visible = false;
	}

	dev_priv->display.crtc_disable(crtc);
@@ -10178,7 +10178,7 @@ static void i845_update_cursor(struct drm_crtc *crtc, u32 base,
	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
	uint32_t cntl = 0, size = 0;

	if (plane_state && plane_state->visible) {
	if (plane_state && plane_state->base.visible) {
		unsigned int width = plane_state->base.crtc_w;
		unsigned int height = plane_state->base.crtc_h;
		unsigned int stride = roundup_pow_of_two(width) * 4;
@@ -10242,7 +10242,7 @@ static void i9xx_update_cursor(struct drm_crtc *crtc, u32 base,
	int pipe = intel_crtc->pipe;
	uint32_t cntl = 0;

	if (plane_state && plane_state->visible) {
	if (plane_state && plane_state->base.visible) {
		cntl = MCURSOR_GAMMA_ENABLE;
		switch (plane_state->base.crtc_w) {
			case 64:
@@ -11826,7 +11826,7 @@ static bool intel_wm_need_update(struct drm_plane *plane,
	struct intel_plane_state *cur = to_intel_plane_state(plane->state);

	/* Update watermarks on tiling or size changes. */
	if (new->visible != cur->visible)
	if (new->base.visible != cur->base.visible)
		return true;

	if (!cur->base.fb || !new->base.fb)
@@ -11834,10 +11834,10 @@ static bool intel_wm_need_update(struct drm_plane *plane,

	if (cur->base.fb->modifier[0] != new->base.fb->modifier[0] ||
	    cur->base.rotation != new->base.rotation ||
	    drm_rect_width(&new->src) != drm_rect_width(&cur->src) ||
	    drm_rect_height(&new->src) != drm_rect_height(&cur->src) ||
	    drm_rect_width(&new->dst) != drm_rect_width(&cur->dst) ||
	    drm_rect_height(&new->dst) != drm_rect_height(&cur->dst))
	    drm_rect_width(&new->base.src) != drm_rect_width(&cur->base.src) ||
	    drm_rect_height(&new->base.src) != drm_rect_height(&cur->base.src) ||
	    drm_rect_width(&new->base.dst) != drm_rect_width(&cur->base.dst) ||
	    drm_rect_height(&new->base.dst) != drm_rect_height(&cur->base.dst))
		return true;

	return false;
@@ -11845,10 +11845,10 @@ static bool intel_wm_need_update(struct drm_plane *plane,

static bool needs_scaling(struct intel_plane_state *state)
{
	int src_w = drm_rect_width(&state->src) >> 16;
	int src_h = drm_rect_height(&state->src) >> 16;
	int dst_w = drm_rect_width(&state->dst);
	int dst_h = drm_rect_height(&state->dst);
	int src_w = drm_rect_width(&state->base.src) >> 16;
	int src_h = drm_rect_height(&state->base.src) >> 16;
	int dst_w = drm_rect_width(&state->base.dst);
	int dst_h = drm_rect_height(&state->base.dst);

	return (src_w != dst_w || src_h != dst_h);
}
@@ -11879,8 +11879,8 @@ int intel_plane_atomic_calc_changes(struct drm_crtc_state *crtc_state,
			return ret;
	}

	was_visible = old_plane_state->visible;
	visible = to_intel_plane_state(plane_state)->visible;
	was_visible = old_plane_state->base.visible;
	visible = to_intel_plane_state(plane_state)->base.visible;

	if (!was_crtc_enabled && WARN_ON(was_visible))
		was_visible = false;
@@ -11896,7 +11896,7 @@ int intel_plane_atomic_calc_changes(struct drm_crtc_state *crtc_state,
	 * only combine the results from all planes in the current place?
	 */
	if (!is_crtc_enabled)
		to_intel_plane_state(plane_state)->visible = visible = false;
		to_intel_plane_state(plane_state)->base.visible = visible = false;

	if (!was_visible && !visible)
		return 0;
@@ -12301,12 +12301,13 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc,
			      drm_get_format_name(fb->pixel_format));
		DRM_DEBUG_KMS("\tscaler:%d src %dx%d+%d+%d dst %dx%d+%d+%d\n",
			      state->scaler_id,
			      state->src.x1 >> 16, state->src.y1 >> 16,
			      drm_rect_width(&state->src) >> 16,
			      drm_rect_height(&state->src) >> 16,
			      state->dst.x1, state->dst.y1,
			      drm_rect_width(&state->dst),
			      drm_rect_height(&state->dst));
			      state->base.src.x1 >> 16,
			      state->base.src.y1 >> 16,
			      drm_rect_width(&state->base.src) >> 16,
			      drm_rect_height(&state->base.src) >> 16,
			      state->base.dst.x1, state->base.dst.y1,
			      drm_rect_width(&state->base.dst),
			      drm_rect_height(&state->base.dst));
	}
}

@@ -14141,12 +14142,14 @@ intel_check_primary_plane(struct drm_plane *plane,
		can_position = true;
	}

	return drm_plane_helper_check_update(plane, crtc, fb, &state->src,
					     &state->dst, &state->clip,
	return drm_plane_helper_check_update(plane, crtc, fb,
					     &state->base.src,
					     &state->base.dst,
					     &state->base.clip,
					     state->base.rotation,
					     min_scale, max_scale,
					     can_position, true,
					     &state->visible);
					     &state->base.visible);
}

static void intel_begin_crtc_commit(struct drm_crtc *crtc,
@@ -14333,12 +14336,13 @@ intel_check_cursor_plane(struct drm_plane *plane,
	unsigned stride;
	int ret;

	ret = drm_plane_helper_check_update(plane, crtc, fb, &state->src,
					    &state->dst, &state->clip,
	ret = drm_plane_helper_check_update(plane, crtc, fb, &state->base.src,
					    &state->base.dst,
					    &state->base.clip,
					    state->base.rotation,
					    DRM_PLANE_HELPER_NO_SCALING,
					    DRM_PLANE_HELPER_NO_SCALING,
					    true, true, &state->visible);
					    true, true, &state->base.visible);
	if (ret)
		return ret;

@@ -14375,7 +14379,7 @@ intel_check_cursor_plane(struct drm_plane *plane,
	 * Refuse the put the cursor into that compromised position.
	 */
	if (IS_CHERRYVIEW(plane->dev) && pipe == PIPE_C &&
	    state->visible && state->base.crtc_x < 0) {
	    state->base.visible && state->base.crtc_x < 0) {
		DRM_DEBUG_KMS("CHV cursor C not allowed to straddle the left screen edge\n");
		return -EINVAL;
	}
@@ -15825,7 +15829,7 @@ static void intel_sanitize_crtc(struct intel_crtc *crtc)
		 * Temporarily change the plane mapping and disable everything
		 * ...  */
		plane = crtc->plane;
		to_intel_plane_state(crtc->base.primary->state)->visible = true;
		to_intel_plane_state(crtc->base.primary->state)->base.visible = true;
		crtc->plane = !plane;
		intel_crtc_disable_noatomic(&crtc->base);
		crtc->plane = plane;
@@ -15952,10 +15956,10 @@ static void readout_plane_state(struct intel_crtc *crtc)
	struct intel_plane_state *plane_state =
		to_intel_plane_state(primary->state);

	plane_state->visible = crtc->active &&
	plane_state->base.visible = crtc->active &&
		primary_get_hw_state(to_intel_plane(primary));

	if (plane_state->visible)
	if (plane_state->base.visible)
		crtc->base.state->plane_mask |= 1 << drm_plane_index(primary);
}

+0 −3
Original line number Diff line number Diff line
@@ -338,10 +338,7 @@ struct intel_atomic_state {

struct intel_plane_state {
	struct drm_plane_state base;
	struct drm_rect src;
	struct drm_rect dst;
	struct drm_rect clip;
	bool visible;

	/*
	 * scaler_id
+6 −6
Original line number Diff line number Diff line
@@ -494,7 +494,7 @@ static bool multiple_pipes_ok(struct intel_crtc *crtc,
	if (!no_fbc_on_multiple_pipes(dev_priv))
		return true;

	if (plane_state->visible)
	if (plane_state->base.visible)
		fbc->visible_pipes_mask |= (1 << pipe);
	else
		fbc->visible_pipes_mask &= ~(1 << pipe);
@@ -725,9 +725,9 @@ static void intel_fbc_update_state_cache(struct intel_crtc *crtc,
			ilk_pipe_pixel_rate(crtc_state);

	cache->plane.rotation = plane_state->base.rotation;
	cache->plane.src_w = drm_rect_width(&plane_state->src) >> 16;
	cache->plane.src_h = drm_rect_height(&plane_state->src) >> 16;
	cache->plane.visible = plane_state->visible;
	cache->plane.src_w = drm_rect_width(&plane_state->base.src) >> 16;
	cache->plane.src_h = drm_rect_height(&plane_state->base.src) >> 16;
	cache->plane.visible = plane_state->base.visible;

	if (!cache->plane.visible)
		return;
@@ -1050,7 +1050,7 @@ void intel_fbc_choose_crtc(struct drm_i915_private *dev_priv,
		struct intel_plane_state *intel_plane_state =
			to_intel_plane_state(plane_state);

		if (!intel_plane_state->visible)
		if (!intel_plane_state->base.visible)
			continue;

		for_each_crtc_in_state(state, crtc, crtc_state, j) {
@@ -1212,7 +1212,7 @@ void intel_fbc_init_pipe_state(struct drm_i915_private *dev_priv)

	for_each_intel_crtc(&dev_priv->drm, crtc)
		if (intel_crtc_active(&crtc->base) &&
		    to_intel_plane_state(crtc->base.primary->state)->visible)
		    to_intel_plane_state(crtc->base.primary->state)->base.visible)
			dev_priv->fbc.visible_pipes_mask |= (1 << crtc->pipe);
}

+30 −30
Original line number Diff line number Diff line
@@ -960,7 +960,7 @@ static uint16_t vlv_compute_wm_level(struct intel_plane *plane,
	if (dev_priv->wm.pri_latency[level] == 0)
		return USHRT_MAX;

	if (!state->visible)
	if (!state->base.visible)
		return 0;

	cpp = drm_format_plane_cpp(state->base.fb->pixel_format, 0);
@@ -1002,7 +1002,7 @@ static void vlv_compute_fifo(struct intel_crtc *crtc)
		if (plane->base.type == DRM_PLANE_TYPE_CURSOR)
			continue;

		if (state->visible) {
		if (state->base.visible) {
			wm_state->num_active_planes++;
			total_rate += drm_format_plane_cpp(state->base.fb->pixel_format, 0);
		}
@@ -1018,7 +1018,7 @@ static void vlv_compute_fifo(struct intel_crtc *crtc)
			continue;
		}

		if (!state->visible) {
		if (!state->base.visible) {
			plane->wm.fifo_size = 0;
			continue;
		}
@@ -1118,7 +1118,7 @@ static void vlv_compute_wm(struct intel_crtc *crtc)
		struct intel_plane_state *state =
			to_intel_plane_state(plane->base.state);

		if (!state->visible)
		if (!state->base.visible)
			continue;

		/* normal watermarks */
@@ -1767,7 +1767,7 @@ static uint32_t ilk_compute_pri_wm(const struct intel_crtc_state *cstate,
		drm_format_plane_cpp(pstate->base.fb->pixel_format, 0) : 0;
	uint32_t method1, method2;

	if (!cstate->base.active || !pstate->visible)
	if (!cstate->base.active || !pstate->base.visible)
		return 0;

	method1 = ilk_wm_method1(ilk_pipe_pixel_rate(cstate), cpp, mem_value);
@@ -1777,7 +1777,7 @@ static uint32_t ilk_compute_pri_wm(const struct intel_crtc_state *cstate,

	method2 = ilk_wm_method2(ilk_pipe_pixel_rate(cstate),
				 cstate->base.adjusted_mode.crtc_htotal,
				 drm_rect_width(&pstate->dst),
				 drm_rect_width(&pstate->base.dst),
				 cpp, mem_value);

	return min(method1, method2);
@@ -1795,13 +1795,13 @@ static uint32_t ilk_compute_spr_wm(const struct intel_crtc_state *cstate,
		drm_format_plane_cpp(pstate->base.fb->pixel_format, 0) : 0;
	uint32_t method1, method2;

	if (!cstate->base.active || !pstate->visible)
	if (!cstate->base.active || !pstate->base.visible)
		return 0;

	method1 = ilk_wm_method1(ilk_pipe_pixel_rate(cstate), cpp, mem_value);
	method2 = ilk_wm_method2(ilk_pipe_pixel_rate(cstate),
				 cstate->base.adjusted_mode.crtc_htotal,
				 drm_rect_width(&pstate->dst),
				 drm_rect_width(&pstate->base.dst),
				 cpp, mem_value);
	return min(method1, method2);
}
@@ -1820,7 +1820,7 @@ static uint32_t ilk_compute_cur_wm(const struct intel_crtc_state *cstate,
	 * this is necessary to avoid flickering.
	 */
	int cpp = 4;
	int width = pstate->visible ? pstate->base.crtc_w : 64;
	int width = pstate->base.visible ? pstate->base.crtc_w : 64;

	if (!cstate->base.active)
		return 0;
@@ -1838,10 +1838,10 @@ static uint32_t ilk_compute_fbc_wm(const struct intel_crtc_state *cstate,
	int cpp = pstate->base.fb ?
		drm_format_plane_cpp(pstate->base.fb->pixel_format, 0) : 0;

	if (!cstate->base.active || !pstate->visible)
	if (!cstate->base.active || !pstate->base.visible)
		return 0;

	return ilk_wm_fbc(pri_val, drm_rect_width(&pstate->dst), cpp);
	return ilk_wm_fbc(pri_val, drm_rect_width(&pstate->base.dst), cpp);
}

static unsigned int ilk_display_fifo_size(const struct drm_device *dev)
@@ -2358,10 +2358,10 @@ static int ilk_compute_pipe_wm(struct intel_crtc_state *cstate)

	pipe_wm->pipe_enabled = cstate->base.active;
	if (sprstate) {
		pipe_wm->sprites_enabled = sprstate->visible;
		pipe_wm->sprites_scaled = sprstate->visible &&
			(drm_rect_width(&sprstate->dst) != drm_rect_width(&sprstate->src) >> 16 ||
			 drm_rect_height(&sprstate->dst) != drm_rect_height(&sprstate->src) >> 16);
		pipe_wm->sprites_enabled = sprstate->base.visible;
		pipe_wm->sprites_scaled = sprstate->base.visible &&
			(drm_rect_width(&sprstate->base.dst) != drm_rect_width(&sprstate->base.src) >> 16 ||
			 drm_rect_height(&sprstate->base.dst) != drm_rect_height(&sprstate->base.src) >> 16);
	}

	usable_level = max_level;
@@ -2996,14 +2996,14 @@ skl_plane_downscale_amount(const struct intel_plane_state *pstate)
	uint32_t downscale_h, downscale_w;
	uint32_t src_w, src_h, dst_w, dst_h;

	if (WARN_ON(!pstate->visible))
	if (WARN_ON(!pstate->base.visible))
		return DRM_PLANE_HELPER_NO_SCALING;

	/* n.b., src is 16.16 fixed point, dst is whole integer */
	src_w = drm_rect_width(&pstate->src);
	src_h = drm_rect_height(&pstate->src);
	dst_w = drm_rect_width(&pstate->dst);
	dst_h = drm_rect_height(&pstate->dst);
	src_w = drm_rect_width(&pstate->base.src);
	src_h = drm_rect_height(&pstate->base.src);
	dst_w = drm_rect_width(&pstate->base.dst);
	dst_h = drm_rect_height(&pstate->base.dst);
	if (intel_rotation_90_or_270(pstate->base.rotation))
		swap(dst_w, dst_h);

@@ -3025,15 +3025,15 @@ skl_plane_relative_data_rate(const struct intel_crtc_state *cstate,
	uint32_t width = 0, height = 0;
	unsigned format = fb ? fb->pixel_format : DRM_FORMAT_XRGB8888;

	if (!intel_pstate->visible)
	if (!intel_pstate->base.visible)
		return 0;
	if (pstate->plane->type == DRM_PLANE_TYPE_CURSOR)
		return 0;
	if (y && format != DRM_FORMAT_NV12)
		return 0;

	width = drm_rect_width(&intel_pstate->src) >> 16;
	height = drm_rect_height(&intel_pstate->src) >> 16;
	width = drm_rect_width(&intel_pstate->base.src) >> 16;
	height = drm_rect_height(&intel_pstate->base.src) >> 16;

	if (intel_rotation_90_or_270(pstate->rotation))
		swap(width, height);
@@ -3134,8 +3134,8 @@ skl_ddb_min_alloc(const struct drm_plane_state *pstate,
	    fb->modifier[0] != I915_FORMAT_MOD_Yf_TILED)
		return 8;

	src_w = drm_rect_width(&intel_pstate->src) >> 16;
	src_h = drm_rect_height(&intel_pstate->src) >> 16;
	src_w = drm_rect_width(&intel_pstate->base.src) >> 16;
	src_h = drm_rect_height(&intel_pstate->base.src) >> 16;

	if (intel_rotation_90_or_270(pstate->rotation))
		swap(src_w, src_h);
@@ -3226,7 +3226,7 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
		if (intel_plane->pipe != pipe)
			continue;

		if (!to_intel_plane_state(pstate)->visible) {
		if (!to_intel_plane_state(pstate)->base.visible) {
			minimum[id] = 0;
			y_minimum[id] = 0;
			continue;
@@ -3363,7 +3363,7 @@ static uint32_t skl_adjusted_plane_pixel_rate(const struct intel_crtc_state *cst
	uint64_t pixel_rate;

	/* Shouldn't reach here on disabled planes... */
	if (WARN_ON(!pstate->visible))
	if (WARN_ON(!pstate->base.visible))
		return 0;

	/*
@@ -3399,13 +3399,13 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
	uint32_t width = 0, height = 0;
	uint32_t plane_pixel_rate;

	if (latency == 0 || !cstate->base.active || !intel_pstate->visible) {
	if (latency == 0 || !cstate->base.active || !intel_pstate->base.visible) {
		*enabled = false;
		return 0;
	}

	width = drm_rect_width(&intel_pstate->src) >> 16;
	height = drm_rect_height(&intel_pstate->src) >> 16;
	width = drm_rect_width(&intel_pstate->base.src) >> 16;
	height = drm_rect_height(&intel_pstate->base.src) >> 16;

	if (intel_rotation_90_or_270(pstate->rotation))
		swap(width, height);
Loading