Message ID | 1394209951-9963-10-git-send-email-ville.syrjala@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
2014-03-07 13:32 GMT-03:00 <ville.syrjala@linux.intel.com>: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > We may have use for vblank interrupts during plane enabling/disabling, so > don't call drm_vblank_off() until planes are off, and call > drm_vblank_on() just before we start to enable the planes. Just like the previous patch, this one also needs a more precise description of the reasons and consequences. If this is going to be needed in the future, it is probably a good idea to briefly describe why and the use case you are planning. Because if, in the future, we ever bisect a bug to this patch, and need to revert, we won't know if the revert breaks some other feature. > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/intel_display.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 4986887..c028b5c 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -3545,6 +3545,8 @@ static void ilk_crtc_enable_planes(struct drm_crtc *crtc) > int pipe = intel_crtc->pipe; > int plane = intel_crtc->plane; > > + drm_vblank_on(dev, pipe); > + > intel_enable_primary_plane(dev_priv, plane, pipe); > intel_enable_planes(crtc); > intel_crtc_update_cursor(crtc, true); > @@ -3555,8 +3557,6 @@ static void ilk_crtc_enable_planes(struct drm_crtc *crtc) > mutex_lock(&dev->struct_mutex); > intel_update_fbc(dev); > mutex_unlock(&dev->struct_mutex); > - > - drm_vblank_on(dev, pipe); > } > > static void ilk_crtc_disable_planes(struct drm_crtc *crtc) > @@ -3568,7 +3568,6 @@ static void ilk_crtc_disable_planes(struct drm_crtc *crtc) > int plane = intel_crtc->plane; > > intel_crtc_wait_for_pending_flips(crtc); > - drm_vblank_off(dev, pipe); > > if (dev_priv->fbc.plane == plane) > intel_disable_fbc(dev); > @@ -3579,6 +3578,8 @@ static void ilk_crtc_disable_planes(struct drm_crtc *crtc) > intel_disable_planes(crtc); > intel_disable_primary_plane(dev_priv, plane, pipe); > intel_wait_for_vblank(dev, pipe); > + > + drm_vblank_off(dev, pipe); > } > > static void ironlake_crtc_enable(struct drm_crtc *crtc) > -- > 1.8.3.2 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
On Mon, Apr 07, 2014 at 06:21:08PM -0300, Paulo Zanoni wrote: > 2014-03-07 13:32 GMT-03:00 <ville.syrjala@linux.intel.com>: > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > We may have use for vblank interrupts during plane enabling/disabling, so > > don't call drm_vblank_off() until planes are off, and call > > drm_vblank_on() just before we start to enable the planes. > > Just like the previous patch, this one also needs a more precise > description of the reasons and consequences. If this is going to be > needed in the future, it is probably a good idea to briefly describe > why and the use case you are planning. Because if, in the future, we > ever bisect a bug to this patch, and need to revert, we won't know if > the revert breaks some other feature. Yeah I guess I should s/may/will/ and say that it's required for watermark updates. > > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > --- > > drivers/gpu/drm/i915/intel_display.c | 7 ++++--- > > 1 file changed, 4 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > > index 4986887..c028b5c 100644 > > --- a/drivers/gpu/drm/i915/intel_display.c > > +++ b/drivers/gpu/drm/i915/intel_display.c > > @@ -3545,6 +3545,8 @@ static void ilk_crtc_enable_planes(struct drm_crtc *crtc) > > int pipe = intel_crtc->pipe; > > int plane = intel_crtc->plane; > > > > + drm_vblank_on(dev, pipe); > > + > > intel_enable_primary_plane(dev_priv, plane, pipe); > > intel_enable_planes(crtc); > > intel_crtc_update_cursor(crtc, true); > > @@ -3555,8 +3557,6 @@ static void ilk_crtc_enable_planes(struct drm_crtc *crtc) > > mutex_lock(&dev->struct_mutex); > > intel_update_fbc(dev); > > mutex_unlock(&dev->struct_mutex); > > - > > - drm_vblank_on(dev, pipe); > > } > > > > static void ilk_crtc_disable_planes(struct drm_crtc *crtc) > > @@ -3568,7 +3568,6 @@ static void ilk_crtc_disable_planes(struct drm_crtc *crtc) > > int plane = intel_crtc->plane; > > > > intel_crtc_wait_for_pending_flips(crtc); > > - drm_vblank_off(dev, pipe); > > > > if (dev_priv->fbc.plane == plane) > > intel_disable_fbc(dev); > > @@ -3579,6 +3578,8 @@ static void ilk_crtc_disable_planes(struct drm_crtc *crtc) > > intel_disable_planes(crtc); > > intel_disable_primary_plane(dev_priv, plane, pipe); > > intel_wait_for_vblank(dev, pipe); > > + > > + drm_vblank_off(dev, pipe); > > } > > > > static void ironlake_crtc_enable(struct drm_crtc *crtc) > > -- > > 1.8.3.2 > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/intel-gfx > > > > -- > Paulo Zanoni
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 4986887..c028b5c 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -3545,6 +3545,8 @@ static void ilk_crtc_enable_planes(struct drm_crtc *crtc) int pipe = intel_crtc->pipe; int plane = intel_crtc->plane; + drm_vblank_on(dev, pipe); + intel_enable_primary_plane(dev_priv, plane, pipe); intel_enable_planes(crtc); intel_crtc_update_cursor(crtc, true); @@ -3555,8 +3557,6 @@ static void ilk_crtc_enable_planes(struct drm_crtc *crtc) mutex_lock(&dev->struct_mutex); intel_update_fbc(dev); mutex_unlock(&dev->struct_mutex); - - drm_vblank_on(dev, pipe); } static void ilk_crtc_disable_planes(struct drm_crtc *crtc) @@ -3568,7 +3568,6 @@ static void ilk_crtc_disable_planes(struct drm_crtc *crtc) int plane = intel_crtc->plane; intel_crtc_wait_for_pending_flips(crtc); - drm_vblank_off(dev, pipe); if (dev_priv->fbc.plane == plane) intel_disable_fbc(dev); @@ -3579,6 +3578,8 @@ static void ilk_crtc_disable_planes(struct drm_crtc *crtc) intel_disable_planes(crtc); intel_disable_primary_plane(dev_priv, plane, pipe); intel_wait_for_vblank(dev, pipe); + + drm_vblank_off(dev, pipe); } static void ironlake_crtc_enable(struct drm_crtc *crtc)