MIT-SHM

The MIT Shared Memory Extension or MIT-SHM or XShm is an X Window System extension for exchange of image data between client and server using shared memory (usually ). The mechanism only works when both pieces are on the same computer.

The basic capability provided is that of shared memory XImages. This is essentially a version of the ximage interface where the actual image data is stored in a SysV shared memory segment, and thus need not be transferred across the socket to the X server. For large images, use of this facility can result in some real performance increases.

Additionally, some implementations provide shared memory pixmaps. These are two-dimensional arrays of pixels in a format specified by the X server, where the image data is stored in the shared memory segment. Through use of shared memory pixmaps, it is possible to change the contents of these pixmaps without using any Xlib routines at all. Shared memory pixmaps can only be supported when the X server can use regular virtual memory for pixmap data; if the pixmaps are stored in the on-board memory of graphics hardware, an application will not be able to share them with the server.

In the 1.15 release of the X.org server the MIT-SHM extension gains two additional requests: 'X_ShmAttachFd' and 'X_ShmCreateSegment', to be able to pass shared memory through file descriptors from client to server and from server to client, reducing the number of copy operations further.