Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
libvga.config(5)	      Svgalib User Manual	      libvga.config(5)

       libvga.config, svgalibrc	- the svgalib configuration file

       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  malformed	 configuration
       statements  do  not  cause errors. Multiple commands are	allowed	in one
       line, and commands can exceed lines.

       Actually, svgalib simply	reads a	list of	 whitespace  separated	tokens
       from  the file until it finds one it knows and it then assumes the fol-
       lowing 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 docu-
       mented in the OBSOLETE COMMANDS section.	You should not use  them  any-

       In  addition,  svgalib(7)  parses  the  files ~/.svgalibrc and the file
       given in	the environment	variable SVGALIB_CONFIG_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	privileged.  By	default	the privileged
       commands	 can only be used in the main configuration file /etc/vga/lib-
       vga.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 command overrideen-
       able 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.

       Please  do  not allow the vastness of options to	confuse	you. Generally
       svgalib uses well chosen	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

       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 command if you want to use the SpaceTec	Space-
	      ball 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 configura-

   If you use the Mach32 chipset driver
       You should consider reading svgalib.mach32(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 flickering.

   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

       Clocks clock1 clock2 ...
	      to  specify  the	clocks (take them from your Xfree86 configura-


       ClockChip icd2061a number
	      if you have an Icd2061a clockchip.

       Ramdac chipname
	      if your Ramdac is	not detected properly.

       Dacspeed	speed
	      if the default chosen 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.

   If you use the VESA chipset driver
	      forces  the  driver  to set 80x25	text mode, before any standard
	      vga mode setting.	Fixes text mode	restoring with many cards,  as
	      well as standard VGA modes.

	      selects  the  bitmap  to save and	restore, using VESA functions.
	      see VESA documentation for bits' meanings. The default  is  1110
	      (=14) which is good for most cards, but some give	better results
	      with other numbers.

   Mouse configuration
       mouse mousetype
	      where mousetype is one of:  Microsoft,  MouseSystems,  MMSeries,
	      Logitech,	 Busmouse, PS2,	MouseMan, gpm, Spaceball, none,	Intel-
	      liMouse, or IMPS2.  mousetype can	also be	a number (0 -  9)  for
	      the keywords Microsoft - none.

	      gpm allows for (hopefully) peaceful interaction with gpm,	Space-
	      ball 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	Intel-
	      liMouse  or  Logitech MouseMan+ by a number. This	is due to his-
	      torical and compatibility	reasons.

	      This command is only available if	ALLOW_MOUSE_OVERRIDE  was  set
	      in  Makefile.cfg	when  svgalib  was  compiled (which is the de-

	      If given,	svgalib	ignores	any mouse type the  program  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 de-
	      vice.  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.

	      clear the	RTS wire.

	      leave the	RTS wire alone (default) (Wire is usually set)

       setDTR set the DTR wire.

	      clear the	DTR wire.

	      leave the	DTR wire alone (default) (Wire is usually set)

       For  example my mouse can emulate Microsoft and MouseSystems.  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 pro-
       tocol..	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	 your-

       Note:  Having  crtscts handshake	enabled	on the mouse tty may interfere
       with this option. 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  MouseMan+,  or similar wheel
	      mouse is turned.

	      The up and down scancodes	are the	scancodes of the keys to simu-
	      late 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 -

	      Note that	this option has	no effect unless the  IntelliMouse  or
	      IMPS2  mouse  type is used (see above). Also note	that the simu-
	      lated 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 commands to  control
       the logarithmic mouse acceleration:

		     If	given, force use of input parameters even if they seem

	      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_ac-
			    cel_thresh but multiplied by  mouse_accel_mult  if
			    Originally	 done	by  Mike  Chapman  <mike@para->.

		     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

			    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  losing  resolution
			      dx = (abs(dx) >=
				     mouse_accel_thresh	) ?
				   (float)dx *
				    mouse_accel_mult :
				   (float)dx *

		     linear The	 acceleration  factor  grows  linear  with the
			    delta until	it reaches mouse_accel_thresh.	 After
			    that  it is	a simple multiplication.  (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)

   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  joy-
	      stick1,  joystick2  and joystick3	configure 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 program.  Scancode
	      is a raw scancode	as you	can  find  them	 in  _keyboard/vgakey-

	      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 de-

	      Supported	commands are:

		     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 re-
		     spective mouse axis (requires a parameter,	of course)

		     send a fake event that the	mouse button is	pressed	or re-
		     leased as given by	the parameter (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  <En-

		  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 but-
	      ton.  (But if you	move your mouse	then the button	state will re-
	      set 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

	      Yet  another  feature  brought  to  you  by 101 (Attila Lendvai)

	      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. Disabling SIGINT will
	      lock  you	 in programs which can only by quit by <Ctrl-C>!  How-
	      ever, 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 horizontal sync ex-
	      plicitly.	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 privileged.

   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  compatible  with
		     XF86Config.   I use the format "Width x Height @ Vert.Re-
		     fresh", but that's	just personal taste...

	      pxcl   float
		     the pixel clock in	MHz

	      VDsp   integer
		     size of the visible area (horizontal/vertical)

	      VSS    integer
		     Sync start	(horizontal/vertical)

	      VSE    integer
		     Sync end (horizontal/vertical)

	      VTot   integer
		     Total width/height	(end of	back porch)

	      flags  +hsync -hsync +vsync -vsync interlace interlaced
		     doublescan	Sync polarity, interlace mode

       Everything should be on one line.  The values for the  horizontal  tim-
       ings must be multiples of eight.

       These  are  preferred  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 modeline 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 & Technologies, Et6000, S3.

       The  Mach32  driver  provides a similar feature separately, you have to
       use the define command described	below.

       ET4000 (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  register  dumps  within  the	  drivers.   See   sv-
       galib.et4000(7) for more	information.

   Chipset detection
       Usually	svgalib	 does a	good job autodetecting your hardware. 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

       chipset type
	      where type is (currently)	one of:	 VGA,  ET4000,	Cirrus,	 TVGA,
	      Oak,  EGA,  S3, ET3000, Mach32, GVGA6400,	ARK, ATI, ALI, Mach64,
	      C&T, APM,	NV3, ET6000, VESA, MX, PARADISE, and RAGE.

	      You can also specify a number in range 1	-  22 to  specify  the
	      type-th chipset type or 0	to enforce autodetection.

	      Warning, incorrect settings may damage your hardware.  This com-
	      mand is privileged.

       chipset type param1 param2
	      use this form if the size	of memory or an	additional  configura-
	      tion 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	infor-
	      mation on	that type of cards in svgalib(7).

	      Note that	there is a more	convenient command setuplinear for en-
	      forcing specific memory-aperture configurations for Mach32

	      This command is privileged.

   Specific options required for the EGA-driver.
	      Card is in monochrome emulation mode

	      Card is in color emulation mode

	      This command is privileged.

   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.mach32(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,  maxclock24,
	      and  maxclock32  commands	which have a similar effect. Neverthe-
	      less, 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 programmable 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

	      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 tim-
	      ings is barely measurable. See the Mach32	section	below.

       Clockchip ICD2061A
	      Configure	 for  a	 programmable clockchip.  ICD2061A is the only
	      one supported right now.

   Miscellaneous 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.

	      Mach32: show messages while processing all info to  build	 up  a
	      mode table.

       quiet  Turn verbose messages off	(default).

	      Inhibit use of a linear mmaped frame buffer.

       linear Allow (not enforce!) use of a linear mmaped frame	buffer.

	      Allow privileged commands	outside	the main configuration file.

   Common options currently used by Mach32 only
       Options that may	be useful for all drivers, but currently are only sup-
       ported by Mach32	(Please	read svgalib.mach32(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 privileged.

       clocks list of clocks
	      Sets  the	 frequencies of	the clocks the chips can generate. Ex-
	      actly 16 values have to be specified for mach32.	Use 0 to  dis-
	      able a specific clock.

	      Note  that the mach32 can	divide clocks by 2. Thus there are ac-
	      tually 32	clocks And you can also	use the	divided	 clocks	 in  a
	      define  command.	 On  contrary 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	 possible  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.mach32(7) for	additional info	on clocks.

	      The clocks command is privileged.

	      Sometimes	a mode cannot be realized with the logical  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 appropriately.

	      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 applica-

	      Don't touch the standard mode but	create an exact	 copy,	a  dy-
	      namic  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.

	      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  set-
       linelength below.

       The linelength commands are not privileged.

       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 privileged.

       setlinelength length mode1 [mode2 mode3...]
	      Force the	logical	line length (xbytes) in	 the  given  modes  to
	      length pixels (not bytes!). See also variablelinelength, strict-
	      linelength, and duplicatelinelength 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.  How-
	      ever, the	Mach32 will generate a noisy video signal in some con-

	      The setlinelength	command	is not privileged.

       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

	      You  may	use  :n	 to  specify  the  n-thclock  (n = 0 ..	31 for

	      horz_timing is four integers: hdisp h_sync_strt h_sync_wid h_to-

	      vert_timing has the same format but for vertical.

	      You  may	specify	 one  or more flags out	of: Interlace, +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


	      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 privileged.

       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 cor-

	      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 example 16MB	Ram may	exceed	the  16MB  ad-
	      dress limit.

	      Valid Mach32 values for size are 1 and 4 (only 4 in PCI configu-
	      rations),	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 privileged.

       blit subcommand1	subcommand2 ...
	      This is a	command	to control the Mach32 support for oldstyle ac-
	      celerator	functions.

	      Valid subcommands	are bit, fill, image, and hlinelist.  They en-
	      able  support for	the corresponding blit functions. Precede them
	      with no to turn them off (no space after no allowed). Use	memim-
	      age  to  emulate the image blit using a linearframebuffer, which
	      is usually much faster for Mach32.  Use nomemimage to never  use
	      this emulation. On the Mach32 this emulation can be used in more
	      resolutions than	the  actual  imageblit	accelerator  function.
	      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: settrans, setrop, fillbox, screen-
	      copy,  drawline, putimage, drawhlinelist,	putbitmap, screencopy-
	      mono, 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 em-
	      ulation 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 remaining 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

	      The blit command is not privileged.

       The Mach32 has also a few intermediate debug options for	low level tim-
       ing 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.mach32(7).  All of them are

       Very  old  svgalib  versions used a different style configuration file.
       For compatibility, svgalib can still parse these	old options. Generally
       the  options  consist  of  one character	(case sensitive) followed by a
       number. Whitespace 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:

	      Specify the mouse	type like mouse	number does.

       Mclass Specify the monitor class	like monitor class does.

	      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), VESA(19), MX(20), PARADISE(21), and RAGE(22).

	      C0 reenables auto	detection of the chipset (default).

       cflag  When using the EGA chipset driver, the card is in	monochrome em-
	      ulation mode for flag = 0	and in color emulation mode for	flag =


       svgalib(7), svgalib.et4000(7), svgalib.chips(7),	svgalib.mach32(7),

       The newstyle configuration file was first implemented and documented by
       Michael	Weller	<>.	 However, other	people
       added new features.

       Finally this page was edited by Michael Weller <eowmob@exp-math.uni-es->.

Svgalib	1.3.1		       19 December 1998		      libvga.config(5)


Want to link to this manual page? Use this URL:

home | help