[PATCH] Adds MIT-SHM AttachFd and CreateSegment requests

Adam Jackson ajax at nwnk.net
Thu Oct 31 22:47:36 CET 2013

On Thu, 2013-10-31 at 13:12 -0700, Keith Packard wrote:
> Passes shared memory segments by file descriptor, AttachFd passes from
> client to server, CreateSegment passes from server to client.

I was hoping for a patch to shmproto.txt, but there isn't one, le sigh.
We should really fix the MIT-SHM docs, Jon's reverse-engineered spec pdf
is full of enough handwave to be embarassing for us.

Failing that: I'm just a little cautious of calling this 1.2 without
some escape hatch for a 1.3.  ShmQueryVersion currently has a bool for
shm pixmaps precisely because they might not be supported.  Supposing
someone comes up with a comparable API for, say, win32, they'd be a bit
stuck, since the 1.3 idea of "pass a file descriptor" might not be a
thing the OS provides.  Even if we don't cotton to non-unix
environments, we might find that one or the other is just too wacky to
try to support in the future.

So maybe something like:

#define ShmCapCreatePixmaps (1<<0)
#define ShmCapAttachFd      (1<<1)
#define ShmCapCreateSegment (1<<2)

#define X_ShmQueryCapabilities 8

typedef struct _ShmQueryCapabilities {
    CARD8 reqType;
    CARD8 shmReqType;
    CARD16 length;
} xShmQueryCapabilitiesReq;
#define sz_xShmQueryCapabilitiesReq 4

typedef struct {
    CARD8 type;
    CARD8 pad0;
    CARD16 sequenceNumber;
    CARD32 length;
    CARD32 caps0;
    CARD32 caps1;
    CARD32 caps2;
    CARD32 caps3;
    CARD32 caps4;
    CARD32 caps5;
} xShmQueryCapabilitiesReply;
#define sz_xShmQueryCapabilitiesReply 32

Where the cap bits start filling in from caps0.

Other than that:

Reviewed-by: Adam Jackson <ajax at redhat.com>

- ajax

More information about the xorg-devel mailing list