Home | History | Annotate | Download | only in docs
      1 
      2                             3Dfx Glide device driver
      3 
      4 
      5 
      6 Requirements:
      7 -------------
      8 
      9 A Voodoo-based videocard/accelerator
     10 DOS (with DJGPP), Windows9x/2k (with MinGW), Linux
     11 Glide3x library for your OS
     12 
     13 http://sourceforge.net/projects/glide/
     14 
     15 
     16 
     17 How to compile:
     18 ---------------
     19 
     20 DJGPP:
     21    Place the Glide3 SDK in the top Mesa directory:
     22 	$(MESA)/glide3/include/
     23 		3dfx.h, g3ext.h, glide.h, glidesys.h, glideutl.h, sst1vid.h
     24 	$(MESA)/glide3/lib/
     25 		libgld3x.a, libgld3i.a, glide3x.dxe
     26    Type:
     27 	make -f Makefile.DJ X86=1 FX=1
     28    Look into the makefile for further information.
     29 
     30 MinGW:
     31    Place the Glide3 SDK in the top Mesa directory:
     32 	$(MESA)/glide3/include/
     33 		3dfx.h, g3ext.h, glide.h, glidesys.h, glideutl.h, sst1vid.h
     34 	$(MESA)/glide3/lib/
     35 		libglide3x.a, glide3x.dll
     36    Type:
     37 	make -f Makefile.mgw X86=1 FX=1
     38    Look into the makefile for further information.
     39 
     40 Linux:
     41    Place the Glide3 SDK in /usr/local/glide
     42 	/usr/local/glide/include/
     43 		3dfx.h, g3ext.h, glide.h, glidesys.h, glideutl.h, sst1vid.h
     44 	/usr/local/glide/lib/
     45 		libglide3x.a, libglide3x.so
     46    Type:
     47 	make linux-glide
     48 	or
     49 	make linux-x86-glide
     50 
     51 
     52 
     53 Compilation defines:
     54 --------------------
     55 
     56 FX_DEBUG
     57 	enable driver debug code
     58 FX_TRAP_GLIDE
     59 	enable Glide trace code
     60 FX_PACKEDCOLOR
     61 	use packed color in vertex structure
     62 FX_TC_NAPALM
     63 	map GL_COMPRESSED_RGB[A] to FXT1. Works with VSA100-based cards only.
     64 FX_COMPRESS_S3TC_AS_FXT1_HACK
     65 	map S3TC to FXT1
     66 FX_RESCALE_BIG_TEXURES_HACK
     67 	fake textures larger than HW can support
     68 	(see MESA_FX_MAXLOD environment variable)
     69 
     70 
     71 
     72 Environment variables:
     73 ----------------------
     74 
     75 The following environment variables affect MesaFX. Those that affect Glide
     76 only, are beyond the scope of this section. Entries that don't have a "Value"
     77 field, can have any value whatsoever
     78 	ex: set MESA_FX_IGNORE_CMBEXT=y
     79 
     80 "Note" (*) means that the environment variable affects Glide, too; also, if
     81 the var is not found in the environment, it is searched in windoze registry.
     82 "Note" (!) means that the environment variable is not working as expected;
     83 may have undefined effects, might have effects only at Glide level or might
     84 not have any effect whatsoever. Caveat emptor! Those are to be revised soon.
     85 
     86 It is recommended to leave the envvars alone, so that Mesa/Glide will run with
     87 default values. Use them only when you experience crashes or strange behavior.
     88 
     89 FX_GLIDE_NUM_TMU
     90 	OS: all
     91 	HW: dual-TMU cards (Voodoo2, Avenger, Napalm)
     92 	Desc: force single-TMU
     93 	Note: (*)
     94 	Value: "1"
     95 FX_GLIDE_SWAPPENDINGCOUNT
     96 	OS: all
     97 	HW: all
     98 	Desc: max # of buffers allowed to build up
     99 	Note: (*) (!)
    100 	Value: "0", "1", "2", "3", "4", "5" or "6"
    101 FX_GLIDE_SWAPINTERVAL
    102 	OS: all
    103 	HW: all
    104 	Desc: number of vertical retraces to wait before swapping
    105 	Note: (*) (!) works only at Glide-level?
    106 SSTH3_SLI_AA_CONFIGURATION
    107 	OS: all
    108 	HW: VSA100-based cards
    109 	Desc: SLI/AA setup
    110 	Note: (*) (!) works only at Glide-level?
    111 	Value:
    112 	    1, 2, 4 chip cards
    113 		"0" - SLI & AA disable
    114 		"1" - SLI disabled, 2 sample AA enabled
    115 	    2, 4 chip cards
    116 		"2" - 2-way SLI enabled, AA disabled
    117 		"3" - 2-way SLI enabled, 2 sample AA enabled
    118 		"4" - SLI disabled, 4 sample AA enabled
    119 	    4 chip cards
    120 		"5" - 4-way SLI enabled, AA disabled
    121 		"6" - 4-way SLI enabled, 2 sample AA enabled
    122 		"7" - 2-way SLI enabled, 4 sample AA enabled
    123 		"8" - SLI disabled, 8 sample AA enabled 
    124 SST_DUALHEAD
    125 	OS: win32
    126 	HW: ?
    127 	Desc: ?
    128 	Note: (!) disabled?
    129 MESA_FX_NO_SIGNALS
    130 	OS: linux
    131 	HW: all
    132 	Desc: avoid installing signals
    133 	Note: (!) untested!
    134 MESA_FX_INFO
    135 	OS: all
    136 	HW: all
    137 	Desc: verbose to stderr
    138 	Value: any; special value "r" to redirect stderr to MESA.LOG
    139 MESA_FX_NOSNAP
    140 	OS: all
    141 	HW: Voodoo1, Rush, Banshee
    142 	Desc: do not snap vertices inside Mesa
    143 	Note: to be used with Glide3x that snaps vertices internally
    144 MESA_FX_POINTCAST
    145 	OS: all
    146 	HW: dual-TMU cards (some Voodoo1, Voodoo2, Avenger, Napalm)
    147 	Desc: try to use pointcast palette
    148 	Note: may give adverse effects on UMA cards (Avenger, Napalm)
    149 MESA_FX_IGNORE_PALEXT
    150 	OS: all
    151 	HW: all
    152 	Desc: disable 6666 palette
    153 MESA_FX_IGNORE_PIXEXT
    154 	OS: all
    155 	HW: Napalm
    156 	Desc: force 565 16bpp mode (traditional Voodoo, no 32/15bpp)
    157 MESA_FX_IGNORE_TEXFMT
    158 	OS: all
    159 	HW: Napalm
    160 	Desc: disable 32bit textures
    161 MESA_FX_IGNORE_CMBEXT
    162 	OS: all
    163 	HW: Napalm
    164 	Desc: disable Napalm combiners (color/alpha/texture)
    165 	Note: this option allows dual-TMU cards perform single-pass
    166 	      trilinear, but some advanced (multi)texturing modes
    167 	      won't work (GL_EXT_texture_env_combine)
    168 MESA_FX_IGNORE_MIREXT
    169 	OS: all
    170 	HW: all
    171 	Desc: disable mirror extension
    172 MESA_FX_IGNORE_TEXUMA
    173 	OS: all
    174 	HW: all
    175 	Desc: disable UMA
    176 MESA_FX_IGNORE_TEXUS2
    177 	OS: all
    178 	HW: all
    179 	Desc: disable Texus2
    180 MESA_FX_MAXLOD
    181 	OS: all
    182 	HW: non VSA-100 cards
    183 	Desc: enable large texture support using SW rescaling
    184 	Value:
    185 	    "9"  - 512x512 textures
    186 	    "10" - 1024x1024 textures
    187 	    "11" - 2048x2048 textures
    188 MESA_FX_ALLOW_VP
    189 	OS: all
    190 	HW: all
    191 	Desc: allow vertex program extensions
    192 MESA_GLX_FX
    193 	OS: linux
    194 	HW: Voodoo1, Rush, Voodoo2
    195 	Desc: display mode
    196 	Note: (!) experimental
    197 	Value:
    198 	    "w" - windowed mode
    199 	    "f" - fullscreen mode
    200 	    "d" - disable glide driver
    201 	OS: win32
    202 	HW: Rush, Banshee, Avenger, Napalm
    203 	Desc: display mode
    204 	Note: (!) experimental
    205 	Value:
    206 	    "w" - windowed mode
    207 
    208 
    209 
    210 Contact:
    211 --------
    212 
    213 Daniel Borca <dborca 'at' users 'dot' sourceforge 'dot' net>
    214 Hiroshi Morii <koolsmoky 'at' users 'dot' sourceforge 'dot' net>
    215 
    216 
    217 
    218 WARNING! The info below this line is outdated (yet some of it useful). WARNING!
    219 *******************************************************************************
    220 
    221 
    222 
    223 Info for Mesa 4.1
    224 -----------------
    225 
    226 The 3dfx Glide driver in Mesa is disabled by default.  Not too many people
    227 use this driver anymore and at some point down the road it will be dropped.
    228 
    229 To use/enable the Glide driver either do this:
    230 
    231 './configure --with-glide=DIR'    Where DIR is the location of Glide, like
    232                                   /usr/ or /usr/local
    233 
    234 OR
    235 
    236 'make linux-x86-glide'     If using the old-style Makefile system.
    237 
    238 The rest of this file hasn't changed since Mesa 3.3.  Some of it's out of
    239 date, but some is still valid.
    240 
    241 
    242 
    243 What do you need ?
    244 ------------------
    245 
    246 	- A PC with a 3Dfx Voodoo1/2 Graphics or Voodoo Rush based board
    247 	  (Pure3D, Monster 3D, R3D, Obsidian, Stingray 128/3D, etc.).
    248 	  The Quantum3D Obsidian3D-2 X-24 requires some special env. setting
    249 	  under Linux (more information in the "Useful Glide Environment
    250 	  Variables");
    251 
    252 	- The 3Dfx Glide library 2.3 or later for your OS (the 2.4 works fine).
    253 	  The Voodoo2 requires the Glide library 2.51. The Glide 3.1 is not
    254 	  compatible with the Glide 2.x so it doesn't work with the current
    255 	  version of the driver;
    256 
    257 	- A compiler supported by the Glide library (Micro$oft VC++ (tested),
    258 	  Watcom (tested), GCC for Linux (tested), etc.);
    259 
    260 	- It's nice to have two monitors - one for your normal graphics
    261 	  card and one for your 3Dfx card. If something goes wrong with
    262 	  an application using the 3Dfx hardware you can still see your
    263 	  normal screen in order to recover.
    264 
    265 
    266 
    267 Tested on:
    268 ----------
    269 	Windows 95 - David Bucciarelli
    270 	Windows NT - Henri Fousse
    271 	MS-DOS
    272 	Linux - Daryll Strauss, Brian Paul, David Bucciarelli
    273 	FreeBSD
    274 	BeOS - Duncan Wilcox
    275 	MacOS - Fazekas Miklos
    276 
    277 
    278 What is able to do ?
    279 --------------------
    280 
    281 	- It is able accelerate points, lines and polygon with flat
    282 	  shading, gouraud shading, Z-buffer, texture mapping, blending, fog and
    283 	  antialiasing (when possible). There is also the support for rendering
    284 	  in a window with a slow trick for the Voodoo Graphics (available only
    285 	  for Linux) and at full speed with the Voodoo Rush chipset.
    286 	  Under Linux is also possible to switch on-the-fly between the fullscreen
    287 	  and in-window rendering hack.
    288 	  There is also the support for using more than one Voodoo Graphics in the
    289 	  some application/PC (you can create one context for each board and use
    290 	  multiple video outputs for driving monitors, videoprojectors or HMDs).
    291 	  The driver is able to fallback to pure software rendering when afeature
    292 	  isn't supported by the Voodoo hardware (however software rendering is
    293 	  very slow compared to hardware supported rendering)
    294 
    295 
    296 
    297 How to compile:
    298 ---------------
    299 
    300 Linux:
    301 ------
    302 	Here are the basic steps for using the 3Dfx hardware with Mesa
    303 	on Linux:
    304 
    305 	- You'll need the Glide library and headers.  Mesa expects:
    306 		/usr/local/glide/include/*.h        // all the Glide headers
    307 		/usr/local/glide/lib/libglide2x.so
    308 
    309 	  If your Glide libraries and headers are in a different directory
    310 	  you'll have to modify the Mesa-config and mklib.glide files.
    311 
    312 	- Unpack the MesaLib-3.1.tar.gz and MesaDemos-3.1.tar.gz archives;
    313 
    314 	- If you're going to use a newer Mesa/Glide driver than v0.27 then
    315           unpack the new driver archive over the Mesa directory.
    316 
    317 	- In the Mesa-3.1 directory type "make linux-glide"
    318 
    319 	- Compilation _should_ finish without errors;
    320 
    321 	- Set your LD_LIBRARY_PATH environment variable so that the
    322 	  libglide2x.so and Mesa library files can be found.  For example:
    323 	    setenv LD_LIBRARY_PATH "/usr/local/glide/lib:/SOMEDIR/Mesa-3.1/lib"
    324 
    325 	- You'll have to run Glide-based programs as root or set the suid
    326 	  bit on executables;
    327 
    328 	- Try a demo:
    329 	    cd gdemos
    330 	    su
    331 	    setenv MESA_GLX_FX f
    332 	    ./gears     (hit ESC to exit)
    333 
    334 	- You can find the demos especially designed for the Voodoo driver in
    335 	  in the Mesa-3.1/3Dfx/demos directory (type "make" in order to compile
    336 	  everything).
    337 
    338 MacOS:
    339 ------
    340 	Check the WEB page at http://valerie.inf.elte.hu/~boga/Mesa.html
    341       
    342 MS Windows:
    343 -----------
    344 
    345 	For the MSVC++:
    346 	- The glide2x.lib have to be in the default MSVC++ lib directory;
    347 
    348 	- The Glide headers have to be in the default MSVC++ include directory;
    349 
    350 	- You must have the vcvars32.bat script in your PATH;
    351 
    352 	- Go to the directory Mesa-3.1 and run the mesafx.bat;
    353 
    354 	- The script will compile everything (Mesa-3.1/lib/OpenGL32.{lib,dll},
    355 	  Mesa-3.1/lib/GLU32.{lib,dll}, Mesa-3.1/lib/GLUT32.{lib,dll} and
    356           Voodoo demos);
    357 
    358 	- At the end, you will be in the Mesa-3.1/3Dfx/demos directory;
    359 
    360 	- Try some demo (fire.exe, teapot.exe, etc.) in order to check if
    361 	  everything is OK (you can use Alt-Tab or Ctrl-F9 to switch between
    362 	  the Voodoo screen and the windows desktop);
    363 
    364 	- Remember to copy the Mesa OpenGL32.dll, GLU32.dll and GLUT32.dll in the
    365           some directory were you run your Mesa based applications.
    366 
    367 	- I think that you can easy change the Makefile.fx files in order
    368 	  to work with other kind of compilers;
    369 
    370 	- To discover how open the 3Dfx screen, read the sources under
    371 	  the Mesa-3.1/3Dfx/demos directory. You can use the GLUT library or
    372           the Diego Picciani's wgl emulator.
    373 
    374 	NOTE: the MSVC++ 5.0 optimizer is really buggy. Also if you install the
    375 	SP3, you could have some problem (you can disable optimization in order
    376 	solve these kind of problems).
    377 
    378 
    379 Doing more with Mesa & Linux Glide:
    380 -----------------------------------
    381 
    382 	The MESA_GLX_FX environment variable can be used to coax most
    383 	GLX-based programs into using Glide (and the __GLUT library
    384 	is GLX-based__).
    385 
    386         Full-screen 3Dfx rendering:
    387         ---------------------------
    388 
    389 	1. Set the MESA_GLX_FX variable to "fullscreen":
    390 
    391 		ksh:
    392 			export MESA_GLX_FX = "fullscreen"
    393 		csh:
    394 			setenv MESA_GLX_FX fullscreen
    395 
    396 	2. As root, run a GLX-based program (any GLUT demo on Linux).
    397 	
    398 	3. Be careful:  once the 3Dfx screen appears you won't be able
    399 	to see the GLUT windows on your X display.  This can make using
    400 	the mouse tricky!  One solution is to hook up your 3Dfx card to
    401 	a second monitor.  If you can do this then set these env vars
    402 	first:
    403 
    404 		setenv SST_VGA_PASS 1
    405 		setenv SST_NOSHUTDOWN
    406 	
    407 	or for the Voodoo2:
    408 
    409 		setenv SSTV2_VGA_PASS 1
    410 		setenv SSTV2_NOSHUTDOWN
    411 
    412         Rendering into an X window with the help of the Voodoo hardware:
    413         ----------------------------------------------------------------
    414 
    415 	1. Start your X server in 16 bpp mode (XFree86:  startx -- -bpp 16)
    416 	   in order to have the best performance and the best visual
    417 	   quality. However you can use any visual depth supported by X.
    418 
    419 	2. Set the following environment variables:
    420 		export MESA_GLX_FX="window"	# to enable window rendering
    421 		export SST_VGA_PASS=1	# to stop video signal switching
    422 		export SST_NOSHUTDOWN=1	# to stop video signal switching
    423 	    OR
    424 		setenv MESA_GLX_FX window
    425 		setenv SST_VGA_PASS 1
    426 		setenv SST_NOSHUTDOWN 1
    427 
    428 	(the Voodoo2 requires to use "SSTV2_" instead "SST_").
    429 
    430 	3. As root, try running a GLX-based program
    431 
    432 	How does it work?  We use the 3Dfx hardware to do rendering then
    433 	copy the image from the 3Dfx frame buffer into an X window when
    434 	the SwapBuffers() function is called.  The problem with this
    435 	idea is it's slow.  The image must be copied from the 3Dfx frame
    436 	buffer to main memory then copied into the X window (and when the X
    437 	visual depth doesn't match the Voodoo framebufffer bit per pixel, it
    438 	is required also a pixel format translation).
    439 
    440 	NOTE: the in-window rendering feature only works with double-buffering.
    441 
    442 
    443         On the fly switching between in window rendering and full screen rendering
    444 	--------------------------------------------------------------------------
    445 
    446 	The Mesa 2.6 has introduced the capability of switching
    447 	on-the-fly between the fullscreen/fullspeed rendering and the in-window
    448 	hack and vice versa. The on-the-fly switching requires a direct support
    449 	by the application but it is really easy to add. You have to start
    450 	your X server in 16 bpp mode and to add the following lines to your
    451 	application:
    452 
    453 		#if defined(FX) && define(XMESA)
    454 		#include <GL/xmesa.h>
    455 
    456 		static int fullscreen=1;
    457 		#endif
    458 
    459 		...
    460 
    461 		/* In the GLUT keyboard event callback */
    462 
    463 		#if defined(FX) && !define(WIN32)
    464 		  case ' ':
    465 		    fullscreen=(!fullscreen);
    466 		    XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW);
    467 		    break;
    468 		#endif
    469 		...
    470 
    471        	See the 3Dfx/demos/tunnel.c program
    472        	for an example.  You have to set the -DXMESA flag in the Makefile's COPTS
    473        	to enable it.
    474 
    475   	Rendering into an X window with the X11 software driver:
    476         --------------------------------------------------------
    477 
    478 	Set the MESA_GLX_FX variable to "disable" your GLX-based program will use
    479 	the X11 software driver (the 3Dfx hardware isn't used at all).
    480 
    481 
    482 
    483 Useful Glide Environment Variables:
    484 -----------------------------------
    485 
    486 	- To disable the 3Dfx logo, set the FX_GLIDE_NO_SPLASH variable.
    487 
    488 	- To disable video signal switching:
    489 		setenv SST_VGA_PASS 1
    490 		setenv SST_NOSHUTDOWN
    491 	  or for the Voodoo2:
    492 		setenv SSTV2_VGA_PASS 1
    493 		setenv SSTV2_NOSHUTDOWN
    494 
    495         - To set the default screen refresh rate:
    496                 setenv SST_SCREENREFRESH=75
    497 
    498           the supported values are 60, 70, 72, 75, 80, 85, 90, 100, 120.
    499 
    500 	- To force the Mesa library to swap buffers as fast as possible,
    501 	  without any vertical blanking synchronization (useful for benchmarks):
    502 		setenv FX_GLIDE_SWAPINTERVAL 0
    503                 setenv SST_SWAP_EN_WAIT_ON_VIDSYNC 0
    504 
    505 	- You can slight improve the performances of your Voodoo1 board with
    506 	  the following env. var.:
    507 		setenv SST_FASTMEM 1
    508 		setenv SST_PCIRD 1
    509 		setenv SST_GRXCLK 57
    510 
    511 	  (don't use this setting with the Quantum3D 100SB or with any other
    512 	  SLI configuration: it will hang everything !).
    513 	  The following setting can be used with the Voodoo2:
    514 		setenv SSTV2_FASTMEM_RAS_READS=1
    515 		setenv SSTV2_FASTPCIRD=1
    516 		setenv SSTV2_GRXCLK=95
    517 
    518 	- The Quantum3D Obsidian3D-2 X-24 requires some special env. setting
    519 	  in order to work under Linux:
    520 
    521 		export SSTV2_FT_CLKDEL=5
    522 		export SSTV2_TF0_CLKDEL=7
    523 		export SSTV2_TF1_CLKDEL=7
    524 		export SSTV2_TF2_CLKDEL=7
    525 		export SSTV2_SLIM_VIN_CLKDEL=3
    526 		export SSTV2_SLIM_VOUT_CLKDEL=2
    527 		export SSTV2_SLIS_VIN_CLKDEL=3
    528 		export SSTV2_SLIS_VOUT_CLKDEL=2
    529 
    530 	  (Thanks to Phil Ross for this trick).
    531 
    532 
    533 
    534 
    535 The Mesa/Voodoo Environment Variables:
    536 --------------------------------------
    537 
    538 	- Only for Windows/Voodoo Rush users, if you define the
    539 	  env. var. MESA_WGL_FX:
    540 		export MESA_WGL_FX=fullscreen
    541 	  you will get fullscreen rendering;
    542 
    543 	- Only for Windows/Voodoo Rush users, if you define the
    544 	  env. var. MESA_WGL_FX:
    545 		export MESA_WGL_FX=window
    546 	  you will get window rendering (default value);
    547 
    548 	- Only for Linux users, you can find more informations about
    549 	  the env. var. MESA_GLX_FX in the "Doing more with Mesa & Linux Glide"
    550 	  section;
    551 
    552 	- If you define the env. var. MESA_FX_SWAP_PENDING:
    553 		export MESA_FX_SWAP_PENDING=4
    554 	  you will able to set the maximum number of swapbuffers
    555 	  commands in the Voodoo FIFO after a swapbuffer (default value: 2);
    556 
    557         - If you define the env. var. MESA_FX_INFO:
    558 		export MESA_FX_INFO=1
    559           you will get some useful statistic.
    560 
    561         - If you define the env. var. MESA_FX_NO_SIGNALS:
    562 		export MESA_FX_NO_SIGNALS=1
    563           Mesa/FX will not install atexit() or signal() handlers.
    564 
    565 
    566 
    567 Know BUGS and Problems:
    568 -----------------------
    569 
    570 	- fog doesn't work in the right way when using the glDepthRange() function;
    571 
    572 	- Maximum texture size: 256x256 (this is an hardware limit);
    573 
    574 	- Texture border aren't yet supported;
    575 
    576 	- A GL_BLEND in a glTexEnv() is not supported (it is an hardware limit);
    577 
    578         - Use the glBindTexture extension (standard in OpenGL 1.1) for texture
    579 	  mapping (the old way: glTexImage inside a display list, download
    580 	  the texture map each time that you call the display list !!!);
    581 
    582 	- Stencil buffer and Accumulation buffer are emulated in software (they are not
    583 	  directly supported by the Hardware);
    584 
    585 	- Color index mode not implemented (this is an hardware limit);
    586 
    587 	- Thre is an know bug in the Linux Glide library so the in-window-rendering hack
    588 	  and any other operations that requires to read the Voodoo frame buffer
    589 	  (like the accumulation buffer support) doesn't work on Voodoo SLI cards.
    590 
    591 	- The driver switch to pure software (_slow_) rendering when:
    592 
    593 		- Stencil enabled;
    594 		- Using the Accumulation buffer;
    595 		- Blend enabled and blend equation != GL_FUNC_ADD_EXT;
    596 		- Color logic operation enabled and color logic operation != GL_COPY;
    597 		- Using GL_SEPARATE_SPECULAR_COLOR;
    598 		- The four values of glColorMask() aren't the some;
    599 		- Texture 1D or 3D enabled;
    600 		- Texture function is GL_BLEND;
    601 		- Using the Multitexture extension with Voodoo cards with only one TMU;
    602 		- Using the Multitexture extension with Voodoo cards with more than
    603 		   one TMU, and texture function isn't GL_MODULATE;
    604 		- Point size is != 1.0 or point params vector != (1.0,0.0,0.0);
    605 		- Line width != 1.0 or using stipple lines.
    606 		- Using polygon offset or stipple polygons;
    607 
    608 	NOTE: this is list is not yet complete.
    609 		
    610 
    611 Hints and Special Features:
    612 ---------------------------
    613 
    614 	- Under Linux and with a Voodoo Graphics board, you can use
    615 	  XMesaSetFXmode(XMESA_FX_FULLSCREEN or XMESA_FX_WINDOW) in order to
    616 	  switch on the fly between fullscreen rendering and the in-window-rendering
    617 	  hack.
    618 
    619 	- The driver is able to use all the texture memory available: 2/4MB on
    620 	  Voodoo1 boards and 8MB (!) on high-end Voodoo1 and Voodoo2 boards.
    621 
    622 	- Trilinear filtering is fully supported on Voodoo boards with two TMUs
    623 	  (high-end Voodoo1 boards and Voodoo2 boards). When only one TMU is
    624 	  available the driver fallback to bilinear filter also if you ask
    625 	  for trilinear filtering.
    626 
    627         - The Voodoo driver support multiple Voodoo Graphics boards in the
    628           some PC. Using this feature, you can write applications that use
    629           multiple monitors, videoprojectors or HMDs for the output. See
    630 	  Mesa-3.1/3Dfx/demos/tunnel2.c for an example of how setup one
    631           context for each board.
    632 
    633 	- The v0.19 introduces a new powerful texture memory manager: the
    634 	  texture memory is used as a cache of the set of all defined texture
    635 	  maps. You can now define several MBs of texture maps also with a 2MB
    636 	  of texture memory (the texture memory manager will do automatically
    637 	  all the swap out/swap in
    638 	  texture memory work). The new texture memory manager has also
    639 	  solved a lot of other bugs/no specs compliance/problems
    640 	  related to the texture memory usage.
    641 
    642 	- Use triangles and quads strip: they are a LOT faster than sparse
    643 	  triangles and quads.
    644 
    645 	- The Voodoo driver supports the GL_EXT_paletted_texture. it works
    646 	  only with GL_COLOR_INDEX8_EXT, GL_RGBA palettes and the alpha value
    647 	  is ignored because this is a limitation of the current Glide
    648 	  version and of the Voodoo hardware. See Mesa-3.1/3Dfx/demos/paltex.c for
    649 	  a demo of this extension.
    650 
    651 	- The Voodoo driver directly supports 3Dfx Global Palette extension.
    652 	  It was written for GLQuake and I think that it isn't a good idea
    653 	  to use this extension for any other purpose (it is a trick). See
    654 	  Mesa-3.1/3Dfx/demos/glbpaltex.c for a demo of this extension.
    655 
    656 	- The Voodoo driver chooses the screen resolution according to the
    657 	  requested window size. If you open a 640x480 window, you will get
    658 	  a 640x480 screen resolution, if you open a 800x600 window, you
    659 	  will get a 800x600 screen resolution, etc.
    660 	  Most GLUT demos support the '-geometry' option, so you can choose
    661 	  the screen resolution: 'tunnel -geometry 800x600'.
    662 	  Clearly, you Voodoo board must have enough framebuffer RAM (otherwise
    663 	  the window creation will fail).
    664 
    665 	- The glGetString(GL_RENDERER) returns more information
    666           about the hardware configuration: "Mesa Glide <version>
    667           <Voodoo_Graphics|Voodoo_Rush|UNKNOWN> <num> CARD/<num> FB/
    668           <num> TM/<num> TMU/<NOSLI|SLI>"
    669           where: <num> CARD is the card used for the current context,
    670           <num> FB is the number of MB for the framebuffer,
    671           <num> TM is the number of MB for the texture memory,
    672           <num> TMU is the number of TMU. You can try to run
    673           Mesa/demos/glinfo in order to have an example of the output.
    674 
    675 Did you find a lot BUGs and problems ? Good, send me an email.
    676 
    677 
    678 
    679 FAQ:
    680 ----
    681 
    682 For a complete FAQ check the Bernd Kreimeier's Linux 3Dfx HOWTO
    683 available at http://www.gamers.org/dEngine/xf3D (it includes also
    684 a lot of informations not strictly related to Linux, so it can be
    685 useful also if you don't use Linux)
    686 
    687 1. What is 3Dfx?
    688 
    689 3Dfx Interactive, Inc. is the company which builds the VooDoo 3-D graphics
    690 chipset (and others) used in popular PC cards such as the Diamond Monster 3D
    691 and the Orchid Righteous 3D (more informations at http://www.3dfx.com).
    692 
    693 
    694 2. What is Glide?
    695 
    696 Glide is a "thin" programming interface for the 3Dfx hardware.  It was
    697 originally written for Windows/Intel but has been ported to Linux/Intel
    698 by Daryll Strauss.
    699 
    700 3Dfx, Inc. should be applauded for allowing the Linux version of Glide
    701 to be written.
    702 
    703 You can directly program with the Glide library if you wish.  You can
    704 obtain Glide from the "Developer" section of the 3Dfx website: www.3dfx.com
    705 There's a Linux/Glide newsgroup at news://news.3dfx.com/3dfx.glide.linux
    706 
    707 
    708 3. What is fxmesa?
    709 
    710 "fxmesa" is the name of the Mesa device driver for the 3Dfx Glide library.
    711 It was written by David Bucciarelli and others.  It works on both Linux
    712 and Windows.  Basically, it allows you to write and run OpenGL-style programs
    713 on the 3Dfx hardware.
    714 
    715 
    716 4. What is GLQuake?
    717 
    718 Quake is a very popular game from id software, Inc.  See www.idsoftware.com
    719 GLQuake is a version of Quake written for OpenGL.  There is now a Linux
    720 version of GLQuake with works with the Mesa/3Dfx/Glide combo.
    721 
    722 Here's what you need to run GLQuake on Linux:
    723    PC with 100MHz Pentium or better
    724    a 3Dfx-based card
    725    Mesa 3.1 libraries:  libMesaGL.so  libMesaGLU.so
    726    Glide 2.4 libraries:  libglide2x.so  libtexus.so
    727    GLQuake for Linux.
    728 
    729 Also, the windows version of GLQuake works fine with the Mesa OpenGL32.dll,
    730 you have only to copy the Mesa-3.1/lib/OpenGL32.dll in the GLQuake directory
    731 in order to test 'MesaQuake'.
    732 
    733 
    734 5. What is GLUT?
    735 
    736 GLUT is Mark Kilgard's OpenGL Utility Toolkit.  It provides an API for
    737 writing portable OpenGL programs with support for multiple windows, pop-
    738 up menus, event handling, etc.
    739 
    740 Check the Mark's home page for more informations (http://reality.sgi.com/mjk_asd).
    741 
    742 Every OpenGL programmer should check out GLUT.
    743 
    744 GLUT on Linux uses GLX.
    745 
    746 
    747 6. What is GLX?
    748 
    749 GLX is the OpenGL extension to the X Window System.  I defines both a
    750 programming API (glX*() functions) and a network protocol.  Mesa implements
    751 an emulation of GLX on Linux.  A real GLX implementation would requires
    752 hooks into the X server.  The 3Dfx hardware can be used with GLX-based
    753 programs via the MESA_GLX_FX environment variable.
    754 
    755 
    756 7. Is the Voodoo driver able to use the 4Mb texture memory of
    757 the Pure3D boards ?
    758 
    759 Yes, the Voodoo driver v0.20 includes the support for Voodoo
    760 Graphics boards with more than 2Mb of texture memory.
    761 
    762 
    763 8. Do the Voodoo driver support the Voodoo Rush under Windows ?
    764 
    765 Yes, Diego Picciani has developed the support for the Voodoo
    766 Rush but David Bucciarelli has a Pure3D and a Monster3D and Brian Paul
    767 has a Monster3D, so the new versions of the Mesa/Voodoo sometime are
    768 not tested with the Voodoo Rush.
    769 
    770 
    771 9. Do the Voodoo driver support the Voodoo Rush under Linux ?
    772 
    773 No because the Linux Glide doesn't (yet) support the Voodoo Rush.
    774 
    775 
    776 10. Can I sell my Mesa/Voodoo based software and include
    777 a binary copy of the Mesa in order to make the software
    778 working out of the box ?
    779 
    780 Yes.
    781 
    782 
    783 11. Which is the best make target for compiling the Mesa for
    784 Linux GLQuake ('make linux-glide', 'make linux-386-glide', etc.) ?
    785 
    786 'make linux-386-opt-glide' for Voodoo1 and 'make linux-386-opt-V2-glide'
    787 for Voodoo2 boards because it doesn't include the '-fPIC'
    788 option (4-5% faster).
    789 
    790 
    791 12. Can I use a Mesa compiled with a 'make linux-386-opt-V2-glide'
    792 for my applications/programs/demos ?
    793 
    794 Yes, there is only one constrain: you can't run two Mesa applications
    795 at the some time. This isn't a big issue with the today Voodoo Graphics.
    796 
    797 
    798 Thanks to:
    799 ----------
    800 
    801 Henri Fousse       (he has written several parts of the v0.15 and the old GLUT
    802 	            emulator for Win);
    803 
    804 Diego Picciani     (he has developed all the Voodoo Rush support and the wgl
    805 	            emulator);
    806 
    807 Daryll Strauss     (for the Linux Glide and the first Linux support);
    808 
    809 Brian Paul         (of course);
    810 
    811 Dave 'Zoid' Kirsch (for the Linux GLQuake and Linux Quake2test/Q2 ports)
    812 
    813 Bernd Kreimeier    (for the Linux 3Dfx HOWTO and for pushing companies to offer
    814                     a better Linux support)
    815 
    816 3Dfx and Quantum3D (for actively supporting Linux)
    817 
    818 The most update places where find Mesa VooDoo driver related informations are
    819 the Mesa mailing list and my driver WEB page
    820 (http://www-hmw.caribel.pisa.it/fxmesa/index.shtml)
    821 
    822 
    823 David Bucciarelli (davibu (a] tin.it)
    824 
    825 Humanware s.r.l. 
    826 Via XXIV Maggio 62
    827 Pisa, Italy
    828 Tel./Fax +39-50-554108
    829 email: info.hmw (a] plus.it
    830 www: www-hmw.caribel.pisa.it
    831