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
