Computer Science
libvga.config(5) Svgalib User Manual libvga.config(5)
NAME
libvga.config, svgalibrc - the svgalib configuration file
DESCRIPTION
The svgalib configuration is usually located in
/etc/vga/libvga.config though one can reconfigure this
location when recompiling svgalib.
In the configuration file, everything between a # and the
end of the line is ignored. Empty lines are also ignored.
Since the driver you will use may not know all config
options here, unknown commands are silently ignored.
Please think of that when something does not work as you
expect. I know this is a nuisance because misformed con-
figuration statements do not cause errors. Multiple com-
mands are allowed in one line, and commands can exceed
lines.
Actually, svgalib simply reads a list of whitespace sepa-
rated tokens from the file until it finds one it knows and
it then assumes the following tokens to be arguments of
that command until one is encountered which may not be an
argument.
New style options are in general case insensitive whereas
the old style options are case sensitive. The old style
options are included to allow for old config files still
being used. For completeness they are documented in the
OBSOLETE COMMANDS section. You should not use them any-
more.
In addition, svgalib(7) parses the files ~/.svgalibrc and
the file given in the environment variable SVGALIB_CON-
FIG_FILE.
Finally, the contents of the environment variable
SVGALIB_CONFIG are parsed like the files before.
Configuration commands which control hardware settings
that might cause harm to your hardware are called priv-
iledged. By default the priviledged commands can only be
used in the main configuration file /etc/vga/libvga.config
for safety (s.t. a non root user can not cause any harm to
your hardware by misconfiguring svgalib(7)).
Enable them in the other locations as well with the com-
mand overrideenable in the main config file. BEWARE!
This allows every user to change the monitor and clocks
(and other configs) and thus damaging the hardware. I
strongly discourage the use of overrideenable except for
debugging/testing purposes.
REQUIRED CONFIGURATION
Please do not allow the vastness of options to confuse
you. Generally svgalib uses well choosen defaults and is
able to autodetect everything. Thus generally you don't
need to specify much. When installing svgalib it provides
a sample /etc/vga/libvga.config file which contains most
of the required configuration. Just edit it to your needs.
Generally you only need to use:
mouse To specify if you use anything else then a
Microsoft compatible mouse.
mdev If the mouse device file is not /dev/mouse which is
generally a symbolic link to the actual mouse
device file. You will usually need to use this com-
mand if you want to use the SpaceTec Spaceball
device (which is not your usual mouse).
setRTS, clearRTS, leaveRTS, setDTR, clearDTR, and leaveDTR
if your mouse needs it to enter your desired mouse
protocol.
monitor, or (better) HorizSync and VertRefresh
to specify the capabilities of your monitor.
If you use the EGA chipset driver
monotext or colortext
to specify if your EGA card is in monochrome or
color configuration.
If you use the Mach32 chipset driver
You should consider reading svgalib(7).
Clocks clock1 clock2 clock3 ...
to specify the Mach32 clocks. This is mandatory.
However, if you omit it. svgalib will autodetect
clocks and modify your /etc/vga/libvga.config file
and abort. After this, every svgalib application
started will find the proper Clocks command.
mach32eeprom /etc/vga/mach32.eeprom
is recommended to avoid slowish reads of the Mach32
EEPROM which will also cause annoying screen flick-
ering.
If you use the Mach64 chipset driver
Chipset Mach64
if you want to use the experimental pre-alpha
driver
If you use the S3 chipset driver
I don't have much knowledge on the S3, but it seems to me
that you need:
Clocks clock1 clock2 ...
to specify the clocks (take them from your Xfree86
configuration).
or
ClockChip icd2061a number
if you have an Icd2061a clockchip.
Ramdac chipname
if your Ramdac is not detected properly.
Dacspeed speed
if the default choosen is not right (probably too
restrictive).
The remaining options are really only to be used in case
of problems which you'll not generally encounter.
GENERAL OPTIONS (HANDLED BY THE MAIN MODULE)
Mouse configuration
mouse mousetype
where mousetype is one of: Microsoft, MouseSystems,
MMSeries, Logitech, Busmouse, PS2, MouseMan, gpm,
Spaceball, none, IntelliMouse, or IMPS2. mousetype
can also be a number (0 - 9) for the keywords
Microsoft - none.
gpm allows for (hopefully) peaceful interaction
with gpm, Spaceball enables support for the 6-axes
Spacetec Spaceball mouse (well, probably more like
a trackball), IntelliMouse and IMPS2 refer to the
Microsoft IntelliMouse or Logitech MouseMan+, where
IntelliMouse is for serial port and IMPS2 for such
a mouse on the PS/2 port.
Note that it is not possible to specify the
Microsoft IntelliMouse or Logitech MouseMan+ by a
number. This is due to historical and compatibility
reasons.
mouse_override
This command is only available if ALLOW_MOUSE_OVER-
RIDE was set in Makefile.cfg when svgalib was com-
piled (which is the default).
If given, svgalib ignores any mouse type the pro-
gram specifies but uses the type configured with
the mouse command.
For example, DOOM does not recognize MouseMan as a
valid mouse type and defaults the mouse type to
MouseSystems. This command allows to make svgalib
ignore whatever DOOM specifies and use MouseMan
anyway.
mdev mousedevice
Usually /dev/mouse (the default) will be a link to
the mouse device. However, esp. with the Spacetec
Spaceball you may want to specify a different
device for svgalib(7) to use:
mdev /dev/ttyS0 # mouse is at /dev/ttyS0
Some multiprotocol mice use the state of RTS and DTR to
find out which protocol to enable:
setRTS set the RTS wire.
clearRTS
clear the RTS wire.
leaveRTS
leave the RTS wire alone (default) (Wire is usually
set)
setDTR set the DTR wire.
clearDTR
clear the DTR wire.
leaveDTR
leave the DTR wire alone (default) (Wire is usually
set)
For example my mouse can emulate Microsoft and MouseSys-
tems. It needs a low RTS to go into MouseSystems mode.
Thus I use:
mouse MouseSystems clearRTS
Still I could just use mouse Microsoft and use the mouse
with that protocol.. But then only 2 buttons instead of 3
are supported (not that I know many svgalib programs that
uses more than 2 buttons.)
Other mice might need clearDTR as well or one set and
clear. Try yourself.
Note: Having crtscts handshake enabled on the mouse tty
may interfer with this options. Do not do that.
Finally, a special goodie for wheel mice:
mouse_fake_kbd_event upscancode downscancode
sends a fake keyboard event to the program when the
wheel on a Microsoft IntelliMouse, Logitech Mouse-
Man+, or similar wheel mouse is turned.
The up and down scancodes are the scancodes of the
keys to simulate when the wheel is turned up and
down, respectively.
The following can be specified for the scancodes:
letters (A-Z), numbers (0-9), function keys
(F1-F12), or any of the following - ESCAPE, MINUS,
EQUAL, BACKSPACE, TAB, BRACKET_LEFT, BRACKET_RIGHT,
ENTER, LEFTCONTROL, SEMICOLON, APOSTROPHE, GRAVE,
LEFTSHIFT, BACKSLASH, COMMA, PERIOD, SLASH, RIGHT-
SHIFT, KEYPADMULTIPLY, LEFTALT, SPACE, CAPSLOCK,
NUMLOCK, SCROLLLOCK, KEYPAD7, CURSORUPLEFT, KEY-
PAD8, CURSORUP, KEYPAD9, CURSORUPRIGHT, KEYPADMI-
NUS, KEYPAD4, CURSORLEFT, KEYPAD5, KEYPAD6, CURSOR-
RIGHT, KEYPADPLUS, KEYPAD1, CURSORDOWNLEFT, KEY-
PAD2, CURSORDOWN, KEYPAD3, CURSORDOWNRIGHT, KEY-
PAD0, KEYPADPERIOD, KEYPADCENTER, RIGHTCONTROL,
CONTROL, KEYPADDIVIDE, PRINTSCREEN, RIGHTALT,
BREAK, BREAK_ALTERNATIVE, HOME, CURSORBLOCKUP,
PAGEUP, CURSORBLOCKLEFT, CURSORBLOCKRIGHT, END,
CURSORBLOCKDOWN, PAGEDOWN, INSERT.
Note that this option has no effect unless the
IntelliMouse or IMPS2 mouse type is used (see
above). Also note that the simulated keypresses are
instantaneous, so they cannot be used for functions
that require a key to be held down for a certain
length of time.
This example simulates a press of the left bracket
([) when the wheel is turned up and a press of the
right bracket (]) when the wheel is turned down
(good for selecting items in Quake II):
mouse_fake_kbd_event BRACKET_LEFT BRACKET_RIGHT
Mouse acceleration
Svgalib versions 1.3.0 and later use the following com-
mands to control the logarithmic mouse acceleration:
mouse_force
If given, force use of input parameters even
if they seem strange.
mouse_maxdelta <integer>
Set max delta BEFORE acceleration.
mouse_accel_maxdelta <integer>
Set max delta AFTER acceleration.
mouse_accel_thresh <integer>
Set acceleration threshold.
mouse_accel_power <float>
Set input variable for power mode.
mouse_accel_mult <float>
Set acceleration factor.
mouse_accel_type {0|off|normal|power|linear}
Set the type of acceleration. The following
strings are valid values:
0 or off
No acceleration.
normal No acceleration while delta is less
than mouse_accel_thresh but multi-
plied by mouse_accel_mult if more.
Originally done by Mike Chapman
<mike@paranoia.com>.
power The acceleration factor is a power
function of delta until it reaches
mouse_accel_mult After that it's a
simple multiplication. Basically
it's like the normal mode but the
acceleration factor grows as you
move your mouse faster and faster,
not just turns in and out. If the
acceleration factor reaches
mouse_accel_mult it turns into a
plain multiplication.
Threshold has the same meaning as in
normal mode. The one I use for
*uaking... :)
It is calculated like this:
if (abs(dx) > 1) /* to prevent los-
ing resolution */
dx = (abs(dx) >=
mouse_accel_thresh ) ?
(float)dx *
mouse_accel_mult :
(float)dx *
m_accel_powertable[abs(dx)];
linear The acceleration factor grows linear
with the delta until it reaches
mouse_accel_thresh. After that it
is a simple mutiplication. (I know
that it can be done with setting
mouse_accel_power to 1, but it was
one minute to implement... and uses
no memory... and...)
It is calculated like this:
if (abs(dx) > 1)
dx = (abs(dx) >=
mouse_accel_thresh ) ?
(float)dx *
mouse_accel_mult :
(float)dx * abs(dx) *
mouse_accel_mult /
mouse_accel_thresh ;
The enhanced acceleration was done by 101 (Attila
Lendvai) <101@kempelen.inf.bme.hu>
Joystick configuration
As of now, svgalib supports up to four joystick devices.
You must have joystick support in your kernel to support
this.
joystick0 device
sets the device name to use for joystick 0. The
commands joystick1, joystick2 and joystick3 config-
ure the other joysticks. By default the names
/dev/js0, /dev/js1, /dev/js2 and /dev/js3 are used.
Keyboard configuration
kbd_fake_mouse_event scancode [flag(s)] command [argument]
, as it says, sends a fake mouse event to the pro-
gram. Scancode is a raw scancode as you can find
them in <keyboard/vgakeyboard.h>.
Supported flag(s) are:
down trigger event when the key is pressed
(default).
up the opposite.
both trigger in both case, if pressed or
released.
repeat repeat events if the key is kept pressed
(off by default).
Supported commands are:
delta[xyz]
send a fake delta event as if you have moved
your mouse. If the parameter is off or on it
will turn off/on the respective mouse axis
(requires a parameter, of course)
button[123]
send a fake event that the mouse button is
pressed or released as given by the parame-
ter (pressed or released)
Here are some examples:
This is one I use in *uake: it turns around, looks
down a bit and when the key is released it does the
opposite, so it gets back to the starting state.
With this one and the help of a rocket you can fly
though the whole map :) (Scancode 28 is <Enter>):
kbd_fake_mouse_event 28 both deltax 8182
down deltay -1500
up deltay 1500
This one will switch off the y axis of the mouse
while the key <Right Ctrl> is kept pressed.
kbd_fake_mouse_event 97 down deltay off
up deltay on
This one is the same as if you were pressing the
left mouse button. (But if you move your mouse then
the button state will reset even if you keep <Right
Ctrl> down...)
kbd_fake_mouse_event 97 down button1 pressed
up button1 released
NOTE: This does only work when the keyboard is in
raw keyboard mode!
Yet another feature brought to you by 101 (Attila
Lendvai) <101@kempelen.inf.bme.hu>
nosigint
This command disables generation of a SIGINT signal
when <Ctrl-C> is pressed.
This works regardless of ordinary or raw keyboard
mode (albeit the hot key might be different from
<Ctrl-C> in the first case).
Note that this is a very dangerous option. Dis-
abling SIGINT will lock you in programs which can
only by quit by <Ctrl-C>! However, there were
request for it for Quake playing.
sigint (default)
Enables generation of SIGINT.
Monitor configuration
HorizSync min_kHz max_kHz
VertRefresh min_Hz max_Hz
specifies the range of frequencies acceptable to
your monitor. They obsolete the monitor settings
below, and this shouldn't be used if HorizSync and
VertRefresh are defined. Examples:
HorizSync 31.5 35.5
VertRefresh 50 70
monitor monitor_class
where monitor_class is a digit 0 - 6 or the maximal
horizontal frequency in kHz. Examples:
monitor 0 # Max horizontal sync is 31.5 kHz
monitor 1 # Max horizontal sync is 35.1 kHz
monitor 2 # Max horizontal sync is 35.5 kHz
monitor 3 # Max horizontal sync is 37.9 kHz
monitor 4 # Max horizontal sync is 48.3 kHz
monitor 5 # Max horizontal sync is 56.0 kHz
monitor 6 # No restrictions.
For your convenience you may specify the max hori-
zontal sync explicitly. The correct class will the
be chosen. You may use floats consisting of digits
and a decimal point for this too:
monitor 40.0 # equivalent to monitor 3
This command is priviledged.
Mode timings
It is now possible to define modetimings for some cards
(see the info on your card in svgalib(7)). The syntax is:
modeline label pxcl HDsp HSS HSE HTot VDsp VSS VSE VTot
flags
label string
(ignored by svgalib) mainly there to be com-
patible with XF86Config. I use the format
"Width x Height @ Vert.Refresh", but that's
just personal taste...
pxcl float
the pixel clock in MHz
HDsp
VDsp integer
size of the visible area (horizontal/verti-
cal)
HSS
VSS integer
Sync start (horizontal/vertical)
HSE
VSE integer
Sync end (horizontal/vertical)
HTot
VTot integer
Total width/height (end of back porch)
flags +hsync -hsync +vsync -vsync interlace inter-
laced
Sync polarity, interlace mode
Everything should be on one line. The values for the hor-
izontal timings must be multiples of eight.
These are prefered over the default timings (if monitor
and chipset can handle them). The format is identical to
the one used by XFree86, but the label following the mode-
line keyword is ignored by vgalib.
Here some examples:
modeline 640x480@100 43 640 664 824 848 480 483 490 504
modeline 800x600@73 50 800 856 976 1024 600 637 643 666
modeline 1024x768@75 85 1024 1048 1376 1400 768 771 780
806
IMPORTANT! Not all drivers, that is SVGA cards, use the
values. Only drivers using timing.c. As of this writing,
drivers using this feature are: Ark, Cirrus, Chips & Tech-
nologies, S3.
The Mach32 driver provides a similar feature separately,
you have to use the define command described below.
ET4000, ET6000 (and to some extent EGA) allow one to use a
binary file created by some utility. All other chipset
driver use predefined timings that are hardcoded in regis-
ter dumps within the drivers. See svgalib(7) and
svgalib(7) for more information.
Chipset detection
Usually svgalib does a good job autodetecting your hard-
ware. However, if auto detection fails (or you want to
fall back to a simpler driver, say VGA, as a bug work
around), you may force detection of your chipset with
chipset type
where type is (currently) one of: VGA, ET4000, Cir-
rus, TVGA, Oak, EGA, S3, ET3000, Mach32, GVGA6400,
ARK, ATI, ALI, Mach64, C&T, APM, NV3, ET6000, and
VESA.
You can also specify a number in range 1 - 15 to
specify the type-th chipset type or 0 to enforce
autodetection.
Warning, incorrect settings may damage your hard-
ware. This command is priviledged.
chipset type param1 param2
use this from if the size of memory or an addi-
tional configuration option is misdetected. For
example:
chipset Mach32 0 2048
Note that always two integers have to be specified.
Usually (Mach32) the second parameter is the memory
amount. Look at the *_init function of the specific
device driver sources or information on that type
of cards in svgalib(7).
Note that there is a more convenient command setu-
plinear for enforcing specific memory-aperture con-
figurations for Mach32
This command is priviledged.
Specific options required for the EGA-driver.
monotext
Card is in monochrome emulation mode
colortext
Card is in color emulation mode
This command is priviledged.
RAMDAC configuration
Some chipsets (e.g. S3 and ARK) allow specifying a RAMDAC
type. If your RAMDAC is not autodetected, you can try
specifying it:
Ramdac Sierra32K
Ramdac SC15025
Ramdac SDAC
S3 SDAC
Ramdac GenDAC
S3 GenDAC
Ramdac ATT20C490
AT&T 20C490, 491, 492 (and compatibles)
Ramdac ATT20C498
AT&T 20C498
Ramdac IBMRGB52x
IBM RGB524, 526, 528 (and compatibles)
BEWARE! The Mach32 driver features an own ramdac command
(which is usually not required). If you have a Mach32, see
svgalib(7).
Dacspeed speed
speed is a floating point number in MHz (like in
Dacspeed40.0") specifying the maximal allowable
pixel clock of the Ramdac in use. Currently this
option is only supported by the S3 driver. The
Mach32 driver supports maxclock8, maxclock16, max-
clock24, and maxclock32 commands which have a simi-
lar effect. Nevertheless, the Mach32 has a very
good idea on the capabilities of the Ramdac in use.
The settings are more intended to specify the VGA
memory bandwidth.
Pixel clocks
Clocks list of clock values as floats or ints
Some chipsets need a list of dot clocks for optimum
operation. Some includes or supports a pro-
grammable clock chip. You'll need to specify them
here.
Fixed clocks example: (The following is just an
example, get the values for your card from you X
setup)
Clocks 25.175 28.3 40 70 50 75 36 44.9 0 118 77
31.5 110 65 72 93.5
BEWARE! The Clocks command for the Mach32 features
only integer clocks. Please round your clocks to
the next integer data. The Mach32 only uses these
values to check monitor requirements and to compare
the quality of modes. The rounding errors are of no
importance there as the difference in the resulting
monitor timings is barely measurable. See the
Mach32 section below.
Clockchip ICD2061A
Configure for a programmable clockchip. ICD2061A
is the only one supported right now.
Miscanellous options
security revoke-all-privs
Make sure it is impossible to regain root access
after vga_init(3) was called. (default)
security compat
For compatibility to pre 1.2.11, do not close a
security hole using saved uids.
verbose
Mach32: show messages while processing all info to
build up a mode table.
quiet Turn verbose messages off (default).
nolinear
Inhibit use of a linear mmaped frame buffer.
linear Allow (not enforce!) use of a linear mmaped frame
buffer.
overrideenable
Allow priviledged commands outside the main config-
uration file.
Common options currently used by Mach32 only
Options that may be useful for all drivers, but currently
are only supported by Mach32 (Please read
svgalib(7) if you use one):
maxclock16 maxclk
The maximum pixel clock to use for 16bpp modes.
This is used by Mach32 to find out which settings
may be used for 16bpp modes. the Mach32 default
for this is 2000, thus it is effectively switched
off. maxclk must be an integer.
maxclock24 maxclk
The maximum clock to use for 24bpp modes. (see
above) Experience showed that the Mach32 default 49
is good for my 2MB VRAM card.
maxclock32 maxclk
The same for 32bpp modes (24bpp with one fill byte
for faster memory access (not fully implemented
(esp. for Mach32) yet). Mach32 default (good for
my VRAM card) is 39.
maxclock8 maxclk
Just for completeness the same for 8bpp modes (I
doubt anyone needs it), default is 2000 to disable
this feature.
The maxclock commands are priviledged.
clocks list of clocks
Sets the frequencies of the clocks the chips can
generate. Exactly 16 values have to be specified
for mach32. Use 0 to disable a specific clock.
Note that the mach32 can divide clocks by 2. Thus
there are actually 32 clocks And you can also use
the divided clocks in a define command. On con-
trary to Xfree96 or the clocks command above only
integers are allowed for Mach32. Simply round them
to the nearest integer.
This line is mandatory for Mach32. If it is not
there it will be auto detected and added at the
beginning of the config file. The program will then
exit and when you start it next, everything should
be ok.
Common clock values for Mach32:
Clock chip 18811-0:
clocks 43 49 92 36 50 56 0 45
30 32 110 80 40 45 75 65
Clock chip 18811-1:
due to Xfree86 info valid for: Ultra pro
ISA, Ultra pro EISA, Ultra pro VLB(68800-3)
clocks 100 126 92 36 50 56 0 45
135 32 110 80 40 45 75 65
Clock chip 1881 (ICS2494):
due to Xfree86 info valid for: Ultra pro VLB
(6880006)
clocks 18 22 25 28 36 44 50 56
30 32 37 39 40 0 75 65
In my own correspondence with ATI they say every
Mach32 would have a 18811-1, so it should be possi-
ble just to take the 18811-1 line. However I have
now reports of third party cards and motherboards
with on board Mach32 chips, so be careful.
Please read svgalib(7) for additional info
on clocks.
The clocks command is priviledged.
variablelinelength
Sometimes a mode cannot be realized with the logi-
cal linelength = pixels in a row * bytes per pixel.
(definitely true for Mach32 800x600). The default
behavior of Mach32 is to adjust xbytes (see
vga_getmodeinfo(3)) in the info table appropri-
ately.
This command enforces this default operation and
adjusts xbytes appropriately, thus overriding the
standard svgalib mode. This may yield to problems
with ..umm.. not well designed applications.
duplicatelinelength
Don't touch the standard mode but create an exact
copy, a dynamic mode, with the adjusted xbytes
value. Expect noise at some pixels in 800x600 for
more than 256 colors on Mach32 when not using the
dynamic mode.
strictlinelength
Same as above but delete the standard mode thus
creating the non conforming xbytes modes only as
dynamic modes.
To enforce the standard linelength for non-conforming
modes use setlinelength below.
The linelength commands are not priviledged.
In the following commands a mode is specified with
horzXvertXcolors. Valid settings for colors in the mach32
driver are: 256, 32K, 64K, 16M, 16M4. 16M4 is for the 16M
colors with 32bpp modes. These are expected to support
slightly faster drawing.
Examples: 640x480x256, 1024x768x64K, etc...
inhibit mode1 [mode2 mode3...]
Switch the specified SVGA-Modes off. For example:
inhibit 800x600x32K 800x600x64K 800x600x16M
disallows the maybe toasted mach32 800x600 modes.
The inhibit command is not priviledged.
setlinelength length mode1 [mode2 mode3...]
Force the logical line length (xbytes) in the given
modes to length pixels (not bytes!). See also vari-
ablelinelength, strictlinelength, and duplicate-
linelength above. For example:
setlinelength 800 800x600x32K 800x600x64K
800x600x16M
sets the linelength, and thus xbytes, for the
800x600 modes to the equivalent of 800 pixels. For
Mach32 this will give badly designed applications
an 800x600 with which they can cope. However, the
Mach32 will generate a noisy video signal in some
configurations.
The setlinelength command is not priviledged.
define mode1 [mode2 mode3...] clock horz_timing
vert_timing flags
where clock is a clock in MHz (as an integer! Has
to be known by the driver. (one of the set clocks,
or the exact half of one)). Only clocks in a clocks
command issued before the define can be used.
You may use :n to specify the n-thclock (n = 0 ..
31 for mach32).
horz_timing is four integers: hdisp h_sync_strt
h_sync_wid h_total.
vert_timing has the same format but for vertical.
You may specify one or more flags out of: Inter-
lace, +vsync, -vsync, +hsync, or -hsync to select
interlace mode and polarity of sync signals. This
format is almost the same Xfree uses, s.t. you may
use their mode table and the modegen spreadsheet
package for mode creation. You simple need to round
the clock to the next integer, add the resolution
instead of the timing name for Xfree and replace
the modeline keyword with define. Here is a
1024x768x256 mode as example:
define 1024x768x256 80 1024 1024 1184 1312
768 768 772 791 +vsync -hsync
or
define 1024x768x256 1024x768x32K 1024x768x64K
:11 1024 1024 1184 1312 768 768 772 791
(yes any whitespace in a command is allowed, even a
newline !)
Both commands define the same timings (if the 11-th
clock is 80) but the first explicitly specifies the
polarity of sync signals whereas the second
declares that these timings are also to be used for
a 32K and 64K mode.
The define command is priviledged.
There is one really dangerous option (except faking
clocks). Please use it only if you are sure what you are
doing. Wrong setup will lead to multiple components
accessing your bus at once and thus to probable hardware
damage:
setuplinear address size
Sets up a linear frame buffer at address of size
size (both are given in MB). If the values make
sense (for example address <16MB for ISA cards) the
linear aperture is setup. Since the Mach32-driver
auto detects configured address itself, I strongly
discourage use of this command. However I was asked
for it as some PCI mach32-cards didn't setup the
linear aperture correctly.
Please ensure that the address range from address
to address + size (exclusively) is not used in your
system. Obey that due to memory remapping for exam-
ple 16MB Ram may exceed the 16MB address limit.
Valid Mach32 values for size are 1 and 4 (only 4 in
PCI configurations), address + size have to be
below 16MB for ISA, 4GB for multiplexed PCI, and
128MB else. Example: (my setup)
setuplinear 64 4
for a 4MB linear frame buffer at address 0x4000000.
It is also valid to specify setuplinear 0 0. This
will actually disable/de-configure any linear frame
buffer. Useful to disable mach32 aperture even if
it is enabled in the EEPROM.
The setuplinear command is priviledged.
blit subcommand1 subcommand2 ...
This is a command to control the Mach32 support for
oldstyle accelerator functions.
Valid subcommands are bit, fill, image, and
hlinelist. They enable support for the correspond-
ing blit functions. Preceed them with no to turn
them off (no space after no allowed). Use memimage
to emulate the image blit using a linearframe-
buffer, which is usually much faster for Mach32.
Use nomemimage to never use this emulation. On the
Mach32 this emulation can be used in more resolu-
tions than the actual imageblit accelerator func-
tion. Again order is vital! (esp. for the *image
commands).
As the Mach32 now has also new style vga_accel(3)
support there are now also the subcommands: set-
trans, setrop, fillbox, screencopy, drawline,
putimage, drawhlinelist, putbitmap, screencopymono,
setmode, polyline, polyhline, and polyfillmode.
Which are also supported with a leading no. They
allow to control support for the subfunctions of
vga_accel(3). In addition, memimage emulation
applies to putimage as well.
Some examples:
blit image nomemimage
Use IO-style imageblt where possible. Don't
emulate it in any resolution.
blit image memimage
Use emulated imageblt where possible.
blit memimage image
Use IO-style imageblt where possible, and
the emulation where possible in the remain-
ing modes.
blit noimage
Disable support for imageblt.
Mach32 default is:
blit bit fill image hlinelist settrans setrop
fillbox screencopy drawline putimage
drawhlinelist putbitmap screencopymono
setmode polyline polyhline polyfillmode
memimage
The blit command is not priviledged.
The Mach32 has also a few intermediate debug options for
low level timing adjust. They are:
vfifo8 number
vfifo16 number
vfifo24 number
vfifo32 number
blank number
latch number
There also options which are useful to support broken
Mach32 cards or third party hardware based on Mach32 which
does not follow the ATI specifications completely. For
example:
vendor ati
misc_ctl keep-off
svgaclocks 9
ramdac auto
For details about these options see svgalib(7).
All of them are priviledged.
OBSOLETE COMMANDS
Very old svgalib versions used a different style configu-
ration file. For compatibility, svgalib can still parse
these old options. Generally the options consist of one
character (case sensitive) followed by a number. Whites-
pace characters (space, tab, newline) can be used after
the characters m and M and the number.
The old svgalib versions actually allowed a new option
character to follow a number immediately. The current
parser requires white space after the numbers.
Of course, you should not use these cryptic forms anymore.
The obsolete commands are:
mnumber
Specify the mouse type like mouse number does.
Mclass Specify the monitor class like monitor class does.
Cnumber
Force usage of the number-th chipset driver from
the list of supported drivers VGA(1), ET4000(2),
Cirrus(3), TVGA(4), Oak(5), EGA(6), S3(7),
ET3000(8), Mach32(9), GVGA6400(10), ARK(11),
ATI(12), ALI(13), Mach64(14), C&T(15), APM(16),
NV3(17), ET6000(18), and VESA(19).
C0 reenables auto detection of the chipset
(default).
cflag When using the EGA chipset driver, the card is in
monochrome emulation mode for flag = 0 and in color
emulation mode for flag = 1.
FILES
/etc/vga/libvga.config
/etc/vga/libvga.et4000
/etc/vga/libvga.et6000
SEE ALSO
svgalib(7), svgalib(7), svgalib(7),
svgalib(7), svgalib(7),
AUTHOR
The newstyle configuration file was first implemented and
documented by Michael Weller <eowmob@exp-math.uni-
essen.de>. However, other people added new features.
Finally this page was edited by Michael Weller <eow-
mob@exp-math.uni-essen.de>.
Svgalib 1.3.0 9 April 1998 1
Back to the index