[RFC] swap event handling fixes

Jesse Barnes jbarnes at virtuousgeek.org
Mon May 2 13:09:03 PDT 2011

On Sat, 30 Apr 2011 01:10:27 +0200
Mario Kleiner <mario.kleiner at tuebingen.mpg.de> wrote:

> On Apr 29, 2011, at 11:37 PM, Jesse Barnes wrote:
> > On Thu, 28 Apr 2011 13:27:18 -0700
> > Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
> >
> >> I obviously failed to count the swap event structure size after  
> >> adding
> >> and removing fields a few times, and didn't even account for  
> >> padding.  The
> >> end result is that clients today won't receive the sbc_lo field at  
> >> all,
> >> and so will likely stuff junk into that field on the client side (or
> >> zero at best).
> >>
> >> This patchset fixes up the structure definitions, bumps the proto
> >> levels, and adds server and client handling code for it all.  It  
> >> should
> >> be forward and backward compatible, but as always review and testing
> >> appreciated.
> >>
> >> I think the event_type checking on the client side still needs work;
> >> the field is split now so I need to check the right one on old  
> >> servers.
> >> I'll also add swap support for the new requests in case people  
> >> ever want
> >> to run this stuff between big and little endian machines.
> >
> > Btw, I've been trying to test these fixes but I can't make the  
> > existing
> > code break; I'm getting a nicely incrementing sbc count using the
> > piglit event test (after adding some code to dump the swap event
> > fields), so somehow the bits are getting through.  I just don't know
> > how yet...
> >
> One thing you could try as another quick test is to use xtrace on a  
> opengl app. I remember seeing weird results for the msc or ust fields  
> (i believe) of decoded and printed DRI2SwapComplete events. I always  
> thought part of my toolchain was just out of sync, but maybe it was  
> just the result of the wrong size/padding.

What I'm seeing is a result of whatever xlib sticks in that space I
think.  Now I'm seeing bogus values and am testing the fix.

However, for the GLX event, I will have to use a new generic event,
since the GLX event types are larger than 8 bits due to the way GLX
enumerates things.  For DRI2 I can re-pack the existing structure.
Will post updated patches soon.

Jesse Barnes, Intel Open Source Technology Center

More information about the xorg-devel mailing list