home *** CD-ROM | disk | FTP | other *** search
/ Freelog Special Edition 1: Linux / CD1.iso / doc / HOWTO / 3Dfx-HOWTO next >
Text File  |  1998-10-14  |  75KB  |  1,981 lines

  1.   The Linux 3Dfx HOWTO
  2.   Bernd Kreimeier (bk@gamers.org)
  3.   v1.16, 6 February 1998
  4.  
  5.   This document describes 3Dfx graphics accelerator chip support for
  6.   Linux. It lists some supported hardware, describes how to configure
  7.   the drivers, and answers frequently asked questions.
  8.   ______________________________________________________________________
  9.  
  10.   Table of Contents
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.   1. Introduction
  68.  
  69.      1.1 Contributors and Contacts
  70.      1.2 Acknowledgments
  71.      1.3 Revision History
  72.      1.4 New versions of this document
  73.      1.5 Feedback
  74.      1.6 Distribution Policy
  75.  
  76.   2. Graphics Accelerator Technology
  77.  
  78.      2.1 Basics
  79.      2.2 Hardware configuration
  80.      2.3 A bit of Voodoo Graphics (tm) architecture
  81.  
  82.   3. Installation
  83.  
  84.      3.1 Installing the board
  85.         3.1.1 Troubleshooting the hardware installation
  86.         3.1.2 Configuring the kernel
  87.         3.1.3 Configuring devices
  88.      3.2 Setting up the Displays
  89.         3.2.1 Single screen display solution
  90.         3.2.2 Single screen dual cable setup
  91.         3.2.3 Dual screen display solution
  92.      3.3 Installing the Glide distribution
  93.         3.3.1 Using the detect program
  94.         3.3.2 Using the test programs
  95.  
  96.   4. Answers To Frequently Asked Questions
  97.  
  98.   5. FAQ: Requirements?
  99.  
  100.      5.1 What are the system requirements?
  101.      5.2 Does it work with Linux-Alpha?
  102.      5.3 Which 3Dfx chipsets are supported?
  103.      5.4 Is the Voodoo Rush (tm) supported?
  104.      5.5 Which boards are supported?
  105.      5.6 How do boards differ?
  106.      5.7 What about AGP?
  107.  
  108.   6. FAQ: Voodoo Graphics (tm)? 3Dfx?
  109.  
  110.      6.1 Who is 3Dfx?
  111.      6.2 Who is Quantum3D?
  112.      6.3 What is the Voodoo Graphics (tm)?
  113.      6.4 What is the Voodoo Rush (tm)?
  114.      6.5 What is the Voodoo 2 (tm)?
  115.      6.6 What is VGA pass-though?
  116.      6.7 What is Texelfx or TMU?
  117.      6.8 What is a Pixelfx unit?
  118.      6.9 What is SLI mode?
  119.      6.10 Is there a single board SLI setup?
  120.      6.11 How much memory? How many buffers?
  121.      6.12 Does the Voodoo Graphics (tm) do 24 or 32 bit color?
  122.      6.13 Does the Voodoo Graphics (tm) store 24 or 32 bit z-buffer per pixel?
  123.      6.14 What resolutions does the Voodoo Graphics (tm) support?
  124.      6.15 What texture sizes are supported?
  125.      6.16 Does the Voodoo Graphics (tm) support paletted textures?
  126.      6.17 What about overclocking?
  127.      6.18 Where could I get additional info on Voodoo Graphics (tm)?
  128.  
  129.   7. FAQ: Glide? TexUS?
  130.  
  131.      7.1 What is Glide anyway?
  132.      7.2 What is TexUS?
  133.      7.3 Is Glide freeware?
  134.      7.4 Where do I get Glide?
  135.      7.5 Is the Glide source available?
  136.      7.6 Is Linux Glide supported?
  137.      7.7 Where could I post Glide questions?
  138.      7.8 Where to send bug reports?
  139.      7.9 Who is maintaining it?
  140.      7.10 How can I contribute to Linux Glide?
  141.      7.11 Do I have to use Glide?
  142.      7.12 Should I program using the Glide API?
  143.      7.13 What is the Glide current version?
  144.      7.14 Does it support multiple Texelfx already?
  145.      7.15 Is Linux Glide identical to DOS/Windows Glide?
  146.      7.16 Where to I get information on Glide?
  147.      7.17 Where to get some Glide demos?
  148.      7.18 What is ATB?
  149.  
  150.   8. FAQ: Glide and XFree86?
  151.  
  152.      8.1 Does it run with XFree86?
  153.      8.2 Does it only run full screen?
  154.      8.3 What is the problem with AT3D/Voodoo Rush (tm) boards?
  155.      8.4 What about GLX for XFree86?
  156.      8.5 Glide and commerical X Servers?
  157.      8.6 Glide and SVGA?
  158.      8.7 Glide and GGI?
  159.  
  160.   9. FAQ: OpenGL/Mesa?
  161.  
  162.      9.1 What is OpenGL?
  163.      9.2 Where to get additional information on OpenGL?
  164.      9.3 Is Glide an OpenGL implementation?
  165.      9.4 Is there an OpenGL driver from 3Dfx?
  166.      9.5 Is there a commercial OpenGL for Linux and 3Dfx?
  167.      9.6 What is Mesa?
  168.      9.7 Does Mesa work with 3Dfx?
  169.      9.8 How portable is Mesa with Glide?
  170.      9.9 Where to get info on Mesa?
  171.      9.10 Where to get information on Mesa Voodoo?
  172.      9.11 Does Mesa support multitexturing?
  173.      9.12 Does Mesa support single pass trilinear mipmapping?
  174.      9.13 What is the Mesa "Window Hack"?
  175.      9.14 How about GLUT?
  176.  
  177.   10. FAQ: But Quake?
  178.  
  179.      10.1 What about that 3Dfx GL driver for Quake?
  180.      10.2 Is there a 3Dfx based glQuake for Linux?
  181.      10.3 Does glQuake run in an XFree86 window?
  182.      10.4 Known Linux Quake problems?
  183.      10.5 Know Linux Quake security problems?
  184.      10.6 Does LinuxQuake use multitexturing?
  185.      10.7 Where can I get current information on Linux glQuake?
  186.  
  187.   11. FAQ: Troubleshooting?
  188.  
  189.      11.1 Has this hardware been tested?
  190.      11.2 Failed to change I/O privilege?
  191.      11.3 Does it work without root privilege?
  192.      11.4 Displayed images looks awful (single screen)?
  193.      11.5 The last frame is still there (single or dual screen)?
  194.      11.6 Powersave kicks in (dual screen)?
  195.      11.7 My machine seem to lock (X11, single screen)?
  196.      11.8 My machine locks (single or dual screen)?
  197.      11.9 My machine locks (used with S3 VGA board)?
  198.      11.10 No address conflict, but locks anyway?
  199.      11.11 Mesa runs, but does not access the board?
  200.      11.12 Resetting dual board SLI?
  201.      11.13 Resetting single board SLI?
  202.  
  203.  
  204.   ______________________________________________________________________
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.   1.  Introduction
  213.  
  214.   This is the Linux 3Dfx HOWTO document. It is intended as a quick
  215.   reference covering everything you need to know to install and
  216.   configure 3Dfx support under Linux. Frequently asked questions
  217.   regarding the 3Dfx support are answered, and references are given to
  218.   some other sources of information on a variety of topics related to
  219.   computer generated, hardware accelerated 3D graphics.
  220.  
  221.   This information is only valid for Linux on the Intel platform.  Some
  222.   information may be applicable to other processor architectures, but I
  223.   have no first hand experience or information on this. It is only
  224.   applicable to boards based on 3Dfx technology, any other graphics
  225.   accelerator hardware is beyond the scope of this document.
  226.  
  227.  
  228.  
  229.   1.1.  Contributors and Contacts
  230.  
  231.   This document would not have been possible without all the information
  232.   contributed by other people - those involved in the Linux Glide port
  233.   and the beta testing process, in the development of Mesa and the Mesa
  234.   Voodoo drivers, or rewieving the document on behalf of 3Dfx and
  235.   Quantum3D.  Some of them contributed entire sections to this document.
  236.  
  237.   Daryll Strauss daryll@harlot.rb.ca.us did the port, Paul J. Metzger
  238.   pjm@rbd.com modified the Mesa Voodoo driver (written by David
  239.   Bucciarelli tech.hmw@plus.it) for Linux, Brian Paul brianp@RA.AVID.COM
  240.   integrated it with his famous Mesa library. With respect to Voodoo
  241.   Graphics (tm) accelerated Mesa, additional thanks has to go to Henri
  242.   Fousse, Gary McTaggart, and the maintainer of the 3Dfx Mesa for DOS,
  243.   Charlie Wallace Charlie.Wallace@unistudios.com.  The folks at 3Dfx,
  244.   notably Gary Sanders, Rod Hughes, and Marty Franz, provided valuable
  245.   input, as did Ross Q. Smith of Quantum3D. The pages on the Voodoo
  246.   Extreme and Operation 3Dfx websites provided useful info as well, and
  247.   in some case I relied on the 3Dfx local Newsgroups. The Linux glQuake2
  248.   port that uses Linux Glide and Mesa is maintained by Dave Kirsch
  249.   zoid@idsoftware.com.  Thanks to all those who sent e-mail regarding
  250.   corrections and updates, and special thanks to Mark Atkinson for
  251.   reminding me of the dual cable setup.
  252.  
  253.   Thanks to the SGML-Tools package (formerly known as Linuxdoc-SGML),
  254.   this HOWTO is available in several formats, all generated from a
  255.   common source file. For information on SGML-Tools see its homepage at
  256.   pobox.com/~cg/sgmltools.
  257.  
  258.  
  259.  
  260.   1.2.  Acknowledgments
  261.  
  262.   3Dfx, the 3Dfx Interactive logo, Voodoo Graphics (tm), and Voodoo Rush
  263.   (tm) are registered trademarks of 3Dfx Interactive, Inc.  Glide,
  264.   TexUS, Pixelfx and Texelfx are trademarks of 3Dfx Interactive, Inc.
  265.   OpenGL is a registered trademark of Silicon Graphics. Obsidian is a
  266.   trademark of Quantum3D.  Other product names are trademarks of the
  267.   respective holders, and are hereby considered properly acknowledged.
  268.  
  269.  
  270.   1.3.  Revision History
  271.  
  272.  
  273.      Version 1.03
  274.         First version for public release.
  275.  
  276.      Version 1.16
  277.         Current version v1.16 6 February 1998.
  278.  
  279.  
  280.  
  281.  
  282.  
  283.   1.4.  New versions of this document
  284.  
  285.   You will find the most recent version of this document at
  286.   www.gamers.org/dEngine/xf3D/.
  287.  
  288.   New versions of this document will be periodically posted to the
  289.   comp.os.linux.answers newsgroup. They will also be uploaded to various
  290.   anonymous ftp sites that archive such information including
  291.   ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/.
  292.  
  293.   Hypertext versions of this and other Linux HOWTOs are available on
  294.   many World-Wide-Web sites, including sunsite.unc.edu/LDP/. Most Linux
  295.   CD-ROM distributions include the HOWTOs, often under the
  296.   /usr/doc/directory, and you can also buy printed copies from several
  297.   vendors.
  298.  
  299.   If you make a translation of this document into another language, let
  300.   me know and I'll include a reference to it here.
  301.  
  302.  
  303.  
  304.   1.5.  Feedback
  305.  
  306.   I rely on you, the reader, to make this HOWTO useful. If you have any
  307.   suggestions, corrections, or comments, please send them to me (
  308.   bk@gamers.org), and I will try to incorporate them in the next
  309.   revision.  Please add HOWTO 3Dfx to the Subject-line of the mail, so
  310.   procmail will dump it in the appropriate folder.
  311.  
  312.   Before sending bug reports or questions, please read all of the
  313.   information in this HOWTO, and send detailed information about the
  314.   problem.
  315.  
  316.   If you publish this document on a CD-ROM or in hardcopy form, a
  317.   complimentary copy would be appreciated. Mail me for my postal
  318.   address. Also consider making a donation to the Linux Documentation
  319.   Project to help support free documentation for Linux. Contact the
  320.   Linux HOWTO coordinator, Tim Bynum (linux-howto@sunsite.unc.edu), for
  321.   more information.
  322.  
  323.  
  324.  
  325.   1.6.  Distribution Policy
  326.  
  327.   Copyright (c) 1997, 1998 by Bernd Kreimeier.  This document may be
  328.   distributed under the terms set forth in the LDP license at
  329.   sunsite.unc.edu/LDP/COPYRIGHT.html.
  330.  
  331.   This HOWTO is free documentation; you can redistribute it and/or
  332.   modify it under the terms of the LDP license.  This document is
  333.   distributed in the hope that it will be useful, but without any
  334.   warranty; without even the implied warranty of merchantability or
  335.   fitness for a particular purpose.  See the LDP license for more
  336.   details.
  337.  
  338.  
  339.  
  340.  
  341.  
  342.   2.  Graphics Accelerator Technology
  343.  
  344.   2.1.  Basics
  345.  
  346.   This section gives a very cursory overview of computer graphics
  347.   accelerator technology, in order to help you understand the concepts
  348.   used later in the document. You should consult e.g.  a book on OpenGL
  349.   in order to learn more.
  350.  
  351.  
  352.   2.2.  Hardware configuration
  353.  
  354.   Graphics accelerators come in different flavors: either as a separate
  355.   PCI board that is able to pass through the video signal of a (possibly
  356.   2D or video accelerated) VGA board, or as a PCI board that does both
  357.   VGA and 3D graphics (effectively replacing older VGA controllers).
  358.   The 3Dfx boards based on the Voodoo Graphics (tm) belong to the former
  359.   category. We will get into this again later.
  360.  
  361.  
  362.   If there is no address conflict, any 3D accelerator board could be
  363.   present under Linux without interfering, but in order to access the
  364.   accelerator, you will need a driver. A combined 2D/3D accelerator
  365.   might behave differently.
  366.  
  367.  
  368.   2.3.  A bit of Voodoo Graphics (tm) architecture
  369.  
  370.   Usually, accessing texture memory and frame/depth buffer is a major
  371.   bottleneck. For each pixel on the screen, there are at least one
  372.   (nearest), four (bi-linear), or eight (tri-linear mipmapped) read
  373.   accesses to texture memory, plus a read/write to the depth buffer, and
  374.   a read/write to frame buffer memory.
  375.  
  376.   The Voodoo Graphics (tm) architecture separates texture memory from
  377.   frame/depth buffer memory by introducing two separate rendering
  378.   stages, with two corresponding units (Pixelfx and Texelfx), each
  379.   having a separate memory interface to dedicated memory. This gives an
  380.   above-average fill rate, paid for restrictions in memory management
  381.   (e.g. unused framebuffer memory can not be used for texture caching).
  382.  
  383.   Moreover, a Voodoo Graphics (tm) could use two TMU's (texture
  384.   management or texelfx units), and finally, two Voodoo Graphics (tm)
  385.   could be combined with a mechanism called Scan-Line Interleaving
  386.   (SLI). SLI essentially means that each Pixelfx unit effectively
  387.   provides only every other scanline, which decreases bandwidth impact
  388.   on each Pixelfx' framebuffer memory.
  389.  
  390.  
  391.  
  392.   3.  Installation
  393.  
  394.   Configuring Linux to support 3Dfx accelerators involves the following
  395.   steps:
  396.  
  397.   1. Installing the board.
  398.  
  399.   2. Installing the Glide distribution.
  400.  
  401.   3. Compiling, linking and/or running the application.
  402.  
  403.   The next sections will cover each of these steps in detail.
  404.  
  405.  
  406.   3.1.  Installing the board
  407.  
  408.   Follow the manufacturer's instructions for installing the hardware or
  409.   have your dealer perform the installation.  It should not be necessary
  410.   to select settings for IRQ, DMA channel, either Plug&Pray (tm) or
  411.   factory defaults should work. The add-on boards described here are
  412.   memory mapped devices and do not use IRQ's. The only kind of conflict
  413.   to avoid is memory overlap with other devices.
  414.  
  415.   As 3Dfx does not develop or sell any boards, do not contact them on
  416.   any problems.
  417.  
  418.  
  419.   3.1.1.  Troubleshooting the hardware installation
  420.  
  421.   To check the installation and the memory mapping, do cat /proc/pci.
  422.   The output should contain something like
  423.  
  424.   ______________________________________________________________________
  425.     Bus  0, device  12, function  0:
  426.       VGA compatible controller: S3 Inc. Vision 968 (rev 0).
  427.         Medium devsel.  IRQ 11.
  428.         Non-prefetchable 32 bit memory at 0xf4000000.
  429.  
  430.     Bus  0, device   9, function  0:
  431.       Multimedia video controller: Unknown vendor Unknown device (rev 2).
  432.         Vendor id=121a. Device id=1.
  433.         Fast devsel.  Fast back-to-back capable.
  434.         Prefetchable 32 bit memory at 0xfb000000.
  435.   ______________________________________________________________________
  436.  
  437.  
  438.   for a Diamond Monster 3D used with a Diamond Stealth-64. Additionally
  439.   a cat /proc/cpuinfo /proc/meminfo might be helpfull for tracking down
  440.   conflicts and/or submitting a bug report.
  441.  
  442.   With current kernels, you will probably get a boot warning like
  443.  
  444.   ______________________________________________________________________
  445.   Jun 12 12:31:52 hal kernel: Warning : Unknown PCI device (121a:1).
  446.   Please read include/linux/pci.h
  447.   ______________________________________________________________________
  448.  
  449.  
  450.   which could be safely ignored. If you happen to have a board not very
  451.   common, or have encountered a new revision, you should take the time
  452.   to follow the advice in /usr/include/linux/pci.h and send all neces¡
  453.   sary information to linux-pcisupport@cao-vlsi.ibp.fr.
  454.  
  455.   If you experience any problems with the board, you should try to
  456.   verify that DOS and/or Win95 or NT support works. You will probably
  457.   not receive any useful response from a board manufacturer on a bug
  458.   report or request regarding Linux. Having dealt with the Diamond
  459.   support e-mail system, I would not expect useful responses for other
  460.   operating systems either.
  461.  
  462.  
  463.   3.1.2.  Configuring the kernel
  464.  
  465.   There is no kernel configuration necessary, as long as PCI support is
  466.   enabled.  The Linux Kernel HOWTO
  467.   <http://sunsite.unc.edu/mdw/HOWTO/Kernel-HOWTO.html> should be
  468.   consulted for the details of building a kernel.
  469.  
  470.  
  471.  
  472.   3.1.3.  Configuring devices
  473.  
  474.   The current drivers do not (yet) require any special devices.  This is
  475.   different from other driver developments (e.g. the sound drivers,
  476.   where you will find a /dev/dsp and /dev/audio). The driver uses the
  477.   /dev/mem device which should always be available. In consequence, you
  478.   need to use setuid or root privileges to access the accelerator board.
  479.  
  480.  
  481.   3.2.  Setting up the Displays
  482.  
  483.   There are two possible setups with add-on boards. You could either
  484.   pass-through the video signal from your regular VGA board via the
  485.   accelerator board to the display, or you could use two displays at the
  486.   same time.  Rely to the manual provided by the board manufacturer for
  487.   details. Both configurations have been tried with the Monster 3D
  488.   board.
  489.  
  490.  
  491.   3.2.1.  Single screen display solution
  492.  
  493.   This configuration allows you to check basic operations of the
  494.   accelerator board - if the video signal is not transmitted to the
  495.   display, hardware failure is possible.
  496.  
  497.   Beware that the video output signal might deteoriate significantly if
  498.   passed through the video board. To a degree, this is inevitable.
  499.   However, reviews have complained about below-average of the cables
  500.   provided e.g. with the Monster 3D, and judging from the one I tested,
  501.   this has not changed.
  502.  
  503.   There are other pitfalls in single screen configurations.  Switching
  504.   from the VGA display mode to the accelerated display mode will change
  505.   resolution and refresh rate as well, even if you are using 640x480
  506.   e.g. with X11, too.  Moreover, if you are running X11, your
  507.   application is responsible for demanding all keyboard and mouse
  508.   events, or you might get stuck because of changed scope and exposure
  509.   on the X11 display (that is effectively invisible when the accelerated
  510.   mode is used) You could use SVGA console mode instead of X11.
  511.  
  512.   If you are going to use a single screen configuration and switch modes
  513.   often, remember that your monitor hardware might not enjoy this kind
  514.   of use.
  515.  
  516.  
  517.  
  518.   3.2.2.  Single screen dual cable setup
  519.  
  520.   Some high end monitors (e.g. the EIZO F-784-T) come with two
  521.   connectors, one with 5 BNC connectors for RGB, HSync, VSync, the other
  522.   e.g. a regular VGA or a 13W3 Sub-D VGA.  These displays usually also
  523.   feature a front panel input selector to safely switch from one to the
  524.   other. It is thus possible to use e.g. a VGA-to-BNC cable with your
  525.   high end 2D card, and a VGA-to-13W3 Sub-D cable with your 3Dfx, and
  526.   effectively run dual screen on one display.
  527.  
  528.  
  529.   3.2.3.  Dual screen display solution
  530.  
  531.   The accelerator board does not need the VGA input signal.  Instead of
  532.   routing the common video output through the accelerator board, you
  533.   could attach a second monitor to its output, and use both at the same
  534.   time. This solution is more expensive, but gives best results, as your
  535.   main display will still be hires and without the signal quality losses
  536.   involved in a pass-through solution. In addition, you could use X11
  537.   and the accelerated full screen display in parallel, for development
  538.   and debugging.
  539.  
  540.   A common problem is that the accelerator board will not provide any
  541.   video signal when not used. In consequence, each time the graphics
  542.   application terminates, the hardware screensave/powersave might kick
  543.   in depending on your monitors configuration. Again, your hardware
  544.   might not enjoy being treated like this. You should use
  545.  
  546.   ______________________________________________________________________
  547.   setenv SST_DUALSCREEN 1
  548.   ______________________________________________________________________
  549.  
  550.  
  551.   to force continued video output in this setup.
  552.  
  553.  
  554.   3.3.  Installing the Glide distribution
  555.  
  556.   The Glide driver and library are provided as a single compressed
  557.   archive. Use tar and gzip to unpack, and follow the instructions in
  558.   the README and INSTALL accompanying the distribution.  Read the
  559.   install script and run it. Installation puts everything in
  560.   /usr/local/glide/include,lib,bin and sets the ld.conf to look there.
  561.   Where it installs and setting ld.conf are independent actions. If you
  562.   skip the ld.conf step then you need the LD_LIBRARY_PATH.
  563.  
  564.   You will need to install the header files in a location available at
  565.   compile time, if you want to compile your own graphics applications.
  566.   If you do not want to use the installation as above (i.e. you insist
  567.   on a different location), make sure that any application could access
  568.   the shared libary at runtime, or you will get a response like can't
  569.   load library 'libglide.so'.
  570.  
  571.  
  572.  
  573.  
  574.   3.3.1.  Using the detect program
  575.  
  576.   There is a bin/detect program in the distribution (the source is not
  577.   available). You have to run it as root, and you will get something
  578.   like
  579.  
  580.   ______________________________________________________________________
  581.   slot  vendorId   devId   baseAddr0  command  description
  582.   ----  --------  ------  ----------  -------  -----------
  583.     00    0x8086  0x122d  0x00000000   0x0006  Intel:430FX (Triton)
  584.     07    0x8086  0x122e  0x00000000   0x0007  Intel:ISA bridge
  585.     09    0x121a  0x0001  0xfb000008   0x0002  3Dfx:video multimedia adapter
  586.     10    0x1000  0x0001  0x0000e401   0x0007  ???:SCSI bus controller
  587.     11    0x9004  0x8178  0x0000e001   0x0017  Adaptec:SCSI bus controller
  588.     12    0x5333  0x88f0  0xf4000000   0x0083  S3:VGA-compatible display co
  589.   ______________________________________________________________________
  590.  
  591.  
  592.   as a result. If you do not have root privileges, the program will bail
  593.   out with
  594.  
  595.   ______________________________________________________________________
  596.   Permission denied: Failed to change I/O privilege. Are you root?
  597.   ______________________________________________________________________
  598.  
  599.  
  600.   output might come handy for a bug report as well.
  601.  
  602.  
  603.  
  604.  
  605.   3.3.2.  Using the test programs
  606.  
  607.   Within the Glide distribution, you will find a folder with test
  608.   programs. Note that these test programs are under 3Dfx copyright, and
  609.   are legally available for use only if you have purchased a board with
  610.   a 3Dfx chipset. See the LICENSE file in the distribution, or their web
  611.   site www.3dfx.com for details.
  612.  
  613.   It is recommend to compile and link the test programs even if there
  614.   happen to be binaries in the distribution. Note that some of the
  615.   programs will requires some files like alpha.3df from the distribution
  616.   to be available in the same folder.  All test programs use the 640x480
  617.   screen resolution. Some will request a veriety of single character
  618.   inputs, others will just state Press A Key To Begin Test. Beware of
  619.   loss of input scope if running X11 on the same screen at the same
  620.   time.
  621.  
  622.   See the README.test for a list of programs, and other details.
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.   4.  Answers To Frequently Asked Questions
  630.  
  631.   The following section answers some of the questions that (will) have
  632.   been asked on the Usenet news groups and mailing lists. The FAQ has
  633.   been subdivided into several parts for convenience, namely
  634.  
  635.   ╖  FAQ: Requirements?
  636.  
  637.   ╖  FAQ: Voodoo Graphics (tm)? 3Dfx?
  638.  
  639.   ╖  FAQ: Glide?
  640.  
  641.   ╖  FAQ: Glide and SVGA?
  642.  
  643.   ╖  FAQ: Glide and XFree86?
  644.  
  645.   ╖  FAQ: Glide versus OpenGL/Mesa?
  646.  
  647.   ╖  FAQ: But Quake?
  648.  
  649.   ╖  FAQ: Troubleshooting?
  650.  
  651.      Each section lists several questions and answers, which will
  652.      hopefully address most problems.
  653.  
  654.  
  655.  
  656.   5.  FAQ: Requirements?
  657.  
  658.  
  659.  
  660.  
  661.   5.1.  What are the system requirements?
  662.  
  663.   A Linux PC, PCI 2.1 compliant, a monitor capable of 640x480, and a 3D
  664.   accelerator board based on the 3Dfx Voodoo Graphics (tm). It will work
  665.   on a P5 or P6, with or without MMX. The current version does not use
  666.   MMX, but it has some optimized code paths for P6.
  667.  
  668.   At one point, some 3Dfx statements seemed to imply that using Linux
  669.   Glide required using a RedHat distribution. Note that while Linux
  670.   Glide has originally been ported in a RedHat 4.1 environment, it has
  671.   been used and tested with many other Linux distributions, including
  672.   homebrew, Slackware, and Debian 1.3.1.
  673.  
  674.  
  675.   5.2.  Does it work with Linux-Alpha?
  676.  
  677.   There is currently no Linux Glide distribution available for any
  678.   platform besides i586. As the Glide sources are not available for
  679.   distribution, you will have to wait for the binary. Quantum3D has DEC
  680.   Alpha support announced for 2H97. Please contact Daryll Strauss if you
  681.   are interested in supporting this.
  682.  
  683.   There is also the issue of porting the the assembly modules. While
  684.   there are alternative C paths in the code, the assembly module in
  685.   Glide (essentially triangle setup) offered significant performance
  686.   gains depending on the P5 CPU used.
  687.  
  688.  
  689.  
  690.   5.3.  Which 3Dfx chipsets are supported?
  691.  
  692.   Currently, the  3Dfx Voodoo Graphics (tm) chipset is supported under
  693.   Linux. The Voodoo Rush (tm) chipset is not yet supported.
  694.  
  695.  
  696.   5.4.  Is the Voodoo Rush (tm) supported?
  697.  
  698.   The current port of Glide to Linux does not support the Voodoo Rush
  699.   (tm). An update is in the works.
  700.  
  701.   The problem is that at one point the Voodoo Rush (tm) driver code in
  702.   Glide depended on Direct Draw. There was an SST96 based DOS portion in
  703.   the library that could theoretically be used for Linux, as soon as all
  704.   portions residing in the 2D/Direct Draw/D3D combo driver are replaced.
  705.  
  706.   Thus Voodoo Rush (tm) based boards like the Hercules Stingray 128/3D
  707.   or Intergraph Intense Rush are not supported yet.
  708.  
  709.  
  710.  
  711.   5.5.  Which boards are supported?
  712.  
  713.   There are no officially supported boards, as 3Dfx does not sell any
  714.   boards. This section does not attempt to list all boards, it will just
  715.   give an overview, and will list only boards that have been found to
  716.   cause trouble.
  717.  
  718.   It is important to recognize that Linux support for a given board does
  719.   not only require a driver for the 3D accelerator component. If a board
  720.   features its own VGA core as well, support by either Linux SVGA or
  721.   XFree86 is required as well (see section about Voodoo Rush (tm)
  722.   chipset).  Currently, an add-on solution is recommended, as it allows
  723.   you to choose a regular graphics board well supported for Linux. There
  724.   are other aspects discussed below.
  725.  
  726.  
  727.   All Quantum3D Obsidian boards, independend of texture memory, frame
  728.   buffer memory, number of Pixelfx and Texelfx units, and SLI should
  729.   work. Same for all other Voodoo Graphics (tm) based boards, like
  730.   Orchid Righteous 3D, Canopus Pure 3D, Flash 3D, and Diamond Monster
  731.   3D.  Voodoo Rush (tm) based boards are not yet supported.
  732.  
  733.   Boards that are not based on 3Dfx chipsets (e.g. manufactured by S3,
  734.   Matrox, 3Dlabs, Videologic) do not work with the 3Dfx drivers and are
  735.   beyond the scope of this document.
  736.  
  737.  
  738.  
  739.  
  740.   5.6.  How do boards differ?
  741.  
  742.   As the board manufacturers are using the same chipset, any differences
  743.   are due to board design. Examples are quality of the pass-through
  744.   cable and connectors (reportedly, Orchid provided better quality than
  745.   Diamond), availability of a TV-compliant video signal output (Canopus
  746.   Pure 3D), and, most notably, memory size on board.
  747.  
  748.   Most common were boards for games with 2MB texture cache and 2 MB
  749.   framebuffer memory, however, the Canopus Pure3D comes with a maximal 4
  750.   MB texture cache, which is an advantage e.g.  with games using
  751.   dynamically changed textures, and/or illumation textures (Quake, most
  752.   notably).  The memory architecture of a typical Voodoo Graphics (tm)
  753.   board is described below, in a separate section.
  754.  
  755.   Quantum 3D offers the widest selection of 3Dfx-based boards, and is
  756.   probably the place to go if you are looking for a high end Voodoo
  757.   Graphics (tm) based board configuration.  Quantum 3D is addressing the
  758.   visual simulation market, while most of the other vendors are only
  759.   targetting the consumer-level PC-game market.
  760.  
  761.  
  762.  
  763.   5.7.  What about AGP?
  764.  
  765.   There is no Voodoo Graphics (tm) or Voodoo Rush (tm) AGP board that I
  766.   am aware of. I am not aware of AGP support under Linux, and I do not
  767.   know whether upcmong AGP boards using 3Dfx technology might possibly
  768.   be supported with Linux.
  769.  
  770.  
  771.  
  772.  
  773.   6.  FAQ: Voodoo Graphics (tm)? 3Dfx?
  774.  
  775.   6.1.  Who is 3Dfx?
  776.  
  777.   3Dfx is a San Jose based manufacturer of 3D graphics accelerator
  778.   hardware for arcade games, game consoles, and PC boards.  Their
  779.   official website is www.3dfx.com. 3Dfx does not sell any boards, but
  780.   other companies do, e.g. Quantum3D.
  781.  
  782.  
  783.  
  784.   6.2.  Who is Quantum3D?
  785.  
  786.   Quantum3D started as a 3Dfx spin-off, manufacturing high end
  787.   accelerator boards based on 3Dfx chip technology for consumer and
  788.   business market, and supplying arcade game technology. See their home
  789.   page at www.quantum3d.com for additional information. For general
  790.   inquiries regarding Quantum3D, please send mail to info@quantum3d.
  791.  
  792.  
  793.   6.3.  What is the Voodoo Graphics (tm)?
  794.  
  795.   The Voodoo Graphics (tm) is a chipset manufactured by 3Dfx. It is used
  796.   in hardware acceleration boards for the PC.  See the HOWTO section on
  797.   supported hardware.
  798.  
  799.  
  800.   6.4.  What is the Voodoo Rush (tm)?
  801.  
  802.   The Voodoo Rush (tm) is a derivate of the Voodoo Graphics (tm) that
  803.   has an interface to cooperate with a 2D VGA video accelerator,
  804.   effectively supporting accelerated graphics in windows. This combo is
  805.   currently not supported with Linux.
  806.  
  807.  
  808.   6.5.  What is the Voodoo 2 (tm)?
  809.  
  810.   The Voodoo 2 (tm) is the successor of the Voodoo Graphics (tm)
  811.   chipset, featuring several improvements. It is announced for late
  812.   March 1998, and annoucements of Voodoo 2 (tm) based boards have been
  813.   published e.g. by Quantum 3D, by Creative Labs, Orchid Technologies,
  814.   and Diamond Multimedia.
  815.  
  816.   The Voodoo 2 (tm) is supposed to be backwards compatible.  However, a
  817.   new version of Glide will have to be ported to Linux.
  818.  
  819.  
  820.  
  821.   6.6.  What is VGA pass-though?
  822.  
  823.   The Voodoo Graphics (tm) (but not the Voodoo Rush (tm)) boards are
  824.   add-on boards, meant to be used with a regular 2D VGA video
  825.   accelerator board. In short, the video output of your regular VGA
  826.   board is used as input for the Voodoo Graphics (tm) based add-on
  827.   board, which by default passes it through to the display also
  828.   connected to the Voodoo Graphics (tm) board. If the Voodoo Graphics
  829.   (tm) is used (e.g. by a game), it will disconnect the VGA input
  830.   signal, switch the display to a 640x480 fullscreen mode with the
  831.   refresh rate configured by SST variables and the application/driver,
  832.   and generate the video signal itself. The VGA doesn't need to be aware
  833.   of this, and won't be.
  834.  
  835.   This setup has several advantages: free choice of 2D VGA board, which
  836.   is an issue with Linux, as XFree86 drivers aren't available for all
  837.   chipsets and revisions, and a cost effective migration path to
  838.   accelerated 3D graphics. It also has several disadvantages: an
  839.   application using the Voodoo Graphics (tm) might not re-enable video
  840.   output when crashing, and regular VGA video signal deteoriates in the
  841.   the pass-through process.
  842.  
  843.  
  844.   6.7.  What is Texelfx or TMU?
  845.  
  846.   Voodoo Graphics (tm) chipsets have two units. The first one interfaces
  847.   the texture memory on the board, does the texture mapping, and
  848.   ultimately generates the input for the second unit that interfaces the
  849.   framebuffer. This one is called Texelfx, aka Texture Management Unit,
  850.   aka TMU. The neat thing about this is that a board can use two Texelfx
  851.   instead of only one, like some of the Quantum3D Obsidian boards did,
  852.   effectively doubling the processing power in some cases, depending on
  853.   the application.
  854.  
  855.   As each Texelfx can address 4MB texture memory, a dual Texelfx setup
  856.   has an effective texture cache of up to 8MB.  This can be true even if
  857.   only one Texelfx is actually needed by a particular application, as
  858.   textures can be distributed to both Texelfx, which are used depending
  859.   on the requested texture. Both Texelfx are used together to perform
  860.   certain operations as trilinear filtering and illumination
  861.   texture/lightmap passes (e.g. in glQuake) in a single pass instead of
  862.   the two passes that are required with only one Texelfx. To actually
  863.   exploit the theoretically available speedup and cache size increase, a
  864.   Glide application has to use both Texelfx properly.
  865.  
  866.   The two Texelfx can not be used separately to each draw a textured
  867.   triangle at the same time. A triangle is always drawn using whatever
  868.   the current setup is, which can be to use both Texelfx for a single
  869.   pass operation combining two textures, or one Texelfx for only a
  870.   single texture. Each Texelfx can only access its own memory.
  871.  
  872.  
  873.  
  874.   6.8.  What is a Pixelfx unit?
  875.  
  876.   Voodoo Graphics (tm) chipsets have two units. The second one
  877.   interfaces the framebuffer and ultimately generates the depth buffer
  878.   and pixel color updates. This one is called Pixelfx. The neat thing
  879.   here is that two Pixelfx units can cooperate in SLI mode, like with
  880.   some of the Quantum3D Obsidian boards, effectively doubling the frame
  881.   rate.
  882.  
  883.  
  884.  
  885.   6.9.  What is SLI mode?
  886.  
  887.   SLI means "Scanline Interleave". In this mode, two Pixelfx are
  888.   connected and render in alternate turns, one handling odd, the other
  889.   handling even scanlines of the actual output.  Inthis mode, each
  890.   Pixelfx stores only half of the image and half of the depth buffer
  891.   data in its own local framebuffer, effectively doubling the number of
  892.   pixels.
  893.  
  894.   The Pixelfx in question can be on the same board, or on two boards
  895.   properly connected. Some Quantum3D Obsidian boards support SLI with
  896.   Voodoo Graphics (tm).
  897.  
  898.   As two cards can decode the same PCI addresses and receive the same
  899.   data, there is not necessarily additional bus bandwidth required by
  900.   SLI. On the other hand, texture data will have to be replicated on
  901.   both boards, thus the amount of texture memory effectively stays the
  902.   same.
  903.  
  904.  
  905.  
  906.   6.10.  Is there a single board SLI setup?
  907.  
  908.   There are now two types of Quantum3D SLI boards.  The intial setup
  909.   used two boards, two PCI slots, and an interconnect (e.g. the Obsidian
  910.   100-4440).  The later revision which performs identically is contained
  911.   on one full-length PCI board (e.g.  Obsidian 100-4440SB). Thus a
  912.   single board SLI solution is possible, and has been done.
  913.  
  914.  
  915.  
  916.   6.11.  How much memory? How many buffers?
  917.  
  918.   The most essential difference between different boards using the
  919.   Voodoo Graphics (tm) chipset is the amount and organization of memory.
  920.   Quantum3D used a three digit scheme to descibe boards. Here is a
  921.   slightly modifed one (anticipating Voodoo 2 (tm)). Note that if you
  922.   use more than one Texelfx, they need the same amount of texture cache
  923.   memory each, and if you combine two Pixelfx, each needs the same
  924.   amount of frame buffer memory.
  925.   ______________________________________________________________________
  926.       "SLI / Pixelfx / Texelfx1 / Texelfx2 "
  927.   ______________________________________________________________________
  928.  
  929.  
  930.   It means that a common 2MB+2MB board would be a 1/2/2/0 solution, with
  931.   the minimally required total 4Mb of memory. A Canopus Pure 3D would be
  932.   1/2/4/0, or 6MB. An Obsidian-2220 board with two Texelfx would be
  933.   1/2/2/2, and an Obsidian SLI-2440 board would be 2/2/4/4.  A fully
  934.   featured dual board solution (2 Pixelfx, each with 2 Texelfx and 4MB
  935.   frame buffer, each Texelfx 4 MB texture cache) would be 2/4/4/4, and
  936.   the total amount of memory would be SLI*(Pixelfx+Texelfx1+Texelfx2),
  937.   or 24 MB.
  938.  
  939.   So there.
  940.  
  941.  
  942.   6.12.  Does the Voodoo Graphics (tm) do 24 or 32 bit color?
  943.  
  944.   No. The Voodoo Graphics (tm) architecture uses 16bpp internally.  This
  945.   is true for  Voodoo Graphics (tm), Voodoo Rush (tm) and Voodoo 2 (tm)
  946.   alike. Quantum3D claims to implement 22-bpp effective color depth with
  947.   an enhanced 16-bpp frame buffer, though.
  948.  
  949.  
  950.   6.13.  Does the Voodoo Graphics (tm) store 24 or 32 bit z-buffer per
  951.   pixel?
  952.  
  953.   No. The Voodoo Graphics (tm) architecture uses 16bpp internally for
  954.   the depth buffer, too. This again is true for  Voodoo Graphics (tm),
  955.   Voodoo Rush (tm) and Voodoo 2 (tm) alike. Again, Quantum3D claims that
  956.   using the floating point 16-bits per pixel (bpp) depth buffering
  957.   provides 22-bpp effective Z-buffer precision.
  958.  
  959.  
  960.   6.14.  What resolutions does the Voodoo Graphics (tm) support?
  961.  
  962.   The Voodoo Graphics (tm) chipset supports up to 4 MB frame buffer
  963.   memory. Presuming double buffering and a depth buffer, a 2MB
  964.   framebuffer will support a resolution of 640x480.  With 4 MB frame
  965.   buffer, 800x600 is possible.
  966.  
  967.   Unfortunately 960x720 is not supported. The Voodoo Graphics (tm)
  968.   chipset requires that the amount of memory for a particular resolution
  969.   must be such that the vertical and horizontal resolutions must be
  970.   evenly divisible by 32. The video refresh controller, though can
  971.   output any particular resolution, but the "virtual" size required for
  972.   the memory footprint must be in dimensions evenly divisible by 32.
  973.   So, 960x720 actually requires 960x736 amount of memory, and
  974.   960x736x2x3 = 4.04MBytes.
  975.  
  976.   However, using two boards with SLI, or a dual Pixelfx SLI board means
  977.   that each framebuffer will only have to store half of the image. Thus
  978.   2 times 4 MB in SLI mode are good up to 1024x768, which is the maximum
  979.   because of the overall hardware design. You will be able to do
  980.   1024x768 tripled buffered with Z, but you will not be able to do e.g.
  981.   1280x960 with double buffering.
  982.  
  983.   Note that triple buffering (no VSync synchonization required by the
  984.   application), stereo buffering (for interfacing LCD shutters) and
  985.   other more demanding setups will severely decrease the available
  986.   resolution.
  987.  
  988.  
  989.  
  990.  
  991.   6.15.  What texture sizes are supported?
  992.  
  993.   The maximum texture size for the Voodoo Graphics (tm) chipset is
  994.   256x256, and you have to use powers of two. Note that for really small
  995.   textures (e.g. 16x16) you are better off merging them into a large
  996.   texture, and adjusting your effective texture coordinates
  997.   appropriately.
  998.  
  999.  
  1000.   6.16.  Does the Voodoo Graphics (tm) support paletted textures?
  1001.  
  1002.   The Voodoo Graphics (tm) hardware and Glide support the palette
  1003.   extension to OpenGL. The most recent version of Mesa does support the
  1004.   GL_EXT_paletted_texture and GL_EXT_shared_texture_palette extensions.
  1005.  
  1006.  
  1007.  
  1008.   6.17.  What about overclocking?
  1009.  
  1010.   If you want to put aside considerations about warranty and
  1011.   overheating, and want to do overclocking to boost up performance even
  1012.   further, there is related info out on the web. The basic mechanism is
  1013.   to use Glide environment variables to adjust the clock.
  1014.  
  1015.   Note that the actual recommended clock is board dependend. While the
  1016.   default clock speed is 50 Mhz, the Diamond Monster 3D property sheet
  1017.   lets you set up a clock of 57 MHz. It all comes down to the design of
  1018.   a specific board, and which components are used with the Voodoo
  1019.   Graphics (tm) chipset - most notably access speed of the RAM in
  1020.   question. If you exceed the limits of your hardware, rendering
  1021.   artifacts will occur to say the least. Reportedly, 57 MHz usually
  1022.   works, while 60 MHz or more is already pushing it.
  1023.  
  1024.   Increasing the clock frequency also means increasing the waste heat
  1025.   disposed in the chips, in a nonlinear dependency (10% increase in
  1026.   frequency means a lot larger increase in heating). In consequence, for
  1027.   permanent overclocking you might want to educate yourself about ways
  1028.   to  add cooling fans to the board in a way that does not affect
  1029.   warranty. A very recommendable source is the "3Dfx Voodoo Heat Report"
  1030.   by Eric van Ballegoie, available on the web.
  1031.  
  1032.  
  1033.  
  1034.   6.18.  Where could I get additional info on Voodoo Graphics (tm)?
  1035.  
  1036.   There is a FAQ by 3Dfx, which should be available at their web site.
  1037.   You will find retail information at the following locations:
  1038.   www.3dfx.com and www.quantum3d.com.
  1039.  
  1040.   Inofficial sites that have good info are "Voodoo Extreme" at
  1041.   www.ve3d.com, and "Operation 3Dfx" at www.ve3d.com.
  1042.  
  1043.  
  1044.  
  1045.  
  1046.   7.  FAQ: Glide? TexUS?
  1047.  
  1048.   7.1.  What is Glide anyway?
  1049.  
  1050.   Glide is a proprietary API plus drivers to access 3D graphics
  1051.   accelerator hardware based on chipsets manufactured by 3Dfx. Glide has
  1052.   been developed and implemented for DOS, Windows, and Macintosh, and
  1053.   has been ported to Linux by Daryll Strauss.
  1054.  
  1055.  
  1056.  
  1057.   7.2.  What is TexUS?
  1058.  
  1059.   In the distribution is a libtexus.so, which is the 3Dfx Interactive
  1060.   Texture Utility Software.  It is an image processing libary and
  1061.   utility program for preparing images for use with the 3Dfx Interactive
  1062.   Glide library. Features of TexUS include file format conversion,
  1063.   MIPmap creation, and support for 3Dfx Interactive Narrow Channel
  1064.   Compression textures.
  1065.  
  1066.   The TexUS utility program texus reads images in several popular
  1067.   formats (TGA, PPM, RGT), generates MIPmaps, and writes the images as
  1068.   3Dfx Interactive textures files (see e.g. alpha.3df, as found in the
  1069.   distribution) or as an image file for inspection. For details on the
  1070.   parameters for texus, and the API, see the TexUS documentation.
  1071.  
  1072.  
  1073.  
  1074.   7.3.  Is Glide freeware?
  1075.  
  1076.   Nope. Glide is neither GPL'ed nor subject to any other public license.
  1077.   See LICENSE in the distribution for any details. Effectively, by
  1078.   downloading and using it, you agree to the End User License Agreement
  1079.   (EULA) on the 3Dfx web site. Glide is provided as binary only, and you
  1080.   should neither use nor distribute any files but the ones released to
  1081.   the public, if you have not signed an NDA. The Glide distribution
  1082.   including the test program sources are copyrighted by 3Dfx.
  1083.  
  1084.   The same is true for all the sources in the Glide distribution. In the
  1085.   words of 3Dfx: These are not public domain, but they can be freely
  1086.   distributed to owners of 3Dfx products only.  No card, No code!
  1087.  
  1088.  
  1089.   7.4.  Where do I get Glide?
  1090.  
  1091.   The entire 3Dfx SDK is available for download off their public web-
  1092.   site located at www.3dfx.com/software/download_glide.html. Anything
  1093.   else 3Dfx publicly released by 3Dfx is nearby on their website, too.
  1094.  
  1095.   There is also an FTP site, ftp.3dfx.com. The FTP has a longer timeout,
  1096.   and some of the larger files have been broken into 3 files (approx.
  1097.   3MB each).
  1098.  
  1099.  
  1100.  
  1101.   7.5.  Is the Glide source available?
  1102.  
  1103.   Nope. The Glide source is made available only based on a special
  1104.   agreement and NDA with 3Dfx.
  1105.  
  1106.  
  1107.   7.6.  Is Linux Glide supported?
  1108.  
  1109.   Currently, Linux Glide is unsupported. Basically, it is provided under
  1110.   the same disclaimers as the 3Dfx GL DLL (see below).
  1111.  
  1112.   However, 3Dfx definitely wants to provide as much support as possible,
  1113.   and is in the process of setting up some prerequisites. For the time
  1114.   being, you will have to rely on the 3Dfx newsgroup (see below).
  1115.  
  1116.   In addition, the Quantum3D web page claims that Linux support (for
  1117.   Obsidian) is planned for both Intel and AXP architecture systems in
  1118.   2H97.
  1119.  
  1120.  
  1121.  
  1122.  
  1123.   7.7.  Where could I post Glide questions?
  1124.  
  1125.   There are newsgroups currently available only on the NNTP server
  1126.   news.3dfx.com run by 3Dfx.  This USENET groups are dedicated to 3Dfx
  1127.   and Glide in general, and will mainly provide assistance for DOS,
  1128.   Win95, and NT. The current list includes:
  1129.  
  1130.   ______________________________________________________________________
  1131.   3dfx.events
  1132.   3dfx.games.glquake
  1133.   3dfx.glide
  1134.   3dfx.glide.linux
  1135.   3dfx.products
  1136.   3dfx.test
  1137.   ______________________________________________________________________
  1138.  
  1139.  
  1140.   and the 3dfx.oem.products.* group for specific boards, eg.
  1141.   3dfx.oem.products.quantum3d.obsidian.  Please use
  1142.   news.3dfx.com/3dfx.glide.linux for all Lnux Glide related questions.
  1143.  
  1144.   A mailing list dedicated to Linux Glide is in preparation for 1Q98.
  1145.   Send mail to majordomo@gamers.org, no subject, body of the message
  1146.   info linux-3dfx to get information about the posting guidelines, the
  1147.   hypermail archive and how to subscribe to the list or the digest.
  1148.  
  1149.  
  1150.  
  1151.   7.8.  Where to send bug reports?
  1152.  
  1153.   Currently, you should rely on the newsgroup (see above), that is
  1154.   news.3dfx.com/3dfx.glide.linux.  There is no official support e-mail
  1155.   set up yet.  For questions not specific to Linux Glide, make sure to
  1156.   use the other newsgroups.
  1157.  
  1158.  
  1159.   7.9.  Who is maintaining it?
  1160.  
  1161.   3Dfx will appoint an official maintainer soon.  Currently, inofficial
  1162.   maintainer of the Linux Glide port is Daryll Strauss. Please post bug
  1163.   reports in the newsgroup (above). If you are confident that you found
  1164.   a bug not previously reported, please mail to Daryll at
  1165.   daryll@harlot.rb.ca.us
  1166.  
  1167.  
  1168.   7.10.  How can I contribute to Linux Glide?
  1169.  
  1170.   You could submit precise bug reports. Providing sample programs to be
  1171.   included in the distribution is another possibility. A major
  1172.   contribution would be adding code to the Glide based Mesa Voodoo
  1173.   driver source.  See section on Mesa Voodoo below.
  1174.  
  1175.  
  1176.  
  1177.   7.11.  Do I have to use Glide?
  1178.  
  1179.   Yes. As of now, there is no other Voodoo Graphics (tm) driver
  1180.   available for Linux. At the lowest level, Glide is the only interface
  1181.   that talks directly to the hardware. However, you can write OpenGL
  1182.   code without knowing anything about Glide, and use Mesa with the Glide
  1183.   based Mesa Voodoo driver.  It helps to be aware of the involvement of
  1184.   Glide for recognizing driver limitations and bugs, though.
  1185.  
  1186.  
  1187.  
  1188.  
  1189.   7.12.  Should I program using the Glide API?
  1190.  
  1191.   That depends on the application you are heading for.  Glide is a
  1192.   proprietary API that is partly similar to OpenGL or Mesa, partly
  1193.   contains features only available as EXTensions to some OpenGL
  1194.   implementations, and partly contains features not available anywhere
  1195.   but within Glide.
  1196.  
  1197.   If you want to use the OpenGL API, you will need Mesa (see below).
  1198.   Mesa, namely the Mesa Voodoo driver, offers an API resembling the well
  1199.   documented and widely used OpenGL API. However, the Mesa Voodoo driver
  1200.   is in early alpha, and you will have to accept performance losses and
  1201.   lack of support for some features.
  1202.  
  1203.   In summary, the decision is up to you - if you are heading for maximum
  1204.   performance while accepting potential problems with porting to
  1205.   non-3Dfx hardware, Glide is not a bad choice. If you care about
  1206.   maintenance, OpenGL might be the best bet in the long run.
  1207.  
  1208.  
  1209.  
  1210.   7.13.  What is the Glide current version?
  1211.  
  1212.   The current version of Linux Glide is 2.4.  The next version will
  1213.   probably be identical to the current version for DOS/Windows, which is
  1214.   2.4.3, which comes in two distributions. Right now, various parts of
  1215.   Glide are different for Voodoo Rush (tm) (VR) and Voodoo Graphics (tm)
  1216.   (VG) boards. Thus you have to pick up separate distributions (under
  1217.   Windows) for VR and VG.  The same will be true for Linux. There will
  1218.   possibly be another chunk of code and another distribution for Voodoo
  1219.   2 (tm) (V2) boards.
  1220.  
  1221.   There is also a Glide 3.0 in preparation that will extend the API for
  1222.   use of triangle fans and triangle strips, and provide better state
  1223.   change optimization. Support for fans and strips will in some
  1224.   situations significantly reduce the amount of data sent ber triangle,
  1225.   and the Mesa driver will benefit from this, as the OpenGL API has
  1226.   separate modes for this. For a detailed explanation on this see e.g.
  1227.   the OpenGL documentation.
  1228.  
  1229.  
  1230.  
  1231.   7.14.  Does it support multiple Texelfx already?
  1232.  
  1233.   Multiple Texelfx/TMU's can be used for single pass trilinear
  1234.   mipmapping for improvement image quality without performance penalty
  1235.   in current Linux Glide already. You will need a board with two Texelfx
  1236.   (that is, one of the appropriate Quantum3D Obsidian boards). The
  1237.   application needs to specify the use of both Texelfx accordingly, it
  1238.   does not happen automatically.
  1239.  
  1240.   Note that because most applications are implemented for consumer
  1241.   boards with a single Texelfx, they might not query the presence of a
  1242.   second Texelfx, and thus not use it. This is not a flaw of Glide but
  1243.   of the application.
  1244.  
  1245.  
  1246.  
  1247.  
  1248.   7.15.  Is Linux Glide identical to DOS/Windows Glide?
  1249.  
  1250.   The publicly available version of Linux Glide should be identical to
  1251.   the respective DOS/Windows versions.  Delays in releasing the Linux
  1252.   port of newer DOS/Windows releases are possible.
  1253.  
  1254.  
  1255.   7.16.  Where to I get information on Glide?
  1256.  
  1257.   There is exhaustive information available from 3Dfx. You could
  1258.   download it from their home page at
  1259.   www.3dfx.com/software/download_glide.html.  These are for free,
  1260.   presuming you bought a 3Dfx hardware based board. Please read the
  1261.   licensing regulations.
  1262.  
  1263.   Basically, you should look for some of the following:
  1264.  
  1265.   ╖  Glide Release Notes
  1266.  
  1267.   ╖  Glide Programming Guide
  1268.  
  1269.   ╖  Glide Reference Manual
  1270.  
  1271.   ╖  Glide Porting Guide
  1272.  
  1273.   ╖  TexUs Texture Utility Software
  1274.  
  1275.   ╖  ATB Release Notes
  1276.  
  1277.   ╖  Installing and Using the Obsidian
  1278.  
  1279.      These are available as Microsoft Word documents, and part of the
  1280.      Windows Glide distribution, i.e.  the self-extracting archive file.
  1281.      Postscript copies for separate download should be available at
  1282.      www.3dfx.com as well. Note that the release numbers are not always
  1283.      in sync with those of Glide.
  1284.  
  1285.  
  1286.  
  1287.   7.17.  Where to get some Glide demos?
  1288.  
  1289.   You will find demo sources for Glide within the distribution (test
  1290.   programs), and on the 3Dfx home page. The problem with the latter is
  1291.   that some require ATB. To port these demos to Linux, the event
  1292.   handling has to be completely rewritten.
  1293.  
  1294.   In addition, you might find useful some of the OpenGL demo sources
  1295.   accompanying Mesa and GLUT. While the Glide API is different from the
  1296.   OpenGL API, they target the same hardware rendering pipeline.
  1297.  
  1298.  
  1299.  
  1300.   7.18.  What is ATB?
  1301.  
  1302.   Some of the 3Dfx demo programs for Glide depend not only on Glide but
  1303.   also on 3Dfx's proprietary Arcade Toolbox (ATB), which is available
  1304.   for DOS and Win32, but has not been ported for Linux. If you are a
  1305.   devleoper, the sources are available within the Total Immersion
  1306.   program, so porting ATB to Linux would be possible.
  1307.  
  1308.  
  1309.  
  1310.   8.  FAQ: Glide and XFree86?
  1311.  
  1312.  
  1313.   8.1.  Does it run with XFree86?
  1314.  
  1315.   Basically, the Voodoo Graphics (tm) hardware does not care about X.
  1316.   The X server will not even notice that the video signal generated by
  1317.   the VGA hardware does not reach the display in single screen
  1318.   configurations. If your application is not written X aware, Glide
  1319.   switching to full screen mode might cause problems (see
  1320.   troubleshooting section). If you do not want the overhead of writing
  1321.   an X11-aware application, you might want to use SVGA console mode
  1322.   instead.
  1323.  
  1324.   So yes, it does run with XFree86, but no, it is not cooperating if you
  1325.   don't write your application accordingly. You can use the Mesa "window
  1326.   hack", which will be significantly slower than fullscreen, but still a
  1327.   lot faster than software rendering (see section below).
  1328.  
  1329.  
  1330.  
  1331.   8.2.  Does it only run full screen?
  1332.  
  1333.   See above. The Voodoo Graphics (tm) hardware is not window environment
  1334.   aware, neither is Linux Glide. Again, the experimental Mesa "window
  1335.   hack" covered below will allow for pasting the Voodoo Graphics (tm)
  1336.   board framebuffer's content into an X11 window.
  1337.  
  1338.  
  1339.  
  1340.   8.3.  What is the problem with AT3D/Voodoo Rush (tm) boards?
  1341.  
  1342.   There is an inherent problem when using Voodoo Rush (tm) boards with
  1343.   Linux: Basically, these boards are meant to be VGA 2D/3D accelerator
  1344.   boards, either as a single board solution, or with a Voodoo Rush (tm)
  1345.   based daughterboard used transparently. The VGA component tied to the
  1346.   Voodoo Rush (tm) is a Alliance Semiconductor's ProMotion-AT3D
  1347.   multimedia accelerator.  To use this e.g. with XFree86 at all, you
  1348.   need a driver for the AT3D chipset.
  1349.  
  1350.   There is a mailing list on this, and a web site with FAQ at
  1351.   www.frozenwave.com/linux-stingray128.  Look there for most current
  1352.   info.  There is a SuSE maintained driver at
  1353.   ftp.suse.com/suse_update/special/xat3d.tgz.  Reportedly, the XFree86
  1354.   SVGA server also works, supporting 8, 16 and 32 bpp.  Official support
  1355.   will probably be in XFree86 4.0.  XFree86 decided to prepare an
  1356.   intermediate XFree86 3.3.2 release as well, which might already
  1357.   address the issues.
  1358.  
  1359.   The following XF86Config settings reportedly work.
  1360.  
  1361.   ______________________________________________________________________
  1362.   # device section settings
  1363.   Chipset "AT24"
  1364.   Videoram 4032
  1365.  
  1366.   # videomodes tested by Oliver Schaertel
  1367.   #  25.18  28.32  for 640 x 480   (70hz)
  1368.   #  61.60         for 1024 x 786  (60hz)
  1369.   #  120           for 1280 x 1024 (66hz)
  1370.   ______________________________________________________________________
  1371.  
  1372.  
  1373.   In summary, there is nothing prohibiting this except for the fact that
  1374.   the drivers in XFree86 are not yet finished.
  1375.  
  1376.   If you want a more technical explanation: Voodoo Rush (tm) support
  1377.   requires X server changes to support grabbing a buffer area in the
  1378.   video memory on the AT3D board, as the Voodoo Rush (tm) based boards
  1379.   need to store their back buffer and z buffer there. This  memory
  1380.   allocation and locking requirement is not a 3Dfx specific problem, it
  1381.   is also needed e.g. for support of TV capture cards, and is thus under
  1382.   active development for XFree86. This means changes at the device
  1383.   dependend X level (thus XAA), which are currently implemented as an
  1384.   extension to XFree86 DGA (Direct Graphics Access, an X11 extension
  1385.   proposal implemented in different ways by Sun and XFree86, that is not
  1386.   part of the final X11R6.1 standard and thus not portable). It might be
  1387.   part of an XFree86 GLX implementation later on. The currently
  1388.   distributed X servers assume they have full control of the
  1389.   framebuffer, and use anything that is not used by the visual region of
  1390.   the framebuffer as pixmap cache, e.g. for caching fonts.
  1391.  
  1392.  
  1393.  
  1394.   8.4.  What about GLX for XFree86?
  1395.  
  1396.   There are a couple of problems.
  1397.  
  1398.   The currently supported Voodoo Graphics (tm) hardware and the
  1399.   available revision of Linux Glide are full screen only, and not set up
  1400.   to share a framebuffer with a window environment. Thus GLX or other
  1401.   integration with X11 is not yet possible.
  1402.  
  1403.   The Voodoo Rush (tm) might be capable of cooperating with XFree86
  1404.   (that is, an SVGA compliant board will work with the XFree86 SVGA
  1405.   server), but it is not yet supported by Linux Glide, nor do S3 or
  1406.   other XFree86 servers support these boards yet.
  1407.  
  1408.   In addition, GLX is tied to OpenGL or, in the Linux case, to Mesa.
  1409.   The XFree86 team is currently working on integrating Mesa with their X
  1410.   Server. GLX is in beta, XFree86 3.3 has the hooks for GLX.  See Steve
  1411.   Parker's GLX pages at www.cs.utah.edu/~sparker/xfree86-3d/ for the
  1412.   most recent information.  Moreover, there is a joint effort by XFree86
  1413.   and SuSe, which includes a GLX, see www.suse.de/~sim/.  Currently,
  1414.   Mesa still uses its GLX emulation with Linux.
  1415.  
  1416.  
  1417.  
  1418.   8.5.  Glide and commerical X Servers?
  1419.  
  1420.   I have not received any mail regarding use of Glide and/or Mesa with
  1421.   commercial X Servers.  I would be interested to get confirmation on
  1422.   this, especially on Mesa and Glide with a commercial X Server that has
  1423.   GLX support.
  1424.  
  1425.  
  1426.  
  1427.   8.6.  Glide and SVGA?
  1428.  
  1429.   You should have no problems running Glide based applications either
  1430.   single or dual screen using VGA modes. It might be a good idea to set
  1431.   up the 640x480 resolution in the SVGA modes, too, if you are using a
  1432.   single screen setup.
  1433.  
  1434.  
  1435.   8.7.  Glide and GGI?
  1436.  
  1437.   A GGI driver for Glide is under development by Jon M. Taylor, but has
  1438.   not officially been released and was put on hold till completion of
  1439.   GGI 0.0.9. For information about GGI see synergy.caltech.edu/~ggi/.
  1440.   If you are adventurous, you might find the combination of XGGI (a GGI
  1441.   based X Server for XFree86) and GGI for Glide an interesting prospect.
  1442.   There is also a GGI driver interfacing the OpenGL API; tested with
  1443.   unaccelerated Mesa. Essentially, this means X11R6 running on a Voodoo
  1444.   Graphics (tm), using either Mesa or Glide directly.
  1445.  
  1446.  
  1447.  
  1448.  
  1449.   9.  FAQ: OpenGL/Mesa?
  1450.  
  1451.  
  1452.  
  1453.   9.1.  What is OpenGL?
  1454.  
  1455.   OpenGL is an immediate mode graphics programming API originally
  1456.   developed by SGI based on their previous proprietary Iris GL, and
  1457.   became in industry standard several years ago. It is defined and
  1458.   maintained by the Architectural Revision Board (ARB), an organization
  1459.   that includes members as SGI, IBM, and DEC, and Microsoft.
  1460.  
  1461.   OpenGL provides a complete feature set for 2D and 3D graphics
  1462.   operations in a pipelined hardware accelerated architecture for
  1463.   triangle and polygon rendering. In a broader sense, OpenGL is a
  1464.   powerful and generic toolset for hardware assisted computer graphics.
  1465.  
  1466.  
  1467.  
  1468.   9.2.  Where to get additional information on OpenGL?
  1469.  
  1470.   The official site for OpenGL maintained by the members of the ARB, is
  1471.   www.opengl.org,
  1472.  
  1473.   A most recommended site is Mark Kilgard's Gateway to OpenGL Info at
  1474.   reality.sgi.com/mjk_asd/opengl-links.html: it provides pointers to
  1475.   book, online manual pages, GLUT, GLE, Mesa, ports to several OS, tons
  1476.   of demos and tools.
  1477.  
  1478.   If you are interested in game programming using OpenGL, there is the
  1479.   OpenGL-GameDev-L@fatcity.com at Listserv@fatcity.com. Be warned, this
  1480.   is a high traffic list with very technical content, and you will
  1481.   probably prefer to use procmail to handle the 100 messages per day
  1482.   coming in. You cut down bandwidth using the SET OpenGL-GameDev-L
  1483.   DIGEST command. It is also not appropriate if you are looking for
  1484.   introductions.  The archive is handled by the ListServ software, use
  1485.   the INDEX OpenGL-GameDev-L and GET OpenGL-GameDev-L "filename"
  1486.   commands to get a preview before subscribing.
  1487.  
  1488.  
  1489.  
  1490.  
  1491.   9.3.  Is Glide an OpenGL implementation?
  1492.  
  1493.   No, Glide is a proprietary 3Dfx API which several features specific to
  1494.   the Voodoo Graphics (tm) and Voodoo Rush (tm). A 3Dfx OpenGL is in
  1495.   preparation (see below). Several Glide features would require
  1496.   EXTensions to OpenGL, some of which already found in other
  1497.   implementations (e.g. paletted textures).
  1498.  
  1499.   The closest thing to a hardware accelerated Linux OpenGL you could
  1500.   currently get is Brian Paul's Mesa along with David Bucciarelli's Mesa
  1501.   Voodoo driver (see below).
  1502.  
  1503.  
  1504.  
  1505.   9.4.  Is there an OpenGL driver from 3Dfx?
  1506.  
  1507.   Both the 3Dfx website and the Quantum3D website announced OpenGL for
  1508.   Voodoo Graphics (tm) to be available 4Q97.  The driver is currently in
  1509.   Beta, and accessible only to registered deverloper's under written
  1510.   Beta test agreement.
  1511.  
  1512.   A linux port has not been announced yet.
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.   9.5.  Is there a commercial OpenGL for Linux and 3Dfx?
  1520.  
  1521.   I am not aware of any third party commercial OpenGL that supports the
  1522.   Voodoo Graphics (tm). Last time I paid attention, neither MetroX nor
  1523.   XInside OpenGL did.
  1524.  
  1525.  
  1526.  
  1527.   9.6.  What is Mesa?
  1528.  
  1529.   Mesa is a free implementation of the OpenGL API, designed and written
  1530.   by Brian Paul, with contributions from many others. Its performance is
  1531.   competitive, and while it is not officially certified, it is an almost
  1532.   fully compliant OpenGL implementation conforming to the ARB
  1533.   specifications - more complete than some commercial products out,
  1534.   actually.
  1535.  
  1536.  
  1537.  
  1538.   9.7.  Does Mesa work with 3Dfx?
  1539.  
  1540.   The latest Mesa MesaVer; release works with Linux Glide 2.4. In fact,
  1541.   support was included in earlier versions, however, this driver is
  1542.   still under development, so be prepared for bugs and less than optimal
  1543.   performance. It is steadily improving, though, and bugs are usually
  1544.   fixed very fast.
  1545.  
  1546.   You will need to get the Mesa library archive from the
  1547.   iris.ssec.wisc.edu FTP site.  It is recommended to subscribe to the
  1548.   mailing list as well, especially when trying to track down bugs,
  1549.   hardware, or driver limitations. Make sure to get the most recent
  1550.   distribution. A Mesa-3.0 is in preparation.
  1551.  
  1552.  
  1553.  
  1554.   9.8.  How portable is Mesa with Glide?
  1555.  
  1556.   It is available for Linux and Win32, and any application based on Mesa
  1557.   will only have the usual system specific code, which should usually
  1558.   mean XWindows vs. Windows, or GLX vs. WGL. If you use e.g. GLUT or Qt,
  1559.   you should get away with any system specifics at all for virtually
  1560.   most applications. There are only a few issues (like sampling relative
  1561.   mouse movement) that are not adressed by the available portable GUI
  1562.   toolkits.
  1563.  
  1564.   Mesa/Glide is also available for DOS. The port which is 32bit DOS is
  1565.   maintained by Charlie Wallace and kept up to date with the main Mesa
  1566.   base. See www.geocities.com/~charlie_x/.for the most current releases.
  1567.  
  1568.  
  1569.  
  1570.   9.9.  Where to get info on Mesa?
  1571.  
  1572.   The Mesa home page is at www.ssec.wisc.edu/~brianp/Mesa.html.  There
  1573.   is an archive of the Mesa mailing list.  at www.iqm.unicamp.br/mesa/.
  1574.   This list is not specific to 3Dfx and Glide, but if you are interested
  1575.   in using 3Dfx hardware to accelerate Mesa, it is a good place to
  1576.   start.
  1577.  
  1578.  
  1579.   9.10.  Where to get information on Mesa Voodoo?
  1580.  
  1581.   For latest information on the Mesa Voodoo driver maintained by David
  1582.   Bucciarelli tech.hmw@plus.it see the home page at www-
  1583.   hmw.caribel.pisa.it/fxmesa/.
  1584.  
  1585.   9.11.  Does Mesa support multitexturing?
  1586.  
  1587.   Not yet (as of Mesa 2.6), but it is on the list.  In Mesa you will
  1588.   probably have to use the OpenGL EXT_multitexture extension once it is
  1589.   available. There is no final specification for multitextures in
  1590.   OpenGL, which is supposed to be part of the upcoming OpenGL 1.2
  1591.   revision. There might be a Glide driver specific implementation of the
  1592.   extension in upcoming Mesa releases, but as long as only certain
  1593.   Quantum3D Obsidian boards come with multiple TMU's, it is not a top
  1594.   priority. This will surely change once Voodoo 2 (tm) based boards are
  1595.   in widespread use.
  1596.  
  1597.  
  1598.  
  1599.  
  1600.  
  1601.   9.12.  Does Mesa support single pass trilinear mipmapping?
  1602.  
  1603.   Multiple TMU's should be used for single pass trilinear mipmapping for
  1604.   improvement image quality without performance penalty in current Linux
  1605.   Glide already. Mesa support is not yet done (as of Mesa 2.6), but is
  1606.   in preparation.
  1607.  
  1608.  
  1609.  
  1610.  
  1611.   9.13.  What is the Mesa "Window Hack"?
  1612.  
  1613.   The most recent revisions of Mesa contain an experimental feature for
  1614.   Linux XFree86. Basically, the GLX emulation used by Mesa copies the
  1615.   contents of the Voodoo Graphics (tm) board's most recently finished
  1616.   framebuffer content into video memory on each glXSwapBuffers call.
  1617.   This feature is also available with Mesa for Windows.
  1618.  
  1619.   This obviously puts some drain on the PCI, doubled by the fact that
  1620.   this uses X11 MIT SHM, not XFree86 DGA to access the video memory. The
  1621.   same approach could theoretically be used with e.g. SVGA. The major
  1622.   benefit is that you could use a Voodoo Graphics (tm) board for
  1623.   accelerated rendering into a window, and that you don't have to use
  1624.   the VGA passthrough mode (video output of the VGA board deteoriates in
  1625.   passing through, which is very visible with high end monitors like
  1626.   e.g. EIZO F784-T).
  1627.  
  1628.   Note that this experimental feature is NOT Voodoo Rush (tm) support by
  1629.   any means. It applies only to the Voodoo Graphics (tm) based boards.
  1630.   Moreover, you need to use a modified GLUT, as interfacing the window
  1631.   management system and handling the events appropriately has to be done
  1632.   by the application, it is not handled in the driver.
  1633.  
  1634.   Make really sure that you have enabled the following environment
  1635.   variables:
  1636.  
  1637.   ______________________________________________________________________
  1638.   export SST_VGA_PASS=1          # to stop video signal switching
  1639.   export SST_NOSHUTDOWN=1        # to stop video signal switching
  1640.   export MESA_GLX_FX="window"    # to initiate Mesa window mode
  1641.   ______________________________________________________________________
  1642.  
  1643.  
  1644.   If you manage to forget one of the SST variables, your VGA board will
  1645.   be shut off, and you will loose the display (but not the actual X). It
  1646.   is pretty hard to get that back being effectively blind.
  1647.  
  1648.   Finally, note that the libMesaGL.a (or .so) library can contain
  1649.   multiple client interfaces.  I.e. the GLX, OSMesa, and fxMesa (and
  1650.   even SVGAMesa) interfaces call all be compiled into the same
  1651.   libMesaGL.a. The client program can use any of them freely, even
  1652.   simultaneously if it's careful.
  1653.  
  1654.  
  1655.  
  1656.  
  1657.  
  1658.   9.14.  How about GLUT?
  1659.  
  1660.   Mark Kilgard's GLUT distribution is a very good place to get sample
  1661.   applications plus a lot of useful utilities.  You will find it at
  1662.   reality.sgi.com/mjk_asd/glut3/, and you should get it anyway. The
  1663.   current release is GLUT 3.6, and discussion on a GLUT 3.7 (aka
  1664.   GameGLUT) has begun. Note that Mark Kilgard has left SGI recently, so
  1665.   the archive might move some time this year - for the time being it
  1666.   will be kept at SGI.
  1667.  
  1668.   There is also a GLUT mailing list, glut@perp.com. Send mail to
  1669.   majordomo@perp.com, with the (on of the) following in the body of your
  1670.   email message:
  1671.  
  1672.   ______________________________________________________________________
  1673.      help
  1674.      info glut
  1675.      subscribe glut
  1676.      end
  1677.   ______________________________________________________________________
  1678.  
  1679.  
  1680.  
  1681.   As GLUT handles double buffers, windows, events, and other operations
  1682.   closely tied to hardware and operating system, using GLUT with Voodoo
  1683.   Graphics (tm) requires support, which is currently in development
  1684.   within GLX for Mesa. It already works for most cases.
  1685.  
  1686.  
  1687.  
  1688.   10.  FAQ: But Quake?
  1689.  
  1690.   10.1.  What about that 3Dfx GL driver for Quake?
  1691.  
  1692.   The 3Dfx Quake GL, aka mini-driver, aka miniport, aka Game GL, aka
  1693.   3Dfx GL alpha, implemented only a Quake-specific subset of OpenGL (see
  1694.   http://www.cs.unc.edu/~martin/3dfx.html for an inofficial list of
  1695.   supported code paths). It is not supported, and not updated anymore.
  1696.   It was a Win32 DLL (opengl32.dll) released by 3Dfx and was available
  1697.   for Windows only. This DLL is not, and will not be ported to Linux.
  1698.  
  1699.  
  1700.   10.2.  Is there a 3Dfx based glQuake for Linux?
  1701.  
  1702.   Yes. A Quake linuxquake v0.97 binary has been released based on Mesa
  1703.   with Glide. The Quake2 q2test binary for Linux and Voodoo Graphics
  1704.   (tm) has been made available as well.  A full Quake2 for Linux was
  1705.   released in January 1998, with linuxquake2-3.10. Dave "Zoid" Kirsch is
  1706.   the official maintainer of all Linux ports of Quake, Quakeworld, and
  1707.   Quake2, including all the recent Mesa based ports. Note that all Linux
  1708.   ports, including the Mesa based ones, are not officially supported by
  1709.   id Software.
  1710.  
  1711.   See ftp.idsoftware.com/idstuff/quake/unix/ for the latest releases.
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.   10.3.  Does glQuake run in an XFree86 window?
  1718.  
  1719.   A revision of Mesa and the Mesa-based Linux glQuake is in preparation.
  1720.   Mesa already does support this by GLX, but Linux glQuake does not use
  1721.   GLX.
  1722.  
  1723.  
  1724.  
  1725.   10.4.  Known Linux Quake problems?
  1726.  
  1727.   Here is an excerpt, as of January 7th, 1998. I omitted most stuff not
  1728.   specific to &3Dfx; hardware.
  1729.  
  1730.   ╖  You really should run Quake2 as root when using the SVGALib and/or
  1731.      GL renders. You don't have to run as root for the X11 refresh, but
  1732.      the modes on the mouse and sound devices must be read/writable by
  1733.      whatever user you run it as. Dedicated server requires no special
  1734.      permissions.
  1735.  
  1736.   ╖  X11 has some garbage on the screen when 'loading'. This is normal
  1737.      in 16bit color mode. X11 doesn't work in 24bit (TrueColor). It
  1738.      would be very slow in any case.
  1739.  
  1740.   ╖  Some people are experiencing crashes with the GL renderer. Make
  1741.      sure you install the libMesa that comes with Quake2! Older versions
  1742.      of libMesa don't work properly.
  1743.  
  1744.   ╖  If you are experience video 'lag' in the GL renderer (the frame
  1745.      rate feels like it's lagging behind your mouse movement) type
  1746.      "gl_finish 1" in the console. This forces update on a per frame
  1747.      basis.
  1748.  
  1749.   ╖  When running the GL renderer, make sure you have killed selection
  1750.      and/or gpm or the mouse won't work as they won't "release" it while
  1751.      Quake2 is running in GL mode.
  1752.  
  1753.  
  1754.   10.5.  Know Linux Quake security problems?
  1755.  
  1756.   As Dave Kirsch posted on January 28th, 1998: an exploit for Quake2
  1757.   under Linux has been published. Quake2 is using shared libraries.
  1758.   While the READMRE so far does not specifically mention it, note that
  1759.   Quake2 should not be setuid.
  1760.  
  1761.   If you want to use the ref_soft and ref_gl renderers, you should run
  1762.   Quake2  as root. Do not make the binary setuid. You can only run both
  1763.   those renderers at the console only, so being root is not that much of
  1764.   an issue.
  1765.  
  1766.   The X11 render does not need any root permissions (if /dev/dsp is
  1767.   writable by others for sound).  The dedicated server mode does not
  1768.   need to be root either, obviously.
  1769.  
  1770.   Problems such as root requirements for games has been sort of a sore
  1771.   spot in Linux for a number of years now. This is one of the goals that
  1772.   e.g. GGI is targetting to fix.  A ref_ggi might be supported in the
  1773.   near future.
  1774.  
  1775.  
  1776.   10.6.  Does LinuxQuake use multitexturing?
  1777.  
  1778.   To my understadnding, glQuake will use a multitexture EXTension if the
  1779.   OpenGL driver in question offers it.  The current Mesa implementation
  1780.   and the Glide driver for Linux do not yet support this extension, so
  1781.   for the time being the answer is no. See section on Mesa and
  1782.   multitexturing for details.
  1783.   10.7.  Where can I get current information on Linux glQuake?
  1784.  
  1785.   Try some of these sites: the "The Linux Quake Resource" at
  1786.   linuxquake.telefragged.com, or the "Linux Quake Page" at
  1787.   www.planetquake.com/threewave/linux/.  Alternatively, you could look
  1788.   for Linux Quake sites in the "SlipgateCentral" database at
  1789.   www.slipgatecentral.com.
  1790.  
  1791.  
  1792.  
  1793.  
  1794.   11.  FAQ: Troubleshooting?
  1795.  
  1796.   11.1.  Has this hardware been tested?
  1797.  
  1798.   See hardware requirements list above. I currently do not maintain a
  1799.   conclusive list of vendors and boards, as no particular board specific
  1800.   problems have been verified.  Currently, only 3Dfx and Quantum3D
  1801.   provide boards for testing to the developers, so Quantum3D consumer
  1802.   boards are a safe bet. Every other Voodoo Graphics (tm) based board
  1803.   should work, too. I have reports regarding the Orchid Righteous 3D,
  1804.   Guillemot Maxi 3D Gamer, and Diamond Monster 3D.
  1805.  
  1806.   If you are a board manufacturer who wants to make sure his Voodoo
  1807.   Graphics (tm), Voodoo Rush (tm) or Voodoo 2 (tm) boards work with
  1808.   upcoming releases of Linux, Xfree86, Linux Glide and/or Mesa, please
  1809.   contact me, and I will happily forward your request to the persons
  1810.   maintaining the drivers in question. If you are interested in support
  1811.   for Linux Glide on other then the PC platfrom, e.g. DEC Alpha, please
  1812.   contact the maintainer of Linux Glide Daryll Strauss, at
  1813.   daryll@harlot.rb.ca.us
  1814.  
  1815.  
  1816.  
  1817.   11.2.  Failed to change I/O privilege?
  1818.  
  1819.   You need to be root, or setuid your application to run a Glide based
  1820.   application.  For DMA, the driver accesses /dev/mem, which is not
  1821.   writeable for anybody but root, with good reasons. See the README in
  1822.   the Glide distribution for Linux.
  1823.  
  1824.  
  1825.  
  1826.   11.3.  Does it work without root privilege?
  1827.  
  1828.   There are compelling case where the setuid requirement is a problem,
  1829.   obviously. There are currently solutions in preparation, which require
  1830.   changes to the library internals itself.
  1831.  
  1832.  
  1833.  
  1834.   11.4.  Displayed images looks awful (single screen)?
  1835.  
  1836.   If you are using the analog pass through configuration, the common
  1837.   SVGA or X11 display might look pretty bad.  You could try to get a
  1838.   better connector cable than the one provided with the accelerator
  1839.   board (the ones delivered with the Diamond Monster 3D are reportedly
  1840.   worse then the one accompanying the Orchid Righteous 3D), but up to a
  1841.   degree there will inevitably be signal loss with an additional
  1842.   transmission added.
  1843.  
  1844.   If the 640x480 full screen image created by the accelerator board does
  1845.   look awful, this might indicate a real hardware problem. You will have
  1846.   to contact the board manufacturer, not 3Dfx for details, as the
  1847.   quality of the video signal has nothing to do with the accelerator -
  1848.   the board manufacturer chooses the RAMDAC, output drivers, and other
  1849.   components responsible.
  1850.  
  1851.  
  1852.  
  1853.   11.5.  The last frame is still there (single or dual screen)?
  1854.  
  1855.   You terminated your application with Ctrl-C, or it did not exit
  1856.   normally. The accelerator board will dutifully provide the current
  1857.   content of the framebuffer as a video signal unless told otherwise.
  1858.  
  1859.  
  1860.  
  1861.   11.6.  Powersave kicks in (dual screen)?
  1862.  
  1863.   When you application terminates in dual screen setups, the accelerator
  1864.   board does not provide video output any longer. Thus powersave kicks
  1865.   each time. To avoid this, use
  1866.  
  1867.   ______________________________________________________________________
  1868.   setenv SST_DUALSCREEN 1
  1869.   ______________________________________________________________________
  1870.  
  1871.  
  1872.  
  1873.  
  1874.  
  1875.   11.7.  My machine seem to lock (X11, single screen)?
  1876.  
  1877.   If you are running X when calling a Glide application, you probably
  1878.   moved the mouse out of the window, and the keyboard inputs do not
  1879.   reach the application anymore.
  1880.  
  1881.   If you application is supposed to run concurrently with X11, it is
  1882.   recommend to expose a full screen window, or use the XGrabPointer and
  1883.   XGrabServer functions to redirect all inputs to the application while
  1884.   the X server cannot access the display. Note that grabbing all input
  1885.   with XGrabPointer and XGrabServer does not qualify as well-behaved
  1886.   application, and that your program might block the entire system.
  1887.  
  1888.   If you experience this problem without running X, be sure that there
  1889.   is no hardware conflict (see below).
  1890.  
  1891.  
  1892.   11.8.  My machine locks (single or dual screen)?
  1893.  
  1894.   If the system definitely does not respond to any inputs (you are
  1895.   running two displays and know about the loss of focus), you might
  1896.   experience a more or less subtle hardware conflict.  See installation
  1897.   troubleshooting section for details.
  1898.  
  1899.   If there is no obvious address conflict, there might still be other
  1900.   problems (below). If you are writing your own code the most common
  1901.   reason for locking is that you didn't snap your vertices. See the
  1902.   section on snapping in the Glide documentation.
  1903.  
  1904.  
  1905.   11.9.  My machine locks (used with S3 VGA board)?
  1906.  
  1907.   It is possible you have a problem with memory region overlap specific
  1908.   to S3. There is some info and a patch to the so-called S3 problem in
  1909.   the 3Dfx web site, but these apply to Windows only. To my
  1910.   understanding, the cause of the problem is that some S3 boards (older
  1911.   revisions of Diamond Stealth S3 968) reserve more memory space than
  1912.   actually used, thus the Voodoo Graphics (tm) has to be mapped to a
  1913.   different location. However, this has not been reported as a problem
  1914.   with Linux, and might be Windows-specific.
  1915.   11.10.  No address conflict, but locks anyway?
  1916.  
  1917.   If you happen to use a motherboard with non-standard or incomplete PCI
  1918.   support, you could try to shuffle the boards a bit. I am running an
  1919.   ASUS TP4XE that has that non-standard modified "Media Slot", i.e. PCI
  1920.   slot4 with additional connector for ASUS-manufactured SCSI/Sound combo
  1921.   boards, and I experienced severe problems while running a Diamond
  1922.   Monster 3D in that slot. The system operates flawlessly since I put
  1923.   the board in one of the regular slots.
  1924.  
  1925.  
  1926.  
  1927.   11.11.  Mesa runs, but does not access the board?
  1928.  
  1929.   Be sure that you recompiled all the libraries (including the toolkits
  1930.   the demo programs use - remember that GLUT does not yet support Voodoo
  1931.   Graphics (tm)), and that you removed the older libraries, run
  1932.   ldconfig, and/or set your LD_LIBRARY_PATH properly.  Mesa supports
  1933.   several drivers in parallel (you could use X11 SHM, off screen
  1934.   rendering, and Mesa Voodoo at the same time), and you might have to
  1935.   create and switch contexts explicitely (see MakeCurrent function) if
  1936.   the Voodoo Graphics (tm) isn't chosen by default.
  1937.  
  1938.  
  1939.  
  1940.   11.12.  Resetting dual board SLI?
  1941.  
  1942.   If a Quantum 3D Obsidian board using in an SLI setup exits abruptly
  1943.   (i.e., the application crashes, or is aborted by user), the boards are
  1944.   left in an undefined state.  With the dual-board set, you can run a
  1945.   program called resetsli to reset them. Until you run the resetsli
  1946.   program, you will not be able to re-initialize the Obsidian board.
  1947.  
  1948.  
  1949.  
  1950.   11.13.  Resetting single board SLI?
  1951.  
  1952.   The resetsli program mentioned above does not yet work with a single
  1953.   board Obsidian SLI (e.g. the Obsidian 100-4440SB). You will have to
  1954.   reboot your system by reset in order to reset the board.
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.