Estc-e que tu connais réellement des développeurs qui réorganisent leurs display lists à la main à chaque frame ?
A ma connaissance, plus personne n'utilise les display lists dans le monde du jeu vidéo: tout passe par des VBO. Et, oui, le contenu de ces VBO est géré par le développeur.
Je ne comprends pas pourquoi tu parles de gérer les shaders vertex par vertex, où de réécrire les "fonctions de z-buffer". Quel est le rapport avec la gestion mémoire? Le seul impact que je vois c'est qu'il faut souvent regrouper les vertex par shader, et c'est en grande partie pour ça que l'on doit optimiser le contenu des VBO à la main.
Les uniforms buffers permettent surtout d'allouer un bloc de mémoire GPU et de choisir ce que l'on va y stocker, afin d'optimiser le transferts des uniforms entre le CPU et le GPU. Cela en lieu et place d'une allocation transparente gérée par l'API. Donc oui, on est dans plein dans le vif du sujet: passer d'une gestion automatisée à une gestion manuelle.
Enfin, "évaluer à priori le temps d'exécution" d'un GC ne suffit pas. Comme tu le dis, les performances des moteurs de rendus sont fonction de la complexité de la scène. Si un GC n'est pas capable de garantir que pour une scène de telle complexité son temps d'exécution sera inférieur à une valeur donnée, cela revient à autoriser la dégradation du framerate par un facteur inconnu...
[^] # Re: Fausse idée sur les garbages collectors
Posté par drakmaniso . En réponse au journal Encore une histoire de récupérateur de mémoire. Évalué à 0.
A ma connaissance, plus personne n'utilise les display lists dans le monde du jeu vidéo: tout passe par des VBO. Et, oui, le contenu de ces VBO est géré par le développeur.
Je ne comprends pas pourquoi tu parles de gérer les shaders vertex par vertex, où de réécrire les "fonctions de z-buffer". Quel est le rapport avec la gestion mémoire? Le seul impact que je vois c'est qu'il faut souvent regrouper les vertex par shader, et c'est en grande partie pour ça que l'on doit optimiser le contenu des VBO à la main.
Les uniforms buffers permettent surtout d'allouer un bloc de mémoire GPU et de choisir ce que l'on va y stocker, afin d'optimiser le transferts des uniforms entre le CPU et le GPU. Cela en lieu et place d'une allocation transparente gérée par l'API. Donc oui, on est dans plein dans le vif du sujet: passer d'une gestion automatisée à une gestion manuelle.
Enfin, "évaluer à priori le temps d'exécution" d'un GC ne suffit pas. Comme tu le dis, les performances des moteurs de rendus sont fonction de la complexité de la scène. Si un GC n'est pas capable de garantir que pour une scène de telle complexité son temps d'exécution sera inférieur à une valeur donnée, cela revient à autoriser la dégradation du framerate par un facteur inconnu...