On Mon, Sep 14, 2015 at 11:30:11AM +0200, Maarten Lankhorst wrote: > A fast modeset can only be performed when connectors and active are > not changed. This prevents a lot of KMS spam when going from a NULL > mode with 0 connectors to an actual mode. > > When a crtc is inactive there's no need to evade either, the changes > can be applied when the crtc turns on again. > > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> Needs an igt imo. -Daniel > --- > drivers/gpu/drm/i915/intel_display.c | 21 +++++++++++---------- > 1 file changed, 11 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index deb76c84a307..eddc81c2d459 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -12281,7 +12281,7 @@ intel_compare_link_m_n(const struct intel_link_m_n *m_n, > > static bool > intel_pipe_config_compare(struct drm_device *dev, > - struct intel_crtc_state *current_config, > + const struct intel_crtc_state *current_config, > struct intel_crtc_state *pipe_config, > bool adjust) > { > @@ -13013,14 +13013,15 @@ static int intel_atomic_check(struct drm_device *dev, > if (ret) > return ret; > > - if (intel_pipe_config_compare(state->dev, > - to_intel_crtc_state(crtc->state), > - pipe_config, true)) { > + if (!crtc_state->connectors_changed && > + !crtc_state->active_changed && > + crtc_state->active && > + intel_pipe_config_compare(state->dev, > + to_intel_crtc_state(crtc->state), > + pipe_config, true)) { > crtc_state->mode_changed = false; > - to_intel_crtc_state(crtc_state)->update_pipe = true; > - } > - > - if (needs_modeset(crtc_state)) { > + pipe_config->update_pipe = true; > + } else { > any_ms = true; > > ret = drm_atomic_add_affected_planes(state, crtc); > @@ -13029,8 +13030,8 @@ static int intel_atomic_check(struct drm_device *dev, > } > > intel_dump_pipe_config(to_intel_crtc(crtc), pipe_config, > - needs_modeset(crtc_state) ? > - "[modeset]" : "[fastset]"); > + pipe_config->update_pipe ? > + "[fastset]" : "[modeset]"); > } > > if (any_ms) { > -- > 2.1.0 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx