Wie viel Grafikspeicher ist frei?

raven-bs

Mitglied
Hallo,

Leider kann man wenn man z.B. Texturen, Vertexe oder anderes zeug in den Grafikspeicher schiebt, nicht genau sagen wie viel Speicher davon verbraucht wird, wegen automatischen Mip-Maps, Texturkompermierung,...

Daher ist es nicht möglich zu Rechen Frei = (Gesammspeicher - Selbst Belegten)

Mich würde nun interessieren ob ihr Mittel und wege kennt herauszufinden wie viel Grafikspeicher aktuell frei ist. Vornehmlich in C++ und OpenGL :)
 
Ich hab jetzt mal etwas danach gegoogelt. OpenGl scheint keine Funktion dafür zu bieten. DirectX schon, wobei ich gelesen hab, dass DX schon mal falsche Werte zurückgibt....

http://www.flipcode.com/cgi-bin/fcarticles.cgi?show=64467

in dem Artikel wird das beschrieben. In einem Kommentar kam einer auf die Lösung:

First step yuo trying allocata all video memory, eg. 32MB.
if it failed, next step is half, 16mb.
If success, add to variable FreeAGPMem += allocatedMemorySize;
deallco memoey and do it as the alloc memoery size wil be equal 1 byte. after all steps You will got free video memory with 1 byte precision.
 
Das könnte funktionieren, sofern nicht im Treiber dynamisch dann virtueller RAM speicher vergeben und über AGB/PCIE auf die Grafikkarte gelinkt wird...
Ich werde das gelich mal testen und gebe dann bescheit
 
Funktioniert leider nicht...

Die Theorie ist gut, aber in OpenGL gibt es nicht die möglichkeit eines "malloc" welcher bei Fehlschlag null zurück gibt. Alle Speicher reservierenden Funktionen sind void, und GL kümmert sich immer selbsttätig um Swapping in den normalen RAM. Fehlschlagen gibt es damit nicht. Was passiert wenn auch der Systemspeicher zu ist weis ich nicht.. eventuell einfach Absturtz,...
Oder habe ich eine Methode übersehen speicher zu holen mit Rückmeldung?
 
Zurück