CapFrameX (CX) - Frametime Capture und Analyse Tool

@PCGH_Dave Ich hätte noch mal ne Frage zu deinem nicht reproduzierbaren Problem mit CX, was du nun durch eine Windows Neuinstallation behoben hast:
Startest du CX ganz normal oder hast du die "Start minimized" Option an?
Wenn ersteres, glaube ich nämlich, dass wir den Grund für den Fehler gefunden haben könnten^^

Es gab immer mal wieder eine Exception im RTSS Part von CX, wenn man die Anwendung geschlossen hat, das wurde bisher nie weiter beachtet, eben weil es sowieso nur beim Schließen passiert, nur im Visual Studio aufgefallen ist und auch sonst keine Probleme gemacht hat.
Was wir glauben ist, dass diese Exception in extrem seltenen Fällen den Tracker, den wir benutzen um beim Schließen von CX die Fenstergröße und Position zu speichern, stören konnte und er irgendwelche unlogischen Werte geschrieben hat.

Ich konnte deinen Fehlerfall nämlich exakt so nachstellen, wenn ich in der json, die der Tracker schreibt, z.B. die Position des Fensters in horizontaler Richtung auf einen Wert setze, der größer ist, als die Auflösung meines Bildschirms.
Dann startet CX, aber man sieht das Fenster nicht. Es wird auch nichts außerhalb gerendert, sodass man es mit Windows+Pfeiltasten rüberholen könnte, die Vorschau in der Taskleiste zeigt nur ein weißes Fenster, genau dein Fehlerbild.

Wenn ich CX allerdings minimiert starte, dann passiert das nicht, ich kann auf das Tray Icon klicken und das Fenster erscheint an der letztmöglichen Position, in der es auf meinem Monitor noch in vollem Umfang angezeigt werden kann.
Der Fehler tritt also nur auf, wenn die Position nicht stimmt und das Fenster gleichzeitig beim Start direkt auf dem Desktop gerendert werden soll. Beim minimierten Start wird das Fenster aber gerendert, ohne dass es an einer potenziell falschen Position erscheinen soll, vermutlich kann es die Position deshalb auch beim anschließenden Aufrufen korrigieren.

Die Exception haben wir zwar vmtl. behoben, aber sicher, dass das der Grund für falsche Tracker Daten war, können wir nicht sein. Dass die falschen Tracker Daten aber der Grund für deinen Fehler waren, da bin ich mir relativ sicher. Das Fehlerbild ist einfach zu speziell, als dass ich hiermit zufällig das exakt gleiche Bild bekommen könnte.

Deshalb habe ich die Startroutine jetzt so umgestellt, dass sie auch bei einem normalen Start im Hintergrund genauso arbeitet, als würde man CX minimiert starten und anschließend aufrufen.
Damit sieht der Start für den Nutzer im Prinzip genau so aus wie vorher, aber der Fehler passiert so nicht mehr bzw. ist wenn sowas nochmal passiert auf den Umstand begrenzt, dass das Fenster evtl. in einer anderen Größe und an einer anderen Position erscheint, als es beim letzten Schließen war, aber niemals außerhalb des Bildschirms.

Was die Windows Neuinstallation für dich wahrscheinlich getan hat, ist den Ordner AppData/Roaming/CapFrameX zu löschen, dort sind nämlich die jsons vom Tracker gespeichert, die zu löschen behebt das Problem auch und CX erscheint beim nächsten Start in Standard Fenstergröße und Position.
Wir hatten dir ja leider nur AppData/Local/CapFrameX vorgeschlagen, der in neueren Versionen gar nicht mehr verwendet wird. Wir wussten bisher gar nicht, wo der Tracker seine Daten speichert^^
 
