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