                     Release Notes for XFree86[tm] 4.0.1

                          The XFree86 Project, Inc

                                 3 July 2000

                                  Abstract

     This document contains some information about the features present
     in XFree86 4.0.1 and their status.

1.  Introduction to the 4.x Release Series

XFree86 4.0 was the first official release of the new XFree86 4.  XFree86 4
represents a significant redesign of the XFree86 X server.  Not all of the
hardware drivers from 3.3.x have been ported to 4.x yet, but conversely, 4.x
has some hardware support not present in 3.3.x.  We've attempted to provide
some information about the second point in our Driver Status document.
Please check there first before downloading  4.0.1.

The 4.0.1 has a new configuration tool, "xf86cfg".  It is work in progress,
but definitely worth trying out.  We have also updated the basic text-based
tool "xf86config" to generate config files in the format required by 4.0.1
(3.3.x config files won't really work with 4.0.1).  We're also on a configu-
ration tool that is built-in to the X server.  An early version of this is
included in the release, and it works well for some hardware.  To try it out,
just run (as root) "XFree86 -configure".  Each of these configuration options
will give you a reasonable starting point for a suitable configuration file.
We've put some effort into documenting the 4.0.1 config file format, and you
can find that information in the XF86Config manual page. Check that,  the
driver manual pages and the related documentation for further information.

Oh, another thing you might notice is that our documentation is rather
patchy.  Most of what is present should be in reasonable shape, but there are
gaps.  We thought it better to leave out docs that were very out of date
rather than providing inaccurate and misleading information.  We are looking
for people to also help fill those gaps in <hint hint :->.

Finally, before you download and install the binary distributions for this
release, please have a quick read through the Installation Document.  It may
save you some time.

The next section describes what is new in the latest version (4.0.1).  The
other sections below describe some of the new features and changes between
3.3.x and 4.0.  There is a lot of new features, and we definitely don't have
enough space to cover it all here.

2.  Summary of new features in 4.0.1.

2.1  X server

   o New DRI drivers for Intel i810, Matrox G400 and G200 (AGP only) and the
     ATI Rage 128, and updates to the 3Dfx DRI driver, including Voodoo5 sup-
     port.

   o The X server now runs on Linux/Sparc including drivers for many video
     cards used on SUN hardware.

   o DRI support for the Linux/Sparc implementation that allows 3D direct
     rendering with Creator3D cards.

   o Fixed recently publicized security issues.

   o Update Mesa to the latest version.

   o Xinerama updates and fixes.

   o Xv updates and fixes.

   o Mouse support in DGA 1.0 compatibility mode should now work correctly
     for most games that make use of it.

   o Some bugs with 8+24 overlay support have been fixed.

   o Some XKEYBOARD extension problems have been fixed, including improve-
     ments to the MouseKeys support.

   o Add generic DGA support to the sis, neomagic and i810 drivers.

   o xf86cfg, a new graphical configuration tool for XFree86 4.0, and can be
     used to either write the initial configuration or make customizations to
     the current configuration.  xf86cfg is a work in progress, and allows
     configuration of:

        o Specific setup of monitors, cards, keyboards and mice, as well as
          adding or removing them.

        o Server layout setup, allowing complex configuration of physical
          monitor positions, default color depth and/or rotated monitors.

        o Mode line editor that can be used to configure multiple monitors,
          and allows adding a modeline specific to a monitor directly to the
          configuration file.

        o AccessX configuration interface, that provides an interface to easy
          setup of most AccessX options, including:

             o Timeout to reset controls.

             o StickyKeys, for people with disabilities that cannot press two
               keys at the same time.

             o MouseKeys, mouse control only with the keyboard.

             o RepeatKeys, repeat rate and repeat delay.

             o SlowKeys, to avoid pressing keys accidentally, they're only
               accepted if pressed for some specific amount of time.

             o BounceKeys, helps avoiding multiple key presses by only
               accepting a key if it is pressed only once and not pressed
               again in a specific amount of time.

           New configuration options are being worked on, as well as correct-
     ing some of the bugs in the current options.  A protocol for plugging in
     external modules is also planned.

2.2  X libraries and clients.

   o Thread safety issues have been resolved in a few places in the
     libraries.  Upgrading to the latest libraries is essential for multi-
     threaded X applications.

   o Some fatal bugs in the big font support have been fixed.  Upgrading to
     the latest libraries will fix this too.

   o Fixed recently publicized security issues in some of the X libraries.

   o Updates and bug fixes for some clients, including xedit, xman, xcalc,
     fstobdf, xdm.

   o Fix some xfs problems.

   o XTerm updates.  These include:

        o Improve logfile security.

        o Workaround for fixed fonts which are generated from Unicode fonts:
          they omit glyphs for some xterm's less-used line-drawing charac-
          ters, which caused xterm to set a flag telling it to use only its
          internal line-drawing characters.

        o Limit numeric parameters of control sequences to 65535 to simplify
          checks for numeric overflow.

        o Change index into UDK list to unsigned to guard against numeric
          overflow making the index negative.

        o Add limit checks to ClearInLine(), ScrnInsertChar(), Scrn-
          DeleteChar() to correct potential out-of-bounds indexing.

        o Add a resource (limitResize) limiting resizing via the CSI 4 t and
          CSI 8 t sequences.

        o Ignore out-of-bounds resize requests, i.e., where sign-extension or
          truncation of the parameters would occur.

        o Change Sun function-keys resource name to sunFunctionKeys to work
          around redefinition of the token sun by xrdb on Solaris.  Simi-
          larly, renamed resource sun keyboard to sunKeyboard.  Change simi-
          lar resource names for HP and SCO to avoid potential conflict with
          xrdb symbols on other systems, as well as for consistency.

        o Change line speed from 9600bd to 38400bd to accommodate users who
          mistakenly use $TERM set to vt100, to reduce the effect of padding
          associated with this terminal type.

        o Fix a problem that caused the right scrollbar to be positioned
          incorrectly when re-enabling it.

        o Fix a problem with color support that showed up on some platforms.

        o Modify logic for deleteIsDEL resource so it has internally 3
          states:  unspecified, true and false.  If unspecified, the keyboard
          type determines whether the Delete key transmits <esc>[3~ or \177,
          and the popup menu entry reflects the internal state.  Otherwise,
          the popup menu entry overrides the keyboard type.

        o Portability fixes for os390, AIX 4.2, Digital Unix 4.0 and IRIX
          6.5.

2.3  Fonts and Internationalisation

   o Many of the "misc" bdf fonts have been updated and extended, and a wider
     range of ISO-8859 subsets have been added.  Oblique/italic versions of
     some of them have also been added.

   o The converters in Xlib have been improved and reworked.  UTF-8 support
     has been added.

   o Support for ISO-8859-13 has been added to Xlib and to the UTF-8 convert-
     ers.

   o XKB keyboard definitions have been added and updated for some countries.

   o Locale support for Celtic languages has been updated, and a Compose file
     for ISO-8859-14 added.

2.4  Miscellaneous

   o Preliminary support for Linux/mips (no X servers yet).

   o Update support for BSD/OS.

   o Update Linux/IA64 support.

   o Support for LynxOS 3.1.0.

3.  The new X server

Unlike XFree86 3.3.x where there are multiple X server binaries, each of
which drive different hardware, XFree86 4.0.1 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 4.0.1 has X server support for most UNIX(R) and UNIX-like operating
systems on Intel/x86 platforms, plus support for Linux on Alpha, PowerPC and
Sparc platforms.  Work on support for additional architectures and operating
systems is in progress, and is planned for future releases.

3.1  Loader and Modules

The XFree86 X server has a built-in run-time loader, donated by Metro Link
<URL:http://www.metrolink.com>.  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 mod-
ules to be operating system independent (although not, of course, independent
of CPU architecture).  This means that 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 loader is that when modules are updated,
they do not need to be recompiled for every different operating system.  In
the future we plan to take advantage of this to provide more frequent driver
module updates in between major releases.

The loader in version 4.0.1 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 this release is still subject to
change without notice.  While we will attempt to provide backward compatibil-
ity for the module interfaces as of the 4.0 release (meaning that 4.0 modules
will work with future core X server binaries), we cannot guarantee this.

Note about module security

     The XFree86 X server runs with root privileges, i.e.  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,  otherwise the introduction of viruses and
     contaminated code can occur and wreak havoc on your system.  We
     hope to have a mechanism for signing/verifying the modules that we
     provide available in a future release.

3.2  Configuration File

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.  The X server also
has preliminary support for generating a basic config file.  This is done by
running (as root) "XFree86 -configure".  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 covered here, but please refer to the XF86Config manual
page for more comprehensive information:

   o The Module section is used to load server extension modules and font
     modules, but not XInput drivers.  The .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.  It is strongly recommended that the extension module containing
     a range of small miscellaneous extensions (extmod) be loaded because
     some commonly used things won't work correctly without it.  The follow-
     ing 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 exten-
     sions (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

   o Option flags have been extended and are now used more widely in the con-
     fig file.  Options flags come in two main types.  The first type is
     exactly like the old form:

                   Option "name"

     where the option just has a name specified.  The name is case insensi-
     tive, and white space and underscore characters are ignored.  The second
     type consists of a name and a value:

                   Option "name" "value"

     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 mean-
     ing TRUE: "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 ("), even when
     it is numerical.

   o The ServerFlags section now accepts its parameters as Options instead of
     as special keywords.  The older keyword format is still recognised for
     compatibility purposes, but is deprecated and support for it will likely
     be dropped in a future release.  The DPMS and screen save timeout values
     are now specified in the ServerFlags section rather than elsewhere
     (because they are global parameters, not screen-specific).  This example
     shows the defaults for these:

                   Option "blank time"    "10"
                   Option "standby time"  "20"
                   Option "suspend time"  "30"
                   Option "off time"      "40"

   o The Keyboard, Pointer and XInput sections have been replaced by a more
     general InputDevice section.  The old Keyboard and Pointer sections are
     still recognised for compatibility purposes, but they are discommended
     and support for them may be dropped in future releases.  The old XInput
     sections are no longer recognised.  The keywords from the old sections
     are expressed as Options in the InputDevice sections.  The following
     example shows typical InputDevice sections for the core mouse and key-
     board.

               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"
                   Option     "SampleRate" "80"
               EndSection

   o The Monitor section is mostly unchanged.  The main difference is that a
     set of VESA modes is defined internally in the server, and so for most
     monitors, it isn't necessary to specify any modes explicitly in the Mon-
     itor section.  There is also a new Modes section that can be used to
     define a set of modes separately from the Monitor section, and the Moni-
     tor section may "include" them with the "UseModes" keyword.  The Monitor
     section may also include Options.  Options that are monitor-specific,
     like the "DPMS" and "Sync on Green" options are best specified in the
     Monitor sections.

   o The Device sections are mostly unchanged.  The main difference is the
     new (and mandatory) Driver keyword that specifies which video driver
     should be loaded to drive the video card.  Another difference is the
     BusID keyword that is used to specify which of possibly multiple video
     cards the Device section is for.  The following is an example for a
     Matrox card:

               Section "Device"
                   Identifier "MGA 1"
                   Driver     "mga"
                   BusID      "PCI:1:0:0"
               EndSection

   o The Screen sections are mostly unchanged.  The old Driver keyword is no
     longer used, and a mandatory Identifier keyword has been added.  The
     DefaultColorDepth keyword has been renamed to DefaultDepth.

   o A new section called ServerLayout has been added to allow the layout of
     the screens and the selection of input devices to be specified.  The
     ServerLayout sections may also include options that are normally found
     in the ServerFlags section.  Multiple ServerLayout sections may be pre-
     sent, and selected from the command line.  The following example shows a
     ServerLayout section for a dual-headed configuration with two Matrox
     cards, and two mice:

               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

     See the XF86Config man page for a more detailed explanation of the for-
     mat of the new ServerLayout section.

The config file search patch has been extended, with the directories /etc/X11
and /usr/X11R6/etc/X11 being added.  The full search path details are docu-
mented in the XF86Config manual page.

3.3  Command Line Options

The following new X server command line options have been added:

     -depth n

          This specifies the colour depth that the server is run-
          ning 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 previ-
          ous 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 spec-
          ifying the server behaviour.

     -fbbpp n

          This 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 name

          This 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 name

          This 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 Server-
          Layout section, the first Screen section is used.

     -keyboard name

          This 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 name

          This 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 path

          This 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 over-
          rides the value specified in the config file.  This
          option is only available when the server is started by
          the root user.

     -logfile file

          This specifies the log file name.  When specified here,
          it overrides the default value.  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.

     -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 filename

          This 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.

3.4  XAA

The XFree86 Acceleration Architecture (XAA) has been completely rewritten
from scratch.  Most drivers implement acceleration by making use of the XAA
module.

3.5  Multi-head

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 releases.  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.  This has been improved somewhat with
the INT10 support that is used by most drivers (which allows secondary card
to be "soft-booted", but in some cases there are other issues that still need
to be resolved.  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).

3.6  Xinerama

Xinerama is an X server extension that allows multiple physical screens to
behave as a single screen.  With traditional multi-head in X11, windows can-
not span or cross physical screens.  Xinerama removes this limitation.  Xin-
erama 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 release was
completely rewritten for improved performance and correctness.

Known problems:

   o Most (all?) window managers are not Xinerama-aware, and so some opera-
     tions like window placement and resizing might not behave in an ideal
     way.  This is an issue that needs to be dealt with in the individual
     window managers, and isn't specifically an XFree86 problem.

3.7  DGA version 2

DGA 2.0 is included in 4.0.1, but is not implemented by all drivers.  Prelim-
inary documentation for the client libraries can be found in the README.DGA
document.  A good degree of backwards compatibility with version 1.0 is pro-
vided.

3.8  DDC

The VESA(R) Display Data Channel (DDC[tm]) 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 most of the video drivers.
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 dis-
abled 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.  For some drivers, the X
server's new -configure option uses the DDC information when generating the
config file.

Changed behavior caused by DDC. Several drivers uses DDC information to set
the screen size and pitch.  This can be overridden by explicitly resetting it
to the and non-DDC default value 75 with the -dpi 75 command line option for
the X server, or by specifying appropriate screen dimensions with the "Dis-
playSize" keyword in the "Monitor" section of the config file.

3.9  GLX and the Direct Rendering Infrastructure (DRI)

Precision Insight <URL:http://www.precisioninsight.com> has been provided
with funding and support from Red Hat <URL:http://www.redhat.com>, SGI
<URL:http://www.sgi.com>, 3Dfx <URL:http://www.3dfx.com>, Intel
<URL:http://www.intel.com>, ATI <URL:http://www.ati.com>, and Matrox
<URL:http://www.matrox.com> to integrate the GLX extension for 3D rendering
in an X11 window.  The 3D core rendering component is the Mesa
<URL:http://www.mesa3d.org> library.  SGI has released the sources to the GLX
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 the XFree86 X Server and added a Direct Ren-
dering Infrastructure (DRI).  Direct Rendering provides a highly optimized
path for sending 3D data directly to the graphics hardware.  This release
provides a complete implementation of direct rendering support for the 3Dfx
Banshee and Voodoo3 graphics cards.  Additional direct rendering drivers will
be available for 3Dfx, Intel, ATI and Matrox boards during the second quarter
of 2000.  Updated information on DRI compatible drivers can be found at the
DRI Project <URL:http://dri.sourceforge.net> on SourceForge
<URL:http://www.sourceforge.net>.

3.10  X-Video Extension (Xv)

An XvQueryPortAttributes function has been added as well as support for XvIm-
ages.  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.

3.11  Other extensions

The XFree86-Misc extension has not been fully ported to the new server archi-
tecture yet.  This should be completed in a future release.

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 exten-
sion and some new features should be completed in a future release.

3.12  Drivers

XFree86 4.0.1 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, TI                          |
             |i740        | Intel i740                          |
             |i810        | Intel i810                          |
             |mga         | Matrox                              |
             |neomagic    | NeoMagic                            |
             |nv          | NVIDIA                              |
             |r128        | ATI Rage 128                        |
             |rendition   | Rendition                           |
             |s3virge     | S3 ViRGE                            |
             |sis         | SiS                                 |
             |sunbw2 (+)  | Sun bw2                             |
             |suncg14 (+) | Sun cg14                            |
             |suncg3 (+)  | Sun cg3                             |
             |suncg6 (+)  | Sun GX and Turbo GX                 |
             |sunffb (+)  | Sun Creator, Creator3D and Elite 3D |
             |sunleo (+)  | Sun Leo (ZX)                        |
             |suntcx (+)  | Sun TCX                             |
             |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.

Drivers marked with (+) are for Linux/Sparc only.

3.12.1  APM

This is 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, sup-
port 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 addi-
tions, including overlay of the result. DGA and DGA2 have been tested ok.
Further information can be found in README.apm.

3.12.2  Chips & Technologies

Information about the C&T driver can be found in README.chips.

3.12.3  s3virge

The s3virge driver is a port of the 3.3.x 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:

   o Depth 24 problems resolved with clients using 24/32 bpp pixmaps.

   o Our common acceleration architecture (XAA) has been re-written, as has
     the ViRGE acceleration code.  You should find this version has better
     performance than prior releases.

   o Multi-head is reported to work.

   o The s3virge man page lists options and has configuration notes for this
     release of the driver.

   o Trio 3D and Trio 3D/2X support has been added, matching the 3.3.6
     driver.

   o Supports screen rotation and shadow framebuffer.

Outstanding items not implemented or fully tested:

   o DGA support is implemented, but preliminary and untested.

Further information can be found in README.s3virge.

3.12.4  TGA

The TGA driver is now accelerated and supports both 8 and 32 plane frame-
buffers.  It is known to work under Linux/Alpha.  Please see the
README.DECtga file for further information.

3.12.5  Matrox

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 (non-
destructive) overlays (8-bit + 24-bit).

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.

3.12.6  ATI

Information about the ATI driver can be found in README.ati <URL:ati.html>.
The current version is not accelerated for all supported chips.  Some accel-
eration is included for Mach64 chips.

3.12.7  NVIDIA

The "nv" driver supports all Riva TNT accelerators as well as the GeForce 256
and Quadro accelerators (the GeForce2 and GeForce2 MX are not yet supported).
DGA 2.0 support is included.

Further information can be found in the nv man page.

3.12.8  Glide

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 lim-
ited 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.

3.12.9  GLINT

The "glint" driver supports most 3Dlabs/Texas Instruments GLINT/Permedia
chips. There is a rather complete support (better than in 3.3.x) for acceler-
ation at 8, 15, 16, and 24 bit depths (limited by some chips at some depths).
8+24 overlay is supported. The Xv extension is supported for some boards.

Further information about this driver can be found in the 'glint' driver man
page.

4.  X libraries and clients

4.1  Xaw

Two versions of the Xaw library are provided in this release. A version with
bug fixes and a few binary compatible improvements and a new version with
several new features.

New features:

   o A displayList resource is available to all Xaw widgets. It basically
     consists of a list of drawing commands, fully described in the Xaw(3)
     manual page, that enables a integration of Xaw programs with the new
     window/desktop managers that allows for configurable themes.

   o Some new actions were added to all Xaw widgets, to allow more config-
     urable control of the widgets, and to allow setting resources at run
     time.

   o Since Xpm was integrated into XFree86, programs linked with the new Xaw
     library     will also link with Xpm. This allows for color background
     pixmaps, and also for shaped widgets.

   o The text widget is the widget that will present more changes. These
     include:

        o Block cursor.

        o Compile time limit of 16384 undo/redo levels (that will automati-
          cally grow if the text is not saved when this mark is reached).

        o Overwrite mode.

        o Text killed is inserted in a kill ring list, this text is not for-
          gotten, pressing M-y allows traversing the kill ring list.

        o International support for latin languages is available even if the
          international resource is not set. Users will need to properly set
          the locale environment to make complete use of this feature.

        o A better multiply interface is provided. Pressing C-u,<number>
          (where number can be negative) allows passing parameters for text
          actions.

        o Text can be formatted to have left, right, center or full justifi-
          cation.

        o Text indentation support is also available.

Bug fixes:

   o The simple menu widget geometry management code was improved to solve
     problems with menu entries not visible in the screen.

   o The form widget geometry code was changed to solve problems with integer
     round problems in the child widgets geometry when resizing the parent
     form widget.

   o Several bugs were fixed in the text code, while some code was rewritten
     from scratch.

4.2  Xpm

Version 3.4k of the Xpm (X pixmap) library is now integrated into XFree86.

4.3  xterm

New Features:

   o Support Unix98 PTY's.

   o Support Unicode using UTF-8 input and output.  There are a few limita-
     tions, this work is still in progress:

        o You must use the -u8 command line option to use this feature, as
          well as compile with the OPT_WIDE_CHARS definition.  (The feature
          is compiled when using imake).

        o Input (from keyboard) and output (select/paste) are in UTF-8 form.
          There is no support in Xlib for UTF-8; xterm uses a lookup table to
          map keysym codes.  Select/paste is done either via STRING or using
          the new atom UTF8_STRING.

   o Add optional feature (resource and command-line options) to make xterm
     use the PTY's sense of erase character on startup, rather than requiring
     it to be \177, or set the PTY's erase character to match xterm's config-
     uration.  Note that while $TERMCAP is modified to reflect the actual
     configuration, the terminfo kdch1 string is not.  (This feature is also
     in XFree86 3.3.4).

   o Revised keyboard handling, making two modes (VT220 and Sun/PC) which are
     switched by popup menu.  This makes the numeric keypad work as expected.
     Codes sent by the backarrow and delete keys also are affected.

   o Add parameters to function key escape sequences to indicate if shift,
     control or alt are set.  This works for Sun/PC keyboard mode.

   o Separated command-line and menu settings for reverse video from that
     done under program control.  This is a problem which was introduced by
     X11R6.  Though correct, most users are confused by allowing the reset
     command to undo the effect of the command-line -rv option.

   o Blinking cursor can be specified by resource or popup menu.

   o New control sequences for switching between normal and alternate screens
     maintain separate cursor-save locations for the two screens, avoiding
     incorrect cursor placement on exit from vi.

   o Support line-drawing characters when the font does not include them by
     drawing them.

   o Add support for switching font sizes, by stepping through the font menu
     using shifted keypad plus and minus.

   o New resource trimSelection allows xterm to trim trailing blanks from
     selected lines.

   o Provide user applications a means of determining the version of xterm
     for feature comparison by returning the patch number (e.g., 111) in the
     secondary DA response.

   o Modify treatment of XK_Delete keysym so it transmits parameterized
     VT220-style "<esc>[3~" if modifiers (shift, control alt) are given.

   o Add ``cacheDoublesize'' resource to limit the caching of font informa-
     tion for double-sized characters, to accommodate X terminals with lim-
     ited font memory.

   o Add ``metaSendsEscape'' resource, with corresponding control sequence
     and menu entry.  Like ``eightBitInput'', this causes xterm to send ESC
     prefixing the given key, but applies to all keys and is independent of
     the 8-bit/7-bit terminal setting.

   o Implement an 88-color model for systems where 256-colors cannot be allo-
     cated.

   o Add support for DEC Locator control sequences for xterm.  This allows
     the xterm mouse to be used with applications that use the DEC Locator
     sequences, such as VAX Tpu, or SMG$ based applications.

   o Implement -hold option, allowing users to retain the window after a
     shell has exited.

   o Add an application resource, ``messages'' (and a corresponding -/+mesg
     option) which controls the initial permission on the terminal.

   o Implement UTF-8 translation for Media Copy (print) operations.

   o Implement vt320 control sequences for Print Composed Main Display and
     for Print All Pages.  The latter directs xterm to print the current
     screen as well as the scrollback buffer.

Bug fixes/improvements:

   o If colorMode is enabled by default, compile-in default resources to
     match the colors listed in XTerm-col.ad.

   o Deprecate DA answerback string, making it settable via a resource value
     for applications which may need this.

   o Input characters which are mapped when in vt220 National Replacement
     Character mode.

   o Completed support for double size characters.

   o Remove kfnd/kll/kslt strings from terminfo, because curses applications
     do not necessarily return khome/kend pairs.

   o Corrected ifdef's for menus, which did not allow tek4014 to be sup-
     pressed properly.

   o Improved tests for determining if xterm should use overstriking to simu-
     late bold fonts.

   o Add test/demo scripts for double size characters, font switching, screen
     resizing and colors.

   o Amend treatment of ALT key so that if ALT is used as a modifier in key
     translations, then no parameter will be sent in escape sequences for
     Sun/PC function keys.

   o Improved the ptyInitialErase logic to make it work better with a ter-
     minfo library.

   o Modify treatment of line-drawing characters in UTF-8 mode so that Uni-
     code values are used rather than characters 1-31 for storing the trans-
     lated characters.

   o Modify translation of UTF-8 sequences to reject ``overly long'' varia-
     tions.

   o Correct a case where colors were not rendered properly.  This happened
     when an application inserted several lines, then changed colors.  If
     this was done all in one write, then there would be no intervening
     refresh, and the new color was applied to the pending scrolling opera-
     tion which was awaiting the next refresh.

   o Corrected misspelled resource name in command-line option for HP func-
     tion keys.

   o Change label on ``Sun/PC Keyboard'' popup menu entry to ``VT220 Key-
     board'', since the checked state corresponds to VT220 rather than
     Sun/PC.

   o Two corrections to simulation of bold font via overstriking:

        o use clipping to avoid leaving trash at end of the text, and

        o add brackets so wide-character logic does not fall-through into the
          overstriking logic.

   o Modify checks for repeat-character control sequence to test the charac-
     ter class against xterm's state table, rather than the isprint() macro.

   o Modify terminfo entry for ``xterm-xfree86'' to reflect modifiers for
     shift and control.

   o Add several entries to termcap file to make it have the same set of
     aliases as the terminfo file.

   o Scale the color values used for xterm-256color terminfo entry to
     0..1000, as expected by ncurses.

   o Change xterm-r6 terminfo definitions for F1-F4 to match program.

   o Remove obsolete documentation about modifiers which can be returned in
     mouse tracking mode, and modify logic to ignore modifiers other than the
     existing ones, e.g., NumLock.

   o Use free bit from obsolete shift-modifier coding of mouse tracking but-
     ton events to encode buttons 4 and 5, e.g., for a wheel mouse.  Move the
     suggested wheel-mouse button translations into charproc.c to simplify
     customization.

   o Modify warning if change-ownership of PTY fails; some configurations may
     not happen to have old-style PTY's.

   o Add more information, i.e., with strerror for some system calls in the
     main program which may fail due to insufficient permissions.

   o Various improvements to configure script, e.g., tests for utmp.

4.4  xedit

Xedit have been changed to use most of the new features added to the new ver-
sion of the Xaw library, and some xedit only features were added. Emacs users
will find that several of the emacs key bindings work with the new version of
xedit. These include:

   o File name tab completion. Including a Emacs dired like window, that will
     be shown when there are more than one match, when C-x,d is pressed, or
     when a directory name is specified.

   o An unlimited number of files can be edited at the same time. Including
     multiple views of the same or different files.

   o The line number of the cursor position is always visible. It can also be
     customized to show the column number, the position offset and the cur-
     rent size of the file.

   o There is an autoReplace resource, that enables automatic text replace-
     ment at the time text is typed. This feature is useful to create simple
     macros, or to correct common spelling errors.

   o A fully featured ispell interface is also available. This interface is
     expected to provide most of the features of the terminal interface of
     the ispell program, with some extra features that include:

        o A compile time limit of 16 undo levels.

        o Terse mode switch.

        o Dictionary change.

        o The interface also checks for repeated words.

   o A first tentative to add programming modes was done. Currently, there is
     one mode:

        o C-mode: this mode is expected to be stable, and fully usable.

5.  Fonts and Internationalisation

Details about the font support in this version of XFree86 can be found in the
README.fonts document.

5.1  TrueType support

This version of XFree86 comes with two TrueType backends, known as `xfsft'
(the "freetype" module) and `X-TrueType' (the "xtt" module).  Both of these
backends are based on the FreeType library.

5.2  CID font support

Support for CID-keyed fonts is included in this version of XFree86.  The CID-
keyed font format was designed by Adobe Systems <URL:http://www.adobe.com>
for fonts with large character sets.  The CID-keyed font support in XFree86
was donated by SGI <URL:http://www.sgi.com>.  See the LICENSE document for a
copy of the CID Font Code Public License.

5.3  Internationalisation of the scalable font backends

A new ``fontenc'' layer has been added to allow the scalable font backends to
use a common method of font re-encoding.  This re-encoding makes it possible
to uses fonts in encodings other than their their native encoding.  This
layer is used by the Type1 and Speedo backends and the `xfsft' version of the
TrueType backend.  The `X-TrueType' version of the TrueType backend uses a
different re-encoding method based on loadable encoding modules.

5.4  Large font optimisation

The glyph metrics array, which all the X clients using a particular font have
access to, is now placed in shared memory, so as to reduce redundant memory
consumption.  For non-local clients, the glyph metrics array is transmitted
in a compressed format.

5.5  Unicode/ISO 10646 support

What is included:

   o All ``-misc-fixed-*'' BDF fonts are now available in the ISO10646-1
     encoding and cover at least the 614 characters found in ISO
     8859-{1-5,7-10,14,15}, CP1252, and MES-1. The non-bold fonts also cover
     all Windows Glyph List 4 (WGL4) characters, including those found in all
     8-bit MS-DOS/Windows code pages. The 8-bit variants of the ``-misc-
     fixed-*'' BDF fonts (ISO8859-1, ISO8859-2, KOI8-R, etc.) have all been
     automatically generated from the new ISO10646-1 master fonts.

   o Some ``-misc-fixed-*'' BDF ISO10646-1 fonts now cover a comprehensive
     Unicode repertoire of over 3000 characters including all Latin, Greek,
     Cyrillic, Armenian, Gregorian, Hebrew, IPA, and APL characters, plus
     numerous scientific, typographic, technical, and backwards-compatibility
     symbols. Some of these fonts also cover Arabic, Ethiopian, Thai,
     Han/Kanji, Hangul, full ISO 8859, and more. For the 6x13 font there is
     now a 12x13ja Kanji extension and for the 9x18 font there is a 18x18ja
     Kanji/Han/Hangul extension, which covers all ISO-2022-JP-2 (RFC 1554)
     characters. The 9x18 font can also be used to implement simple combining
     characters by accent overstriking. For more information, read Markus
     Kuhn's UTF-8 and Unicode FAQ <URL:http://www.cl.cam.ac.uk/~mgk25/uni-
     code.html>.

   o Mark Leisher's ClearlyU proportional font (similar to Computer Modern).

   o ISO 10646/Unicode UTF-8 Level 1 support added to xterm (enabled with the
     -u8 option).

   o Both the xfsft (the "freetype" module) and the X-TrueType (the "xtt"
     module) TrueType font backends support Unicode-encoded fonts.

Known problems:

   o Xlib does not yet fully support UTF-8 as a locale, which means that
     xterm UTF-8 keyboard support is at the moment a temporary hack.

   o Most ISO10646-1 fonts encode no characters above U+31FF. This avoids the
     inefficient allocation and transmission of a >700 kB large XFontStruct
     structure, which would happen if the (not very important) ligatures and
     symbols above U+f000 were present.

   o ISO 10646 Level 2 combining characters are not yet supported by xterm
     (will be needed for instance for Thai and IPA).

   o Switching between a half-width and full-width font pair (such as 9x18
     and 18x18ja) is not yet supported by xterm (will be needed for CJK
     scripts).

5.6  Lucidux fonts from Bigelow and Holmes

XFree86 now includes the ``Lucidux'' family of professionally hinted Type 1
fonts.  This family consists of the fonts ``Lucidux Serif'', ``Lucidux Sans''
and ``Lucidux Mono'' in Roman and oblique variants, and includes over 370
glyphs in each font covering among others the glyphs needed for ISO 8859-1,
2, 3, 4, 9 and 15.  Bold variants will be included in a future release.  The
design and font outlines were donated by Charles Bigelow and Kris Holmes from
Bigelow and Holmes Inc., and the hinting was donated by Berthold Horn and
Blenda Horn from Y&Y, Inc.  For more information, please contact
<design@bigelowandholmes.com> or <sales@yandy.com>, or consult Y&Y's web site
<URL:http://www.yandy.com>.

6.  Miscellaneous

6.1  Directory rearrangements

Some changes to the installed XFree86 directory structure have been imple-
mented for 4.0.  One important change is a modified search path for the X
server's XF86Config file.  The details of this can be found in the XF86Config
manual page.  The other main change is moving most of the run-time configura-
tion files to /etc/X11, with symbolic links in the old /usr/X11R6/lib/X11
location pointing to the new location.  Some run-time generated files are now
located under the appropriate subdirectories of /var, again with the relevant
symbolic links in the old location.

     Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml,v 1.42 2000/07/03 16:27:10 dawes Exp $

