All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH v3 07/20] drm/i915: Rework plane readout.
Date: Mon, 13 Jul 2015 16:30:20 +0200	[thread overview]
Message-ID: <1436797833-11493-8-git-send-email-maarten.lankhorst@linux.intel.com> (raw)
In-Reply-To: <1436797833-11493-1-git-send-email-maarten.lankhorst@linux.intel.com>

All non-primary planes get disabled during hw readout,
this reduces complexity and means not having to do some plane
visibility checks during the first commit.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_atomic.c  |  7 ---
 drivers/gpu/drm/i915/intel_display.c | 86 ++++--------------------------------
 drivers/gpu/drm/i915/intel_drv.h     |  1 -
 3 files changed, 8 insertions(+), 86 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_atomic.c b/drivers/gpu/drm/i915/intel_atomic.c
index b92b8581efc2..dcf4fb458649 100644
--- a/drivers/gpu/drm/i915/intel_atomic.c
+++ b/drivers/gpu/drm/i915/intel_atomic.c
@@ -98,13 +98,6 @@ int intel_atomic_check(struct drm_device *dev,
 		return -EINVAL;
 	}
 
-	if (crtc_state &&
-	    crtc_state->quirks & PIPE_CONFIG_QUIRK_INITIAL_PLANES) {
-		ret = drm_atomic_add_affected_planes(state, &nuclear_crtc->base);
-		if (ret)
-			return ret;
-	}
-
 	ret = drm_atomic_helper_check_planes(dev, state);
 	if (ret)
 		return ret;
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index e4d8acc63823..118187dc76be 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -11783,34 +11783,6 @@ static bool check_encoder_cloning(struct drm_atomic_state *state,
 	return true;
 }
 
-static void intel_crtc_check_initial_planes(struct drm_crtc *crtc,
-					    struct drm_crtc_state *crtc_state)
-{
-	struct intel_crtc_state *pipe_config =
-		to_intel_crtc_state(crtc_state);
-	struct drm_plane *p;
-	unsigned visible_mask = 0;
-
-	drm_for_each_plane_mask(p, crtc->dev, crtc_state->plane_mask) {
-		struct drm_plane_state *plane_state =
-			drm_atomic_get_existing_plane_state(crtc_state->state, p);
-
-		if (WARN_ON(!plane_state))
-			continue;
-
-		if (!plane_state->fb)
-			crtc_state->plane_mask &=
-				~(1 << drm_plane_index(p));
-		else if (to_intel_plane_state(plane_state)->visible)
-			visible_mask |= 1 << drm_plane_index(p);
-	}
-
-	if (!visible_mask)
-		return;
-
-	pipe_config->quirks &= ~PIPE_CONFIG_QUIRK_INITIAL_PLANES;
-}
-
 static int intel_crtc_atomic_check(struct drm_crtc *crtc,
 				   struct drm_crtc_state *crtc_state)
 {
@@ -11832,10 +11804,6 @@ static int intel_crtc_atomic_check(struct drm_crtc *crtc,
 		"[CRTC:%i] mismatch between state->active(%i) and crtc->active(%i)\n",
 		idx, crtc->state->active, intel_crtc->active);
 
-	/* plane mask is fixed up after all initial planes are calculated */
-	if (pipe_config->quirks & PIPE_CONFIG_QUIRK_INITIAL_PLANES)
-		intel_crtc_check_initial_planes(crtc, crtc_state);
-
 	if (mode_changed && !crtc_state->active)
 		intel_crtc->atomic.update_wm_post = true;
 
@@ -13188,19 +13156,6 @@ intel_modeset_compute_config(struct drm_atomic_state *state)
 			continue;
 		}
 
