Message ID | 20240905051841.3012729-4-animesh.manna@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Vrr refactoring and panel replay workaround | expand |
On Thu, Sep 05, 2024 at 10:48:40AM +0530, Animesh Manna wrote: > As vrr guardband calculation is dependent on modified > vblank start so better to compute late after all > vblank adjustement. > > v1: Initial version. > v2: Split in a separate patch from panel-replay workaround. [Ankit] > > Signed-off-by: Animesh Manna <animesh.manna@intel.com> > --- > drivers/gpu/drm/i915/display/intel_display.c | 16 ++++++++++++++++ > drivers/gpu/drm/i915/display/intel_vrr.c | 13 ------------- > 2 files changed, 16 insertions(+), 13 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index b4ef4d59da1a..7fb3d35f7124 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -4794,10 +4794,26 @@ intel_modeset_pipe_config_late(struct intel_atomic_state *state, > { > struct intel_crtc_state *crtc_state = > intel_atomic_get_new_crtc_state(state, crtc); > + struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode; > struct drm_connector_state *conn_state; > struct drm_connector *connector; > int i; > > + if (crtc_state->vrr.enable) { > + /* > + * For XE_LPD+, we use guardband and pipeline override > + * is deprecated. > + */ > + if (DISPLAY_VER(to_i915(crtc->base.dev)) >= 13) { > + crtc_state->vrr.guardband = > + crtc_state->vrr.vmin + 1 - adjusted_mode->crtc_vblank_start; > + } else { > + crtc_state->vrr.pipeline_full = > + min(255, crtc_state->vrr.vmin - adjusted_mode->crtc_vblank_start - > + crtc_state->framestart_delay - 1); > + } > + } Pretty sure I asked that to be a proper function in some earlier reply. > + > for_each_new_connector_in_state(&state->base, connector, > conn_state, i) { > struct intel_encoder *encoder = > diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c > index 9a51f5bac307..de17a8ae831b 100644 > --- a/drivers/gpu/drm/i915/display/intel_vrr.c > +++ b/drivers/gpu/drm/i915/display/intel_vrr.c > @@ -239,19 +239,6 @@ intel_vrr_compute_config(struct intel_crtc_state *crtc_state, > (crtc_state->hw.adjusted_mode.crtc_vtotal - > crtc_state->hw.adjusted_mode.vsync_end); > } > - > - /* > - * For XE_LPD+, we use guardband and pipeline override > - * is deprecated. > - */ > - if (DISPLAY_VER(display) >= 13) { > - crtc_state->vrr.guardband = > - crtc_state->vrr.vmin + 1 - adjusted_mode->crtc_vblank_start; > - } else { > - crtc_state->vrr.pipeline_full = > - min(255, crtc_state->vrr.vmin - adjusted_mode->crtc_vblank_start - > - crtc_state->framestart_delay - 1); > - } > } > > static u32 trans_vrr_ctl(const struct intel_crtc_state *crtc_state) > -- > 2.29.0
> -----Original Message----- > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > Sent: Thursday, September 12, 2024 5:40 AM > To: Manna, Animesh <animesh.manna@intel.com> > Cc: intel-gfx@lists.freedesktop.org; Nikula, Jani <jani.nikula@intel.com>; > Hogander, Jouni <jouni.hogander@intel.com>; Murthy, Arun R > <arun.r.murthy@intel.com>; Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>; > Golani, Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@intel.com> > Subject: Re: [PATCH v10 3/4] drm/i915/vrr: Split vrr-compute-config in two > phases > > On Thu, Sep 05, 2024 at 10:48:40AM +0530, Animesh Manna wrote: > > As vrr guardband calculation is dependent on modified vblank start so > > better to compute late after all vblank adjustement. > > > > v1: Initial version. > > v2: Split in a separate patch from panel-replay workaround. [Ankit] > > > > Signed-off-by: Animesh Manna <animesh.manna@intel.com> > > --- > > drivers/gpu/drm/i915/display/intel_display.c | 16 ++++++++++++++++ > > drivers/gpu/drm/i915/display/intel_vrr.c | 13 ------------- > > 2 files changed, 16 insertions(+), 13 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c > > b/drivers/gpu/drm/i915/display/intel_display.c > > index b4ef4d59da1a..7fb3d35f7124 100644 > > --- a/drivers/gpu/drm/i915/display/intel_display.c > > +++ b/drivers/gpu/drm/i915/display/intel_display.c > > @@ -4794,10 +4794,26 @@ intel_modeset_pipe_config_late(struct > > intel_atomic_state *state, { > > struct intel_crtc_state *crtc_state = > > intel_atomic_get_new_crtc_state(state, crtc); > > + struct drm_display_mode *adjusted_mode = > > +&crtc_state->hw.adjusted_mode; > > struct drm_connector_state *conn_state; > > struct drm_connector *connector; > > int i; > > > > + if (crtc_state->vrr.enable) { > > + /* > > + * For XE_LPD+, we use guardband and pipeline override > > + * is deprecated. > > + */ > > + if (DISPLAY_VER(to_i915(crtc->base.dev)) >= 13) { > > + crtc_state->vrr.guardband = > > + crtc_state->vrr.vmin + 1 - adjusted_mode- > >crtc_vblank_start; > > + } else { > > + crtc_state->vrr.pipeline_full = > > + min(255, crtc_state->vrr.vmin - > adjusted_mode->crtc_vblank_start - > > + crtc_state->framestart_delay - 1); > > + } > > + } > > Pretty sure I asked that to be a proper function in some earlier reply. Sure, will add a function _vrr_compute_config_late(). Regards, Animesh > > > + > > for_each_new_connector_in_state(&state->base, connector, > > conn_state, i) { > > struct intel_encoder *encoder = > > diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c > > b/drivers/gpu/drm/i915/display/intel_vrr.c > > index 9a51f5bac307..de17a8ae831b 100644 > > --- a/drivers/gpu/drm/i915/display/intel_vrr.c > > +++ b/drivers/gpu/drm/i915/display/intel_vrr.c > > @@ -239,19 +239,6 @@ intel_vrr_compute_config(struct intel_crtc_state > *crtc_state, > > (crtc_state->hw.adjusted_mode.crtc_vtotal - > > crtc_state->hw.adjusted_mode.vsync_end); > > } > > - > > - /* > > - * For XE_LPD+, we use guardband and pipeline override > > - * is deprecated. > > - */ > > - if (DISPLAY_VER(display) >= 13) { > > - crtc_state->vrr.guardband = > > - crtc_state->vrr.vmin + 1 - adjusted_mode- > >crtc_vblank_start; > > - } else { > > - crtc_state->vrr.pipeline_full = > > - min(255, crtc_state->vrr.vmin - adjusted_mode- > >crtc_vblank_start - > > - crtc_state->framestart_delay - 1); > > - } > > } > > > > static u32 trans_vrr_ctl(const struct intel_crtc_state *crtc_state) > > -- > > 2.29.0 > > -- > Ville Syrjälä > Intel
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index b4ef4d59da1a..7fb3d35f7124 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -4794,10 +4794,26 @@ intel_modeset_pipe_config_late(struct intel_atomic_state *state, { struct intel_crtc_state *crtc_state = intel_atomic_get_new_crtc_state(state, crtc); + struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode; struct drm_connector_state *conn_state; struct drm_connector *connector; int i; + if (crtc_state->vrr.enable) { + /* + * For XE_LPD+, we use guardband and pipeline override + * is deprecated. + */ + if (DISPLAY_VER(to_i915(crtc->base.dev)) >= 13) { + crtc_state->vrr.guardband = + crtc_state->vrr.vmin + 1 - adjusted_mode->crtc_vblank_start; + } else { + crtc_state->vrr.pipeline_full = + min(255, crtc_state->vrr.vmin - adjusted_mode->crtc_vblank_start - + crtc_state->framestart_delay - 1); + } + } + for_each_new_connector_in_state(&state->base, connector, conn_state, i) { struct intel_encoder *encoder = diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c index 9a51f5bac307..de17a8ae831b 100644 --- a/drivers/gpu/drm/i915/display/intel_vrr.c +++ b/drivers/gpu/drm/i915/display/intel_vrr.c @@ -239,19 +239,6 @@ intel_vrr_compute_config(struct intel_crtc_state *crtc_state, (crtc_state->hw.adjusted_mode.crtc_vtotal - crtc_state->hw.adjusted_mode.vsync_end); } - - /* - * For XE_LPD+, we use guardband and pipeline override - * is deprecated. - */ - if (DISPLAY_VER(display) >= 13) { - crtc_state->vrr.guardband = - crtc_state->vrr.vmin + 1 - adjusted_mode->crtc_vblank_start; - } else { - crtc_state->vrr.pipeline_full = - min(255, crtc_state->vrr.vmin - adjusted_mode->crtc_vblank_start - - crtc_state->framestart_delay - 1); - } } static u32 trans_vrr_ctl(const struct intel_crtc_state *crtc_state)
As vrr guardband calculation is dependent on modified vblank start so better to compute late after all vblank adjustement. v1: Initial version. v2: Split in a separate patch from panel-replay workaround. [Ankit] Signed-off-by: Animesh Manna <animesh.manna@intel.com> --- drivers/gpu/drm/i915/display/intel_display.c | 16 ++++++++++++++++ drivers/gpu/drm/i915/display/intel_vrr.c | 13 ------------- 2 files changed, 16 insertions(+), 13 deletions(-)