Message ID | 1418054960-1403-6-git-send-email-przanoni@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> On Mon, Dec 8, 2014 at 8:09 AM, Paulo Zanoni <przanoni@gmail.com> wrote: > From: Paulo Zanoni <paulo.r.zanoni@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@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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
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);