Was kann die Ursache für eine Verringerung in der Framerate, wenn Sie eine Grafikkarte?

StackOverflow https://stackoverflow.com/questions/56424

  •  09-06-2019
  •  | 
  •  

Frage

Wir haben eine zwei-Bildschirm DirectX-Anwendung, die zuvor lief eine konsistente 60 FPS (die Monitore' sync-rate) mit einer NVIDIA 8400GS (256 MB).Jedoch, wenn wir tauschten die Karte für eine mit 512 MB RAM, die frame-rate Kämpfe um über 40 FPS.(Es wird nur das hoch, weil wir uns mit triple-buffering.) Die beiden Karten sind vom gleichen Hersteller (PNY).Alle anderen Dinge gleich sind, das ist ein Windows XP Embedded Anwendung und wir begannen ein frisches image für jede Karte.Die Treiber-Versionsnummer ist 169.21.

Die Anwendung ist alle 2D.I. E.just a bunch of textured quads und eine ganze Menge von pre-rendered graphics (daher die Notwendigkeit zu upgrade die Karte in den Speicher).Wir haben auch komprimiert Animationen, die die CPU beim Dekodieren auf der Fliegen - dies beinhaltet eine textur zu sperren.Die sperren für immer dauern, aber ich habe auch versucht, mit einem separaten system memory-textur für die CPU zu aktualisieren und dann die Aktualisierung der gerenderten textur mit dem Gerät UpdateTexture Methode.Insgesamt keine Unterschiede bei der Leistung.

Obwohl ich gelesen habe, über alle Fragen und Antworten ich die im internet zu finden über die DirectX-performance, das ist immer noch das erste mal, dass ich gearbeitet habe, eine DirectX-Projekt, damit jeder arcane bits von wissen, das Sie haben, sehr nützlich sein würde.:)

Eine andere Sache, zwar bin ich auf das Thema;beim Aufruf Vorhanden, die auf die swap-Ketten es scheint, DirectX wartet darauf, der Gegenwart in die völlig unabhängig von der Tatsache, dass ich mit D3DPRESENT_DONOTWAIT in beiden Anwesenden Parameter (PresentationInterval) und die Flaggen der sich selbst aufrufen.Denn dies ist ein zwei-Bildschirm-Anwendung dies ist ein problem, weil die beiden Monitore nicht angezeigt werden, genlocked, ich bin arbeiten, um mit den Anwesenden über einem threadpool.Was könnte die Ursache sein?

War es hilfreich?

Lösung

Sind die Karten genau das gleiche (beide GeForce 8400GS) und nur die Speichergröße unterscheiden? Ziemlich oft mit unterschiedlichen Speichergrößen kommen leicht unterschiedliche Taktraten (das heißt Ihre Karte mit mehr Speichern möglicherweise langsamen Speicher verwenden!).

Das erste, was zu überprüfen wäre GPU-Kern & Speichertaktraten sein, mit so etwas wie GPU-Z .

Andere Tipps

Es ist ein einfacher Test, um zu sehen, ob die Oberfläche Sperre das Problem ist, Kommentar nur die Textur-Update aus, und wenn die Framerate wieder auf 60 Hz sehen. Leider in eine verriegelte Schreibfläche und die Ressource zu aktualisieren perfomance tötet, immer hat. Verwenden Sie Mipmaps mit den Texturen? Ich weiß, DX9 automatische Generierung von Mipmaps hinzugefügt, könnte viel Zeit nehmen bis zu denjenigen zu erzeugen. Wenn Ihr ständig die gleiche Ressource jeden Rahmen sperren, können Sie auch versuchen, einen Pool von Texturen zu schaffen, ein bisschen wie Triple-Buffering außer mit Texturen. Sie lassen würde die Verwendung einer Textur, und auf dem nächsten Update machen Sie die nächste verfügbare Textur im Pool auswählen, die in nicht verwendet wird ist, zu machen. Es sei denn natürlich Ihr Gedächtnis eingeschränkt oder Sie nur machen diffs auf die animierte Textur.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top