On Mon, May 11, 2015 at 04:25:13PM +0200, Maarten Lankhorst wrote: > crtc->config is gone, swap swap swap. :D > > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_atomic.c | 36 ++---------------------------------- > drivers/gpu/drm/i915/intel_display.c | 7 +++++-- > 2 files changed, 7 insertions(+), 36 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_atomic.c b/drivers/gpu/drm/i915/intel_atomic.c > index ace6aeeb1359..0315dc44b17a 100644 > --- a/drivers/gpu/drm/i915/intel_atomic.c > +++ b/drivers/gpu/drm/i915/intel_atomic.c > @@ -130,7 +130,6 @@ int intel_atomic_commit(struct drm_device *dev, > bool async) > { > int ret; > - int i; > > if (async) { > DRM_DEBUG_KMS("i915 does not yet support async commit\n"); > @@ -142,48 +141,17 @@ int intel_atomic_commit(struct drm_device *dev, > return ret; > > /* Point of no return */ > + drm_atomic_helper_swap_state(dev, state); > > /* > * FIXME: The proper sequence here will eventually be: > * > - * drm_atomic_helper_swap_state(dev, state) > * drm_atomic_helper_commit_modeset_disables(dev, state); > * drm_atomic_helper_commit_planes(dev, state); > * drm_atomic_helper_commit_modeset_enables(dev, state); > - * drm_atomic_helper_wait_for_vblanks(dev, state); > - * drm_atomic_helper_cleanup_planes(dev, state); > - * drm_atomic_state_free(state); > - * > - * once we have full atomic modeset. For now, just manually update > - * plane states to avoid clobbering good states with dummy states > - * while nuclear pageflipping. > */ > - for (i = 0; i < dev->mode_config.num_total_plane; i++) { > - struct drm_plane *plane = state->planes[i]; > - > - if (!plane) > - continue; > - > - plane->state->state = state; > - swap(state->plane_states[i], plane->state); > - plane->state->state = NULL; > - } > - > - /* swap crtc_scaler_state */ > - for (i = 0; i < dev->mode_config.num_crtc; i++) { > - struct drm_crtc *crtc = state->crtcs[i]; > - if (!crtc) { > - continue; > - } > - > - to_intel_crtc_state(crtc->state)->scaler_state = > - to_intel_crtc_state(state->crtc_states[i])->scaler_state; > - > - if (INTEL_INFO(dev)->gen >= 9) > - skl_detach_scalers(to_intel_crtc(crtc)); > - } > - > drm_atomic_helper_commit_planes(dev, state); > + > drm_atomic_helper_wait_for_vblanks(dev, state); > drm_atomic_helper_cleanup_planes(dev, state); > drm_atomic_state_free(state); > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 65ee2cd0437c..105bdf84e46a 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -13202,11 +13202,14 @@ static void intel_begin_crtc_commit(struct drm_crtc *crtc) > > /* Perform vblank evasion around commit operation */ > if (intel_crtc->atomic.evade && > - !dev_priv->power_domains.init_power_on) > + !dev_priv->power_domains.init_power_on) { > + if (dev_priv->info.gen >= 9) > + skl_detach_scalers(to_intel_crtc(crtc)); Don't we need to update skl_detach_scalers to look at the other config now? Or is this an issue with the patch splitting? Also why is this protected by atomic.evade? -Daniel > + > intel_crtc->atomic.evade = > intel_pipe_update_start(intel_crtc, > &intel_crtc->atomic.start_vbl_count); > - else > + } else > intel_crtc->atomic.evade = false; > } > > -- > 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