diff mbox

drm/i915: optimize vblank waits in set_base_atomic

Message ID 1370186581-1177-1-git-send-email-daniel.vetter@ffwll.ch (mailing list archive)
State New, archived
Headers show

Commit Message

Daniel Vetter June 2, 2013, 3:23 p.m. UTC
We only need to do them if the pipe is actually running and if the
framebuffers have changed. Removes two "wait for vblank timed out"
messages when doing a suspend/resume cycle on my i855gm.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/i915/intel_display.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Chris Wilson June 3, 2013, 7:49 a.m. UTC | #1
On Sun, Jun 02, 2013 at 05:23:01PM +0200, Daniel Vetter wrote:
> We only need to do them if the pipe is actually running and if the
> framebuffers have changed. Removes two "wait for vblank timed out"
> messages when doing a suspend/resume cycle on my i855gm.
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>

Comments inline.
> ---
>  drivers/gpu/drm/i915/intel_display.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 0b27c57..0669729 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -2203,7 +2203,8 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
>  	crtc->y = y;
>  
>  	if (old_fb) {
> -		intel_wait_for_vblank(dev, intel_crtc->pipe);
> +		if (to_intel_crtc(crtc)->active && old_fb != fb)
                if (intel_crtc->active && old_fb != fb)

> +			intel_wait_for_vblank(dev, intel_crtc->pipe);
>  		intel_unpin_fb_obj(to_intel_framebuffer(old_fb)->obj);
-Chris
Daniel Vetter June 3, 2013, 12:17 p.m. UTC | #2
On Mon, Jun 03, 2013 at 08:49:13AM +0100, Chris Wilson wrote:
> On Sun, Jun 02, 2013 at 05:23:01PM +0200, Daniel Vetter wrote:
> > We only need to do them if the pipe is actually running and if the
> > framebuffers have changed. Removes two "wait for vblank timed out"
> > messages when doing a suspend/resume cycle on my i855gm.
> > 
> > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> 
> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
> 
> Comments inline.
> > ---
> >  drivers/gpu/drm/i915/intel_display.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> > index 0b27c57..0669729 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -2203,7 +2203,8 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
> >  	crtc->y = y;
> >  
> >  	if (old_fb) {
> > -		intel_wait_for_vblank(dev, intel_crtc->pipe);
> > +		if (to_intel_crtc(crtc)->active && old_fb != fb)
>                 if (intel_crtc->active && old_fb != fb)

Oops, missed that one. Queued for -next, thanks for the review.
-Daniel
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 0b27c57..0669729 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2203,7 +2203,8 @@  intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
 	crtc->y = y;
 
 	if (old_fb) {
-		intel_wait_for_vblank(dev, intel_crtc->pipe);
+		if (to_intel_crtc(crtc)->active && old_fb != fb)
+			intel_wait_for_vblank(dev, intel_crtc->pipe);
 		intel_unpin_fb_obj(to_intel_framebuffer(old_fb)->obj);
 	}