[Intel-gfx] [PATCH 05/11] drm/i915: change dev_priv->fbc.plane to dev_priv->fbc.crtc

Rodrigo Vivi rodrigo.vivi at gmail.com
Fri Dec 12 16:58:34 PST 2014


Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>

On Mon, Dec 8, 2014 at 8:09 AM, Paulo Zanoni <przanoni at gmail.com> wrote:
> From: Paulo Zanoni <paulo.r.zanoni at intel.com>
>
> Since the mapping from CRTCs to planes is fixed, looking at the CRTC
> is essentially the same as looking at the plane. Also, the next
> patches wil start using the frontbuffer_bits macros, and they take the
> pipe as the parameter instead of the plane, and this could differ on
> gens 2 and 3.
>
> Another nice thing is that we don't risk accidentally initializing
> things to PLANE_A if we don't set the value before it is used for the
> first time. But this shouldn't be a problem with the current code.
>
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni at intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.h      | 2 +-
>  drivers/gpu/drm/i915/intel_display.c | 5 ++---
>  drivers/gpu/drm/i915/intel_fbc.c     | 6 +++---
>  drivers/gpu/drm/i915/intel_sprite.c  | 2 +-
>  4 files changed, 7 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index b5260bf..9d694f1 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -689,7 +689,7 @@ struct i915_fbc {
>         unsigned long size;
>         unsigned threshold;
>         unsigned int fb_id;
> -       enum plane plane;
> +       struct intel_crtc *crtc;
>         int y;
>
>         struct drm_mm_node compressed_fb;
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index e4789f4..88f3652 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -4218,11 +4218,10 @@ static void intel_crtc_disable_planes(struct drm_crtc *crtc)
>         struct drm_i915_private *dev_priv = dev->dev_private;
>         struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
>         int pipe = intel_crtc->pipe;
> -       int plane = intel_crtc->plane;
>
>         intel_crtc_wait_for_pending_flips(crtc);
>
> -       if (dev_priv->fbc.plane == plane)
> +       if (dev_priv->fbc.crtc == intel_crtc)
>                 intel_fbc_disable(dev);
>
>         hsw_disable_ips(intel_crtc);
> @@ -11813,7 +11812,7 @@ intel_commit_primary_plane(struct drm_plane *plane,
>                  */
>                 if (intel_crtc->primary_enabled &&
>                     INTEL_INFO(dev)->gen <= 4 && !IS_G4X(dev) &&
> -                   dev_priv->fbc.plane == intel_crtc->plane &&
> +                   dev_priv->fbc.crtc == intel_crtc &&
>                     intel_plane->rotation != BIT(DRM_ROTATE_0)) {
>                         intel_fbc_disable(dev);
>                 }
> diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c
> index f3d5764..88d00d3 100644
> --- a/drivers/gpu/drm/i915/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/intel_fbc.c
> @@ -383,7 +383,7 @@ static void intel_fbc_work_fn(struct work_struct *__work)
>                 if (work->crtc->primary->fb == work->fb) {
>                         dev_priv->display.enable_fbc(work->crtc);
>
> -                       dev_priv->fbc.plane = to_intel_crtc(work->crtc)->plane;
> +                       dev_priv->fbc.crtc = to_intel_crtc(work->crtc);
>                         dev_priv->fbc.fb_id = work->crtc->primary->fb->base.id;
>                         dev_priv->fbc.y = work->crtc->y;
>                 }
> @@ -474,7 +474,7 @@ void intel_fbc_disable(struct drm_device *dev)
>                 return;
>
>         dev_priv->display.disable_fbc(dev);
> -       dev_priv->fbc.plane = -1;
> +       dev_priv->fbc.crtc = NULL;
>  }
>
>  static bool set_no_fbc_reason(struct drm_i915_private *dev_priv,
> @@ -626,7 +626,7 @@ void intel_fbc_update(struct drm_device *dev)
>          * cannot be unpinned (and have its GTT offset and fence revoked)
>          * without first being decoupled from the scanout and FBC disabled.
>          */
> -       if (dev_priv->fbc.plane == intel_crtc->plane &&
> +       if (dev_priv->fbc.crtc == intel_crtc &&
>             dev_priv->fbc.fb_id == fb->base.id &&
>             dev_priv->fbc.y == crtc->y)
>                 return;
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index c18e57d..942daca 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -1016,7 +1016,7 @@ intel_pre_disable_primary(struct drm_crtc *crtc)
>         struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
>
>         mutex_lock(&dev->struct_mutex);
> -       if (dev_priv->fbc.plane == intel_crtc->plane)
> +       if (dev_priv->fbc.crtc == intel_crtc)
>                 intel_fbc_disable(dev);
>         mutex_unlock(&dev->struct_mutex);
>
> --
> 2.1.3
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx



-- 
Rodrigo Vivi
Blog: http://blog.vivi.eng.br


More information about the Intel-gfx mailing list