Unlike XFree86 3.3.x where there are multiple X server binaries, each
of which drive different hardware, XFree86 3.9.18 has a single X server
binary (called XFree86
). This binary can either have one or
more video drivers linked in statically, or, more usually, dynamically
load the video drivers and other modules that are needed.
XFree86 3.9.18 has X server support for most UNIX(R) and UNIX-like operating systems on Intel/x86 platforms, plus support for Linux on Alpha and PowerPC platforms. Support for additional architectures and operating systems is planned for future releases.
The XFree86 X server has a built-in run-time loader, donated by Metro Link. This loader can load normal object files and libraries in most of the commonly used formats. Since the loader doesn't rely on an operating system's native dynamic loader support, it works on platforms that don't provide this feature, and makes it possible for the modules to be operating system independent (although not, of course, independent of CPU architecture). This means that, for example, a module compiled on Linux/x86 can be loaded by an X server running on Solaris/x86, or FreeBSD, or even OS/2. One of the main benefits of this is that when modules are updated, they don't need to be recompiled for each different operating system.
The loader in version 3.9.18 has support for Intel (x86), Alpha and PowerPC platforms. It also has preliminary support for Sparc platforms.
The X server makes use of modules for video drivers, X server extensions, font rasterisers, input device drivers, framebuffer layers (like mfb, cfb, etc), and internal components used by some drivers (like XAA),
The module interfaces (API and ABI) used in the snapshot releases are subject to change without notice. This means that there is no guarantee that modules built for one snapshot release will function with another snapshot release. As of the 4.0 release we plan to make every effort to provide backward compatibility for the module interfaces (that means older modules working with newer core X server binaries).
Note about module security
The XFree86 X server runs with root privileges, which means that the X server loadable modules also run with these privileges. For this reason we recommend that all users be careful to only use loadable modules from reliable sources. By the time that XFree86 4.0 is released, we hope to have implemented a method for signing/verifying modules that we provide.
The X server configuration file format has been extended to handle some
of the new functionality. The xf86config
utility can be used
to generate a basic config file, that may require some manual editing.
Alternatively, the sample config file XF86Config.eg
that is
installed in /usr/X11R6/lib/X11
may be used as a starting point.
The XF86Setup
utility is currently not usable, but work is
continuing in this area.
The main changes are:
.so
suffix
should no longer be specified with module names. Options may
be supplied for modules by loading the module via a SubSection
instead of the usual Load keyword. The bitmap
module
is the only font module that is loaded by default. No server
extensions are loaded by default, but some are built-in to the
server. The following example shows how to load all the server
extensions plus the Type1 and TrueType fonts support, and a
commented example that shows how to pass options to an extension
(this one is for loading the misc extensions (extmod
)
with the XFree86-VidModeExtension disabled):
Section "Module" Load "dbe" Load "record" Load "glx" Load "pex5" Load "xie" Load "extmod" Load "type1" Load "freetype" # SubSection "extmod" # Option "Omit XFree86-VidModeExtension" # EndSubSection EndSection
where the option just has a name specified. The name is case insensitive, and white space and underscore characters are ignored. The second type consists of a name and a value:Option "name"
The value is passed transparently as a string to the code that uses the option. Common value formats are integer, boolean, real, string and frequency. The following boolean option values are recognised as meaning TRUE:Option "name" "value"
"true"
, "yes"
,
"on"
, "1"
, and no value. The values recognised
as FALSE are "false"
, "no"
, "off"
,
"0"
. In addition to this, "no"
may be prepended
to the name of a boolean option to indicate that it is
false. Frequency options can have the strings Hz
,
kHz
, or MHz
appended to the numerical value
specified.
Note: the value must always be enclosed in double quotes
("
).
Option "blank time" "10" Option "standby time" "20" Option "suspend time" "30" Option "off time" "60"
Note: Additional sample rates have been added for some mice. Matching the mouse sampling rate with the vertical refresh rate can yield very noticeable improvements in smoothness of pointer event driven operations such as window moves and scrolling.Section "InputDevice" Identifier "Keyboard 1" Driver "keyboard" Option "AutoRepeat" "500 5" Option "XkbModel" "pc104" Option "XkbLayout" "us" EndSection Section "InputDevice" Identifier "Mouse 1" Driver "mouse" Option "Protocol" "PS/2" Option "Device" "/dev/mouse" SampleRate 80 EndSection
"DPMS"
and "Sync on Green"
options are best
specified in the Monitor sections.
Section "Device" Identifier "MGA 1" Driver "mga" BusID "PCI:1:0:0" Option "PCI Retry" EndSection
See the document xc/programs/Xserver/hw/xfree86/doc/DESIGN for a more detailed explanation of the new ServerLayout section syntax.Section "ServerLayout" Identifier "Layout 1" Screen "MGA 1" Screen "MGA 2" RightOf "MGA 1" InputDevice "Keyboard 1" "CoreKeyboard" InputDevice "Mouse 1" "CorePointer" InputDevice "Mouse 2" "SendCoreEvents" Option "BlankTime" "5" EndSection
The config file search patch has been extended, with the directories
/etc/X11
and /usr/X11R6/etc
being added.
The following new X server command line options have been added:
-depth
nThis specifies the colour depth that the server is running at. The default is 8 for most drivers. Most drivers support the values 8, 15, 16 and 24. Some drivers also support the values 1 and 4. Some drivers may also support other depths. Note that the depth is different from the ``bpp'' that was specified with previous versions. The depth is the number of bits in each pixel that are significant in determining the pixel's value. The bpp is the total size occupied by each pixel, including bits that are not used. The old
-bpp
option is no longer recognised because it isn't a good way of specifying the server behaviour.
-fbbpp
nThis specifies the bpp format to use for the framebuffer. This may be used in 24-bit mode to force a framebuffer format that is different from what the driver chooses by default. In most cases there should be no need to use this option.
-pixmap24
This specifies that the client-side pixmap format should be the packed 24-bit format that was often used by the 3.3.x servers. The default is the more common 32-bit format. There should normally be no need to use this option.
-pixmap32
This specifies that the client-side pixmap format should be the sparse 32-bit format. This is the default, so there should normally be no need to use this option.
-layout
nameThis specifies which ServerLayout section in the config file to use. When this option is not specified, the first ServerLayout section is used. When there is no ServerLayout section, the first Screen section is used.
-screen
nameThis specifies which Screen section in the config file to use. When this option is not specified, the first ServerLayout section is used. When there is no ServerLayout section, the first Screen section is used.
-keyboard
nameThis specifies which InputDevice section in the config file to use for the core keyboard. This option may be used in conjunction with the
-screen
option.
-pointer
nameThis specifies which InputDevice section in the config file to use for the core pointer. This option may be used in conjunction with the
-screen
option.
-modulepath
pathThis specifies the module search path. The path should be a comma-separated list of absolute directory paths to search for server modules. When specified here, it overrides the value specified in the config file. This option is only available when the server is started by the
root
user.
-logfile
fileThis specifies the log file name. When specified here, it overrides the value specified in the config file. This option is only available when the server is started by the
root
user.
-scanpci
This specifies that the
scanpci
module should be loaded and executed. This does a scan of the PCI bus. This option is only available when the server is started by theroot
user.
-logverbose
[n]This options specifies the verbosity level to use for the log file. The default is 3.
The following X server command line options have been changed since 3.3.x:
-verbose
[n]This option specifies the verbosity level to use for the server messages that get written to stderr. It may be specified multiple times to increase the verbosity level (as with 3.3.x), or the verbosity level may be specified explicitly as a number. The default verbosity level is 1.
-xf86config
filenameThis option has been extended to allow non-root users to specify a relative config file name. The config file search path will be used to locate the file in this case. This makes it possible for users to choose from multiple config files that the the sysadmin has provided.
The XFree86 Acceleration Architecture (XAA) has been completely rewritten from scratch. Most drivers implement acceleration by making use of the XAA module.
Some multi-head configurations are supported in this release, primarily with multiple PCI/AGP cards. However, this is an area that is still being worked on, and we expect that the range of configurations for which it works well will increase in future snapshots. A configuration that is known to work well in most cases is multiple (supported) Matrox cards.
One of the main problems is with drivers not sufficiently initialising cards that were not initialised at boot time. Normally only the primary video card gets initialised at boot time. Some combinations can be made to work better by changing which card is the primary card (either by using a different PCI slot, or by changing the system BIOS's preference for the primary card). We are investigating options for ``soft-booting'' secondary video cards to deal with this problem, and we've had some very encouraging results.
Xinerama is an X server extension that allows multiple physical screens to behave as a single screen. With traditional multi-head in X11, windows cannot span or cross physical screens. Xinerama removes this limitation. Xinerama does, however, require that the physical screens all have the same root depth, so it isn't possible, for example, to use an 8-bit screen together with a 16-bit screen in Xinerama mode.
Xinerama is not enabled by default, and can be enabled with the
+xinerama
command line option for the X server.
Xinerama was included with X11R6.4. The version included in this snapshot contains many bug fixes. This is an area that we are still working on, and we expect it to be improved further in future snapshots.
Known problems:
DGA 2.0 is nearly completed but still not implemented by all drivers. Preliminary documentation for the client libraries can be found in the xc/programs/Xserver/hw/xfree86/DGA document. Some degree of backwards compatibility with version 1.0 is provided.
The VESA(R) Display Data Channel (DDC[tm]) standard (related to, but separate from, the VESA(R) Plug and Display standard) allows the monitor to tell the video card (or on some cases the computer directly) about itself; particularly the supported screen resolutions and refresh rates.
Partial or complete DDC support is available in the following hardware modules:
DDC is enabled by default, but can be disabled
with a "Device" section entry:
Option "NoDDC"
.
We have support for DDC versions 1 and 2; these can be disabled independently
with Option "NoDDC1"
and Option "NoDDC2"
.
At startup the server prints out DDC information from the display, but it does not yet use it the determine modelines.
Changed behavior caused by DDC. Several drivers uses DDC information to set the monitor gamma (brightness) curve, and the screen size and pitch.
Gamma 1.0 1.0 1.0
in the appropriate "Monitor" section of the config file.
-dpi 75
command line option for the X server, or by
specifying appropriate screen dimensions with the "DisplaySize"
keyword in the "Monitor" section of the config file.
Precision Insight has been provided with funding and support from Red Hat and SGI to integrate the GLX extension for 3D rendering in an X11 window. The 3D core rendering component is the Mesa library. SGI has released the sources to the extension framework under an open license, which essentially provides the glue between the 3D library and this windowing system. Precision Insight has integrated these components into this XFree86 X Server and added a Direct Rendering Infrastructure. Direct Rendering provides a highly optimized path for sending 3D data directly to the graphics hardware. This release demonstrates a sample implementation of direct rendering by providing a single path of 3D hardware accelerated rendering for the GMX2000 and 3dfx voodoo graphics cards. Future releases will support much broader implementations of hardware accelerated direct rendering on a wide range of 3D capable graphics devices.
An XvQueryPortAttributes function has been added as well as support for XvImages. XvImages are XImages in alternate color spaces such as YUV and can be passed to the server through shared memory segments. This allows clients to display YUV data with high quality hardware scaling and filtering. XvImages are only supported by the Matrox G200/G400 cards at the moment.
The XFree86-Misc extension has not been fully ported to the new server architecture yet. This should be completed in a future snapshot.
The XFree86-VidModeExtension extension has been updated, and mostly
ported to the new server architecture. The area of mode validation
needs further work, and the extension should be used with care. This
extension has support for changing the gamma setting at run-time, for
modes where this is possible. The new xgamma
utility makes
use of this feature. Compatibility with the 3.3.x version of the
extension is provided. The missing parts of this extension and some
new features should be completed in a future snapshot.
XFree86 3.9.18 includes the following drivers:
Driver Name | Description |
apm | Alliance Pro Motion |
ati | ATI |
chips | Chips & Technologies |
cirrus | Cirrus Logic |
cyrix (*) | Cyrix MediaGX |
fbdev | Linux fbdev |
glide | Glide2x (3Dfx) |
glint | 3Dlabs |
i740 | Intel i740 |
i810 | Intel i810 |
mga | Matrox |
neomagic | NeoMagic |
nv | NVIDIA |
r128 | ATI Rage 128 |
rendition | Rendition |
s3virge | S3 ViRGE |
sis | SiS |
tdfx | 3Dfx |
tga | DEC TGA |
trident | Trident |
tseng | Tseng Labs |
vga | Generic VGA |
Drivers marked with (*) are present in a preliminary form in this release, but are not complete and/or stable yet.
It's the driver for Alliance AT3D/AT25 and AT24 chips. There is a rather complete support for the functions with acceleration at 8,15,16,24 and 32 bits (limited by the chip at 24bpp). There is preliminary, still buggy, support for the AP6422 chip, which is still supported in 3.3.x servers. The Xv driver is almost ok. The Rush extension for glide2x works, with some additions, including overlay of the result. DGA and DGA2 have been tested ok.
Main useful options:
to set the memory clock (default should be OK).
to force the software cursor.
to force the hardware cursor.
to disable (XAA) acceleration.
to enable shadow framebuffer operation (the rendering is done in system memory and then copied to the framebuffer, useful when acceleration is disabled).
Information about the C&T driver can be found in README.chips.
The s3virge driver is a port of the 3.3.3.1 SVGA S3 ViRGE driver. As such it should be as stable and functional as previous XFree86 releases. There are a couple additional benefits included primarily due to common enhancements:
s3virge
man page lists options and has configuration
notes for this release of the driver.
Outstanding items not implemented or fully tested:
The TGA driver is now accelerated and supports both 8 and 32 plane framebuffers. It is known to work under Linux/Alpha. Please see the README.DECtga file for further information.
The MGA driver supports the same range or hardware as XFree86 3.3.4, but has a number of enhancements including multi-head support and support for overlays (8-bit + 24-bit).
Option "overlay"
when the server is started in 32bpp
(-fbbpp 32
) will enable the 8+24 mode. The current
implementation doesn't optimize away unnecessary exposures yet so the
performance of this option will be better in future snapshots. The
option is not supported on the G100 due to a missing hardware feature.
By default, the color key for the overlays is 255, but this can be
changed with the "ColorKey"
option to work around problems in
specific programs. Valid values for the key are 2-255.
This release contains performance enhancements for the G400 and particularly for the G400 MAX. It also includes XvImage support for G200/G400 chips and improved memory autodetection support.
Further information can be found in the mga
man page.
Information about the ATI driver can be found in README.ati. The current version is not accelerated. Acceleration support is planned for a future snapshot.
The "nv" driver supports all Riva TNT accelerators as well as the new GeForce and Quadro accelerators. 3.9.17 adds DGA 2.0 support and performance improvements as well as resolving some rendering correctness issues.
Further information can be found in the nv man page.
This driver is for Voodoo 1 and Voodoo 2 boards. It runs X on top of the 3DFX Glide API (where this is available, like for Linux). You need to have Glide 2.x installed before you can run this driver. This driver uses no hardware acceleration (since there is no 2D acceleration in these boards) but is rather quick anyway since the CPU renders to local RAM which is then copied block-wise to the board. Unfortunately the Voodoo 1/2 boards are rather limited in resolution. The Voodoo 1 can do 800x600 and the Voodoo 2 can do 1024x768 at best, but still it has some use as a second head in Xinerama or multihead mode.
16 and 24 bpp modes are supported (24 bit in 32-bit sparse-packed mode).
Further information about this driver can be found in the 'glide' driver man page for XFree86. You will not get this driver running before reading this man page.
For Voodoo Banshee and Voodoo 3 boards or later: Please use the tdfx driver which talks directly to the hardware and is much faster.