[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