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