X.Org Server
Developer(s) | X.Org Foundation |
---|---|
Initial release | 6 April 2004[1] |
Stable release | 1.18 / 9 November 2015[2] |
Written in | C |
Operating system | Cross-platform |
Size | 3.7 MiB[3] |
Available in | English |
Type | Display server |
License | MIT License |
Website | www |
X.Org Server is the free and open source implementation of the display server for the X Window System stewarded by the X.Org Foundation.
Implementations of the client side of the protocol are available e.g. in the form of Xlib and XCB.
The services with which the X.Org Foundation supports X Server include the packaging of the releases; certification (for a fee); evaluation of improvements to the code; developing the web site, and handling the distribution of monetary donations.[citation needed] The releases are coded, documented, and packaged by global developers.[clarification needed]
Contents
Software architecture
The X.Org Server implements the server side of the X Window System core protocol and extensions to it, e.g. RandR.[4]
Version 1.16.0 integrates support for systemd-based launching and management which improved boot performance and reliability.[5]
- Device Independent X (DIX)
- The Device Independent X (DIX) is the part of the X.Org Server that interacts with clients and implements software rendering. Basically everything in the server except for the hw/ directory. The main loop and the event delivery are part of the DIX.[6]
An X server has a tremendous amount of functionality that you must support to claim to speak the X protocol. This includes code tables, glyph rasterization and caching, XLFDs, and the entire core rendering API that lets you draw stippled lines, polygons, wide arcs and many more state-of-the-1980s style graphics primitives.
- Device Dependent X (DDX)
- The Device Dependent X (DDX) is the part of the x-server that interacts with the hardware. In the X.Org Server source code, each directory under "hw" corresponds to one DDX. Hardware comprises graphics cards as well as mouse and keyboards. Each driver is hardware specific and implemented as a separate loadable module. Proprietary support for graphics cards come as part of AMD Catalyst or as part of Nvidia GeForce driver. The available free and open-source graphics device drivers are being developed inside of the Mesa 3D-project.
- For historical reasons the X.Org Server still contains graphics device drivers supporting some form of 2D rendering acceleration. In ancient times, the mode-setting was done by this x-server graphics device drivers. This functionality was moved into the DRM and is being exposed through an DRM mode-setting interface, the new approach being called "kernel mode-setting" (KMS).
- With version 1.17 a generic method was mainlined:
xf86-video-modesetting
.
-
- Input stack
- With version 1.16, the X.Org Server obtained support for the libinput library in form of a wrapper called xf86-input-libinput.[7] At the XDC 2015 in Toronto, libratbag was introduced as a generic library to support configurable mice.[8][9]
xserver-xorg-input-joystick
is the input module for the X.Org server to handle classic joysticks and gamepads, which is not meant for playing games under X, but to control the cursor with a joystick or gamepad.[10][11]
- With version 1.16, the X.Org Server obtained support for the libinput library in form of a wrapper called xf86-input-libinput.[7] At the XDC 2015 in Toronto, libratbag was introduced as a generic library to support configurable mice.[8][9]
- Input stack
-
- Glamor
- Glamor is a generic 2D acceleration driver for the X server that translates the X render primitives to OpenGL operations, taking advantage of any existing 3D OpenGL drivers (proprietary or otherwise).[12] The ultimate goal of GLAMOR is to obsolete and replace all the DDX, the device dependent X drivers, and acceleration architectures for them (like XAA, EXA, UXA or SNA) by a single hardware independent 2D driver, avoiding the need to write X 2D specific drivers for every supported graphic chipset.[13][14][15] Glamor requires a 3D driver with shader support.[16]
- Glamor performance tuning was accepted for Google Summer of Code 2014.[17] Glamor supports Xephyr and DRI3,[18] and can boost some operations by 700–800%.[19] Since its mainlining into version 1.16 of the X.Org Server, development on Glamor was continued and patches for the 1.17 release were published.[20]
- Glamor
-
- XWayland
- XWayland is a series of patches over the X.Org server codebase that implements an X server running upon the Wayland protocol. The patches are developed and maintained by the Wayland developers for compatibility with X11 applications during the transition to Wayland,[21] and was mainlined in version 1.16 of the X.Org Server.[5]
- XWayland
-
- XQuartz
- XQuartz is a series of patches from Apple Inc. to integrate support for the X11 protocol into their Quartz Compositor, in a similar way to how XWayland integrates X11 into Wayland compositors.
- XQuartz
-
- Xspice
- There is a device driver for the X.Org Server called Xspice. It supports the QXL framebuffer device and includes a wrapper script[22] which makes it possible to launch an X.Org Server whose display is exported via the SPICE protocol. This enables use of SPICE in a remote desktop environment, without requiring KVM virtualization.
- Xspice
Adoption
- Unix and Linux
- The X.Org Server runs on many free-software Unix-like operating systems; most Linux distributions and BSD variants have adopted it. It is also the X server for the Solaris operating system.
- Microsoft Windows
- Cygwin/X, Cygwin's implementation of the X server for Microsoft Windows, uses the X.Org Server, as do VcXsrv[23] (Visual C++ X-server[24]) and Xming.
- OS X
- OS X versions prior to Mac OS X Leopard (10.5) shipped with an XFree86-based server, but 10.5's X server adopted the X.Org codebase.[25] Starting with OS X Mountain Lion, (10.7) X11 is not bundled in OS X; instead, it has to be installed from, for example, the open source XQuartz project.[26] As of version 2.7.4, X11.app/XQuartz does not expose support for high-resolution Retina displays to X11 apps, which run in pixel-doubled mode on high-resolution displays.
History
<templatestyles src="Module:Hatnote/styles.css"></templatestyles>
The modern X.Org Foundation came into being in 2004 when the body that oversaw X standards and published the official reference implementation joined forces with former XFree86 developers. X11R6.7.0, the first version of the X.Org Server, was forked from XFree86 4.4 RC2.[1] The immediate reason for the fork was a disagreement with the new license for the final release version of XFree86 4.4, but several disagreements among the contributors surfaced prior to the split. Many of the previous XFree86 developers have joined the X.Org Server project.
In 2005, a great effort was put in the modularization of the X.Org server source code,[27] resulting in a dual release by the end of the year. The X11R7.0.0 release added a new modular build system based on the GNU Autotools, while X11R6.9.0 release kept the old imake build system, both releases sharing the same codebase. Since then the X11R6.9 branch is maintained frozen and all the ongoing development is done to the modular (using GNU Autotools) branch. The new build system also brought the use of dlloader standard dynamic linker to load plugins and drivers, deprecating the old own method. As a consequence of the modularization, the X11 binaries were moving out of their own /usr/X11R6 subdirectory tree and into the global /usr tree on many Unix systems.
In June 2006, another effort was done to move the X.Org server source codebase from CVS to git.[28] Both efforts had the long-term goal of bringing new developers to the project. In the words of Alan Coopersmith:[29]
<templatestyles src="Template:Blockquote/styles.css" />
Some of our efforts here have been technological - one of the driving efforts of the conversions from Imake to automake and from CVS to git was to make use of tools developers would already be familiar and productive with from other projects. The Modularization project, which broke up X.Org from one giant tree into over 200 small ones, had the goal of making it possible to fix a bug in a single library or driver without having to download and build many megabytes of software & fonts that were not being changed.
In the 7.1 release, the KDrive framework (a small implementation of X, written by Keith Packard, that was not based on XFree86 that X.Org developers used as a testing ground for new ideas, such as EXA) was integrated into the main codebase of X.Org server.
In 2008, the new DRI2, based on the kernel mode-setting (KMS) driver, replaced the old DRI. This change also set a major milestone in the X.Org server architecture, as the drivers were moved out from the server and user space (UMS) to the kernel space.
In 2013, the initial versions of DRI3 and Present extensions were written and coded by Keith Packard to provide a faster and tearing-free 2D rendering. By the end of the year 2013 the implementation of GLX was rewritten by Adam Jackson at Red Hat.[30]
Releases
Version | Date | X11 Release | Main features |
---|---|---|---|
1.0 | 21 December 2005[31] | X11R7.0 (1.0.1) | Initial modularized X server, EXA architecture |
1.1 | 22 May 2006[32] | X11R7.1 (1.1.0) | KDrive integration, AIGLX support[33] |
1.2 | 22 January 2007[34] | X11R7.2 (1.2.0) | Autoconfiguration, enhanced support for GL-based compositing managers[35] |
1.3 | 19 April 2007[36] | RandR 1.2[37] | |
1.4 | 6 September 2007[38] | X11R7.3 | Input hotplugging support[38][39] |
1.5 | 3 September 2008[40] | X11R7.4 (1.5.1) | |
1.6 | 25 February 2009[41] | RandR 1.3, DRI2, XInput 1.5[42] | |
1.7 | 1 October 2009[43] | X11R7.5 (1.7.1) | XInput 2.0, multi-pointer X[44][45] |
1.8 | 2 April 2010[46] | xorg.conf.d, udev input handling[47] | |
1.9 | 20 August 2010[48] | X11R7.6 (1.9.3) | |
1.10 | 25 February 2011[49] | X Synchronization Fences[50] | |
1.11 | 26 August 2011[51] | ||
1.12 | 4 March 2012[52] | X11R7.7 (1.12.2) | XInput 2.2 (including multi-touch support)[53] |
1.13 | 5 September 2012[54] | New DDX driver API, DRI2 offload, RandR 1.4, OpenGL 3.x+ contexts, removing XAA[55] | |
1.14 | 5 March 2013[56] | XInput 2.3[57] | |
1.15 | 27 December 2013[58] | DRI3 and Present extensions[59][60] | |
1.16 | 17 July 2014[61] | XWayland DDX, GLAMOR acceleration, non-PCI devices support, systemd-logind support (rootless X)[61][62] | |
1.17 | 4 February 2015[63] | Generic DRM/KMS driver xf86-video-modesetting,[64][65] Add support for DRI2 with glamor | |
1.18 | 9 November 2015[2] | RandR 1.5 | |
1.19 | N/A | ||
Legend:
Old version
Older version, still supported
Latest version
Future release
|
See also
<templatestyles src="Div col/styles.css"/>
- Reference implementation – part of a standard release package
- X window manager – a package that is deliberately kept separate from the X server package
- X video extension
- evdev
- X11.app
- xorg.conf
- Xenocara
References
- ↑ 1.0 1.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 2.0 2.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 5.0 5.1 5.2 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Re: Xorg in Leopard?, From: Ben Byer, Date: 29 June 2007, Apple Mailing Lists
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 38.0 38.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 61.0 61.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
External links
Wikimedia Commons has media related to [[commons:Lua error in Module:WikidataIB at line 506: attempt to index field 'wikibase' (a nil value).|Lua error in Module:WikidataIB at line 506: attempt to index field 'wikibase' (a nil value).]]. |
- X.Org home page
- X.Org git source code repository
- #xorg connect on freenode