On Tue, 11 Aug 2015, Maarten Lankhorst <[email protected]> 
wrote:
> This should be much cleaner, with the same effects.
>
> (cherry picked from commit fb9d6cf8c29bfcb0b3c602f7ded87f128d730382)
> Signed-off-by: Maarten Lankhorst <[email protected]>
> Reviewed-by: Matt Roper <[email protected]>
> Signed-off-by: Jani Nikula <[email protected]>
> Cc: [email protected] #v4.2

I don't understand. v4.2 has not been released, and we can still queue
fixes for the release.

BR,
Jani.

> References: https://bugs.freedesktop.org/show_bug.cgi?id=90398
> ---
>  drivers/gpu/drm/i915/intel_display.c | 46 
> ++++++------------------------------
>  1 file changed, 7 insertions(+), 39 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c 
> b/drivers/gpu/drm/i915/intel_display.c
> index 30e0f54ba19d..c2579ded0c36 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -12891,20 +12891,11 @@ intel_modeset_stage_output_state(struct drm_device 
> *dev,
>       return 0;
>  }
>  
> -static bool primary_plane_visible(struct drm_crtc *crtc)
> -{
> -     struct intel_plane_state *plane_state =
> -             to_intel_plane_state(crtc->primary->state);
> -
> -     return plane_state->visible;
> -}
> -
>  static int intel_crtc_set_config(struct drm_mode_set *set)
>  {
>       struct drm_device *dev;
>       struct drm_atomic_state *state = NULL;
>       struct intel_crtc_state *pipe_config;
> -     bool primary_plane_was_visible;
>       int ret;
>  
>       BUG_ON(!set);
> @@ -12943,38 +12934,8 @@ static int intel_crtc_set_config(struct drm_mode_set 
> *set)
>  
>       intel_update_pipe_size(to_intel_crtc(set->crtc));
>  
> -     primary_plane_was_visible = primary_plane_visible(set->crtc);
> -
>       ret = intel_set_mode_with_config(set->crtc, pipe_config, true);
>  
> -     if (ret == 0 &&
> -         pipe_config->base.enable &&
> -         pipe_config->base.planes_changed &&
> -         !needs_modeset(&pipe_config->base)) {
> -             struct intel_crtc *intel_crtc = to_intel_crtc(set->crtc);
> -
> -             /*
> -              * We need to make sure the primary plane is re-enabled if it
> -              * has previously been turned off.
> -              */
> -             if (ret == 0 && !primary_plane_was_visible &&
> -                 primary_plane_visible(set->crtc)) {
> -                     WARN_ON(!intel_crtc->active);
> -                     intel_post_enable_primary(set->crtc);
> -             }
> -
> -             /*
> -              * In the fastboot case this may be our only check of the
> -              * state after boot.  It would be better to only do it on
> -              * the first update, but we don't have a nice way of doing that
> -              * (and really, set_config isn't used much for high freq page
> -              * flipping, so increasing its cost here shouldn't be a big
> -              * deal).
> -              */
> -             if (i915.fastboot && ret == 0)
> -                     intel_modeset_check_state(set->crtc->dev);
> -     }
> -
>       if (ret) {
>               DRM_DEBUG_KMS("failed to set mode on [CRTC:%d], err = %d\n",
>                             set->crtc->base.id, ret);
> @@ -13305,6 +13266,9 @@ intel_check_primary_plane(struct drm_plane *plane,
>                        */
>                       if (IS_BROADWELL(dev))
>                               intel_crtc->atomic.wait_vblank = true;
> +
> +                     if (crtc_state && !needs_modeset(&crtc_state->base))
> +                             intel_crtc->atomic.post_enable_primary = true;
>               }
>  
>               /*
> @@ -13317,6 +13281,10 @@ intel_check_primary_plane(struct drm_plane *plane,
>               if (!state->visible || !fb)
>                       intel_crtc->atomic.disable_ips = true;
>  
> +             if (!state->visible && old_state->visible &&
> +                 crtc_state && !needs_modeset(&crtc_state->base))
> +                     intel_crtc->atomic.pre_disable_primary = true;
> +
>               intel_crtc->atomic.fb_bits |=
>                       INTEL_FRONTBUFFER_PRIMARY(intel_crtc->pipe);
>  
> -- 
> 2.1.0
>

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to