Nous avons une application DirectX à deux écrans qui fonctionnait auparavant à une vitesse constante de 60 FPS (le taux de synchronisation des moniteurs) en utilisant un NVIDIA 8400GS (256 Mo). Cependant, lorsque nous avons échangé la carte contre 512 Mo de RAM, la fréquence d'images peine à dépasser 40 FPS. (Cela n'atteint que des valeurs élevées car nous utilisons le triple buffering.) Les deux cartes proviennent du même fabricant (PNY). Toutes les autres choses sont égales, c'est une application Windows XP Embedded et nous avons commencé à partir d'une nouvelle image pour chaque carte. Le numéro de version du pilote est 169.21.Qu'est-ce qui peut provoquer une réduction de la fréquence d'images lors de la mise à niveau d'une carte graphique?
L'application est entièrement 2D. C'EST À DIRE. juste un tas de quads texturés et beaucoup de graphiques pré-rendus (d'où la nécessité de mettre à jour la mémoire de la carte). Nous avons également des animations compressées que le CPU décode à la volée - ceci implique un verrouillage de texture. Les verrous prennent une éternité mais j'ai également essayé d'avoir une texture de mémoire système séparée pour que le processeur mette à jour puis mette à jour la texture rendue en utilisant la méthode UpdateTexture du périphérique. Pas de différence globale de performance. Bien que j'aie lu toutes les FAQ que je peux trouver sur Internet à propos des performances de DirectX, c'est toujours la première fois que j'ai travaillé sur un projet DirectX, donc des connaissances obscures que vous possédez seraient utiles. :)
Une autre chose pendant que je suis sur le sujet; lors de l'appel de Present sur les chaînes d'échange, il semble que DirectX attende que le présent se termine malgré le fait que j'utilise D3DPRESENT_DONOTWAIT dans les deux paramètres présents (PresentationInterval) et les drapeaux de l'appel lui-même. Comme il s'agit d'une application à deux écrans, cela pose un problème car les deux moniteurs ne semblent pas être genlockés, je travaille autour de cela en exécutant les appels présents via un pool de threads. Quelle pourrait être la cause sous-jacente de cela?
Vous avez peut-être été trompé en achetant la version 65nm "rev.2" qui n'a que 8 shaders au lieu de 16. Cela dit, pourquoi utiliser un 8400GS si vous pouvez avoir un GT610 avec 4x la mémoire et DDR3 de DDR2, et 4x le nombre d'unités de shader pour le même prix? (plus, il a un TDP de seulement 29W contre 40W) – Damon