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