Add more options and debug options for DX9 LRU.

This commit is contained in:
aignacio_sf 2005-12-29 18:53:35 +00:00
parent 49ccbd9c97
commit 5ae5135044
3 changed files with 24 additions and 8 deletions

View File

@ -160,6 +160,19 @@ ConfigVariableInt dx_lru_minimum_memory_requirement
ConfigVariableInt dx_lru_maximum_memory_requirement
("dx-lru-maximum-memory-requirement", 128000000);
// this is the number of LRU pages the LRU will update per frame
// do not set this too high or it will degrade performance
ConfigVariableInt dx_lru_maximum_page_updates_per_frame
("dx-lru-maximum-page-updates-per-frame", 10);
// lru debug on/off
ConfigVariableBool dx_lru_debug
("dx-lru-debug", false);
// if dx_lru_debug == true && if notify-level-dxgsg9 == debug
// number of frames to wait until printing out the LRU status
ConfigVariableInt dx_lru_debug_frames_til_output
("dx-lru-debug-frames-til-output", 500);
ConfigureFn(config_dxgsg9) {
init_libdxgsg9();

View File

@ -67,6 +67,11 @@ extern ConfigVariableInt dx_lru_maximum_pages;
extern ConfigVariableInt dx_lru_free_memory_requirement;
extern ConfigVariableInt dx_lru_minimum_memory_requirement;
extern ConfigVariableInt dx_lru_maximum_memory_requirement;
extern ConfigVariableInt dx_lru_maximum_page_updates_per_frame;
// LRU debug variables
extern ConfigVariableBool dx_lru_debug;
extern ConfigVariableInt dx_lru_debug_frames_til_output;
extern EXPCL_PANDADX void init_libdxgsg9();

View File

@ -812,20 +812,19 @@ end_frame() {
int frames;
int maximum_updates;
// LRU *****
maximum_updates = 10;
// LRU update
maximum_updates = dx_lru_maximum_page_updates_per_frame;
_lru -> partial_lru_update (maximum_updates);
// _lru -> update_entire_lru ( );
// LRU debug
if (false && dxgsg9_cat.is_debug())
{
dxgsg9_cat.debug() << "* start_priority_index " << _lru -> _m.start_priority_index << "\n";
dxgsg9_cat.debug() << "* start_update_lru_page " << _lru -> _m.start_update_lru_page << "\n";
}
frames = 256;
if ((_lru -> _m.current_frame_identifier % frames) == 0)
frames = dx_lru_debug_frames_til_output;
if (dx_lru_debug && frames > 0 && (_lru -> _m.current_frame_identifier % frames) == 0)
{
if (dxgsg9_cat.is_debug())
{
@ -833,9 +832,8 @@ end_frame() {
available_texture_memory = _d3d_device->GetAvailableTextureMem ( );
dxgsg9_cat.debug() << "* LRU: total_pages " << _lru -> _m.total_pages << "/" << _lru -> _m.maximum_pages << "\n";
dxgsg9_cat.debug() << "* LRU: total_pages " << _lru -> _m.total_pages << "/" << _lru -> _m.maximum_pages << " upf " << dx_lru_maximum_page_updates_per_frame << " fto " << dx_lru_debug_frames_til_output << "\n";
dxgsg9_cat.debug() << "* DX available_texture_memory = " << available_texture_memory << "\n";
// dxgsg9_cat.debug() << "* DX delta_memory " << available_texture_memory - _lru -> _m.available_memory << "\n";
dxgsg9_cat.debug() << "* delta_memory " << _available_texture_memory - (available_texture_memory + (_lru -> _m.maximum_memory - _lru -> _m.available_memory)) << "\n";
dxgsg9_cat.debug() << "* available_memory " << _lru -> _m.available_memory << "/" << _lru -> _m.maximum_memory << "\n";
dxgsg9_cat.debug() << "* total lifetime pages created " << _lru -> _m.identifier << "\n";