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> --- 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