Contents of this section
The XF86_SVGA ViRGE driver supports all current flavors of the S3 ViRGE
chipset.
It uses the XAA acceleration architecture for acceleration, and allows
color depths of 8, 15, 16, 24 and 32 bpp. It has been tested on several 2MB
and 4MB ViRGE cards, a 4MB ViRGE/DX card and a ViRGE/VX card. Resolutions
of up to 1600x1200 have been achieved. As this is the first release of this
driver, not everything may work as expected. Please report any problems
to
XFree86@Xfree86.org
using the appropriate bug report sheet.
- Supports PCI hardware, ViRGE, ViRGE/DX, ViRGE/GX and ViRGE/VX.
- Supports 8bpp, 15/16bpp, 24bpp and 32bpp.
- VT switching seems to work well, no corruption reported
at all color depths.
- Acceleration is pretty complete: Screen-to-screen copy, solid rectangle
fills, CPU-to-screen color expansion, 8x8 pattern mono and color fills.
Currently, the color expansion appears to be substantially faster than
the accel server due to the optimized XAA routines.
- Acceleration at 32bpp is limited: only ScreenToScreen bitblit and solid
rectangles are supported. The ViRGE itself has no support for 32bpp
acceleration, so the graphics engine is used in 16bpp mode.
- All modes include support for a hardware cursor.
- No support for external RAMDACs on the ViRGE/VX.
- No support for VLB cards.
- No support for doublescan modes.
- The driver only works with linear addressing.
- Lines and polygons are not accelerated yet (but XAA still provides some
acceleration in this respect).
The ViRGE SVGA driver supports a large number of XF86Config options, which can
be used to tune PCI behavior and improve performance.
Memory options:
- "slow_edodram" will switch the ViRGE to 2-cycle edo mode. Try this if
you encounter pixel corruption on the ViRGE. Using this option will
cause a large decrease in performance.
- "early_ras_precharge" and "late_ras_precharge" will modify the memory
timings, and may fix pixel corruption on some cards. The default behavior
is set by the BIOS, and is normally "late_ras_precharge".
- "set_mclk value" sets the video memory clock rate to 'value' (in MHz).
The performance of the card is directly proportional to the memory
clocking, so this may provide a performance increase. The BIOS setting
for your card is printed at server start-up. Often, "low-cost" cards
use the S3 default of 50MHz. This can often be exceeded with faster
memory, some cards may function reliably at 60 or 65 MHz (even higher
on some recent /DX and /GX cards). Note
that S3 only officially supports an MCLK of 50MHz and XFree86 does not
encourage exceeding those specs.
*** Note: This option should not be preceded by the "Option" keyword!
Acceleration and graphic engine:
- "noaccel" turns off all acceleration
- "fifo_aggressive", "fifo_moderate" and "fifo_conservative" alter the
settings for the threshold at which the pixel FIFO takes over the internal
memory bus to refill itself. The smaller this threshold, the better
the acceleration performance of the card. You may try the fastest
setting ("aggressive") and move down if you encounter pixel corruption.
The optimal setting will probably depend on dot-clock and on color
depth. Note that specifying any of these options will also alter other
memory settings which should increase performance, so you should at
least use "fifo_conservative" (this uses the chip defaults).
PCI options:
- "pci_burst_on" will enable PCI burst mode. This should work on all but a
few "broken" PCI chipsets, and will increase performance.
- "pci_retry" will allow the driver to rely on PCI Retry to program the
ViRGE registers. "pci_burst_on" must be enabled for this to work.
This will increase performance, especially for small fills/blits,
because the driver does not have to poll the ViRGE before sending it
commands to make sure it is ready. It should work on most
recent PCI chipsets. A possible side-effect is that it may interfere with
DMA operations on the PCI bus (e.g. sound cards, floppy drive).
Cursor:
- "hw_cursor" turns on the hardware cursor.
Color depth options and limitations:
- Pixel multiplexing is used above 80MHz for 8bpp on the ViRGE.
- 15bpp is supported, use "-bpp 15" as an option to the server.
- 24bpp is supported using the STREAMS engine.
- 32bpp uses STREAMS as well; however, because the ViRGE does not really
support 32 bpp "natively", acceleration is quite limited.
- Both 24bpp and 32bpp do not support interlace modes.
Next Chapter, Previous Chapter
Table of contents of this chapter,
General table of contents
Top of the document,
Beginning of this Chapter