|
|
Patches committed to DRI CVS (all branches) can be browsed here.
You may also want to check out José Fonseca's DRI FAQ for developers.
Last Updated: Mar. 30, 2003
Current branch (mach64-0-0-6-branch)
- This is the current development branch which is now based on XFree86 4.3.0 and Mesa 5.0.x. (as of Mar. 30, 2003)
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 for
new development, but is still the basis for current binary snapshots.
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. Use the
current branch for testing.
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.
- Asynchronous DMA needs to be fixed for the ppc platform.
- The
driver needs to be updated with the OS independence changes on the DRI
trunk, which will allow porting the driver to *BSD. The DMA security
changes will need to be completed first.
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).
To help test the driver, read my mini-HOWTO on compiling the driver. You can also check the DRI download page, there are mach64 binary snapshots posted there (try the "bleeding-edge" link). Also check out my main Linux page for info on XVideo and tv-out support for mach64.
|