human
Comment les jeux DOS comme DOOM bénéficient-ils d'une carte graphique PCI
gpt
DOOM lui-même ne fait rien de spécial pour bénéficier des cartes graphiques PCI. Il fonctionne plus rapidement avec les cartes graphiques PCI (et VLB, AGP et PCI Express) qu'avec les cartes graphiques ISA car le bus de support est plus rapide, ce qui réduit le temps de lecture et d'écriture dans la mémoire vidéo.
PCI fait tout son possible pour préserver la compatibilité ascendante avec VGA basé sur ISA, en fournissant une prise en charge des adaptateurs "compatibles VGA" afin qu'ils puissent apparaître dans la mémoire aux mêmes emplacements et utiliser les mêmes ports d'E/S que les cartes VGA ISA. Ainsi, les accès aux registres VGA et au tampon VGA (à 0xA0000) vont directement à l'adaptateur VGA compatible PCI principal du système, sans aucune modification requise dans le système d'exploitation ou les programmes en cours d'exécution. (C'est la raison pour laquelle il existe un type de périphérique spécifique "contrôleur compatible VGA" dans PCI. De telles manœuvres sont impossibles pour les autres types de périphériques dans PCI, c'est pourquoi les cartes son PCI ont tant de mal à assurer la compatibilité avec les programmes écrits pour les cartes son ISA.)
Un bus plus rapide et/ou une mémoire vidéo plus rapide entraînent immédiatement des performances plus élevées dans les programmes intensifs en vidéo car le logiciel n'a pas besoin d'être prudent dans l'accès à la mémoire vidéo (sauf sur CGA et sur toutes les plates-formes avec synchronisation verticale si cela affecte le déchirement). Ainsi, ```REP MOVSW``` ou ```REP MOVSD``` sans attente dans le logiciel, une fois que le programme décide d'écrire une image, est parfaitement acceptable et ira de plus en plus vite à mesure que le matériel sous-jacent s'améliore. Sur les plates-formes où cela ne peut pas fonctionner en matériel (par exemple, sur un 8088 avec une carte VGA), le matériel se charge des détails - par exemple, sur un 8088, l'unité de bus divisera les accès de 16 bits.
Votre question concerne spécifiquement DOOM, mais d'autres jeux DOS sont dans une situation similaire. Les jeux ultérieurs avaient tendance à s'appuyer sur VBE (utilisant souvent UniVBE) pour accéder à des modes vidéo au-delà de ceux fournis par VGA, mais ils n'utilisaient principalement rien d'autre que la configuration des modes vidéo et la configuration du framebuffer (voir également Des jeux DOS (ou des logiciels) étaient-ils connus pour utiliser VBE/AF ?), donc l'amélioration de la vitesse vidéo provenait principalement de l'augmentation de la vitesse du bus, de la mémoire vidéo plus rapide et de l'augmentation de la vitesse des cartes elles-mêmes (ce qui était déjà un facteur à l'époque ISA, comparez la plupart des cartes Trident aux cartes Tseng, par exemple).
Pour une excellente explication des subtilités de la programmation VGA et de sa disposition mémoire, consultez la série de livres Game Engine Black Book de Fabien Sanglard. La boucle de mise à jour de DOOM est présentée à la page 185 du livre DOOM ; elle n'utilise aucun langage d'assemblage (contrairement au moteur de rendu, voir pp. 290 et suivantes), mais elle présente une caractéristique peut-être surprenante compte tenu de la nature 32 bits du code : les mises à jour VGA sont effectuées par blocs de 16 bits. La section 2.3 du même livre, pp. 59 et suivantes, décrit certaines des améliorations apportées aux adaptateurs VGA à l'époque de la sortie de DOOM, en particulier le passage au bus local VESA sur les 486. Le tableau de référence à la page 287 montre l'importance du bus.