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