« Les cartes graphiques/Les cartes accélératrices 3D » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 90 :
==L'architecture d'une carte 3D en mode immédiat==
 
Avant l'invention des cartes graphiques, toutes ces étapes du pipeline graphique étaient réalisées par le processeur : il calculait l'image à afficher, et l’envoyait à une carte d'affichage 2D. Au fil du temps, de nombreux circuits furent ajoutés, afin de déporter un maximum de calculs vers la carte vidéo. Les circuits d'une carte graphique varie grandement selon son degré de sophistacation. Les premières cartes graphiques ne faisaient pas grand chose et le processeur ne leur déléguait que peu de calculs. Mais avec l'évolution des technologies, de plus en plus de calculs de rendu ont été délégués à la carte graphique. Cela s'en ressent sur l'organisation des circuits des cartes graphiques. Si certains circuits sont toujours présents sur toutes les cartes graphiques, d'autres ont étés ajoutés progressivement, au fil des années.
 
Pour déléguer ses calculs à la carte 3D, les applications pourraient communiquer directement avec la carte graphique, sans prendre en compte toute contrainte de compatibilité. Pour éviter cela, les concepteurs de systèmes d'exploitations et de cartes graphiques ont inventé des API 3D, des bibliothèques qui fournissent des fonctions que l'application pourra exécuter au besoin. De nos jours, les plus connues sont DirectX, et OpenGL. Ces APIs permettent de déléguer certaines tâches au GPU, avec l'aide du pilote de la carte graphique.
 
[[File:Division of labor cpu and gpu.svg|centre|vignette|upright=2.0|Répartition du travail entre processeur et GPU, sur les cartes graphiques récentes. On voit que le GPU s'occupe des traitements liés au moteur graphique, tandis que les autres traitements (son, physique) sont pris en charge par le processeur.]]
 
LesToute carte graphique contient obligatoirement de la mémoire vidéo, des circuits quide fontcommunication avec le bus, des circuits d’interfaçage avec l'écran, et d'autres circuits. A cela, il faut ajouter les calculscircuits depour le rendu 3D proprement dit. Ces derniers sont regroupés dans un ensemble hétérogène de circuits aux fonctions forts différentes, nommé le ''pipeline graphique''. Il est composé de circuits non-programmables (dits fixes) et de circuits programmables. Conceptuellement, on sépare les circuits fixes et programmables dans deux sous-pipelines séparés, ce qui permet de faire la distinction entre pipeline programmable qui regroupe les circuits programmables et le pipeline fixe pour le reste. Mais cette distinction est purement conceptuelle et ne correspond pas vraiment à la manière dont les circuits sont organisés réellement. Le pipeline graphique est secondé par des circuits qui s'occupent de lire/écrire des textures et vertices depuis la mémoire vidéo. Ces deux circuits portent le nom d'unité de texture et d'''input assembler''.
Toute carte graphique contient obligatoirement de la mémoire vidéo, des circuits de communication avec le bus, des circuits d’interfaçage avec l'écran, et d'autres circuits.
 
[[File:Architecture de base d'une carte 3D - 1.png|centre|vignette|upright=2.0|Architecture de base d'une carte 3D - 1]]
 
===Les circuits essentiels===
 
La mémoire vidéo est nécessaire pour stocker l'image à afficher à l'écran, mais aussi pour mémoriser temporairement des informations importantes. Dans le cas le plus simple, elle sert simplement de ''Framebuffer'' : elle stocke l'image à afficher à l'écran. Au fil du temps, elle s'est vu ajouter d'autres fonctions, comme stocker les textures et les vertices de l'image à calculer, ainsi que divers résultats temporaires. Elle est très proche des mémoires RAM qu'on trouve sous forme de barrettes dans nos PC, à quelques différences près. En premier lieu, la mémoire vidéo peut supporter un grand nombre d'accès mémoire simultanés. Ensuite, elle est optimisée pour accéder à des données proches en mémoire.
Ligne 103 ⟶ 105 :
 
Le circuit d’interfaçage avec l'écran permet à la carte graphique d'envoyer à l'écran une image à afficher. Enfin, on trouve naturellement des circuits qui s'occupent des rendus 2D et 3D proprement dit.
 
Les circuits qui font les calculs de rendu sont regroupés dans un ensemble hétérogène de circuits aux fonctions forts différentes, nommé le ''pipeline graphique''. Il est composé de circuits non-programmables (dits fixes) et de circuits programmables. Conceptuellement, on sépare les circuits fixes et programmables dans deux sous-pipelines séparés, ce qui permet de faire la distinction entre pipeline programmable qui regroupe les circuits programmables et le pipeline fixe pour le reste. Mais cette distinction est purement conceptuelle et ne correspond pas vraiment à la manière dont les circuits sont organisés réellement. Le graphique est secondé par des circuits qui s'occupent de lire/écrire des textures et vertices depuis la mémoire vidéo. Ces deux circuits portent le nom d'unité de texture et d'''input assembler''.
 
[[File:Architecture de base d'une carte 3D - 1.png|centre|vignette|upright=2.0|Architecture de base d'une carte 3D - 1]]
 
===Les circuits du pipeline fixe===