From 5ae5135044ff1ba3785c734178461f4cb5fb129e Mon Sep 17 00:00:00 2001 From: aignacio_sf <> Date: Thu, 29 Dec 2005 18:53:35 +0000 Subject: [PATCH] Add more options and debug options for DX9 LRU. --- panda/src/dxgsg9/config_dxgsg9.cxx | 13 +++++++++++++ panda/src/dxgsg9/config_dxgsg9.h | 5 +++++ panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx | 14 ++++++-------- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/panda/src/dxgsg9/config_dxgsg9.cxx b/panda/src/dxgsg9/config_dxgsg9.cxx index c349332035..f778f6f927 100755 --- a/panda/src/dxgsg9/config_dxgsg9.cxx +++ b/panda/src/dxgsg9/config_dxgsg9.cxx @@ -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(); diff --git a/panda/src/dxgsg9/config_dxgsg9.h b/panda/src/dxgsg9/config_dxgsg9.h index c33232599a..493162d894 100755 --- a/panda/src/dxgsg9/config_dxgsg9.h +++ b/panda/src/dxgsg9/config_dxgsg9.h @@ -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(); diff --git a/panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx b/panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx index b71ddcc48a..6c22a0df10 100755 --- a/panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx +++ b/panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx @@ -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";