Support 3dfx pour BeOS PowerPC -- version 1.0
=============================================

La 3D matérielle pour la BeBox (et les autres machines BeOS PowerPC) avec
une carte PCI 3dfx Voodoo 2 ou Voodoo Graphics (Voodoo 1) :

  - thdfx              driver noyau (BeOS R4 / R4.5)
  - lib3DfxGlide2X.so  Glide 2.x, porté depuis les sources publiées par 3dfx
                       en 1999 (versions Voodoo 2 et Voodoo Graphics)
  - tests/             les programmes de test Glide de 3dfx (test00 à test29)
  - opengl/            OpenGL 1.2 (Mesa 3.2.1) accéléré par la Voodoo : les
                       programmes OpenGL de BeOS (BGLView) passent sur la
                       carte sans être modifiés
  - develop/           en-têtes et petit exemple pour écrire des programmes Glide

Testé sur BeBox Dual 603e 133 MHz, BeOS 4.5.2, Voodoo 2 12 Mo (Matrox
Millennium II pour la 2D) : tous les tests passent, et des jeux complets
tournent dessus (Mage Slayer, Virtua Racing). La librairie Voodoo Graphics
vient du même portage ; elle n'a pas encore été essayée sur une vraie
carte, mais fait tourner tous les tests, les démos OpenGL et ces jeux sur
l'émulateur BeBox, qui émule une Voodoo Graphics
(https://github.com/davidraingeard/BeBox, option -voodoo). Les autres
machines BeOS PowerPC (clones Mac) devraient fonctionner, sans garantie :
personne n'a encore essayé.

Sources, documentation et scripts de compilation :
    https://github.com/davidraingeard/BeOS-Glide


1. Installation
---------------

Copiez ce dossier où vous voulez (par exemple /boot/home), puis dans un
Terminal :

    cd /boot/home/3dfx-beos-ppc-1.0
    sh install.sh              (Voodoo 2)
    sh install.sh voodoo1      (Voodoo Graphics)

Le driver est copié dans ~/config/add-ons/kernel/drivers/bin (avec son
lien dans drivers/dev), la librairie dans ~/config/lib et glidereset
dans ~/config/bin (pour OpenGL : voir la partie 5). Si install.sh
n'annonce pas « card found », redémarrez : /dev/3dfx_0 doit alors
exister. Sinon, cherchez les lignes « thdfx: » dans /var/log/syslog.

Le driver ne touche pas à la carte pendant le démarrage : il lit
seulement la liste PCI. La Voodoo ne fait que de la 3D, la carte 2D garde
le bureau.


2. Test
-------

Lancez les tests depuis un Terminal, dans leur dossier (ils lisent des
fichiers .3df) :

    cd tests/voodoo2
    ./test00 -n 300         efface l'écran, 300 images
    ./test01 -n 300         points
    ./test11 -n 300         écritures directes dans le framebuffer
    ./test17 -n 300         textures
    ./test26                écriture puis relecture du framebuffer

Sans -n, un test attend une touche. Par telnet, Entrée envoie deux
caractères et arrête le test après une image : utilisez -n.


3. Sécurité : l'écran noir
--------------------------

Au lancement d'un programme Glide, un relais de la Voodoo bascule le
moniteur sur l'image 3D ; grGlideShutdown() le rebascule. Si un programme
Glide plante, BeOS continue de tourner mais le moniteur reste noir. Tapez
alors, à l'aveugle, dans le Terminal :

    glidereset

(il ouvre puis referme l'écran Voodoo, ce qui rend le moniteur). Pour les
premiers essais, gardez telnet ou ftp actifs (préférences Réseau), ou
branchez un second moniteur sur la sortie de la Voodoo.

Pour retirer le driver sans image : démarrez sur un autre volume BeOS et
supprimez home/config/add-ons/kernel/drivers/bin/thdfx et
drivers/dev/thdfx sur le volume où il est installé.


4. Écrire des programmes Glide
------------------------------

develop/headers contient glide.h et les en-têtes dont il a besoin ;
develop/example est un programme complet (un triangle dégradé qui
tourne) avec son makefile :

    cd develop/example
    make
    obj.ppc/triangle

Liez avec -l3DfxGlide2X (librairie dans ~/config/lib). Les en-têtes sont
les mêmes pour les deux cartes. Les programmes faits pour la
lib3DfxGlide2X.so de Be fonctionnent aussi avec celle-ci (mêmes 122
fonctions exportées, mêmes structures).

Variables d'environnement utiles :

    FX_GLIDE_NO_SPLASH=1      pas de logo 3dfx au démarrage
    FX_GLIDE_SWAPINTERVAL=1   attente du retour vertical
    SSTV2_INITDEBUG=1         trace de l'initialisation Voodoo 2
    SST_INITDEBUG=1           trace de l'initialisation Voodoo Graphics

Pour ceux qui portent un programme : la librairie convertit elle-même
les textures et gère l'ordre des octets du bus PCI ; pour les écritures
directes dans le framebuffer via grLfbLock, les pixels 16 bits
s'écrivent tels quels (la carte les retourne).


5. OpenGL (Mesa 3.2.1)
----------------------

install.sh installe aussi Mesa 3.2.1 avec son pilote 3Dfx, par-dessus ce
Glide :

  ~/config/lib/voodoo/libGL.so   remplaçante de la libGL.so de Be (Mesa +
                                 pilote 3Dfx + GLU + BGLView), rangée à
                                 part : l'OpenGL de Be n'est pas touché
  ~/config/lib/libMesaGL.so      le même OpenGL pour les programmes écrits
  ~/config/lib/libMesaGLU.so     pour Mesa (interface plein écran fxMesa*)
  ~/config/bin/voodoo            lance un programme avec la libGL.so Voodoo

Un programme OpenGL de BeOS (un BGLView) passe alors sur la Voodoo, sans
être recompilé :

    voodoo /boot/apps/GLTeapot/GLTeapot     (avec votre chemin)
    voodoo opengl/glspin

La fenêtre du programme reste sur le bureau (elle reçoit le clavier et la
souris, et affiche « OpenGL : 3dfx Voodoo ») ; l'image 3D est en plein
écran sur la Voodoo, agrandie depuis la taille de la fenêtre. Une seule
vue à la fois sur la carte ; les autres (ou toutes avec BGL_VOODOO=0) sont
dessinées en logiciel par Mesa. BGL_VOODOO_SIZE=800x600 choisit la
résolution (640x480 par défaut). Ctrl-C ou la fermeture de la fenêtre
rendent l'écran. Les programmes qui utilisent BGLScreen (la classe plein
écran de Be) ne se chargent pas avec cette libGL.so.

Sur la BeBox (603e 133 MHz) : glspin 76 images/s, GLTeapot 27 images/s.

opengl/demos contient les démos 3Dfx de Mesa (tunnel, teapot, fire,
ray...), en plein écran avec une GLUT qui lit le clavier du Terminal d'où
elles sont lancées (h : aide, Échap : quitter) :

    cd opengl/demos
    ./tunnel

develop/opengl contient les en-têtes de Mesa (GL/gl.h, glu.h, glut.h,
fxmesa.h). Sources et compilation : mesa-beos/ dans le dépôt. Licence de
Mesa : opengl/COPYRIGHT-Mesa.txt.


6. Désinstallation
------------------

    sh uninstall.sh

puis redémarrez.


7. Licence
----------

Glide est distribué sous la 3DFX GLIDE Source Code General Public License
(LICENSE-3DFX.txt). Le portage BeOS, le driver et les scripts suivent la
même licence ; Mesa (opengl/) garde la sienne
(opengl/COPYRIGHT-Mesa.txt). Aucune garantie : utilisation à vos risques.

Portage par David Raingeard avec Claude (Anthropic), 2026 -- testé sur
une vraie BeBox, toujours vaillante trente ans après.
