Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
To: intel-xe@lists.freedesktop.org
Subject: [CI v2 2/4] drm/i915/display: Use async flip when available for initial plane config
Date: Fri, 18 Oct 2024 19:06:29 +0200	[thread overview]
Message-ID: <20241018170631.6598-3-maarten.lankhorst@linux.intel.com> (raw)
In-Reply-To: <20241018170631.6598-1-maarten.lankhorst@linux.intel.com>

I'm planning to reorder readout in the Xe sequence in such a way that
interrupts will not be available, so just use an async flip.

Since the new FB points to the same pages, it will not tear. It also
has the benefit of perhaps being slightly faster.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 drivers/gpu/drm/i915/display/skl_universal_plane.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index a0a7ed01415a5..6740c193920ff 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -2902,7 +2902,7 @@ bool skl_fixup_initial_plane_config(struct intel_crtc *crtc,
 		to_intel_plane_state(plane->base.state);
 	enum plane_id plane_id = plane->id;
 	enum pipe pipe = crtc->pipe;
-	u32 base;
+	u32 base, plane_ctl;
 
 	if (!plane_state->uapi.visible)
 		return false;
@@ -2916,7 +2916,16 @@ bool skl_fixup_initial_plane_config(struct intel_crtc *crtc,
 	if (plane_config->base == base)
 		return false;
 
+	/* Perform an async flip to the new surface. */
+	plane_ctl = intel_de_read(i915, PLANE_CTL(pipe, plane_id));
+	plane_ctl |= PLANE_CTL_ASYNC_FLIP;
+
+	intel_de_write(i915, PLANE_CTL(pipe, plane_id), plane_ctl);
 	intel_de_write(i915, PLANE_SURF(pipe, plane_id), base);
 
-	return true;
+	if (intel_de_wait(i915, PLANE_SURFLIVE(pipe, plane_id), ~0U, base, 40) < 0)
+		drm_warn(&i915->drm, "async flip timed out\n");
+
+	/* No need to vblank wait either */
+	return false;
 }
-- 
2.45.2


  parent reply	other threads:[~2024-10-18 17:06 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-18 17:06 [CI v2 0/4] (CI) drm/xe: Fix initial framebuffer handover Maarten Lankhorst
2024-10-18 17:06 ` [CI v2 1/4] drm/xe: Remove double pageflip Maarten Lankhorst
2024-10-18 17:12   ` Lucas De Marchi
2024-10-18 17:06 ` Maarten Lankhorst [this message]
2024-10-18 17:14   ` [CI v2 2/4] drm/i915/display: Use async flip when available for initial plane config Lucas De Marchi
2024-10-18 17:06 ` [CI v2 3/4] drm/xe: Move suballocator init to after display init Maarten Lankhorst
2024-10-18 17:30   ` Lucas De Marchi
2024-10-18 17:06 ` [CI v2 4/4] drm/xe: Initialise display before GT and tile init Maarten Lankhorst
2024-10-18 17:40   ` Lucas De Marchi
2024-10-18 20:05   ` [CI v2.2] " Maarten Lankhorst
2024-10-21 10:38     ` [CI v2.3] " Maarten Lankhorst
2024-10-24 13:46       ` [PATCH] " Maarten Lankhorst
2024-10-24 15:15       ` Maarten Lankhorst
2024-10-25 10:14         ` Maarten Lankhorst
2024-10-25 13:04           ` Maarten Lankhorst
2024-10-18 18:08 ` ✓ CI.Patch_applied: success for (CI) drm/xe: Fix initial framebuffer handover Patchwork
2024-10-18 18:08 ` ✗ CI.checkpatch: warning " Patchwork
2024-10-18 18:10 ` ✓ CI.KUnit: success " Patchwork
2024-10-18 18:21 ` ✓ CI.Build: " Patchwork
2024-10-18 18:23 ` ✓ CI.Hooks: " Patchwork
2024-10-18 18:25 ` ✗ CI.checksparse: warning " Patchwork
2024-10-18 18:45 ` ✗ CI.BAT: failure " Patchwork
2024-10-18 21:25 ` ✓ CI.Patch_applied: success for (CI) drm/xe: Fix initial framebuffer handover. (rev2) Patchwork
2024-10-18 21:25 ` ✓ CI.checkpatch: " Patchwork
2024-10-18 21:27 ` ✓ CI.KUnit: " Patchwork
2024-10-18 21:38 ` ✓ CI.Build: " Patchwork
2024-10-18 21:40 ` ✓ CI.Hooks: " Patchwork
2024-10-18 21:42 ` ✗ CI.checksparse: warning " Patchwork
2024-10-18 22:04 ` ✗ CI.BAT: failure " Patchwork
2024-10-19 11:17 ` ✗ CI.FULL: failure for (CI) drm/xe: Fix initial framebuffer handover Patchwork
2024-10-19 14:41 ` ✗ CI.FULL: failure for (CI) drm/xe: Fix initial framebuffer handover. (rev2) Patchwork
2024-10-21 10:50 ` ✓ CI.Patch_applied: success for (CI) drm/xe: Fix initial framebuffer handover. (rev3) Patchwork
2024-10-21 10:50 ` ✓ CI.checkpatch: " Patchwork
2024-10-21 10:52 ` ✓ CI.KUnit: " Patchwork
2024-10-21 11:03 ` ✓ CI.Build: " Patchwork
2024-10-21 11:06 ` ✓ CI.Hooks: " Patchwork
2024-10-21 11:07 ` ✗ CI.checksparse: warning " Patchwork
2024-10-21 11:36 ` ✓ CI.BAT: success " Patchwork
2024-10-21 15:59 ` ✗ CI.FULL: failure " Patchwork
2024-10-25  1:30 ` ✓ CI.Patch_applied: success for (CI) drm/xe: Fix initial framebuffer handover. (rev5) Patchwork
2024-10-25  1:30 ` ✗ CI.checkpatch: warning " Patchwork
2024-10-25  1:31 ` ✗ CI.KUnit: failure " Patchwork
2024-10-25 11:29 ` ✓ CI.Patch_applied: success for (CI) drm/xe: Fix initial framebuffer handover. (rev6) Patchwork
2024-10-25 11:29 ` ✗ CI.checkpatch: warning " Patchwork
2024-10-25 11:30 ` ✓ CI.KUnit: success " Patchwork
2024-10-25 11:42 ` ✓ CI.Build: " Patchwork
2024-10-25 11:44 ` ✓ CI.Hooks: " Patchwork
2024-10-25 11:46 ` ✗ CI.checksparse: warning " Patchwork
2024-10-25 12:14 ` ✗ CI.BAT: failure " Patchwork
2024-10-25 13:11 ` ✓ CI.Patch_applied: success for (CI) drm/xe: Fix initial framebuffer handover. (rev7) Patchwork
2024-10-25 13:11 ` ✗ CI.checkpatch: warning " Patchwork
2024-10-25 13:13 ` ✓ CI.KUnit: success " Patchwork
2024-10-25 13:24 ` ✓ CI.Build: " Patchwork
2024-10-25 13:27 ` ✓ CI.Hooks: " Patchwork
2024-10-25 13:28 ` ✗ CI.checksparse: warning " Patchwork
2024-10-25 13:54 ` ✗ CI.BAT: failure " Patchwork
2024-10-26 23:39 ` ✗ CI.FULL: failure for (CI) drm/xe: Fix initial framebuffer handover. (rev6) Patchwork
2024-10-27  1:46 ` ✗ CI.FULL: failure for (CI) drm/xe: Fix initial framebuffer handover. (rev7) Patchwork
2024-10-29 11:40 ` Patchwork

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=20241018170631.6598-3-maarten.lankhorst@linux.intel.com \
    --to=maarten.lankhorst@linux.intel.com \
    --cc=intel-xe@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox