Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also das geht mit OpenGL leider gar nicht. AMD hat zwar eine Extension in deren Treibern die meminfo heißt. Allerdings von der gibt es so überhaupt keine Spezifikation oder irgendwelche Informationen. Was ich persönlich sehr Schade finde.
Es gab mal vor einer Zeit lang ein Tool welches die Speicherauslastung mithilfe von Managed DirectX 9 angezeigt hatte. Aber ich weiß gerade dessen Namen nicht mehr und wirklich stabil war es auch nicht. Den Quellcode davon gab es aber auch nie. Also was dort gemacht wurde bleibt deren sahniges Geheimnis.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Wie Lossy bereits sagte bietet OpenGL keine Möglichkeit den VRAM-Verbrauch zu messen, wenn man es also in seiner eigenen Anwendung ermitteln will muss man letztendlich rechnen, so tut das zumindest mein Texturenmanager. Natürlich ist das nur eine Berechnung die man so nicht direkt übertragen kann, zumal man z.B. für Displaylisten keine Berechnung aufstellen kann.
Alternativ kann man aber mit dem Rivatuner den aktuellen VRAM-Verbrauch messen, muss diese also im Hintergrund laufen und mitloggen lassen.
Schon echt blöd, dass man das nicht abfragen kann.
Zum einen hätte ich gerne eine Hib- und Stichfeste Fehlerprotokollierung,
wenn es Speicher-Probleme gibt, zum anderen würde ich gerne eine Meldung
ins Programm eingebaut, die den User warnt, bevor das Kind in den Brunnen
gefallen ist.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Naja, sobald der Grafikspeicher voll ist, wird auf den Arbeitsspeicher ausgelagert und wenn der voll ist, dann wird es in die Pagefile ausgelagert.
Ich behaupte, dass dein System schon steht, wenn er anfängt Grafikdaten auf die Pagefile zu legen ^^.
Informationen über die Auslastung des VRams ist ja eigentlich nur notwendig, wenn den Verbrauch auf eine Mindestschranke optimieren willst, damit es noch auf einer bestimmten Kartereihe noch läuft.
In diesem Stadium hast du ja den Code vor dir und kannst dann über Tools wie gDEBugger es lokal sehr gut verwalten.
Wenn du den User warnen willst, dann bau doch z.B. eine FPS-Anzeige mit ein.
Ich z.B. guck nur ob ich genug FPS in ein Spiel hab und schaue ob ich über bestimmte Regler noch was raus holen kann.
Wenn es Probleme beim Grafikspeicher gibt, dann sollte ja beim runter stellen der Texturauflösung irgendwann ein knick kommen, wo die FPS auf einmal stärker hoch springt.
Willst du trotzdem noch eine Möglichkeit, in etwa zu wissen, wieviel VRAM aktuell zugestopft ist, dann würde ich es, wie Sascha empfeholen hat, einfach selber in den Managern mitrechnen, was verbraucht wurde.
Das ist wie schon erwähnt nicht genau aber lässt erahnen, wie der Stand ist, wenn bei mehreren an einer bestimmten Stelle im Spiel aufeinmal das System schock gefrierrt ^^.
Allerdings wärst du mein Persönlicher Held, wenn du ein Weg findest, auf neueren AMD und NVidia Karten, den Verbrauch zu messen.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
AMD hat zwar eine Extension in deren Treibern die meminfo heißt. Allerdings von der gibt es so überhaupt keine Spezifikation oder irgendwelche Informationen. Was ich persönlich sehr Schade finde.
Doch gibt's: GL_ATI_meminfo Die Spezifikation ist vom 2. März 2009, also wirklich brandneu.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Coole sache, hab mal kurz eingeguckt und da steht, dass auch diese Extension nicht sehr genau ist, da dies garnicht notwendig ist.
Zitat:
It does not require that exact values be returned. The information is intended to be a hint to the application about the status at a particular moment in time. As such, the value returned does not need to reveal the exact information, but instead it could return a conservative value of 80% of actual availability.
Einzig die verfügbarkeit macht mit stutzig, oben steht, dass OGL1.1 benötigt wird, später steht, dass es von OpenGL1.5 VBO abhängig ist und mitten drin, dass es von den OpenGL2.0 Spezifikationen abgeleitet wird. Ich bin offiziell verwirrt xD. Bzw. es wird doch bestimmt eine NV alternative geben.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Einzig die verfügbarkeit macht mit stutzig, oben steht, dass OGL1.1 benötigt wird, später steht, dass es von OpenGL1.5 VBO abhängig ist und mitten drin, dass es von den OpenGL2.0 Spezifikationen abgeleitet wird. Ich bin offiziell verwirrt xD. Bzw. es wird doch bestimmt eine NV alternative geben.
1. Die Extension ist verfügbar wenn GLEW (oder sonst irgendein Extension-Tester) dir sagt das sie verfügbar ist.
2. Wenn du nicht wenigstens OpenGL 1.1 verwendest funktioniert diese Extension nicht.
3. Die Spezifikation ist gegen die OpenGL 2.0 Spezifikation geschrieben. In diesem Dokument beziehen sich also alle Angaben von Kapiteln, Absätzen usw. auf die 2.0 Spezifikation.
4. GL_VBO_FREE_MEMORY_ATI funktioniert nur, wenn du auch Vertexbuffer-Objekte zur Verfügung hast, irgendwie logisch.
Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.