Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
X.Org Server
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==={{Anchor|DDX}} 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. ===={{Anchor|DDX graphics driver}} 2D graphics driver==== For historical reasons the X.Org Server still contains graphics device drivers supporting some form of 2D rendering acceleration. In the past, [[mode-setting]] was done by an X-server graphics device driver specific to some [[video controller]] hardware (''e.g.'', a [[Graphics processing unit|GPU]]). To this mode-setting functionality, additional support for 2D acceleration was added when such became available with various GPUs. The mode-setting functionality was moved into the [[Direct Rendering Manager|DRM]] and is being exposed through a DRM mode-setting interface, the new approach being called "kernel mode-setting" (KMS). But the 2D rendering acceleration remained. In [[Debian]] the 2D graphics drivers for the X.Org Server are packaged individually and called ''xserver-xorg-video-*''.<ref>{{Cite web|url=https://packages.debian.org/stretch/xserver-xorg-video-nouveau|title=Details of package xserver-xorg-video-nouveau in stretch|website=packages.debian.org}}</ref> After installation the 2D graphics driver-file is found under <code>/usr/lib/xorg/modules/drivers/</code>. The package xserver-xorg-video-nouveau installs <code>nouveau_drv.so</code> with a size of 215 KiB, the proprietary [[Nvidia GeForce driver]] installs an 8 MiB-sized file called <code>nvidia_drv.so</code> and [[Radeon Software]] installs <code>fglrx_drv.so</code> with a size of about 25MiB. The available [[free and open-source graphics device driver]]s are being developed inside of the [[Mesa 3D]]-project. While these can be recompiled as required, the development of the proprietary DDX 2D graphics drivers is greatly eased when the X.Org Server keeps a stable API/ABI across multiple of its versions. With version 1.17 a generic method for mode-setting was mainlined. The <code>xf86-video-modesetting</code> package, the Debian-package being called <code>xserver-xorg-video-modesetting</code>, was retired, and the generic modesetting DDX it contained was moved into the server package to become the KMS-enabled default DDX, supporting the vast majority of AMD, Intel and NVidia GPUs. On April 7, 2016 AMD employee Michel Dänzer released <code>xf86-video-ati</code> version 7.7.0<ref>{{cite web |url=https://lists.x.org/archives/xorg-announce/2016-April/002684.html |title=[ANNOUNCE] xf86-video-ati 7.7.0 |date=2016-04-07}}</ref> and <code>xf86-video-amdgpu</code> version 1.1.0,<ref>{{cite web |url=https://lists.x.org/archives/xorg-announce/2016-April/002686.html |title=[ANNOUNCE] xf86-video-amdgpu 1.1.0 |date=2016-04-07}}</ref> the latter including support for their [[Polaris (microarchitecture)|Polaris]] microarchitecture. ====={{Anchor|Acceleration-anchor}} Acceleration architectures===== There are (at least) XAA (XFree86 Acceleration Architecture),<ref name="StupidSquirrel">{{cite web|url=http://www.xfree86.org/3.3.6/ark3.html|title=Information for ARK Logic Chipset Users: Acceleration|website=XFree86.org|access-date=22 September 2018|url-status=live|archive-url=https://web.archive.org/web/20180623033423/http://www.xfree86.org/3.3.6/ark3.html|archive-date=23 June 2018}}</ref> [[EXA]], [[UMA Acceleration Architecture|UXA]] and [[SNA (computer graphics)|SNA]]. [[File:Linux graphics drivers 2D.svg|upright=1.5|thumb|'''XAA''' is an API between the Device-Independent-X (DIX) and the Device-Dependent-X (DDX), a 2D graphics driver, here e.g. with the [[Linux kernel]].]] In the [[X Window System]], '''XFree86 Acceleration Architecture''' ('''XAA''') is a driver architecture to make a video card's 2D [[hardware acceleration]] available to the X server.<ref name="anholt2004">{{cite web |last1=Anholt |first1=Eric |title=High Performance X Servers in the Kdrive Architecture |url=https://www.usenix.org/legacy/event/usenix04/tech/freenix/full_papers/anholt/anholt_html/ |website=www.usenix.org |access-date=14 September 2018}}</ref><ref name="Wetzel2003">{{cite web |last1=Wetzel |first1=Robert |title=An acceleration architecture for DOpE |url=http://wwwos.inf.tu-dresden.de/papers_ps/wetzel-diplom.pdf |website=wwwos.inf.tu-dresden.de |access-date=14 September 2018}}</ref> It was written by [[Harm Hanemaayer]] in 1996 and first released in [[XFree86]] version 3.3. It was completely rewritten for XFree86 4.0.<ref>{{cite web|title=Release Notes for XFree86 4.0|url=http://www.xfree86.org/4.0/RELNOTES2.html#6|website=XFree86 Project|date=7 March 2000|access-date=16 September 2018}}</ref> It was removed again from X.Org Server 1.13. Most drivers implement acceleration using the XAA module. XAA is on by default, though acceleration of individual functions can be switched off as needed in the server configuration file (<code>XF86Config</code> or <code>xorg.conf</code>). The driver for the [[ARK chipset]] was the original development platform for XAA. In X.Org Server release 6.9/7.0, [[EXA]] was released as a replacement for XAA, as XAA supplies almost no speed advantage for current video cards. EXA is regarded as an intermediate step to converting the entire X server to using [[OpenGL]]. ====={{Anchor|GLAMOR}} Glamor===== Glamor is a generic, hardware independent, 2D acceleration driver for the X server that translates the X render primitives into [[OpenGL]] operations, taking advantage of any existing 3D OpenGL drivers.<ref>{{cite web|title=What is Glamor?|url=http://www.freedesktop.org/wiki/Software/Glamor/|publisher=FreeDesktop.org|access-date=10 February 2014}}</ref> In this way, it is functionally similar to Quartz Extreme and QuartzGL (2D performance acceleration) for Apple [[Quartz Compositor]]. The ultimate goal of GLAMOR is to obsolete and replace all the DDX 2D graphics device drivers and acceleration architectures, thereby avoiding the need to write X 2D specific drivers for every supported graphic chipset.<ref>{{cite web|last=Anholt|first=Eric|title=Building 2D rendering acceleration with OpenGL|url=http://mirror.linux.org.au/linux.conf.au/2014/Wednesday/52-Building_2D_rendering_acceleration_with_OpenGL_-_Eric_Anholt.mp4|publisher=[[linux.conf.au]]|access-date=10 February 2014|archive-date=4 March 2016|archive-url=https://web.archive.org/web/20160304064444/http://mirror.linux.org.au/linux.conf.au/2014/Wednesday/52-Building_2D_rendering_acceleration_with_OpenGL_-_Eric_Anholt.mp4|url-status=dead}}</ref><ref>{{cite web|last=Packard|first=Keith|title=Brief Glamor Hacks|url=http://keithp.com/blogs/glamor-hacking/|access-date=7 March 2014}}</ref><ref>{{cite web |url=http://wiki.x.org/wiki/Events/XDC2013/XDC2013AdamJacksonGLXRewrite/ |title=Adam Jackson - GLX rewrite |date=24 September 2013 |access-date=2014-03-23}}</ref> Glamor requires a 3D driver with support for [[shader]]s.<ref>{{cite web |url=http://xorg.freedesktop.org/wiki/RadeonFeature/ |title=Radeon Feature Matrix |work=[[freedesktop.org]]}}</ref> Glamor performance tuning was accepted for [[Google Summer of Code]] 2014.<ref>{{Cite web|url=http://www.google-melange.com/gsoc/project/details/google/gsoc2014/degasus/5639274879778816|title=Glamor Performance Tuning|access-date=22 April 2014|archive-date=24 September 2015|archive-url=https://web.archive.org/web/20150924023047/http://www.google-melange.com/gsoc/project/details/google/gsoc2014/degasus/5639274879778816|url-status=dead}}</ref> Glamor supports [[Xephyr]] and [[Direct Rendering Infrastructure#DRI3|DRI3]],<ref>{{cite web |url=https://www.phoronix.com/scan.php?page=news_item&px=MTYyMjc |title=GLAMOR Xephyr & DRI3 Support Called For Pulling |publisher=[[Phoronix]] |date=5 March 2014}}</ref> and can boost some operations by 700–800%.<ref>{{cite web |url=https://www.phoronix.com/scan.php?page=news_item&px=MTYyODU |title=GLAMOR Patch Bomb Can Boost Some Operations By 700~800% |publisher=[[Phoronix]] |date=13 March 2014}}</ref> 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.<ref>{{cite web |url=http://lists.x.org/archives/xorg-devel/2014-July/043106.html |title=glamor changes for 1.17 |date=17 July 2014}}</ref> ====={{Anchor|Virtualization}} Virtualization===== There is a distinct and special DDX for instances of the X.Org Server which run on a guest system inside of a [[Virtualization|virtualized environment]]: xf86-video-qxl, a driver for the "QXL video device". [[Simple Protocol for Independent Computing Environments|SPICE]] makes use of this driver though it works without it as well. In the Debian repositories it is called xserver-xorg-video-qxl, cf. https://packages.debian.org/buster/xserver-xorg-video-qxl ===={{Anchor|Input stack}} Input stack==== Under Debian, drivers related to input are found under <code>/usr/lib/xorg/modules/input/</code>. Such drivers are named e.g. <code>evdev_drv.so</code>, <code>mouse_drv.so</code>, <code>synaptics_drv.so</code> or <code>wacom_drv.so</code>. With version 1.16, the X.Org Server obtained support for the [[libinput]] library in form of a wrapper called <code>xf86-input-libinput</code>.<ref>{{Cite web|url=http://who-t.blogspot.com/2014/09/libinput-common-input-stack-for-wayland.html|title=libinput - a common input stack for Wayland compositors and X.Org drivers|first=Peter|last=Hutterer|date=24 September 2014}}</ref> At the XDC 2015 in Toronto, libratbag was introduced as a generic library to support configurable mice.<ref>{{Cite web|url=https://www.x.org/wiki/Events/XDC2015/Program/hutterer_tissoires_libratbag.html|title=libratbag|website=X.org}}</ref><ref>{{Cite web|url=https://www.x.org/wiki/Events/XDC2015/Program/tissoires_input_debug_tools.html|title=Tools to debug a broken input device|website=X.org}}</ref> <code>xserver-xorg-input-joystick</code> 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.<ref>{{cite web |url=http://www.x.org/wiki/Events/XDC2012/XDC2012AbstractSaschaHlusiak/xf86-input-joystick.pdf |title=XDC2012: xorg-input-joystick |type=pdf}}</ref><ref>{{Cite web|url=https://packages.debian.org/stable/xserver-xorg-input-joystick|title= Details of package xserver-xorg-input-joystick in buster|website=packages.debian.org}}</ref> ====Other DDX components==== ; {{Anchor|XWayland}} XWayland : XWayland is a series of patches over the X.Org server codebase that implement an X server running upon the [[Wayland (display server protocol)|Wayland]] protocol. The patches are developed and maintained by the Wayland developers for compatibility with X11 applications during the transition to Wayland,<ref>{{cite web|title=X Clients under Wayland (XWayland)|url=http://wayland.freedesktop.org/xserver.html|publisher=Wayland Project|access-date=10 February 2014}}</ref> and were mainlined in version 1.16 of the X.Org Server in 2014.<ref name="xorgserver1160">{{cite web |url=http://lists.x.org/archives/xorg-announce/2014-July/002457.html |title=ANNOUNCE: xorg-server 1.16.0 |publisher=[[freedesktop.org]] |date=17 July 2014}}</ref> When a user runs an X application from within [[Wayland (display server protocol)|Weston]], it calls upon XWayland to service the request.<ref> {{cite web|title=Wayland|url=https://wiki.archlinux.org/index.php/wayland#XWayland|publisher=[[Arch Linux]] Project|access-date=2016-05-09}}</ref> ; {{Anchor|XQuartz}} 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 compositor]]s. ; Xspice : Xspice is a device driver for the X.Org Server. It supports the QXL framebuffer device and includes a wrapper script<ref>{{cite web|url=http://cgit.freedesktop.org/xorg/driver/xf86-video-qxl/tree/README.xspice |title=XSpice README |publisher=Cgit.freedesktop.org |access-date=2013-10-25}}</ref> which makes it possible to launch an X.Org Server whose display is exported via the [[SPICE (protocol)|SPICE]] protocol. This enables use of SPICE in a remote desktop environment, without requiring [[Kernel-based Virtual Machine|KVM]] virtualization. ; Xephyr : [[Xephyr]] is an X-on-X implementation. Since version 1.16.0, Xephyr serves as the primary development environment for the new 2D acceleration subsystem (Glamor), permitting rapid development and testing on a single machine.<ref name="xorgserver1160" /> ; RandR : '''RandR''' (''resize and rotate'') is a [[communications protocol]] written as an extension to the [[X Window System core protocol|X11]]<ref>{{cite web|url=http://cgit.freedesktop.org/xorg/proto/randrproto/tree/randrproto.txt|title=The X Resize, Rotate and Reflect Extension Version 1.3.1}}</ref> protocol. XRandR provides the ability to resize, rotate and reflect the [[root window]] of a screen. RandR is responsible for setting the screen refresh rate.<ref name="Tyler2008">{{cite book |last1=Tyler |first1=Chris |title=X Power Tools |date=2008 |publisher="O'Reilly Media, Inc." |isbn=9780596101954 |pages=86–87 |url=https://books.google.com/books?id=X9YRMIA899gC&q=%22XRandR%22+-wikipedia&pg=PA87 |access-date=14 September 2018 |language=en}}</ref> It allows for the control of multiple monitors.<ref name="Gultsch2009">{{cite journal |last1=Gultsch |first1=Daniel |title=Dual Image » Linux Magazine |journal=Linux Magazine |date=2009 |issue=106 |url=http://www.linux-magazine.com/Issues/2009/106/Multi-heading-with-RandR}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)