Initial DRI3000 protocol specs available
Ian Romanick
idr at freedesktop.org
Mon Mar 11 14:33:36 PDT 2013
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
More information about the xorg-devel
mailing list