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