[PATCH xextproto 0/4] XSync Fence Objects

James Jones jajones at nvidia.com
Mon Aug 9 14:19:58 PDT 2010


On Monday 09 August 2010 1:56:34 pm Keith Packard wrote:
> * PGP Signed by an unknown key
> 
> On Mon, 9 Aug 2010 13:41:54 -0700, James Jones <jajones at nvidia.com> wrote:
> > If anyone thinks docs would make reviewing the code changes easier, I can
> > write them up now rather than waiting for more feedback before moving
> > forward.
> 
> Protocol docs that declare the intended semantics and (even better) some
> kind of justification seem like reasonable first steps to me.

OK.  I will work on capturing that in protocol docs.  In the meantime, here's 
a summary:

When I requested review before, Aaron Plattner sent out this link to the 
slides he presented at last year's XDC.  They give a good overview of the 
motivation behind fence sync objects, and some psuedo-code examples of how 
they would be used:

http://people.freedesktop.org/~aplattner/x-presentation-and-synchronization

Feedback from that presentation led me to consider extending the existing 
XSync extension.  The motivation for creating binary fence sync objects (as 
opposed to using the original counter objects) was also discussed in my prior 
emails:

* Operations that modify the state of fence sync objects are performed 
relative to the previous rendering operations on a specified X screen.  Sync 
counter operations are performed out-of-band with respect to X rendering, 
making them unsuitable for use as synchronization primitives when coordinating 
X rendering with other operations.

* Fence sync objects have binary state.  They are either "triggered" or "not 
triggered."  Only the triggered state may be waited for asynchronously.  This 
greatly simplifies implementing the state transitions and waits on the GPU.  
Perhaps more importantly, it also makes it trivial to tie a fence sync 
object's state to an OpenGL sync object's state and use them to coordinate 
OpenGL and X rendering operations without stalling both rendering streams on 
the CPU.

Thanks,
-James


More information about the xorg-devel mailing list