Verständnisfrage d3d_texfree

Posted By: alpha_strike

Verständnisfrage d3d_texfree - 05/03/12 13:54

Hallo und noch einmal zu dem Videospeicher.
Vielleicht habe ich einfach ein Verständnisproblem oder irgendetwas falsch in Erinnerung.

Im Debug-Panel (f11) wird doch d3d_texfree als "free" angezeigt. Das ist doch der zur Verfügung stehende Video-Speicher mit ein paar Abschlägen, wie es auch im Handbuch beschrieben wird. Wenn das soweit stimmt, dann...

angenommen ich starte die Engine, lade ganz normal ein leeres Level (Monitor ist schwarz), ich hole über F11 den DebugPanel hervor... und sehe die Variable free mit - von mir aus - 350MB angegeben. Das ist also ungefähr der MB-Wert meines Videospeichers, wenn ich das richig kapiert habe.

Jetzt führe ich eine Funktion aus (per Befehl) und lade mir ca
150MB Bildmaterial per bmap_preload-Befehlen ein.
Das heißt, nach Ihrer Ausführung müssten jetzt die Bilddaten in den Videospeicher reingeladen werden.

Aber dann müsste sich doch auch auf jeden Fall diese Variable free im Debug-Fenster verändern? Ich glaube, bei einem Projekt vor Jahren - war das auch mal so. Und wenn ich dann das ganze
Zeugs mit bmap_purge entladen habe, dann zeigte die Debug-Variable wieder einen höheren Wert an. Was für mich als einfacher Skripter nachvollziehbar ist.

Aber genau dieses Verhalten passiert eben nicht. Wenn ich ganz einfach (unabhängig von einem Projekt) mit meiner main-Funktion das Spiel starte, ein leeres Level lade und dann eben
mit einer Funktion 100MB Bilddaten lade per bmap-preload... ändert sich gar nichts an dieser d3d-Variablen.

Wo liegt das Problem, was mache oder verstehe ich falsch??
Danke für Ihre Mühe im Voraus.
Posted By: jcl

Re: Verständnisfrage d3d_texfree - 05/03/12 16:30

Das hängt vom Speichermanagement des DirectX-Treibers ab. Deshalb haben Sie vor Jahren vermutlich ein anderes Verhalten gesehen. Bei neueren Systemen verhält es sich meistens so wie Sie beschrieben haben.

Das Erzeugen einer DirectX-Textur plaziert diese im "preferred memory". Dies kann der Videospeicher sein, aber auch das System Memory. Im letzteren Fall ändert sich der der d3d_texfree Wert praktisch nicht. Erst wenn die Textur sichtbar wird, verringert er sich.

D.h. wenn Sie nicht bmap_preload aufrufen, sondern z.B. draw_quad, müssten Sie eine Veränderung sehen.
© 2024 lite-C Forums