Quel est l'équivalent moderne des listes d'affichage?

9

Les listes d'affichage étaient une fonctionnalité OpenGL qui pouvait, en théorie, accélérer n'importe quelle partie de l'API en stockant un groupe de commandes pour une utilisation ultérieure. À ma connaissance, cela a beaucoup de sens en ce qui concerne l'effort actuel pour réduire les frais généraux du conducteur.

Les listes d'affichage étaient cependant obsolètes dans la version 3.1. Qu'est-ce que l'équivalent API moderne et DirectX expose-t-il une fonctionnalité similaire? S'il n'y a plus de telles fonctionnalités, quelle en est la raison?

Julien Guertault
la source

Réponses:

12

Nvidia a une extension pour créer des tampons de commande dans GL moderne .

La raison du manque de fonctionnalités similaires est qu'il y a beaucoup d'état impliqué concernant la façon de rendre et la liste d'affichage être affectée par beaucoup d'état différent. Par exemple, la modification de l'état de fusion nécessite de patcher le fragment shader sur certains matériels.

NVidia l'a résolu en capturant tous les états et en les réinitialisant après un envoi:

1) Qu'est-ce qui motive la conception?

L'objectif principal est de pouvoir réutiliser des tampons de commande pré-validés. D'autres API et propositions ont résolu ce problème avec diverses incarnations de listes de commandes ou d'objets d'état, mais un problème récurrent est que les interactions entre les différentes étapes du pipeline empêchent cette prévalidation et cette réutilisation. Ces interactions sont souvent spécifiques au matériel (et diffèrent d'un fournisseur à l'autre ou même d'une génération à l'autre) et de nouvelles interactions sont introduites par de nouvelles fonctionnalités qui n'étaient pas imaginées lorsque le schéma de prévalidation a été proposé.

Nous essayons de résoudre ce problème en ayant un objet d'état monolithique qui englobe (presque) tout l'état du pipeline. Cela devrait fournir suffisamment d'informations pour toutes les implémentations pour effectuer la validation croisée nécessaire. Nous essayons de les créer de manière à minimiser la nouvelle empreinte de l'API - puisque nous voulons que TOUS les états (y compris ceux ajoutés à l'avenir), nous les capturions simplement à partir de l'état actuel du contexte.

[...]

23) Dans quel état se trouve l'état, modifié par les jetons, après l'appel de répartition?

RÉSOLU: l'état est réinitialisé.

(à partir du texte d'extension lié ci-dessus)

Cependant, le véritable successeur est la fonctionnalité de tampon de commande dans DX12 et vulkan. Ceux-ci captureront également tous les états de rendu dans un seul objet à utiliser lors de la création et du remplissage du tampon de commande. L'extension NVidia est basée sur cette architecture en raison de l'implication de NVidia dans la conception Vulkan.

monstre à cliquet
la source