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:
“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)
“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 dont like what we see, we feel angry at the reflection.”
—Elaine Heffner (20th century)