On Wed, Aug 21, 2019 at 03:32:19PM +0200, Maarten Lankhorst wrote: > We cannot switch between HQ and normal mode on GLK+, so only > add planes on platforms where it makes sense. > > We could probably restrict it even more to only add when scaler > users toggles between 1 and 2, but lets just leave it for now. > > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_atomic.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_atomic.c b/drivers/gpu/drm/i915/display/intel_atomic.c > index d267dd39475d..c442e9762ce7 100644 > --- a/drivers/gpu/drm/i915/display/intel_atomic.c > +++ b/drivers/gpu/drm/i915/display/intel_atomic.c > @@ -418,6 +418,11 @@ int intel_atomic_setup_scalers(struct drm_i915_private *dev_priv, > */ > if (!plane) { > struct drm_plane_state *state; > + > + /* No need to reprogram, we're not changing scaling mode */ > + if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)) > + continue; > + This whole function is kinda nasty. Should probably rewrite the whole thing... add_active_planes() { for_each_plane_on_crtc() { if (!active) continue; get_plane_state(); update_planes |= plane; } } update_scalers() { if (can_use_hq(old) != can_use_hq(new)) add_active_planes(); setup_scaler(crtc); for_each_plane_in_state() setup_scaler(plane); } or something like that? Still doing the setup_scaler() perhaps a bit needlessly sometimes but maybe it'd be good enough. Also looks like the current code is missing the update_planes bitmask update? > plane = drm_plane_from_index(&dev_priv->drm, i); > state = drm_atomic_get_plane_state(drm_state, plane); > if (IS_ERR(state)) { > -- > 2.20.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ville Syrjälä Intel _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx