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