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