PixPerAn V1.01 und Bildwiederholfrequenz

  • Weideblitz: hast du mal das programm probiert?



    Läuft das flüssig bei dir?


    wwelti: ich habe mal getestet wieviel CPU Power man für PixPerAn braucht (ohne das man jetzt mit der leertaste die anderen sachen/fenster ausblendet bei 1280x1024) und bin auf 900 MHz gekommen! Bei 800 MHz ruckelt es ziemlich (~30fps) und bei 850 MHz gelegentlich (verfolgungstest, schlierenbild, flaggentest). Erst bei 900 MHz läufts flüssig. Meine Grafikkarte sollte eigentlich gut genug sein Radeon9700 (128MB) und keine bremse darstellen ;) Das Programm scheint also ziemlich CPU-lastig zu sein. Die angabe mit den 300MHz die du in der Readme gemacht hast gilt warscheinlich nur für niedrigere auflösungen und wenn man bei den Tests die fenster mit der leertaste ausblendet, oder???

    2 Mal editiert, zuletzt von Phantom1 ()

  • Hallo Phantom1,


    Was für einen Computer hast Du denn da verwendet? Hast Du im Bios-Setup die Taktrate verändert, oder wie kommst Du auf 900, 850 und 800 Mhz?


    Mein Laptop z.B. ist wahrhaftig kein besonders auf Performance ausgelegtes System (Pentium-3) und läuft auf 600 Mhz mit Akku. PixPerAn: Kein Problem. Nur das Spiel läuft zu langsam, da das Video-Ram dafür nicht reicht.


    Auf meinem uralten K6-2 450 läuft es _problemlos_ mit 60 Hz. Eine recht alte ATI-Grafikkarte wird verwendet.


    Ich kann es bei Gelegenheit nochmal auf einem Pentium 200 MMX probieren, aber ich glaube bei dem macht die Grafikkarte (Noname Super-VGA mit 4 MB) wahrhaftig nicht mehr mit.


    Bei niedrigen Auflösungen wird _ausschließlich_ die Grafikkarte geringer belastet. Die CPU hat bei 640x480 exakt genausoviel zu tun wie bei 1600x1200: nämlich nicht besonders viel. Im Spiel wird sie noch am meisten gefordert (da kann allerdings auch ganz schön was an Partikeln abgehen).


    PixPerAn macht eigentlich zur "Animationszeit" kaum etwas außer DirectX-Surfaces ausgeben. Alles, was viel CPU-Leistung saugen könnte, wird vorausberechnet.


    Ich kann wirklich nicht ganz nachvollziehen, wie Du zu Deinen Beobachtungen kommst; selbst meine ältesten und langsamsten Mühlen haben keine CPU-Probleme mit PixPeran. Gib mir mal ein bisschen mehr Auskunft zu Deiner Testkonfiguration, das scheint ja schon mehr als nur merkwürdig zu sein.


    EDIT: Ich habe es gerade mit dem Pentium-200 MMX probiert; leider macht da die Grafikkarte tatsächlich nicht mit. Hätte mich allerdings auch gewundert... :) Trotzdem glaube ich nicht, daß die CPU-Leistung den Flaschenhals darstellt, denn beim K6-2 ist die CPU selbst kaum ausgelastet. Nur die Grafikkarte ist kräftig am schwitzen. Nochmal zur Erinnerung: Die "CPU-Last" Anzeige von Pixperan zeigt in Wirklichkeit die gesamte Systemlast an. Allerdings ohne Gewähr; ich habe schon festgestellt, daß verschiedene Win-API Funktionen sich ungefragt anders verhalten als angegeben (tragen sich in irgendwelche Queues ein und terminieren bevor das erwartete Ereignis aufgetreten ist, oder warten selbst auf etwas, das man selbst gar nicht erwartet).


    Was ich wirklich nicht nachvollziehen kann, ist daß PixPerAn auf einem 800 MHz System mit einer Radeon 9700 ins Ruckeln geraten soll. Hast Du Caches deaktivert? Oder hast Du VSync im Treiber + in PixPerAn doppelt aktiviert? Oder irgendwelche "CPU-Schnecke" Software im Hintergrund laufen, die 800 MHz simulieren soll?




    Viele Grüße
    Wilfried

  • Hallo Phantom1,


    Um nochmals auf die 300 Mhz, die ich angegeben habe, zurückzukommen:


    Ich habe PixPerAn mal auf dem K6-2 300 (300 Mhz) meines Bruders gestartet. Aber nicht einfach so -- ich habe eine niedrige Auflösung (640x480) genommen (in dem PC ist eine recht alte Riva TNT Grafikkarte), und eine Vertikalfrequenz von sage und schreibe 170 Hz (nicht 70, sondern einhundertsiebzig) eingestellt. Der Monitor -- ein Eizo 21"er -- schafft das gerade eben so.


    Fazit: Die Grafikkarte pfeift aus dem letzten Loch, und die CPU langweilt sich. Das Spiel ist überall da, wo die Texturen im Video-Ram Platz gefunden haben unspielbar (und läuft dort tatsächlich mit 170 fps), an anderen Stellen dagegen ruckelt es heftigst. Die Tests ließen sich zumindest dann durchgehend mit 170 fps betreiben, wenn die Fenster ausgeblendet wurden. Der Flicker-Screen sah beeindruckend aus: Er flickerte nicht! :) Naja, kein Wunder: Bei einer Frame-Rate von 170 Hz findet das Flackern mit ergonomischen 85 Hz statt.


    Wenn irgendwelche Grafiken nicht im Videospeicher landen, gibt es natürlich ernste Performance-Probleme. Das passiert, wenn die Grafikkarte zu wenig Speicher hat. Bugs (im Treiber, in Windows, oder im Programm) könnten freilich auch dazu führen, daß Grafiken nicht im Videospeicher gespeichert werden. Ich kann das ja nochmal untersuchen.


    Jedenfalls glaube ich nun, daß ich mit den 300 MHz als Mindestanforderung noch gewaltig hochgestapelt hatte. Wahrscheinlich reichen auch 100 :-). Allerdings muß das Grafik-Subsystem zumindest halbwegs fit sein.


    Viele Grüße
    Wilfried

  • Meine ausführliche PC konfiguration findest du in meiner Signatur, (man kann den link schnell übersehen ;) )


    Ich habe wirklich nur die CPU im BIOS runtergetaktet. Ich Verwende WinXP (inkl SP1) mit DX9 und lasse dabei keine hintergrund programme laufen etc. VSync hab ich immer an bei 60Hz digital.


    Ich habe es eben nochmal genauer ausprobiert mit 600MHz (100x6) ruckelt der flaggentest, schlierenbildtest und der verfolgungstest sehr stark. Startbildschirm, lesbarkeitstest und das spiel laufen flüssig (60fps).


    Ab etwa 700 MHz ruckelt dann nur noch der schlierenbildtest und der verfolgungstest.
    Ab etwa 800 MHz ruckelt dann nur noch der verfolgungstest.
    Ab 900 MHz laufen alle tests flüssig.


    Ein beispiel erkläre ich mal genauer: Bei 800MHz zählt die Framelost anzeige im Verfolgungstest ununterbrochen, etwa 10 frames lost pro sekunde. CPU load liegt immer bei 100% mit 57-60fps manchmal sogar 30fps. Wenn ich jetzt noch VSync in deinem programm mit shift+f8 erzwinge, habe ich 20 und 30 fps schnell abwechselnt und cpu load etwa 67-68% falls dir das hilft den fehler zu lokalisieren?

  • Hallo Phantom1,


    Schön, daß wir da eine Korellation haben: Tatsächlich musste ich für Flaggentest, Schlierenbildtest und Verfolgungstest die Fenster ausschalten, damit sie auf dem K6-2 300 mit TNT-Grafikkarte noch mit 170 fps liefen. (sonst wären sie mit"nur" 85 Hz gelaufen).


    Vielleicht gibt's da wirklich einen kleinen "Bug". Wobei ich allerdings der Meinung bin, daß es da noch ein anderes Problem geben muß. Oder kannst Du mir erklären, wie es sonst sein kann, daß es mit in allen Belangen deutlich unterlegener Hardware so deutlich schneller läuft? Und es handelt sich nicht um einen Einzelfall. Ich habe es inzwischen auf einem halben Dutzend Computer erfolgreich getestet, mit Geschwindigkeiten zwischen 1 Ghz und 300 Mhz:


    K6-2 300, K6-3 450, K6-2 450, P3 500, P3 600, 2x Athlon 1 Ghz. An Betriebssystemen kamen vor: Win98, Win2000, und WinXP. Grafikkarten waren entweder von ATI (keine Radeons) oder Nvidia. Wenn es Probleme gab, dann nur bei den älteren Grafikkarten, und auch nur in hohen Auflösungen oder im Spiel (aufgrund zu kleinem Video-Ram). Bei den beiden Athlons waren Geforce2 oder besser verbaut. Hier ging trotz hoher Auflösung (1600x1200, bzw. 1280x1024) die CPU-Last-Anzeige nie über 20%.


    Was mich persönlich an Windows-Softwareentwicklung nervt, ist die mangelnde Konsistenz. Selbst wenn man Sorgfalt investiert und nur relativ schmale Teile der API's verwendet, gibt's doch jedesmal wieder Ärger. Und jedesmal sind es irgendwelche Systemgeschichten, die für den Ärger sorgen :(. Auf keiner anderen Plattform ist das so ausgeprägt. Das musste mal gesagt sein. Jetzt geht's mir wieder besser :)


    Mal schauen ob ich noch irgend ein Problem im Programm finde, aber lange werd ich mich nicht mit der Sache aufhalten.


    Viele Grüße
    Wilfried

  • Das problem ist ja nu nicht wirklich wichtig, da ich ja mit normal taktung 2400+ erst recht keine probleme habe ;) Bin halt nur zufällig darauf kommen, als ich testen wollte ob das testprogramm was ich für weideblitz geschrieben hatte, nicht zu cpu lastig ist (wegen dem hintergrundbild was jedesmal neu in voller bildgröße gezogen wird (per stretching)). Deswegen habe ich meinen cpu mal auf 750 MHz runtergetaktet ähnlich wie das Notebook von Weideblitz. Und da ist mir das halt zufällig mit deinem Programm aufgefallen. Komisch ist nur das alles andere auch mit 600MHz läuft auch das Testprogramm für Weideblitz was ja auch im vollbild dargestellt wird (welches selbstverständlich bei weiten nicht so umfangreich wie deins :D ), genauso seltsam wie dein Scroll-Spielchen was ebenfalls bei 600Mhz ruckelfrei läuft! Es muss also ein sehr spezielles problem sein.


    Schade das Weideblitz mein Testprogramm noch nicht probiert hat, es würde mich immer noch interessieren ob das ebenfalls auf seinem Notebook ruckelt?


    hier nochmal der downloadlink:

  • Zitat

    Original von Phantom1
    Ein beispiel erkläre ich mal genauer: Bei 800MHz zählt die Framelost anzeige im Verfolgungstest ununterbrochen, etwa 10 frames lost pro sekunde. CPU load liegt immer bei 100% mit 57-60fps manchmal sogar 30fps. Wenn ich jetzt noch VSync in deinem programm mit shift+f8 erzwinge, habe ich 20 und 30 fps schnell abwechselnt und cpu load etwa 67-68% falls dir das hilft den fehler zu lokalisieren?


    Das deckt sich ja prinzipiell mit meiner Beobachtung.


    Ich werde so schnell als möglich versuchen, weider an mein Notebook zu kommen. ;)

  • Zitat

    Original von Phantom1
    Schade das Weideblitz mein Testprogramm noch nicht probiert hat, es würde mich immer noch interessieren ob das ebenfalls auf seinem Notebook ruckelt?


    hier nochmal der downloadlink:


    Ha, habs gerade doch noch schnell testen können. :)


    Mit Hintergrundbild: gleichmäßiges, aber ruckeliges Auto und weiß/rote Rechtecke, 4 fps
    Ohne Hintergrundbild: gleichmäßges und flüssig bewegendes Auto und weiß/rote Rechtecke, 60/61 fps


    Danke Phantom1! ;)

  • Hallo zusammen,


    zum Thema "Geschwindigkeitsproblem mit PixPerAn" kann ich nun folgendes sagen:


    Es scheint so, daß die Skalen der Einstell-Balken (kein Scherz!) einen guten Teil der benötigten Systemleistung saugen. Das korreliert auch gut mit Phantom1' Aussagen. Nun sind diese Skalen keine vorgefertigten Grafiken, sondern werden höchst dynamisch der Bildschirmauflösung angepasst, so daß sie immer schön im Pixelraster liegen, und trotzdem nicht zu winzig aussehen. Die einzelnen Linien werden durch lauter kleine, 1 Pixel breite Rechtecke erzeugt. Da z.B. beim Verfolgungstest einige Hundert dieser Linien gleichzeitig sichtbar sind, werden auch entsprechend viele DirectDraw-Aufrufe (pro Frame) getätigt. Und hier kommt die Performance der Treiber speziell für diese DirectDraw-Aufrufe ganz gewaltig mit ins Spiel. Da kann es riesige Unterschiede geben.


    Natürlich könnte ich die Skalen auch jeweils als Grafiken in Surfaces vorausberechnen. Nur würde PixPerAn dann noch mehr Video-Ram benötigen (und noch mehr Video-Bandbreite benötigen), daher hatte ich es nicht so gemacht.


    Tja, was soll ich sagen. Ich schätze, daß die Radeon-Treiber aus irgendeinem Grunde diese DirectDraw-Rechteck-Aufrufe nicht übermäßig effizient abarbeiten. Vielleicht hängt es auch irgendwie mit dem stark untertakteten System zusammen? Ich kann jedenfalls auch nicht hexen; ich lasse es jetzt so wie es ist. Auf dem 300 MHz-System meines Bruders läuft es schließlich schnell genug :-). Und auf meinem Laptop (600 MHz-Pentium-3) ebenfalls. Ich denke, wenn ich wirklich ernsthaft optimieren wollte, sollte ich gleich auf differenzielle Grafik-Verarbeitung umstellen. Und ich habe jetzt gerade nur wenig Lust, diesen Aufwand zu betreiben, ehrlich gesagt :)


    Viele Grüße
    Wilfried