Initial DRI3000 protocol specs available
Chris Wilson
chris at chris-wilson.co.uk
Wed Feb 20 02:46:37 PST 2013
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
More information about the xorg-devel
mailing list