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