Check for SYS/GL during library init. Reason is that
[AROS.git] / workbench / libs / mesa / docs / README.3DFX
blob7feda6f33f73ad1463f8ca597b0ece7caf3db91e
2                             3Dfx Glide device driver
6 Requirements:
7 -------------
9 A Voodoo-based videocard/accelerator
10 DOS (with DJGPP), Windows9x/2k (with MinGW), Linux
11 Glide3x library for your OS
13 http://sourceforge.net/projects/glide/
17 How to compile:
18 ---------------
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.
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.
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
53 Compilation defines:
54 --------------------
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)
72 Environment variables:
73 ----------------------
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
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.
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.
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
210 Contact:
211 --------
213 Daniel Borca <dborca 'at' users 'dot' sourceforge 'dot' net>
214 Hiroshi Morii <koolsmoky 'at' users 'dot' sourceforge 'dot' net>
218 WARNING! The info below this line is outdated (yet some of it useful). WARNING!
219 *******************************************************************************
223 Info for Mesa 4.1
224 -----------------
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.
229 To use/enable the Glide driver either do this:
231 './configure --with-glide=DIR'    Where DIR is the location of Glide, like
232                                   /usr/ or /usr/local
236 'make linux-x86-glide'     If using the old-style Makefile system.
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.
243 What do you need ?
244 ------------------
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");
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;
257         - A compiler supported by the Glide library (Micro$oft VC++ (tested),
258           Watcom (tested), GCC for Linux (tested), etc.);
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.
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
278 What is able to do ?
279 --------------------
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)
297 How to compile:
298 ---------------
300 Linux:
301 ------
302         Here are the basic steps for using the 3Dfx hardware with Mesa
303         on Linux:
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
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.
312         - Unpack the MesaLib-3.1.tar.gz and MesaDemos-3.1.tar.gz archives;
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.
317         - In the Mesa-3.1 directory type "make linux-glide"
319         - Compilation _should_ finish without errors;
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"
325         - You'll have to run Glide-based programs as root or set the suid
326           bit on executables;
328         - Try a demo:
329             cd gdemos
330             su
331             setenv MESA_GLX_FX f
332             ./gears     (hit ESC to exit)
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).
338 MacOS:
339 ------
340         Check the WEB page at http://valerie.inf.elte.hu/~boga/Mesa.html
341       
342 MS Windows:
343 -----------
345         For the MSVC++:
346         - The glide2x.lib have to be in the default MSVC++ lib directory;
348         - The Glide headers have to be in the default MSVC++ include directory;
350         - You must have the vcvars32.bat script in your PATH;
352         - Go to the directory Mesa-3.1 and run the mesafx.bat;
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);
358         - At the end, you will be in the Mesa-3.1/3Dfx/demos directory;
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);
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.
367         - I think that you can easy change the Makefile.fx files in order
368           to work with other kind of compilers;
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.
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).
379 Doing more with Mesa & Linux Glide:
380 -----------------------------------
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__).
386         Full-screen 3Dfx rendering:
387         ---------------------------
389         1. Set the MESA_GLX_FX variable to "fullscreen":
391                 ksh:
392                         export MESA_GLX_FX = "fullscreen"
393                 csh:
394                         setenv MESA_GLX_FX fullscreen
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:
404                 setenv SST_VGA_PASS 1
405                 setenv SST_NOSHUTDOWN
406         
407         or for the Voodoo2:
409                 setenv SSTV2_VGA_PASS 1
410                 setenv SSTV2_NOSHUTDOWN
412         Rendering into an X window with the help of the Voodoo hardware:
413         ----------------------------------------------------------------
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.
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
428         (the Voodoo2 requires to use "SSTV2_" instead "SST_").
430         3. As root, try running a GLX-based program
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).
440         NOTE: the in-window rendering feature only works with double-buffering.
443         On the fly switching between in window rendering and full screen rendering
444         --------------------------------------------------------------------------
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:
453                 #if defined(FX) && define(XMESA)
454                 #include <GL/xmesa.h>
456                 static int fullscreen=1;
457                 #endif
459                 ...
461                 /* In the GLUT keyboard event callback */
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                 ...
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.
475         Rendering into an X window with the X11 software driver:
476         --------------------------------------------------------
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).
483 Useful Glide Environment Variables:
484 -----------------------------------
486         - To disable the 3Dfx logo, set the FX_GLIDE_NO_SPLASH variable.
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
495         - To set the default screen refresh rate:
496                 setenv SST_SCREENREFRESH=75
498           the supported values are 60, 70, 72, 75, 80, 85, 90, 100, 120.
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
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
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
518         - The Quantum3D Obsidian3D-2 X-24 requires some special env. setting
519           in order to work under Linux:
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
530           (Thanks to Phil Ross for this trick).
535 The Mesa/Voodoo Environment Variables:
536 --------------------------------------
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;
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);
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;
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);
557         - If you define the env. var. MESA_FX_INFO:
558                 export MESA_FX_INFO=1
559           you will get some useful statistic.
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.
567 Know BUGS and Problems:
568 -----------------------
570         - fog doesn't work in the right way when using the glDepthRange() function;
572         - Maximum texture size: 256x256 (this is an hardware limit);
574         - Texture border aren't yet supported;
576         - A GL_BLEND in a glTexEnv() is not supported (it is an hardware limit);
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 !!!);
582         - Stencil buffer and Accumulation buffer are emulated in software (they are not
583           directly supported by the Hardware);
585         - Color index mode not implemented (this is an hardware limit);
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.
591         - The driver switch to pure software (_slow_) rendering when:
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;
608         NOTE: this is list is not yet complete.
609                 
611 Hints and Special Features:
612 ---------------------------
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.
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.
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.
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.
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.
642         - Use triangles and quads strip: they are a LOT faster than sparse
643           triangles and quads.
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.
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.
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).
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.
675 Did you find a lot BUGs and problems ? Good, send me an email.
679 FAQ:
680 ----
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)
687 1. What is 3Dfx?
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).
694 2. What is Glide?
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.
700 3Dfx, Inc. should be applauded for allowing the Linux version of Glide
701 to be written.
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
708 3. What is fxmesa?
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.
716 4. What is GLQuake?
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.
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.
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'.
734 5. What is GLUT?
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.
740 Check the Mark's home page for more informations (http://reality.sgi.com/mjk_asd).
742 Every OpenGL programmer should check out GLUT.
744 GLUT on Linux uses GLX.
747 6. What is GLX?
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.
756 7. Is the Voodoo driver able to use the 4Mb texture memory of
757 the Pure3D boards ?
759 Yes, the Voodoo driver v0.20 includes the support for Voodoo
760 Graphics boards with more than 2Mb of texture memory.
763 8. Do the Voodoo driver support the Voodoo Rush under Windows ?
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.
771 9. Do the Voodoo driver support the Voodoo Rush under Linux ?
773 No because the Linux Glide doesn't (yet) support the Voodoo Rush.
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 ?
780 Yes.
783 11. Which is the best make target for compiling the Mesa for
784 Linux GLQuake ('make linux-glide', 'make linux-386-glide', etc.) ?
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).
791 12. Can I use a Mesa compiled with a 'make linux-386-opt-V2-glide'
792 for my applications/programs/demos ?
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.
798 Thanks to:
799 ----------
801 Henri Fousse       (he has written several parts of the v0.15 and the old GLUT
802                     emulator for Win);
804 Diego Picciani     (he has developed all the Voodoo Rush support and the wgl
805                     emulator);
807 Daryll Strauss     (for the Linux Glide and the first Linux support);
809 Brian Paul         (of course);
811 Dave 'Zoid' Kirsch (for the Linux GLQuake and Linux Quake2test/Q2 ports)
813 Bernd Kreimeier    (for the Linux 3Dfx HOWTO and for pushing companies to offer
814                     a better Linux support)
816 3Dfx and Quantum3D (for actively supporting Linux)
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)
823 David Bucciarelli (davibu@tin.it)
825 Humanware s.r.l. 
826 Via XXIV Maggio 62
827 Pisa, Italy
828 Tel./Fax +39-50-554108
829 email: info.hmw@plus.it
830 www: www-hmw.caribel.pisa.it