Zuletzt bearbeitet:
Apropos Kahlschlag, wir müssen dann auch bald mal Windows 11 testen.
Wurde übrigens von mehreren getestet. CX läuft soweit rund auf Windows 11.
Was die Windows Neuinstallation für dich wahrscheinlich getan hat, ist den Ordner AppData/Roaming/CapFrameX zu löschen, dort sind nämlich die jsons vom Tracker gespeichert, die zu löschen behebt das Problem auch und CX erscheint beim nächsten Start in Standard Fenstergröße und Position.
Wir hatten dir ja leider nur AppData/Local/CapFrameX vorgeschlagen, der in neueren Versionen gar nicht mehr verwendet wird. Wir wussten bisher gar nicht, wo der Tracker seine Daten speichert^^
Noch als Ergänzung zu Taxxors Ausführungen. Die Erkenntnis fiel nicht vom Himmel. Wir mussten uns da erstmal rantasten und die Doku studieren, wo diese Jot Lib die Tracker-Daten überhaupt hinterlegt. Am Ende ist es auch nur eine Theorie, dass es der Grund ist, auch wenn es sehr wahrscheinlich so ist.
 
Zuletzt bearbeitet von einem Moderator:
Was die Frage angeht: Sowohl, als auch. Es gibt Wochen, da arbeite ich täglich mit CX, und Wochen, wo ich es nicht tue und dann aus dem Autostart nehme. Was ich zu der Zeit aktiv hatte ... gute Frage.
 
@Taxxor war sehr sehr fleißig in den letzten Tagen, so dass wir in kurzer Zeit genügend "Material" für eine neue Version zusammen hatten.

Download v1.6.4 und das sind sind die Neuerungen.
  • Performanceoptimierung der Frametime-/FPS-Graphen
  • Application Latency nun auch auf dem Overlay verfügbar
  • Messdauer pro Prozess mit Speicherung der entsprechenden Messdauer
  • Spalten der Recordliste können ausgeblendet werden, CX merkt sich die Reihenfolge der Spalten jetzt, wenn diese verschoben werden
 
Zuletzt bearbeitet von einem Moderator:
Und es geht direkt weiter ^^

Erstes neues Feature für die irgendwann kommende v1.6.5:
Man kann jetzt bei aggregierten Benches die einzelnen Aggregate auf der Analysis visuell trennen lassen.

Besonders nützlich, wenn man die Aggregation nicht nur dazu benutzt, um die Genauigkeit zu erhöhen indem man die gleiche Szene mehrmals durchläuft, sondern um wirklich verschiedene Szenen aus einem Spiel zusammenzuführen, wie z.B. beim integrierten Benchmark von Tomb Raider oder hier beim neuen Final Fantasy XIV Benchmark. Zwischen Szene 2 und 3 ist es z.B. anhand der FPS gar nicht so offensichtlich, wo hier eine neue Szene begonnen hat, wohingegen man innerhalb von Szene 1 denken könnte, dass hier zwei Szenen drin sind^^

CX_2021-07-12_19-12-00_Final Fantasy XIV_Entire Bench.png



Und ich kann nur immer wieder erwähnen, dass diese Art der Verwendung der Aggregation nicht nur dazu gut ist, um integrierte Benchmarks mit mehreren Szenen und Ladesequenzen auszuwerten, sondern ich das auch gerne mal für die Benches mit Custom Szenen sehen würde.
Warum sich z.B. immer unbedingt zwischen einer sehr fordernden Szene und einer eher alltäglichen Szene entscheiden müssen? Beide haben ihre Pros und Cons, wenn es um die Frage geht, was man dem Leser am besten präsentiert.

Einfach beide testen und aggregieren, dann hat man im Average den Mittelwert aus den beiden Szenen und damit eine realistische Größe dessen, was man idR so im Spiel erwarten kann(wenn die alltägliche Szene den Großteil des Spiels ausmacht, kann man sie auch einfach doppelt in der Aggregation verwenden, damit sie beim Average mehr Gewicht hat).
Die Perzentile hingegen werden komplett von der fordernden Szene abhängig sein, somit hat man neben dem realistisch zu erwartenden Average mit den Perzentilen auch den quasi Worst Case mit drin, wie man im Bild gut sehen kann.

Das ist am Ende sehr viel informativer als das Benchen einer einzelnen sehr fordernden Szene und dann, wie z.B. oft bei CB gesehen, dazu zu schreiben "Die FPS sind im Spiel idR deutlich höher als in dieser Szene".
Wo ich mit jedes Mal denke, danke für diese Info, wie hoch sind sie denn nun idR?
 
Zuletzt bearbeitet:
Moin!

