Fonctionnalités d'affichage de liste de l'ordinateur personnel
L'un des premiers systèmes dotés d'une véritable liste d'affichage était l' ordinateur Atari 8 bits . La liste d'affichage (nommée ainsi dans la terminologie Atari) est une série d'instructions destinées à ANTIC , le coprocesseur vidéo utilisé dans ces machines. Ce programme, stocké dans la mémoire de l'ordinateur et exécuté par ANTIC en temps réel, peut spécifier les lignes vides, six modes texte et huit modes graphiques, les sections de l'écran pouvant faire l'objet d'un défilement fin horizontal ou vertical, et déclencher des interruptions de liste d'affichage (appelées interruptions raster ou HBI sur d'autres systèmes).
La famille Amstrad PCW intègre une fonction de liste d'affichage appelée « Roller RAM ». Il s'agit d'une zone RAM de 512 octets composée de 256 pointeurs 16 bits, un par ligne de l'écran 720 × 256 pixels. Chaque pointeur identifie l'emplacement de 90 octets de pixels monochromes contenant les 720 états de pixels de la ligne. Ces 90 octets, composés de 8 états de pixels, sont espacés de 8 octets, laissant ainsi 7 octets inutilisés entre chaque octet de données de pixel. Cette structure correspond au fonctionnement du tampon d'écran en RAM sur les PCW orientés texte : les 8 lignes du premier caractère sont stockées dans les 8 premiers octets, celles du deuxième caractère dans les 8 octets suivants, et ainsi de suite. La mémoire RAM à rouleaux a été implémentée pour accélérer le défilement de l'écran, car le déplacement manuel (par logiciel) des 23 Ko de la mémoire tampon d'affichage du processeur Z80 à 3,4 MHz aurait été inacceptablement lent. L'adresse de départ de la mémoire RAM à rouleaux, utilisée au début d'un rafraîchissement d'écran, est contrôlée par un registre d'E/S accessible en écriture par le Z80. Le défilement de l'écran s'effectue donc simplement en modifiant ce registre.L' Amiga est un autre système utilisant une fonctionnalité matérielle similaire à une liste d'affichage. Ce n'est d'ailleurs pas un hasard s'il a été conçu par une partie de l'équipe ayant développé le matériel spécifique des ordinateurs Atari 8 bits. Une fois un mode d'affichage défini, il était appliqué automatiquement à chaque ligne de balayage suivante. L'ordinateur intégrait également un coprocesseur dédié, appelé « Copper », exécutant un programme simple, la « Liste Copper », destiné à modifier les registres matériels en synchronisation avec l'affichage. Les instructions de la Liste Copper pouvaient ordonner au Copper d'attendre que l'affichage atteigne une position spécifique à l'écran, puis de modifier le contenu des registres matériels. En pratique, il s'agissait d'un processeur dédié à la gestion des interruptions de balayage . Le Copper était utilisé par Workbench pour combiner plusieurs modes d'affichage (plusieurs résolutions et palettes de couleurs simultanément sur le moniteur), et par de nombreux programmes pour créer des effets arc-en-ciel et de dégradé. Le Copper de l'Amiga était également capable de reconfigurer le moteur de sprites en cours d'image, avec un délai d'une seule ligne de balayage. Cela permettait à l'Amiga d'afficher plus de 8 sprites matériels, à condition que les sprites supplémentaires ne partagent pas de lignes de balayage (ou l'espace d'une ligne de balayage) avec plus de 7 autres sprites. Autrement dit, dès qu'au moins un sprite était terminé d'être affiché, un autre pouvait être ajouté en dessous, à l'écran. De plus, le chipset AGA 32 bits ultérieur permettait d'afficher des sprites plus grands (plus de pixels par ligne) tout en conservant le même multiplexage. L'Amiga disposait également d'un circuit dédié de décalage de blocs (« blitter »), capable d'afficher des objets plus grands dans un tampon d'image. Ce circuit était souvent utilisé seul ou en complément des sprites.les images . L'image est ensuite affichée de différentes manières, selon l'implémentation précise du code d'affichage piloté par le processeur.ZX Spectrum .conservé , un système dans lequel les commandes graphiques sont enregistrées (conservées) pour être exécutées successivement ultérieurement. Ceci est différent du mode immédiat , où les commandes graphiques sont exécutées immédiatement lors des appels du client.
Utilisation dans Direct3D 12
Les listes de commandes sont créées à l'aide de la ID3D12Device::CreateCommandListfonction. Elles peuvent être de plusieurs types : directes, groupées, de calcul, de copie, de décodage vidéo, de traitement vidéo et d'encodage vidéo. Les listes de commandes directes spécifient une liste de commandes exécutables par le GPU et n'héritent d'aucun état du GPU. Les listes groupées sont idéales pour stocker et exécuter de petits ensembles de commandes un nombre quelconque de fois. Leur utilisation diffère de celle des listes de commandes classiques, où les commandes stockées ne sont généralement exécutées qu'une seule fois. des mipmaps . Une liste de commandes de copie est exclusivement dédiée à la copie, tandis que les listes de commandes de décodage vidéo et de traitement vidéo servent respectivement au décodage et au traitement vidéo.
Lors de leur création, les listes de commandes sont en mode enregistrement. Elles peuvent être réutilisées en appelant la ID3D12GraphicsCommandList::Resetfonction correspondante. Après l'enregistrement des commandes, la liste doit être désactivée en appelant la fonction appropriée ID3D12GraphicsCommandList::Close. Elle est ensuite exécutée ID3D12CommandQueue::ExecuteCommandLists.