[RFC] swap event handling fixes
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