Ist es eigentlich Absicht, dass die Settings des Logger-Fensters nicht gespeichert werden? Ich habe das abgeschaltet, aber beim nächsten Start läuft der "Chat" wieder. Ja, ich aktiviere immer nur die nötigsten Dinge auf dem Benchsystem. :D

MfG
Raff
 
Ist es eigentlich Absicht, dass die Settings des Logger-Fensters nicht gespeichert werden? Ich habe das abgeschaltet, aber beim nächsten Start läuft der "Chat" wieder. Ja, ich aktiviere immer nur die nötigsten Dinge auf dem Benchsystem. :D
Ja, das ist Absicht, der Log sollte allgemein präsenter sein und in jedem Fall anzeigen was so passiert ist.
Deaktivieren bringt dir für die Performance übrigens nicht wirklich was, weil das nur die Anzeige ist, geschrieben werden die logs so oder so, wie vorher auch.
 
Hier ist ein kleines Projekt, das die Glide Events abfängt und umlenkt (FPS werden in eine Datei geschrieben). Quelle Code gibt's auch.


Edit: Muss man nur noch so umbauen, dass stattdessen die Frametimes abgespeichert werden und Hotkeys die Aufnahme steuern. Bähm! Los geht die Retro Bench Party.
Ich könnte demnächst mit dem Projekt beginnen. Würdest du mir deine Voodoo Karte zuschicken @PCGH_Raff, weil so als reine Trockenübung wird das schwierig.

Dann müsste ich noch wissen, unter welchem OS das maximal läuft, weil Win 98 ist Pain. Und ich bräuchte noch ein Board mit AGP Interface oder?

Edit: Läuft wohl unter XP...
 
Zuletzt bearbeitet von einem Moderator:
Die neue Version 1.6.5 ist draußen

## New features
* "Show aggregation" toggle on Analysis page to show graph separators for the single runs of an aggregated record
* "Frametime variance" (difference between consecutive frametime values) added to Analysis and Comparison page
* New Hotspot sensors for Nvidia GPUs
* "Inverse cut" option added to range slider to remove the selected range and save the remaining data

## Enhancements
* Cutting a record with range slider now adds "(Cut) " at the start of the comment to better find the new file in the record list
* added a decimal point to the app latency overlay entry
* added app latency and some standard sensor values to the Report page and adjusted the copy function to only copy active values

## Bug fixes
* Range slider cutting didn't work for records without sensor data
* Range slider cuttingt didn't always work correctly when cutting aggregated records
* GPU accelleration could lead to slow loading of larger graphs together with very high RAM usage since version 1.6.4. Because it doesn't have any real benefits, the option was cut.
* Possible fix for app crash when saving the app settings
 
Moin!

Psychonauts 2: CapFrameX will ums Verrecken den Prozess nicht erkennen. Kein Wunder, es handelt sich um die Microsoft-Store-Version. Da ich noch nicht bei GOG zugeschlagen habe, musste ich fremdgehen - OCAT v1.6.1 erkennt das Spiel und erlaubt Messungen. Könnt ihr das fixx0rn? :-)

MfG
Raff
 
Crap, danach habe ich natürlich nicht gesucht. Warum steht das da drauf? Mir ist das Spiel mit aktiven Overlays ziemlich oft abgeschmiert - ist da 'ne Inkompatibilität bekannt?

MfG
Raff
 
Jo, immer, ich schaue da alle paar Tage. :-) Das Abcrappen betrifft aber auch OCAT - ich habe dann rein akustisch gemessen, damit läuft's sauber. Techniktest geht morgen früh live.

MfG
Raff
 
Warum steht das da drauf?
Alles was neu von irgendeinem User geblacklistet oder benannt wird, kommt ja erst mal auf unseren Server als Draft, damit wir das prüfen können, bevor es in die Live Liste geht, die die leute sich ziehen.

Psychonauts 2 wurde da vor einer Weile auch hochgeladen mit enstprechend angepasstem Namen, aber gleichzeitig auch mit dem Blacklist Flag, was übersehen wurde und dann so auf aktiv geschaltet wurde.
Damit haben dann alle Leute, die die Auto-Update Funktion nutzen oder die neuste Version installiert haben und das Game bis dahin noch nicht selbst hinzugefügt hatten, den Prozess als blacklisted in ihre Liste bekommen.