-		if (pipe_config->quirks & PIPE_CONFIG_QUIRK_INITIAL_PLANES) {
-			ret = drm_atomic_add_affected_planes(state, crtc);
-			if (ret)
-				return ret;
-
-			/*
-			 * We ought to handle i915.fastboot here.
-			 * If no modeset is required and the primary plane has
-			 * a fb, update the members of crtc_state as needed,
-			 * and run the necessary updates during vblank evasion.
-			 */
-		}
-
 		modeset = needs_modeset(crtc_state);
 		recalc = pipe_config->quirks & PIPE_CONFIG_QUIRK_INHERITED_MODE;
 
@@ -15460,47 +15415,22 @@ static void readout_plane_state(struct intel_crtc *crtc,
 				struct intel_crtc_state *crtc_state)
 {
 	struct intel_plane *p;
-	struct drm_plane_state *drm_plane_state;
+	struct intel_plane_state *plane_state;
 	bool active = crtc_state->base.active;
 
-	if (active) {
-		crtc_state->quirks |= PIPE_CONFIG_QUIRK_INITIAL_PLANES;
-
-		/* apply to previous sw state too */
-		to_intel_crtc_state(crtc->base.state)->quirks |=
-			PIPE_CONFIG_QUIRK_INITIAL_PLANES;
-	}
-
 	for_each_intel_plane(crtc->base.dev, p) {
-		bool visible = active;
-
 		if (crtc->pipe != p->pipe)
 			continue;
 
-		drm_plane_state = p->base.state;
-
-		/* Plane scaler state is not touched here. The first atomic
-		 * commit will restore all plane scalers to its old state.
-		 */
+		plane_state = to_intel_plane_state(p->base.state);
 
-		if (active && p->base.type == DRM_PLANE_TYPE_PRIMARY) {
-			visible = primary_get_hw_state(crtc);
-			to_intel_plane_state(drm_plane_state)->visible = visible;
-		} else {
-			/*
-			 * unknown state, assume it's off to force a transition
-			 * to on when calculating state changes.
-			 */
-			to_intel_plane_state(drm_plane_state)->visible = false;
-		}
+		if (p->base.type == DRM_PLANE_TYPE_PRIMARY)
+			plane_state->visible = primary_get_hw_state(crtc);
+		else {
+			if (active)
+				p->disable_plane(&p->base, &crtc->base);
 
-		if (visible) {
-			crtc_state->base.plane_mask |=
-				1 << drm_plane_index(&p->base);
-		} else if (crtc_state->base.state) {
-			/* Make this unconditional for atomic hw readout. */
-			crtc_state->base.plane_mask &=
-				~(1 << drm_plane_index(&p->base));
+			plane_state->visible = false;
 		}
 	}
 }
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 09e3581c8441..2c23900b491f 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -341,7 +341,6 @@ struct intel_crtc_state {
 	 */
 #define PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS	(1<<0) /* unreliable sync mode.flags */
 #define PIPE_CONFIG_QUIRK_INHERITED_MODE	(1<<1) /* mode inherited from firmware */
-#define PIPE_CONFIG_QUIRK_INITIAL_PLANES	(1<<2) /* planes are in unknown state */
 	unsigned long quirks;
 
 	/* Pipe source size (ie. panel fitter input size)
-- 
2.1.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2015-07-13 14:30 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-13 14:30 [PATCH v3 00/20] Convert to atomic, part 4 Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 01/20] drm/i915: Only update state on crtc's that are part of the atomic state Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 02/20] drm/i915: Do not update pfit state when toggling crtc enabled Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 03/20] drm/i915: Do not use plane_config in intel_fbdev.c Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 04/20] drm/i915: Allow fuzzy matching in pipe_config_compare, v2 Maarten Lankhorst
2015-07-14  9:49   ` Daniel Vetter
2015-07-14 10:17     ` [PATCH v3.1 " Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 05/20] drm/i915: Update missing properties in find_initial_plane_obj Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 06/20] drm/i915: Remove plane_config from struct intel_crtc Maarten Lankhorst
2015-07-13 16:30   ` Daniel Stone
2015-07-14  8:27     ` Maarten Lankhorst
2015-07-14 11:23       ` Daniel Stone
2015-07-14 10:33     ` [PATCH v3.1 06/20] drm/i915: Remove plane_config from struct intel_crtc, v2 Maarten Lankhorst
2015-07-14 12:02       ` Daniel Vetter
2015-07-13 14:30 ` Maarten Lankhorst [this message]
2015-07-14  9:53   ` [PATCH v3 07/20] drm/i915: Rework plane readout Daniel Vetter
2015-07-14 10:30     ` Maarten Lankhorst
2015-07-14 10:35       ` Daniel Vetter
2015-07-13 14:30 ` [PATCH v3 08/20] drm/i915: fill in more mode members Maarten Lankhorst
2015-07-14  9:50   ` Daniel Vetter
2015-07-14 10:31     ` Maarten Lankhorst
2015-07-14 11:21     ` Daniel Stone
2015-07-14 11:40       ` Maarten Lankhorst
2015-07-14 12:12         ` [PATCH v3.1 " Maarten Lankhorst
2015-07-14 12:12           ` Daniel Stone
2015-07-14 12:42         ` [PATCH v3 " Daniel Vetter
2015-07-13 14:30 ` [PATCH v3 09/20] drm/i915: Fill in more crtc state, v3 Maarten Lankhorst
2015-07-14  9:49   ` Daniel Vetter
2015-07-14 11:42     ` Maarten Lankhorst
2015-07-14 11:42     ` [PATCH 1/3] drm/i915: Fix reference leak in intel_modeset_readout_hw_state Maarten Lankhorst
2015-07-14 11:47       ` Daniel Stone
2015-07-14 11:45     ` [PATCH 2/3] drm/i915: Zero the mode in intel_sanitize_crtc when force disabling Maarten Lankhorst
2015-07-14 11:47       ` Daniel Stone
2015-07-14 11:46     ` [PATCH 3/3] drm/i915: Calculate vblank timestamping constants before enabling vblank Maarten Lankhorst
2015-07-14 11:47       ` Daniel Stone
2015-07-13 14:30 ` [PATCH v3 10/20] drm/i915: Set csc coefficients in intel_sanitize_crtc Maarten Lankhorst
2015-07-13 16:21   ` Daniel Stone
2015-07-14  8:50     ` Maarten Lankhorst
2015-07-14  9:55       ` Daniel Vetter
2015-07-14 10:12         ` Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 11/20] drm/i915: Readout initial hw mode Maarten Lankhorst
2015-07-14 13:58   ` [PATCH v3.1 " Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 12/20] drm/i915: Convert resume to atomic Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 13/20] drm/i915: Get rid of unused transitional members Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 14/20] drm/i915: Update power domains on readout Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 15/20] drm/i915: Always reset in intel_crtc_restore_mode Maarten Lankhorst
2015-07-14  9:56   ` Daniel Vetter
2015-07-14 14:19     ` [PATCH v3.1 15/20] drm/i915: Always force a modeset in intel_crtc_restore_mode, v2 Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 16/20] drm/i915: Make intel_display_suspend atomic, try 2 Maarten Lankhorst
2015-07-14 16:14   ` Daniel Vetter
2015-07-15  4:05     ` Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 17/20] drm/i915: Use full atomic modeset Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 18/20] drm/i915: Call plane update functions directly from intel_atomic_commit Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 19/20] drm/i915: always disable irqs in intel_pipe_update_start Maarten Lankhorst
2015-07-13 17:16   ` Daniel Stone
2015-07-14  7:57     ` Maarten Lankhorst
2015-07-15  6:38     ` Maarten Lankhorst
2015-07-13 14:30 ` [PATCH v3 20/20] drm/i915: Remove use of runtime pm in atomic commit functions Maarten Lankhorst
2015-07-13 17:35 ` [PATCH v3 00/20] Convert to atomic, part 4 Daniel Stone
2015-07-16 17:43 ` Daniel Stone

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1436797833-11493-8-git-send-email-maarten.lankhorst@linux.intel.com \
    --to=maarten.lankhorst@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.