samedi 26 avril 2014

fpCR 3dfx [fr]

En voilà une belle optimisation pour les drivers 3dfx de Warp3D !

Quelques explications s'imposent : le vieux Gcc 2.90.27 utilisait une routine lente de 6 instructions pour arrondir certains chiffres FPU avant de les envoyer au GPU :
 
Cette routine est présente très souvent dans l'ensemble du driver, elle a l'avantage d'être 100% compatible avec le 68030/68882, le 68040 et le 68060.

Le soucis, c'est qu'elle est très lente... En fait, il est tout à fait possible de la remplacer par une seule instruction : fintrz.x !

Mais, il y a hélas un mais : fintrz n'est pas dans les transistors du 68040 ! Elle est donc émulée par la 68040.library.

Bien présente dans le 68882 du 68030, les ingénieurs de chez Motorola ont eu la brillante idée de la réintégrer dans le 68060 ! Et ouf pour notre cas ici, nous allons gagner de nombreux cycles !!

Alors, il y a fallut faire un choix avec cette routine fpCR :
  1. Soit la garder telle quelle pour ne pas ralentir un peu le 68040,
  2. Soit la remplacer par fintrz pour favoriser en vitesse le 68030 et le 68060.

C'est le deuxième choix que j'ai fait : désolé pour les utilisateurs de 68040... Il vaut mieux faire profiter le 68060. D'ailleurs la plupart des cartes accélératrices sur Amiga accepte l'upgrade en 68060, donc chacun a la possibilité d'utiliser un 060...

Après avoir remplacé toute cette routine par un fintrz, le driver 3dfx pèse maintenant 11,3 Ko de moins !

Ayant quelques soucis avec Ma Config 1, je suis en train de tout tester, et l'archive beta 5 sera bientôt disponible en Downloads... 
 

Aucun commentaire:

Enregistrer un commentaire

Laissez vos commentaires ici :