Und da das Update nur Dinge einfügt, die noch nicht in der eigenen Liste sind, können wir das auch nachträglich nicht mehr ändern, dass muss nun leider jeder Nutzer selbst bei sich wieder von der Ignore Liste holen.
 
Zuletzt bearbeitet:
Ziemlich ruhig hier geworden. Ich habe mal wieder spezielle Bedürfnisse :D

Nutzt man mehr Kerne als man jemals zum zocken brauche würde, überschreitet man in CX offenbar die maximale Länge an Schriftzeichen für das Overlay, zudem werden mir seltsame Sachen angezeigt. Die Messungen laufen wunderbar, aber es wäre auch schön zu sehen, was die übrigen Kerne so treiben ;-)

Zudem noch eine QoL-Sache: Das Hauptfenster von CX hat eine minimale Breite/Höhe, die immer wieder aktiviert wird, auch wenn ich das Fenster kleiner ziehe. Gibt es eine Möglichkeit, dass das Fenster von CX die minimale Breite/Höhe speichert und nicht ständig wieder größer wird? Das wäre super.
 

Anhänge

  • Capframe kaputt gemacht.png
    Capframe kaputt gemacht.png
    1,8 MB · Aufrufe: 59
  • Capframe kaputt gemacht2.png
    Capframe kaputt gemacht2.png
    1,9 MB · Aufrufe: 52
Zuletzt bearbeitet:
Nutzt man mehr Kerne als man jemals zum zocken brauche würde, überschreitet man in CX offenbar die maximale Länge an Schriftzeichen für das Overlay
Das liegt eher an RTSS und nicht an CX, der RTSS hat ein Limit, wie viel Input man ihm geben kann (betrifft glaube ich nur 3rd Party Clients wie uns und nicht den Afterburner) und wir haben die Formatierung der Overlay Einträge schon sehr stark komprimiert, sodass noch mehr angezeigt werden kann.

Bei 64 Threads müsste man sich dann wohl auf zwei Spalten beschränken und könnte in dem Fall nur die Auslastungen anzeigen.


Zudem noch eine QoL-Sache: Das Hauptfenster von CX hat eine minimale Breite/Höhe, die immer wieder aktiviert wird, auch wenn ich das Fenster kleiner ziehe. Gibt es eine Möglichkeit, dass das Fenster von CX die minimale Breite/Höhe speichert und nicht ständig wieder größer wird? Das wäre super.
Das verstehe ich nicht wirklich.
Die Standard Breite/Höhe beträgt 1400x780, die minimale Breite/Höhe beträgt 1400x680 und kleiner kann man das Fenster auch nicht ziehen.

Wenn CX ganz normal geschlossen wird, wird die Breite und Höhe gespeichert, wenn man also beim Schließen diese 1400x680 hatte, hat man die auch beim nächsten Start.

Wenn ich mal simuliere, dass beim speichern oder auslesen was nicht klappt, also die json in der gespeichert wird, lösche oder unmögliche Werte eintrage, dann öffnet sich CX danach in 1400x780.

Die Standardhöhe könnte man natürlich auch auf 680 setzen, allerdings sollte das Speichern normalerweise funkionieren.
Dein damaliges Problem, dass das Fenster gar nicht mehr da war, lies sich ja auch recht sicher auf einen Fehler in dem Bereich zurückverfolgen, nur reproduzieren konnte das niemand, ohne absichtlich in den Dateien rumzuschreiben.


Hast du das denn auch umgekehrt, also wenn du das Fenster z.B. auf 1600x1000 ziehst und schließt, es danach wieder 1400x780 ist?

Auch wäre der Inhalt der Json nach dem Schließen von CX interessant und ob das Änderungsdatum mit dem Zeitpunkt des Schließens übereinstimmt.(AppData/Roaming/CapFrameX/[CapFrameX.Shell]ShellWindow.json).

So sollte das aussehen, wenn man es in Minimalgröße geschlossen hat.
Die ersten beiden Einträge beschreiben die Fenstergröße und die beiden darunter den letzten Abstand der oberen Linken Ecke des Fensters vom linken und oberen Rand des Desktops. Diese Zahlen sollten natürlich auch innerhalb der genutzten Auflösung liegen.
Screenshot 2021-09-14 182754.png
 
Zuletzt bearbeitet:
Zurück