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