On Mon, 1 Nov 2010 16:22:00 +0200 Pauli Nieminen <ext-pauli.niemi...@nokia.com> wrote:
> This allows ddx to set swap_limit if there is more than one back > buffer for drawable. Setting swap_limit has to also check if change > affects a client that is blocked. > > This can be used to implement N-buffering in driver with minimal > logic in allocation and selecting next back. > > Signed-off-by: Pauli Nieminen <ext-pauli.niemi...@nokia.com> > --- > hw/xfree86/dri2/dri2.c | 23 +++++++++++++++++++++++ > hw/xfree86/dri2/dri2.h | 1 + > 2 files changed, 24 insertions(+), 0 deletions(-) > > diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c > index ecb4a4e..255fed0 100644 > --- a/hw/xfree86/dri2/dri2.c > +++ b/hw/xfree86/dri2/dri2.c > @@ -191,6 +191,29 @@ DRI2AllocateDrawable(DrawablePtr pDraw) > return pPriv; > } > > +Bool > +DRI2SwapLimit(DrawablePtr pDraw, int swap_limit) > +{ > + DRI2DrawablePtr pPriv = DRI2GetDrawable(pDraw); > + if (!pPriv) > + return FALSE; > + > + pPriv->swap_limit = swap_limit; > + > + /* Check throttling */ > + if (pPriv->swapsPending >= pPriv->swap_limit) > + return TRUE; > + > + if (pPriv->target_sbc == -1 && !pPriv->blockedOnMsc) { > + if (pPriv->blockedClient) { > + AttendClient(pPriv->blockedClient); > + pPriv->blockedClient = NULL; > + } > + } > + > + return TRUE; > +} > + > typedef struct DRI2DrawableRefRec { > XID id; > XID dri2_id; > diff --git a/hw/xfree86/dri2/dri2.h b/hw/xfree86/dri2/dri2.h > index 531d801..3d01c55 100644 > --- a/hw/xfree86/dri2/dri2.h > +++ b/hw/xfree86/dri2/dri2.h > @@ -265,6 +265,7 @@ extern _X_EXPORT DRI2BufferPtr > *DRI2GetBuffersWithFormat(DrawablePtr pDraw, > int *out_count); > > extern _X_EXPORT void DRI2SwapInterval(DrawablePtr pDrawable, int interval); > +extern _X_EXPORT Bool DRI2SwapLimit(DrawablePtr pDraw, int swap_limit); > extern _X_EXPORT int DRI2SwapBuffers(ClientPtr client, DrawablePtr pDrawable, > CARD64 target_msc, CARD64 divisor, > CARD64 remainder, CARD64 *swap_target, Yeah, looks ok to me. Reviewed-by: Jesse Barnes <jbar...@virtuousgeek.org> -- Jesse Barnes, Intel Open Source Technology Center _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel