Initial DRI3000 protocol specs available

Mario Kleiner mario.kleiner.de at gmail.com
Wed Feb 20 14:50:37 PST 2013


On 02/20/2013 09:27 PM, Keith Packard wrote:
> Chris Wilson <chris at chris-wilson.co.uk> writes:
>
>> What I don't see here is how the client instructs the server to
>> handle a missed swap.
> Right, this first pass was just trying to replicate the DRI2 semantics;
> figuring out how to improve those seems like a good idea.
>
>  From what game developers have told us, a missed swap should just tear
> instead of dropping a frame. It might be nice to inform the client that
> they're not keeping up with the target frame rate and let them scale
> stuff back; I'd suggest the SwapComplete event could contain enough
> information to let them know what actually happened.

Please make this configurable. Tearing makes sense for a game, but for 
the kind of scientific apps i do, we don't want it to tear ever, or bad 
things would happen for us. We need it to just flip the frame delayed 
but vsync'ed and then the app can figure out via the INTEL_swap_events 
or glXWaitForSbcOML() that a deadline was missed and what to do to catch up.

There's 
http://www.opengl.org/registry/specs/EXT/glx_swap_control_tear.txt that 
allows apps to define if they want to tear or vsync on a missed swap 
deadline.

>> 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).
> I haven't heard anyone asking for us to skip a frame in this case to
> avoid tearing.

See above :-).

...

	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)).

>> t
>> 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)?
> Just like DRI2, it's the planned swap time. Don't be late!

SBC in DRI2 is the running count of completed swaps for a drawable, ie., 
current swap count + pending swap count, not the planned swap time. 
Essentially a reference to a just queued swap via sbc = 
glXSwapBuffersMscOML(...), so you can use sbc as a unique id for that 
swap in glXWaitForSBCOML() or to match it up with the sbc in a returned 
INTEL_swap_event. Very useful, so i guess this should stay 
backwards-compatible.

thanks,
-mario

>
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.x.org/archives/xorg-devel/attachments/20130220/6c413b6d/attachment-0001.html>


More information about the xorg-devel mailing list