diff mbox series

[3/4] drm/i915/display/psr2: Fix cursor updates using legacy apis

Message ID 20210717011227.204494-3-jose.souza@intel.com (mailing list archive)
State New, archived
Headers show
Series [1/4] drm/i915/display: Disable FBC when PSR2 is enabled for xelpd platforms | expand

Commit Message

Souza, Jose July 17, 2021, 1:12 a.m. UTC
The fast path only updates cursor register what will not cause
any updates in the screen when using PSR2 selective fetch.

The only option that we have is to go trough the slow patch that will
do full atomic commit, that will trigger the PSR2 selective fetch
compute and programing calls.

Without this patch is possible to see a mouse movement lag in Gnome
when PSR2 selective fetch is enabled.

Cc: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 drivers/gpu/drm/i915/display/intel_cursor.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Srivatsa, Anusha July 26, 2021, 9:19 p.m. UTC | #1
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of José
> Roberto de Souza
> Sent: Friday, July 16, 2021 6:12 PM
> To: intel-gfx@lists.freedesktop.org
> Subject: [Intel-gfx] [PATCH 3/4] drm/i915/display/psr2: Fix cursor updates
> using legacy apis
> 
> The fast path only updates cursor register what will not cause any updates in
> the screen when using PSR2 selective fetch.
> 
> The only option that we have is to go trough the slow patch that will do full
s/ trough/Through

> atomic commit, that will trigger the PSR2 selective fetch compute and
> programing calls.
> 
> Without this patch is possible to see a mouse movement lag in Gnome when
> PSR2 selective fetch is enabled.
> 
> Cc: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Assuming this was tested on gnome, the change makes sense.

Reviewed-by: Anusha Srivatsa <anusha.srivatsa@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_cursor.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c
> b/drivers/gpu/drm/i915/display/intel_cursor.c
> index f61a25fb87e90..c7618fef01439 100644
> --- a/drivers/gpu/drm/i915/display/intel_cursor.c
> +++ b/drivers/gpu/drm/i915/display/intel_cursor.c
> @@ -629,12 +629,16 @@ intel_legacy_cursor_update(struct drm_plane
> *_plane,
> 
>  	/*
>  	 * When crtc is inactive or there is a modeset pending,
> -	 * wait for it to complete in the slowpath
> +	 * wait for it to complete in the slowpath.
> +	 * PSR2 selective fetch also requires the slow path as
> +	 * PSR2 plane and transcoder registers can only be updated during
> +	 * vblank.
>  	 *
>  	 * FIXME bigjoiner fastpath would be good
>  	 */
>  	if (!crtc_state->hw.active || intel_crtc_needs_modeset(crtc_state)
> ||
> -	    crtc_state->update_pipe || crtc_state->bigjoiner)
> +	    crtc_state->update_pipe || crtc_state->bigjoiner ||
> +	    crtc_state->enable_psr2_sel_fetch)
>  		goto slow;
> 
>  	/*
> --
> 2.32.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index f61a25fb87e90..c7618fef01439 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -629,12 +629,16 @@  intel_legacy_cursor_update(struct drm_plane *_plane,
 
 	/*
 	 * When crtc is inactive or there is a modeset pending,
-	 * wait for it to complete in the slowpath
+	 * wait for it to complete in the slowpath.
+	 * PSR2 selective fetch also requires the slow path as
+	 * PSR2 plane and transcoder registers can only be updated during
+	 * vblank.
 	 *
 	 * FIXME bigjoiner fastpath would be good
 	 */
 	if (!crtc_state->hw.active || intel_crtc_needs_modeset(crtc_state) ||
-	    crtc_state->update_pipe || crtc_state->bigjoiner)
+	    crtc_state->update_pipe || crtc_state->bigjoiner ||
+	    crtc_state->enable_psr2_sel_fetch)
 		goto slow;
 
 	/*