How to add an (S)VGA driver to XFree86 : Directory Tree Structure
Previous: Getting Started
Next: Setting Up The Build Information

## 3. Directory Tree Structure

Here is an outline of the directory tree structure for the source tree. Only directories/files that are relevant to writing a driver are presented. The structure for the Link Kit is presented below.

xc/config/cf/

  site.def

    Local configuration customization

  xf86site.def

    XFree86 local configuration customization

xc/programs/Xserver/hw/xfree86/

  The server source

  common/

    Files common to all of the server (XF86Config parser, I/O device handlers, etc)

    xf86.h

      Contains the `ScrnInfoRec' data structure

    xf86_Option.h

      Contains option flags

    compiler.h

      Contains in-line assembler macros and utility functions

  os-support/

    OS-support layer

    assyntax.h

      Contains macro-ized assembler mnemonics

    xf86_OSlib.h

      OS-support includes, defines, and prototypes

  LinkKit/

    site.def.LK

      Template for Link Kit site.def

  vga256/

    256-color VGA server directories

    vga/

      The generic VGA handling code

      vga.h

        Contains the `vgaVideoChipRec' and `vgaHWRec' data structures

      vgaHW.c

        Contains the generic-VGA-register handling functions vgaHWInit(), vgaHWSave() and vgaHWRestore().

    drivers/

      Contains the SVGA driver subdirectories. Each contains an Imakefile, a .c file for the driver, and a .s file for the bank- switching functions.

  vga2/

    The monochrome vga server directories. Most of the files are linked from vga256, and the differences handled by conditional compilation.

    drivers/

      The SVGA driver subdirectories. The `generic' VGA driver is also located here.

  vga16/

    The 16-color vga server directories. Most of the files are linked from vga256, and the differences handled by conditional compilation.

    drivers/

      The SVGA driver subdirectories.

  VGADriverDoc/

    This documentation and the stub driver.

The Link Kit is usually installed in /usr/X11R6/lib/Server. The Link Kit contains everything that is needed to relink the server. It is possible to write a new driver and build a new server without having even the server source installed.

Server/

  site.def

    Local configuration customization

  include/

    All of the include files listed under the `common' directory above

  drivers/

    All of the SVGA drivers

    vga2/

      The SVGA driver subdirectories.

    vga16/

      The SVGA driver subdirectories.

    vga256/

      The SVGA driver subdirectories.

  VGADriverDoc/

    The directory with this documentation and the stub driver. `vgaHW.c' is also copied here, for reference (it is not built as part of the Link Kit).

How to add an (S)VGA driver to XFree86 : Directory Tree Structure
Previous: Getting Started
Next: Setting Up The Build Information