On Wed, Feb 03, 2016 at 06:23:13PM +0100, Maarten Lankhorst wrote: > Op 03-02-16 om 17:07 schreef Ville Syrjälä: > > On Wed, Feb 03, 2016 at 04:53:24PM +0100, Maarten Lankhorst wrote: > >> This can be derived from the atomic state in pre_plane_update, > >> which makes it more clear when it's supposed to be called. > >> > >> Reviewed-by: Ander Conselvan de Oliveira <conselvan2@xxxxxxxxx> > >> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > >> --- > >> drivers/gpu/drm/i915/intel_display.c | 25 +++++++++++++++++++------ > >> drivers/gpu/drm/i915/intel_drv.h | 1 - > >> 2 files changed, 19 insertions(+), 7 deletions(-) > >> > >> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > >> index de94ef165fbe..c7f2a18ab34e 100644 > >> --- a/drivers/gpu/drm/i915/intel_display.c > >> +++ b/drivers/gpu/drm/i915/intel_display.c > >> @@ -4807,19 +4807,33 @@ static void intel_post_plane_update(struct intel_crtc *crtc) > >> memset(atomic, 0, sizeof(*atomic)); > >> } > >> > >> -static void intel_pre_plane_update(struct intel_crtc *crtc) > >> +static void intel_pre_plane_update(struct intel_crtc_state *old_crtc_state) > >> { > >> + struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->base.crtc); > >> struct drm_device *dev = crtc->base.dev; > >> struct drm_i915_private *dev_priv = dev->dev_private; > >> struct intel_crtc_atomic_commit *atomic = &crtc->atomic; > >> struct intel_crtc_state *pipe_config = > >> to_intel_crtc_state(crtc->base.state); > >> + struct drm_atomic_state *old_state = old_crtc_state->base.state; > >> + struct drm_plane *primary = crtc->base.primary; > >> + struct drm_plane_state *old_pri_state = > >> + drm_atomic_get_existing_plane_state(old_state, primary); > >> + bool modeset = needs_modeset(&pipe_config->base); > >> > >> if (atomic->update_fbc) > >> intel_fbc_pre_update(crtc); > >> > >> - if (atomic->pre_disable_primary) > >> - intel_pre_disable_primary(&crtc->base); > >> + if (old_pri_state) { > > When might we not have and old state for the primary plane? > > > When updating some state unrelated to the primary plane, for example changing cursor. Hmm. I thought we added all the planes to the state currently... I guess that only happens due to watermark calculation on specific platforms. > > modeset and update_pipe should always add all planes. > > ~Maarten -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx