On 02/20/2013 02:46 AM, Chris Wilson wrote:
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).

Applications really want this. We've had several major ISVs chastise us for not supporting GLX_EXT_swap_control_tear.

http://www.opengl.org/registry/specs/EXT/glx_swap_control_tear.txt

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

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to