X Window System Protocols and Architecture - Extensions

Extensions

Scheifler and Gettys designed the X server to be simple but extensible. As such, much functionality now resides in extensions to the protocol.

At the protocol level, every extension can be assigned new request/event/error packet types. Extension features are accessed by client applications through extension libraries. Adding extensions to current X server implementations is reportedly difficult due to a lack of modularity in the server design. It is a long term goal of the XCB project to automate generating both the client and server sides of extensions from XML protocol descriptions.

The following table provides a partial catalog of extensions that have been developed, sorted roughly by recency of introduction:

Extension Description and notes
Composite Off-screen rendering of entire window hierarchies, allowing applications and composition managers to do effects anywhere along the way. Required for things like alpha transparency for windows and drop shadows.
Damage Tracks modified regions of windows, and minimizes bandwidth use required to keep the display up to date.
XFixes Several protocol changes.
Extended-Visual-Information (EVIE) Allows client to determine information about core X visuals beyond what the core protocol provides.
Distributed Multihead (DMX) Communicates with DMX X server.
X-Video Motion Compensation (XvMC) Offloading video motion compensation to a GPU that supports it.
GLX Support for rendering OpenGL within windows.
XRender Hardware accelerated image compositing with alpha blending.
Resize and Rotate (RANDR) Dynamically change the size, reflection, rotation and refresh rate of an X screen.
Xinerama Splitting the desktop across multiple monitors.
Display Power Management Signaling (DPMS) Allows controlling monitor power saving modes.
X keyboard extension Enhanced keyboard layout handling.
DOUBLE-BUFFER Gives flicker-free animation.
RECORD Used in server testing
MIT-SHM Use of shared memory to improve performance.
SYNC Provides timers and synchronizes clients (e.g. running on different hosts and operating systems) from within the X server. Created because of errors introduced by the network.
XTEST For generating fake input. Use i.e. the xte application from the XAutomation package.
XInputExtension Support for input devices such as graphic tablets; implementable as libXi
BIG-REQUESTS Enables requests exceeding 262140 bytes in length.
XC-MISC Fixes resource ID range overrun
X video extension Support for hardware video overlays and hardware-based video scaling on playback. Also called Xv (not to be confused with the xv program).
Shape Support for non-rectangular and partially transparent (binary, no alpha opacity) windows.
MIT-SCREEN-SAVER Launches a program when the X server turns on the built-in screen saver
SECURITY Provides enhanced server security
X-Resource Allows querying the X server about its resource usage
XFree86-Bigfont
XFree86-DGA Provides direct linear framebuffer access (direct graphics access). To be mostly removed in X.Org 7.6
XFree86-VidModeExtension Dynamically configures modelines and gamma.

Read more about this topic:  X Window System Protocols And Architecture

Famous quotes containing the word extensions:

    The psychological umbilical cord is more difficult to cut than the real one. We experience our children as extensions of ourselves, and we feel as though their behavior is an expression of something within us...instead of an expression of something in them. We see in our children our own reflection, and when we don’t like what we see, we feel angry at the reflection.
    Elaine Heffner (20th century)

    If we focus exclusively on teaching our children to read, write, spell, and count in their first years of life, we turn our homes into extensions of school and turn bringing up a child into an exercise in curriculum development. We should be parents first and teachers of academic skills second.
    Neil Kurshan (20th century)