> -----Original Message----- > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Sent: Thursday, September 12, 2024 5:40 AM > To: Manna, Animesh <animesh.manna@xxxxxxxxx> > Cc: intel-gfx@xxxxxxxxxxxxxxxxxxxxx; Nikula, Jani <jani.nikula@xxxxxxxxx>; > Hogander, Jouni <jouni.hogander@xxxxxxxxx>; Murthy, Arun R > <arun.r.murthy@xxxxxxxxx>; Nautiyal, Ankit K <ankit.k.nautiyal@xxxxxxxxx>; > Golani, Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@xxxxxxxxx> > 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@xxxxxxxxx> > > --- > > 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