From: Ville Syrjala <ville.syrjala@linux.intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: intel-xe@lists.freedesktop.org
Subject: [PATCH 3/4] drm/i915/dsb: Allow DSB based commits when scalers are in use
Date: Tue, 18 Feb 2025 22:58:49 +0200 [thread overview]
Message-ID: <20250218205850.1422-4-ville.syrjala@linux.intel.com> (raw)
In-Reply-To: <20250218205850.1422-1-ville.syrjala@linux.intel.com>
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Have DSB perform plane scaler programming as well. Changes
to pfit/pipe scaler are not being done on the dsb since those
take the fastset path. However we do now allow DSB based plane
updates when the pfit/pipe scaler is currently enabled (the
pfit/pipe scaler just won't be touched by the DSB).
Fortunately the hardware issue where some scaler registers
are latched at frame start and some at start of vblank has
been fixed on icl+ (IIRC), and since DSB is tgl+ only we
don't have to do any changes to the DSB vblank evasion.
Not that we handle that hardware issue correctly in the
CPU vblank evasion either...
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 826b001a66fa..7fd12abdf969 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -7319,8 +7319,6 @@ static void intel_atomic_dsb_prepare(struct intel_atomic_state *state,
struct intel_crtc *crtc)
{
struct intel_display *display = to_intel_display(state);
- const struct intel_crtc_state *old_crtc_state =
- intel_atomic_get_old_crtc_state(state, crtc);
struct intel_crtc_state *new_crtc_state =
intel_atomic_get_new_crtc_state(state, crtc);
@@ -7334,8 +7332,6 @@ static void intel_atomic_dsb_prepare(struct intel_atomic_state *state,
new_crtc_state->use_dsb =
!new_crtc_state->do_async_flip &&
(DISPLAY_VER(display) >= 20 || !new_crtc_state->has_psr) &&
- !new_crtc_state->scaler_state.scaler_users &&
- !old_crtc_state->scaler_state.scaler_users &&
!intel_crtc_needs_modeset(new_crtc_state) &&
!intel_crtc_needs_fastset(new_crtc_state);
@@ -7345,6 +7341,7 @@ static void intel_atomic_dsb_prepare(struct intel_atomic_state *state,
static void intel_atomic_dsb_finish(struct intel_atomic_state *state,
struct intel_crtc *crtc)
{
+ struct intel_display *display = to_intel_display(state);
struct intel_crtc_state *new_crtc_state =
intel_atomic_get_new_crtc_state(state, crtc);
@@ -7391,6 +7388,10 @@ static void intel_atomic_dsb_finish(struct intel_atomic_state *state,
intel_crtc_planes_update_arm(new_crtc_state->dsb_commit,
state, crtc);
+ if (DISPLAY_VER(display) >= 9)
+ skl_detach_scalers(new_crtc_state->dsb_commit,
+ new_crtc_state);
+
if (!new_crtc_state->dsb_color_vblank) {
intel_dsb_wait_vblanks(new_crtc_state->dsb_commit, 1);
--
2.45.3
next prev parent reply other threads:[~2025-02-18 20:59 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-18 20:58 [PATCH 0/4] drm/i915/dsb: Update plane scalers on DSB Ville Syrjala
2025-02-18 20:58 ` [PATCH 1/4] drm/i915/dsb: Allow DSB based updates without planes Ville Syrjala
2025-02-24 5:50 ` Shankar, Uma
2025-02-18 20:58 ` [PATCH 2/4] drm/i915/dsb: Plumb dsb into plane scaler functions Ville Syrjala
2025-02-24 5:55 ` Shankar, Uma
2025-02-18 20:58 ` Ville Syrjala [this message]
2025-02-24 6:36 ` [PATCH 3/4] drm/i915/dsb: Allow DSB based commits when scalers are in use Shankar, Uma
2025-02-18 20:58 ` [PATCH 4/4] drm/i915: Do state check for color management changes Ville Syrjala
2025-02-18 23:40 ` ✓ CI.Patch_applied: success for drm/i915/dsb: Update plane scalers on DSB Patchwork
2025-02-18 23:40 ` ✓ CI.checkpatch: " Patchwork
2025-02-18 23:41 ` ✓ CI.KUnit: " Patchwork
2025-02-18 23:57 ` ✓ CI.Build: " Patchwork
2025-02-19 0:00 ` ✓ CI.Hooks: " Patchwork
2025-02-19 0:01 ` ✗ CI.checksparse: warning " Patchwork
2025-02-19 7:16 ` ✓ Xe.CI.BAT: success " Patchwork
2025-02-20 8:12 ` ✗ Xe.CI.Full: failure " 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=20250218205850.1422-4-ville.syrjala@linux.intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--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