La véritable gestion mémoire se fait à l'intérieur des buffers alloués par des appels OpenGL; et là c'est le développeur qui y organise ses données, et y accède par un système de pointeur (relatif au début du buffer).
Estc-e que tu connais réellement des développeurs qui réorganisent leurs display lists à la main à chaque frame ? Des dev qui choississent vertex par vertex et pixel par pixel ou appliquer leurs shaders ? Des devellopeurs qui réécrivent toutes les fonctions de Z Buffer et de masking ?
Moi pas (Bon si sur Quake 3 Carmack a recodé toute la fonction de Z buffer mais a) sont algo Z aliase sur les grande distances et b) c'est Carmak)
le système "automatique" que tu décris pour les buffers consiste essentiellement à incrémenter/décrémenter un compteur pour chaque buffer
Non non, le système que je décris et celui qui se met en branle sur chaque buffer et dans chaque display list pour refaire le Z-Sorting, le meshig et autre anti aliasing intra et extra modèle.
par exemple les uniform buffers d'openGL 3.1
Les uniform buffers servent à passer des variables uniform aux shaders sans avoir à se refrapper de relancer des GLUniform dans tous les sens. C'est typiquement un cas ou on laisse le pilote se démerder parceque ca fait chier d'appeler sans arrêt une fonction à la main. J'ai du mal à voir en quoi ca rapproche du GPU.
Il y a des fonctions qui rapprochent du GPU, mais elle sont presque toutes tournées vers le GCGPU. Après il y a des fonctions qui rajoutent plus de finesse sur le controle des shaders, mais là c'est le pilote qui fait le boulot, au niveau du GPU à proprement parler on est ni plus près ni plus loin.
ce serait de pouvoir mettre une borne supérieure sur son temps d'exécution à chaque frame. Est-ce possible sur certains GC?
Ca ne pose aucun problème d'évaluer à priori le temps d'éxecution d'une fonction par un GC (le GC Erlang le fait très bien). Pour pouvoir adapter çà à une carte graphique, il faudrait d'abord qu'il existe une carte graphique qui possède une telle fonction. A ma connaissance il n'y en a aucune sur le marché. Toutes les cartes graphiques mettent plus ou moins de temps à rendre une image en fonction de la complexité de la scène. Comme en plus toutes les cartes graphiques sont différentes, et qu'une même carte graphique va avoir des comportements variant du tout au tout d'un pilote à l'autre, je ne vois pas comment garantir un temps d'éxecution par frame. (En plus l'industrie du benchmark de carte vidéo par les sites en lignes/journaux en serait détruite. Ce serait dommage, c'est tellement drôle)
[^] # Re: Fausse idée sur les garbages collectors
Posté par Jerome Herman . En réponse au journal Encore une histoire de récupérateur de mémoire. Évalué à 2.
Estc-e que tu connais réellement des développeurs qui réorganisent leurs display lists à la main à chaque frame ? Des dev qui choississent vertex par vertex et pixel par pixel ou appliquer leurs shaders ? Des devellopeurs qui réécrivent toutes les fonctions de Z Buffer et de masking ?
Moi pas (Bon si sur Quake 3 Carmack a recodé toute la fonction de Z buffer mais a) sont algo Z aliase sur les grande distances et b) c'est Carmak)
le système "automatique" que tu décris pour les buffers consiste essentiellement à incrémenter/décrémenter un compteur pour chaque buffer
Non non, le système que je décris et celui qui se met en branle sur chaque buffer et dans chaque display list pour refaire le Z-Sorting, le meshig et autre anti aliasing intra et extra modèle.
par exemple les uniform buffers d'openGL 3.1
Les uniform buffers servent à passer des variables uniform aux shaders sans avoir à se refrapper de relancer des GLUniform dans tous les sens. C'est typiquement un cas ou on laisse le pilote se démerder parceque ca fait chier d'appeler sans arrêt une fonction à la main. J'ai du mal à voir en quoi ca rapproche du GPU.
Il y a des fonctions qui rapprochent du GPU, mais elle sont presque toutes tournées vers le GCGPU. Après il y a des fonctions qui rajoutent plus de finesse sur le controle des shaders, mais là c'est le pilote qui fait le boulot, au niveau du GPU à proprement parler on est ni plus près ni plus loin.
ce serait de pouvoir mettre une borne supérieure sur son temps d'exécution à chaque frame. Est-ce possible sur certains GC?
Ca ne pose aucun problème d'évaluer à priori le temps d'éxecution d'une fonction par un GC (le GC Erlang le fait très bien). Pour pouvoir adapter çà à une carte graphique, il faudrait d'abord qu'il existe une carte graphique qui possède une telle fonction. A ma connaissance il n'y en a aucune sur le marché. Toutes les cartes graphiques mettent plus ou moins de temps à rendre une image en fonction de la complexité de la scène. Comme en plus toutes les cartes graphiques sont différentes, et qu'une même carte graphique va avoir des comportements variant du tout au tout d'un pilote à l'autre, je ne vois pas comment garantir un temps d'éxecution par frame. (En plus l'industrie du benchmark de carte vidéo par les sites en lignes/journaux en serait détruite. Ce serait dommage, c'est tellement drôle)