Introduction
Les accélérateurs graphiques sont simplement des caractéristiques spéciale qu'offre certaine carte vidéo afin de réduire le temps de traîtement d'une application ou d'un système d'exploitation dans son affichage. On retrouvera divers fonction des plus rudimentaires, allant de tracer une ligne ou un rectangle à l'écran jusqu'au texture affichable. Dans l'ensemble, les accélérateurs graphiques peuvent être considérer comme des outils permettant de décharger les opérations du microprocesseurs centrale (CPU) et de les faire traîter par la carte vidéo elle-même! Un peu comme l'Amiga le faisait jadis il y a environ 30 ans pour obtenir ses performances fabuleuses...
A mon grand désarroi, il n'y a pas de méthode unique pour l'utilisation de ses «accélérateurs» d'affichage. On doit programmer des routines pour chacun d'eux. En plus, on n'est pas toujours assurer d'un bon résultat d'affichage, même en sachant la marque du produit, la version ou le modèle du fabricant sont aussi très importants à connaître.
La Matrox
La carte graphique Matrox est sans doute une pionnier dans le domaine des accélérateurs graphiques, toutefois sa popularité est bien plus grande encore. Sans doute, pour sa perspective visionnaire, on lui attribua de pareil applaudissement, seulement, je dois dire que sur certains aspects, je fus énormément déçu, a commencer par le fait que la compagnie elle-même, sur son site n'est pas très loquaces sur le fonctionnement de ses accélérateurs graphiques et surtout de sa programmation. Bien sur, on y trouvera des tables de statistiques (est-ce vraiment utile?) et une bibliothèque compiler (.LIB) offrant les services permettant la programmation de celui-ci. Seulement, un objet pré-fabriquer n'a pas vraiment d'utilité pour nous... Car on ne peut optimiser ou adapter les routines pour nos besoins. J'ai donc du faire encore une fois des recherches contre vent et marée (inverse ingenering) pour trouver des réponses. Pour cette raison, veiller ne pas me reprocher les erreurs ou omission potentiel. J'apprécierais plutôt qu'on m'avertisse de problèmes ou constations par courriel afin de parvenir un jour à une documentation acceptable sur se site.
On remarquera que les cartes graphiques Matrox n'utilise pas de port d'Entrée/Sortie afin d'effectuer leurs opérations d'accélération graphiques, ils font appel à des adresses mémoires référencer à partir des indications de la carte PCI. Le tableau suivant s'appliquera donc au carte possédant les puces suivantes MGA-2064W, MGA-2164W, MGA-1064SG, MGA-1164SG:
Adresse mémoire | Taille | Description | |
---|---|---|---|
1C24h | 1 double mot | Couleur (8, 16 ou 32 bits). Dans le cas d'un mode d'affichage 8 bits, on devra recopie 4 fois l'octet de couleurs sur tout le mots, et le même principe s'appliquera sur le 16 bits, on prendra soit de recopier dans la partie haute, la même valeur. | |
1C40h | 1 mot | Coordonnée X1 d'une ligne | |
1C42h | 1 mot | Coordonnée Y1 d'une ligne | |
1C44h | 1 mot | Coordonnée X2 d'une ligne | |
1C46h | 1 mot | Coordonnée Y2 d'une ligne | |
1C58h | 1 double mot | Signe? | |
1C6Ch | 1 mot | Coordonnée Y1 d'un déplacement d'un rectangle. | |
1C6Eh | 1 mot | Coordonnée Y2 d'un déplacement d'un rectangle. | |
1C74h | 1 double mot | Ligne de balayage | |
1C84h | 1 mot | Coordonnée X1 d'une ligne horizontal ou X3 d'un déplacement d'un rectangle. | |
1C86h | 1 mot | Coordonnée X2 d'une ligne horizontal ou X4 d'un déplacement d'un rectangle. | |
1C88h | 1 mot | Hauteur de la ligne horizontal (Normalement la valeur 1) ou Y3 d'un déplacement d'un rectangle. | |
1C8Ah | 1 mot | Coordonnée Y d'une ligne horizontal ou Y4 d'un déplacement d'un rectangle. | |
1CD0h | 1 double mot | Couleur rouge 32 bits pour texture | |
1CD8h | 1 double mot | Coordonnée X pour rouge | |
1CDCh | 1 double mot | Coordonnée Y pour rouge | |
1CE0h | 1 double mot | Couleur vert 32 bits pour texture | 1CE8h | 1 double mot | Coordonnée X pour vert |
1CECh | 1 double mot | Coordonnée Y pour vert | |
1CF0h | 1 double mot | Couleur bleu 32 bits pour texture | |
1CF8h | 1 double mot | Coordonnée X pour bleu | |
1CFCh | 1 double mot | Coordonnée Y pour bleu | |
1D00h | 1 double mot | Registre de commandes: | |
Valeur numérique | Description | ||
00067814h | Trace une ligne horizontal ( X1 , Y ) - ( X2 , Y ) , Couleur en mode ou exclusive (XOR) appliqué sur chaque bits de la mémoire affectée. | ||
000C4844h | Trace un triangle | ||
000C7844h | Trace une ligne horizontal ( X1 , Y ) - ( X2 , Y ) , Couleur | ||
040C4803h | Trace une ligne ( X1 , Y1 ) - ( X2 , Y2 ) , Couleur | ||
04064813h | Trace une ligne ( X1 , Y1 ) - ( X2 , Y2 ) , Couleur en mode ou exclusive (XOR) appliqué sur chaque bits de la mémoire affectée. | ||
040C4008h | Déplacement d'un rectangle ( X1 , Y1 ) - ( X2 , Y2 ), ( X3 , Y3 ) - ( X4 , Y4 ) | ||
400C7044h | Trace une ligne horizontal ( X1 , Y ) - ( X2 , Y ), Couleur avec un Pattern particulier. | ||
1E14h | 1 double mot |
Registre d'état: Bit 4: Ligne occupée ? |