[Intel-gfx] [PATCH v2 6/8] drm/i915/display: Prepare DRRS for frontbuffer rendering drop

Gwan-gyeong Mun gwan-gyeong.mun at intel.com
Thu Sep 2 16:09:35 UTC 2021


Looks good to me.
Reviewed-by: Gwan-gyeong Mun <gwan-gyeong.mun at intel.com>

On 8/25/21 3:58 AM, José Roberto de Souza wrote:
> Frontbuffer rendering will be dropped for modern platforms but
> before that we to prepare DRRS for it.
> 
> intel_drrs_flush and intel_drrs_invalidate will not be called
> for platforms that will not support frontbuffer rendering so DRRS
> needs another way to be notified about to page flips so it can change
> between high and low refresh rates as needed.
> 
> Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
> ---
>   drivers/gpu/drm/i915/display/intel_display.c | 2 ++
>   drivers/gpu/drm/i915/display/intel_drrs.c    | 9 +++++++++
>   drivers/gpu/drm/i915/display/intel_drrs.h    | 4 ++++
>   3 files changed, 15 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 794690c0dba56..808002aa439e2 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -52,6 +52,7 @@
>   #include "display/intel_dp_mst.h"
>   #include "display/intel_dpll.h"
>   #include "display/intel_dpll_mgr.h"
> +#include "display/intel_drrs.h"
>   #include "display/intel_dsi.h"
>   #include "display/intel_dvo.h"
>   #include "display/intel_fb.h"
> @@ -2436,6 +2437,7 @@ static void intel_post_plane_update(struct intel_atomic_state *state,
>   		hsw_enable_ips(new_crtc_state);
>   
>   	intel_fbc_post_update(state, crtc);
> +	intel_drrs_page_flip(state, crtc);
>   
>   	if (needs_nv12_wa(old_crtc_state) &&
>   	    !needs_nv12_wa(new_crtc_state))
> diff --git a/drivers/gpu/drm/i915/display/intel_drrs.c b/drivers/gpu/drm/i915/display/intel_drrs.c
> index 8583da4e82434..6ae778c306006 100644
> --- a/drivers/gpu/drm/i915/display/intel_drrs.c
> +++ b/drivers/gpu/drm/i915/display/intel_drrs.c
> @@ -391,6 +391,15 @@ void intel_drrs_flush(struct drm_i915_private *dev_priv,
>   	intel_drrs_frontbuffer_update(dev_priv, frontbuffer_bits, false);
>   }
>   
> +void intel_drrs_page_flip(struct intel_atomic_state *state,
> +			  struct intel_crtc *crtc)
> +{
> +	struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> +	unsigned int frontbuffer_bits = INTEL_FRONTBUFFER_ALL_MASK(crtc->pipe);
> +
> +	intel_drrs_frontbuffer_update(dev_priv, frontbuffer_bits, false);
> +}
> +
>   /**
>    * intel_drrs_init - Init basic DRRS work and mutex.
>    * @connector: eDP connector
> diff --git a/drivers/gpu/drm/i915/display/intel_drrs.h b/drivers/gpu/drm/i915/display/intel_drrs.h
> index 73be7e9a43691..9ec9c447211af 100644
> --- a/drivers/gpu/drm/i915/display/intel_drrs.h
> +++ b/drivers/gpu/drm/i915/display/intel_drrs.h
> @@ -9,6 +9,8 @@
>   #include <linux/types.h>
>   
>   struct drm_i915_private;
> +struct intel_atomic_state;
> +struct intel_crtc;
>   struct intel_crtc_state;
>   struct intel_connector;
>   struct intel_dp;
> @@ -23,6 +25,8 @@ void intel_drrs_invalidate(struct drm_i915_private *dev_priv,
>   			   unsigned int frontbuffer_bits);
>   void intel_drrs_flush(struct drm_i915_private *dev_priv,
>   		      unsigned int frontbuffer_bits);
> +void intel_drrs_page_flip(struct intel_atomic_state *state,
> +			  struct intel_crtc *crtc);
>   void intel_drrs_compute_config(struct intel_dp *intel_dp,
>   			       struct intel_crtc_state *pipe_config,
>   			       int output_bpp, bool constant_n);
> 


More information about the Intel-gfx mailing list