This will be used to present the current state of the X.org project at a few upcoming conferences. Others are welcome to use this material for their own presentations. If you find mistakes in a project you are a contributor to, please fix them.
Projects
- X server autoconfiguration
- Radeon driver
- Nouveau driver
- Intel driver
- Via driver
- RandR 1.2
- Xinput hotplug
- MXM
- XCB
- Xephyr
- Xres
- XACE and related work
Radeon ATI driver
Unsupported by ATI. X.org maintainers for the 2D driver are currently made up from
Dave Airlie - general 2D driver + randr 1.2
Michel Dänzer (pic, bio) - general 2D driver + DRI
Alex Deucher - general 2D driver + tv-out
Ben Herrenschmidt - 2D driver memory layout
Roland Scheidegger - xv support
George Sapountzis - ATI wrapper and mach64
The Mesa 3D drivers for radeon/r200 are mainly looked after by Roland Scheidegger. The r300 reverse engineered driver was developed by a few developers, currently Jerome Glisse and Aapo Tahkola will answer questions.
R500 reverse-engineering on 2D started by Dave Airlie is a dead-end due to legal issues. Jerome Glisse and Daniel Stone have started reverse-engineering this from scratch to avoid any similar problems, and have already made pretty good progress; 2D mode setting could come soon. 3D RE could then start and we will be looking forward to get more people involved in the process.
Nouveau driver
Unsupported by NVIDIA. Nvidia cards are quite complex and require a lot of plumbery to get things like context switches to work. All this is already done on nv40, so 3D is working on these cards for untextured polygons. For other cards are currently being worked on. Adding texturing will require porting the DRM to TTM. The main developers on the nouveau project are:
Stephane Marchesin - overall director, nv04, nv40, all around DRI/DRM love
Ben Skeggs - shaders + nv40
Patrice Mandin - nv10/20
Matthieu Castet - nv10/20
Jeremy Kolb - nv30
Dave Airlie - Randr 1.2 and DDX
Input hotplug, Xi 2
Input system more or less rewritten, and input hotplug working fine in the server. Devices can be added and removed at will. Sample client using HAL to add devices automatically written already, but a proper client that integrates with the desktop environment needs to be written. API quite simple: just uses D-Bus. Will be integrated for 7.3. Needs some toolkit support to realise its full potential (using extended events instead of core).
Xi 2 will allow multiple pointers and a few other niceties, such as being able to send keysym events without needing remapping (e.g. Dasher). Peter's already got MPX in a good state on a branch: it works out of the box. Needs merging into Xi, and semantics sorted. Expected for 7.4, possibly. Currently MPX supports multiple mice and multiple keyboards, with hotplugging for both. New mice automatically get a new cursor. Keyboards can be paired with a mouse to follow one cursor's focus, the pairing can be changed dynamically at any time. Additionally MPX has access control mechanisms, to limit parts of the GUI to a set of input devices. This should avoid interference when multiple people are interacting on one screen. MPX has a fair amount of challenges left, such as what happens to applications that do not know about the existance of multiple devices.
The Generic Events extension (XGE) is an attempt to get rid of the 64 extension events limitation. It relays event processing through callbacks, allowing to re-use a single opcode for all events, while shifting the actual opcode into different bytes of the event structure. With the current version, XGE allows 256 extensions with 2^16 event opcodes per extension. Probably even more important, XGE supports long events (> 32 bytes). XGE is part of MPX already.
Daniel Stone: primary developer
Peter Hutterer: MPX, XGE
XCB
Pretty viable as an Xlib replacement. XML-based X protocol description language is working well. Xlib/XCB is shipped by default; cleans up Xlib and allows apps to mix Xlib and XCB calls.
Bart Massey: Lead architect, co-ordination
Jamey Sharp: Development lead, architect, core maintainer
Josh Triplett: XML lead and maintainer
Vincent Torri: Documentation and examples lead, util library maintainer
Jeremy Kolb: Maintainer of many of the extension modules, general maintainer
Ian Osgood: Many team contributions
[Who did I miss?]
Xephyr
Xephyr is a kdrive server that uses a window on a host desktop X Server as its framebuffer. Supports modern extensions,differing color depths to host and more. Useful for embedded device display simulation, server and extension development, testing and performance work.
Matthew Allum (pic, pic ): Lead Developer
Eric Anholt: EXA backend.
Xres
Xres is a server extension to monitor server side resource usage by clients. Recent work includes various bugfixes / improvements. Current and possible future work involves event generation on resource creation/destruction, 'live' pixmap probing, grab debugging etc. Xrestop is a command line tool for monitoring server resource usage with a top like output.
Matthew Allum: recent extension development work and xrestop developer.
XACE
The X Access Control Extension is a generic hook facility similar to and having the same purpose as the Linux Security Modules facility in the Linux kernel. It provides callback lists called from key points in the server, such as the dispatch table routine and the resource lookup routine. This allows loadable modules implementing arbitrary security decision logic to be created without having to touch the core X server code. The modules can register callbacks that get called at each hook point, receiving relevant parameters and passing back the security decision. The author is interested in having such a subsystem for the purpose of providing SELinux controls over X Window System objects.
XACE itself has been merged already but there are several areas of the server that the author is working on in support of the concept of loadable security modules. These include:
- Proper error-handling behavior: what notification, if any, should be returned to a client when a security module denies permission in one of its callbacks?
- State storage: allowing security modules to hang private data off of server objects, in the same manner as device driver writers currently hang things off the screen, window, and GC objects, and a few others (devPrivates mechanism).
- Pluggable authentication methods: allowing loadable modules to dynamically add new authentication methods to the currently hardcoded table that includes MIT-MAGIC-COOKIE, kerberos and a few others.
- Security extension: some miscellaneous improvements to the existing Security extension, including the location of its configuration file and cleaning up or deprecating the XC-QUERY-SECURITY authentication method.
The work is moving along well but the major problem is that some of it will affect the X server API, so that an API change point will be necessary to safely merge it (after the work has been nominated and reviewed, of course). After the work is completed SELinux support can be provided as a loadable server module.
Eamon Walsh: SELinux developer. (My talk at XDevConf was at least partially videotaped so it should be possible to get a picture from that).
Intel Driver
- Alan Hourihane
- Eric Anholt
- Keith Packard
- Keith Whitwell
- Zou Nan hai
- Michel Dänzer
- Wang Zhenyu
2D and 3D drivers for Intel hardware. Main issues involve improving EXA support, implementing XvMC, finishing the modesetting branch and merging that to master.


