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