[Xcb] [PATCH 0/3] Support lists of FDs

Daniel Stone daniels at collabora.com
Wed Apr 26 16:05:43 UTC 2017


Hi,
This patchset adds support for lists containing file descriptors, which
are otherwise only currently available as direct children of
requests/replies.

This creates new API from xcbgen, which the consumer (e.g. c_client) is
required to implement.

The immediaate usecase for this was extending DRI3 to support
multi-planar buffers (e.g. RGB with auxiliary compression buffers),
which would otherwise require creating multiple requests/replies for
each of the [1..4] buffer cases.

The following becomes possible:
  <request name="FDsInAList">
    <field type=CARD32" name="num_fds" />
    <list type="fd" name="fds">
      <fieldref>num_fds</fieldref>
    </list>
  </request>

The XCB client code correctly serialises this, taking a pointer to
an array of ints, placing num_fds from that array on the wire. Replies
do not require any special handling, as clients just get a pointer to
the full array containing all the FDs for that reply.

I'd welcome any feedback on these. I don't feel the way this is
implemented is particularly clean; given that 'fd' is currently not a
real type but a punch-through special case, I couldn't immediately see
how to do it differently.

Cheers,
Daniel



More information about the Xcb mailing list