Retinal Burn Photo & Design

Status of mach64 branch of DRI
Home
World Trip
More Photos
Linux
Links
 
This page contains mostly information of historical interest, though some of it may still be relevant. I am not currently maintaining the mach64 driver. For info on building the current DRI code with mach64 support or downloading a binary snapshot, see the DRI website. If you are looking for an up-to-date driver which works with X.org and the 2.6 Linux kernel, look there.

Last Updated: Feb. 3, 2005
    mach64-0-0-7-branch
  • This was the current development branch before the merge of the DDX bits to X.org. The 3D driver development continues in the Mesa tree. Development of the DRM kernel component is still being done in a DRI cvs module.

    mach64-0-0-6-branch
  • This is based on XFree86 4.3.0 and Mesa 5.0.x. The BSD port (FreeBSD and NetBSD) of the driver started in this branch. Some DRM kernel module infrastructure changes also began in this branch.

    XFree86 4.2.0 branch (mach64-0-0-5-branch)
  • This branch is based on the DRI trunk as of June 26, 2002 and includes bugfixes from Mesa 4.0.3. The mach64 driver has also been converted to the new drmCommand ioctl interface. This branch is now inactive.

    Original DMA branch (mach64-0-0-4-branch)
  • Added support for DMA, texture blits, AGP texturing, and 2D acceleration. XF6Config config options have been added. See below for a complete list of config file options. This branch is now inactive.

    Mesa 4.x branch (mach64-0-0-3-branch)
  • The original branch for work on merging the mach64 driver with Mesa 4.x and XFree 4.2.0 is tagged mach64-0-0-3-branch. This branch uses insecure client-side PIO/MMIO register programming and is now inactive.

    XF86Config file options (mach64-0-0-4-branch and later)
    These options should be placed in the Device section for the "ati" driver.
    Option "DMAMode"       "async" or "sync" or "mmio"
    Use asynchronous DMA (default), synchronous DMA, or PIO/MMIO to 
    dispatch buffers.
    NOTE: This option has replaced "PseudoDMAMode"
    
    Option "ForcePCIMode"  (boolean)
    Don't use the AGP aperture, even if one exists.
    
    Option "AgpMode"       "1" or "2"
    Set the AGP bus mode to 1x or 2x.  When not set, 
    the mode configured by agpgart will be used.
    
    Option "AgpSize"       "4" - "256"
    Size of the AGP aperture in MB.  The default is 8MB.
    The option given must be a power of 2 in the range listed
    above.
    
    Option "BufferSize"    "1" or "2"
    Size of the DMA buffer memory in MB.  The default is 2MB.
    
    Option "LocalTextures" (boolean)
    By default AGP cards will only use AGP memory for textures.
    To force using local card memory for textures in addition 
    to AGP, you may set this option to true.
    
    The AgpSize option changes the amount of system memory used for the AGP aperture and is not limited by the size of the card's on-board video memory. This memory is used for the DMA buffers (BufferSize option), and the remainder is allocated for AGP textures. Of course, the AgpMode/AgpSize options are ignored for PCI cards or if ForcePCIMode is enabled on an AGP card. However, the BufferSize option can be used to change the size of the DMA buffers in system memory for both PCI and AGP cards (but it's not recommended to reduce the buffer size unless you are short on system RAM).

    TODO
  • The security of the DMA path needs to be improved.
  • DMA needs to be fixed for the PPC platform.
  • The *BSD port is functional on AGP cards, still problems with textures using PCI cards/ForcePCIMode. See Eric Anholt's DRI on BSD page for more info.

    Features and Limitations
  • Cards earlier than the ATI 3D Rage Pro don't have a triangle setup engine and are not supported. This includes VT chips, ATI 3D Rage, ATI 3D Rage II/II+/IIc, and ATI 3D Rage LT. Supported cards include ATI 3D Rage Pro, ATI 3D Rage LT Pro, ATI 3D Rage XL or XC, and ATI 3D Rage Mobility.
  • 2-D acceleration is now enabled. (mach64-0-0-4-branch and later)
  • Offscreen memory used by DRI is freed when no GLX contexts are running and (re)allocated when one or more contexts exist. (mach64-0-0-5-branch)
  • Doesn't support mipmapping. This is a hardware limitation of the mach64.
  • AGP texturing is supported. (mach64-0-0-4-branch and later)
  • Multitexturing is functional (with limitations on texture environment modes -- see below).
  • Fog works if alpha blending is disabled - the mach64 can't do both at the same time.
  • Texture environment modes: GL_BLEND is done in software (not supported by the hardware). Also, the mach64 cannot modulate alpha values, so there are some non-conformant texture environment modes. Although it would be possible to provide a performance/conformance switch via an environment variable, full conformance would mean mostly software rendering.
  • Accelerated points and lines are supported, but smoothing (anti-aliasing) and stippling are done with software fallback.
  • Many of the GL conformance problems (tested with glean) have been fixed in the latest CVS, but there are still some gaps between polygons in places.

Gareth Hughes is the original driver author. Here are his comments on the state of the driver as of the mach64-0-0-1 branch (which was the branchpoint for the current work being done). Gareth was also the author of the original utah-glx driver which was the basis for the DRI driver (I believe that John Carmack of id software also worked on the original utah-glx driver).

   

All images and text © 1998-2006 Leif L. Delgass, All Rights Reserved
(Unless otherwise specified).

Home | World Trip | Photos | Linux | Links



[Blue Ribbon Campaign]