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