On Tue, Feb 19, 2013 at 07:46:22PM -0800, Keith Packard wrote:
> ┌───
>     SwapRegion
>       destination: DRAWABLE
>       region: REGION
>       src-off-x,src-off-y: INT16
>       source: PIXMAP
>       swap-interval: CARD32
>       target_msc_hi: CARD32
>       target_msc_lo: CARD32
>       divisor_hi: CARD32
>       divisor_lo: CARD32
>       remainder_hi: CARD32
>       remainder_lo: CARD32
>       ▶       
>       swap_hi: CARD32
>       swap_lo: CARD32
>       suggested-x-off,suggested-y-off: INT16
>       suggested-width,suggested-height: CARD16
>       idle: LISTofSWAPIDLE
> └───

What I don't see here is how the client instructs the server to
handle a missed swap. For example, with the typical use of
  swap-interval > 0, divisor = 0, target <= current
we can choose to either emit this SwapRegion synchronously, or
asynchronously (to risk tearing but allow the client catch up to its
target framerate). Actually, there isn't a mention of whether this
should be synchronized to the display at all (and how to handle
synchronisation across multiple scanouts).

What happens for a delayed error?

>       In the reply, swap_hi/swap_lo form a 64-bit swap count value
>       when the swap will actually occur (e.g.  the last queued swap
>       count + (pending swap count * swap interval)).

I'm not sure exactly what SBC is meant to be. Is it a simple seqno of
the SwapRegion in this Drawable's swap queue (why then does
swap_interval matter), or is it meant to correlate with the vblank
counter (in which case it is merely a predicted value)?
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
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

Reply via email to