Original author(s) | X.Org Foundation |
---|---|
Stable release | 1.0
/ 1991 |
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 /dev/shm). 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. [1]
In the 1.15 release of the X.org server[2] 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.[3]
References
- ↑ "LCA2013: The real story behind Wayland and X by Daniel Stone". Archived from the original on 2021-12-14.
- ↑ Keith Packard (1 November 2013). "[ANNOUNCE] xorg-server 1.14.99.901".
- ↑ Packard, Keith (9 January 2014). Zero-Copy Compositing — Research to Reality (Speech). Linux.conf.au 2014. Perth, Australia. 15:20 minutes in. Archived from the original on 2021-12-14. Retrieved 3 February 2014.
External links
- MIT-SHM(The MIT Shared Memory Extension)
- shm.xml - the XCB protocol specification for the MIT-SHM extension