On Tue, Jan 29, 2019 at 04:19:13PM +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Let's switch the pipe into interlaced mode and switch off > the TV encoder vertical filter if the pipe vdisplay > matches the TV YSIZE exactly. > > While I didn't measure it I presume this might reduce > the power consumption a little bit, and the pixel rate > is halved as the pipe will now fetching in interlaced > mode rather than in progressive mode (effectively the > same difference as between IF-ID vs. PF-ID pfit modes > on more modern hardware) so a bit easier on the memory > bandwidth. > > Cc: Imre Deak <imre.deak@xxxxxxxxx> > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Didn't bother checking docs, but both patches look reasonable and I don't think are going to make anything worse really. Acked-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/gpu/drm/i915/intel_tv.c | 19 ++++++++++++++++++- > 1 file changed, 18 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c > index 3a5682f44e55..3924c4944e1f 100644 > --- a/drivers/gpu/drm/i915/intel_tv.c > +++ b/drivers/gpu/drm/i915/intel_tv.c > @@ -1159,6 +1159,22 @@ intel_tv_get_config(struct intel_encoder *encoder, > I915_MODE_FLAG_USE_SCANLINE_COUNTER; > } > > +static bool intel_tv_source_too_wide(struct drm_i915_private *dev_priv, > + int hdisplay) > +{ > + return IS_GEN(dev_priv, 3) && hdisplay > 1024; > +} > + > +static bool intel_tv_vert_scaling(const struct drm_display_mode *tv_mode, > + const struct drm_connector_state *conn_state, > + int vdisplay) > +{ > + return tv_mode->crtc_vdisplay - > + conn_state->tv.margins.top - > + conn_state->tv.margins.bottom != > + vdisplay; > +} > + > static int > intel_tv_compute_config(struct intel_encoder *encoder, > struct intel_crtc_state *pipe_config, > @@ -1189,7 +1205,8 @@ intel_tv_compute_config(struct intel_encoder *encoder, > intel_tv_mode_to_mode(adjusted_mode, tv_mode); > drm_mode_set_crtcinfo(adjusted_mode, 0); > > - if (IS_GEN(dev_priv, 3) && hdisplay > 1024) { > + if (intel_tv_source_too_wide(dev_priv, hdisplay) || > + !intel_tv_vert_scaling(adjusted_mode, conn_state, vdisplay)) { > int extra, top, bottom; > > extra = adjusted_mode->crtc_vdisplay - vdisplay; > -- > 2.19.2 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx