-----Original Message----- From: Intel-gfx <intel-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Mitul Golani Sent: Tuesday, October 1, 2024 6:47 AM To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx Cc: Nikula, Jani <jani.nikula@xxxxxxxxx>; Syrjala, Ville <ville.syrjala@xxxxxxxxx>; Nautiyal, Ankit K <ankit.k.nautiyal@xxxxxxxxx>; Shankar, Uma <uma.shankar@xxxxxxxxx> Subject: [PATCH v13 2/3] drm/i915/vrr: Split vrr-compute-config in two phases > > From: Animesh Manna <animesh.manna@xxxxxxxxx> > > 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] > v3: Add a function for late vrr related computation. [Ville] > v4: Use flipline instead of vrr.enable and some cosmetic changes. [Ville] > v5: Use intel_vrr_possible helper. > > Signed-off-by: Animesh Manna <animesh.manna@xxxxxxxxx> > Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_display.c | 2 ++ > drivers/gpu/drm/i915/display/intel_vrr.c | 13 +++++++++---- > drivers/gpu/drm/i915/display/intel_vrr.h | 1 + > 3 files changed, 12 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index f7667931f9d9..c59d7bffbf57 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -4836,6 +4836,8 @@ intel_modeset_pipe_config_late(struct intel_atomic_state *state, > struct drm_connector *connector; > int i; > > + intel_vrr_compute_config_late(crtc_state); > + > 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 79db30e31324..734db543b90c 100644 > --- a/drivers/gpu/drm/i915/display/intel_vrr.c > +++ b/drivers/gpu/drm/i915/display/intel_vrr.c > @@ -244,11 +244,16 @@ intel_vrr_compute_config(struct intel_crtc_state *crtc_state, > (crtc_state->hw.adjusted_mode.crtc_vtotal - > crtc_state->hw.adjusted_mode.vsync_end); > } > +} > + > +void intel_vrr_compute_config_late(struct intel_crtc_state *crtc_state) > +{ > + struct intel_display *display = to_intel_display(crtc_state); > + struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode; > + > + if (!intel_vrr_possible(crtc_state)) > + return; > > - /* > - * For XE_LPD+, we use guardband and pipeline override > - * is deprecated. > - */ Not sure why this comment is being deleted, but I won't block on it. Reviewed-by: Jonathan Cavitt <jonathan.cavitt@xxxxxxxxx> -Jonathan Cavitt > if (DISPLAY_VER(display) >= 13) { > crtc_state->vrr.guardband = > crtc_state->vrr.vmin + 1 - adjusted_mode->crtc_vblank_start; > diff --git a/drivers/gpu/drm/i915/display/intel_vrr.h b/drivers/gpu/drm/i915/display/intel_vrr.h > index af921dda4619..b3b45c675020 100644 > --- a/drivers/gpu/drm/i915/display/intel_vrr.h > +++ b/drivers/gpu/drm/i915/display/intel_vrr.h > @@ -19,6 +19,7 @@ bool intel_vrr_possible(const struct intel_crtc_state *crtc_state); > void intel_vrr_check_modeset(struct intel_atomic_state *state); > void intel_vrr_compute_config(struct intel_crtc_state *crtc_state, > struct drm_connector_state *conn_state); > +void intel_vrr_compute_config_late(struct intel_crtc_state *crtc_state); > void intel_vrr_set_transcoder_timings(const struct intel_crtc_state *crtc_state); > void intel_vrr_enable(const struct intel_crtc_state *crtc_state); > void intel_vrr_send_push(const struct intel_crtc_state *crtc_state); > -- > 2.46.0 > >