[Intel-gfx] [PATCH] drm/i915: Fix current fb blocking for page flip.

Jesse Barnes jbarnes at virtuousgeek.org
Thu Oct 21 19:52:24 CEST 2010


On Fri, 22 Oct 2010 01:49:17 +0800
Chia-I Wu <olvaffe at gmail.com> wrote:

> On Fri, Oct 22, 2010 at 12:18 AM, Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
> > On Thu, 21 Oct 2010 17:55:13 +0800
> > Chia-I Wu <olvaffe at gmail.com> wrote:
> >
> >> Hi list,
> >>
> >> According to the doc for page_flip, intel_crtc_page_flip should
> >>
> >>    ... block all rendering to the current fb until the flip has
> >>    completed.
> >>
> >> I am not entirely sure, but it seems that it is
> >> work->old_fb_obj->pending_flip that needs to be incremented instead of
> >> work->pending_flip_obj->pending_flip.  This patch does fix the
> >> rendering artifacts with my Android on i915 project.  Any thought?
> > In intel_crtc_page_flip()?  It *looks* like incrementing the flip count
> > for the fb passed into the routine is the right thing to do; we want to
> > make sure the fb passed in isn't used again until its flip is complete.
> If one flips a buffer and immediately renders to it, the caller should
> know that the buffer is the front buffer and there will be artifacts.
> Waiting for the flip here makes less sense.
> 
> A common use of page flip looks like
> 
>      [X being the front buffer]
>   1) render to Y
>   2) flip Y
>   3) render to X
>   4) flip X
>   5) render to Y
> 
> A caller expects 3) to be back buffer rendering.  It is reasonable to
> insert a wait between 2) and 3).  That is, have pending_flip of X,
> instead of Y, set at 2).

You're right, I had it backwards; I think your fix is correct.

-- 
Jesse Barnes, Intel Open Source Technology Center



More information about the Intel-gfx mailing list