jeudi 20 juin 2013

CyberGraphX4 [fr]

En attendant de récupérer un Mediator qui fonctionne, je me suis bien fait rouler dans la farine par un Amigaïste français aux dents très longues : ma CyberStormPPC rev0 qui ne fonctionnait pas avec mon GRex 4000D contre deux BlizzardPPC. J'ai tout de même accepté parce qu'il y avait dans le lot une rev2 indispensable pour faire fonctionner mon cette fois GRex 1200 acheté il y a bien longtemps...

Bref, cela permettra de retravailler les deux librairies Warp3D Picasso96 et CyberGraphX4 puisque le GRex fonctionne avec ce dernier système RTG.

En effet, il y a au moins une belle optimisation dans la W3D_Cgfx4_function_1E : le gros paquet de trigo des sources de Motorola que j'avais déjà évoqué dans un article précédent est présent une nouvelle fois dans la librairie W3D_CyberGfx4.library.

La racine carré émulée (fsqrt.d) est bien dans le paquet Motorola pour je ne sais quelle raison d'ailleurs, et les auteurs de Warp3D ont donc été de bonne foie induit en erreur, croyant par cette présence qu'elle était émulée par les 68040 et 68060 : et bien non, la mnémonique fsqrt est bien dans les transistors des 68881, 68882, 68040 et 68060.

Bref, le paquet au complet a été supprimé et ses deux branchements ont purement été remplacé par un tout simple et bien plus rapide "fsqrt.d fp0"...

Sinon, en attendant le Mediator et la fusion des librairies LEMU/LE et BEMU/BE, j'ai remplacé deux petites fonctions dans la W3D_AvengerLE.library (les même que dans un précédent article "La béta 3" sous Picasso96) et j'obtiens un bon speedup aussi :

C'est toujours StarShipW3D qui est utilisé :

Alors, il s'agit d'un cas exceptionnel bien sûr : il faudrait comprendre pourquoi le speedup est si important...

C'est ça le reverse engineering : partir d'un résultat (ici des librairies compilées avec gcc) et ensuite "remonter dans l'autre sens" pour comprendre le comment du pourquoi ainsi que le pourquoi du comment de ce qui a été créé par les auteurs originaux et le compilateur C/C++ employé...

J'ai déjà trouvé le datasheet du GPU Avenger Voodoo ce qui va bien aider...

Les benchs avec GLBlitzQuake ("Timedemo demo1") donnent un + 0.4 fps avec ces deux nouvelles fonctions, ce qui est aussi plutôt une bonne nouvelle, certes moins impressionnante...
   

4 commentaires:

  1. Je pense que c'est au final pas une bonne idée d'utiliser un objet si petit comme benchmark
    Meme dans WinUAE avec le rendu hard OpenGL j'ai un nombre de triangles/par secondes bien trop faible avec ce prog ===> la plupart du temps d'une frame doit donc etre passé à effacer zbuffer/drawregion et à copier la bitmap vers la fenetre et une infime partie à tracer....

    Tu devrais utiliser Aminet/Microbe3D/demo-view avec un objet plus gros genre 1000-2000 tris
    cad un nombre de tris plus proche d'un vrai jeu

    Tu a aussi l'objet starship dans data/icons3d
    Pour revenir à un mode sans éclairage c'est Menu/Material MAT TEXTURED FLAT
    Pour tourner qu'en y taper sur x z

    Alain Thellier






    RépondreSupprimer
  2. Ta Cow3D a trop de triangles par contre...

    Si tu pouvais nous coder (ou rajouter des triangles à StarShipW3D) une
    nouvelle petite démo avec justement 1000-2000 triangles, ça serait cool
    pour les benchmarks !

    RépondreSupprimer
  3. Tu ne t'es pas fait rouler, au contraire c'est toi qui fait la bonne affaire.
    2 BPPC $$ >> 1 CPPC $$

    RépondreSupprimer
  4. C'était une CyberStomPPC upgradée 366 Mhz quand même...

    L'Amigaïste français de l'article a un nouveau surnom maintenant : le boulanger...

    RépondreSupprimer

Laissez vos commentaires ici :