[FIRE-32550] LODS stuck when out of view

Reducing the excessive aggression of the VOCache purging seems to improve this a lot. It also improves other things such as area search and 360 photos. It may also help with the race track vanishing issues.
meow-7.2.2
Beq 2023-07-19 08:01:10 +01:00
parent 60cf499a55
commit 4ec632eebb
2 changed files with 23 additions and 4 deletions

View File

@ -9948,7 +9948,7 @@
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>64</integer>
<integer>0</integer>
</map>
<key>NoPreload</key>
<map>
@ -14282,7 +14282,7 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>2048</integer>
<integer>4096</integer>
</map>
<key>SceneLoadLowMemoryBound</key>
<map>
@ -14293,7 +14293,7 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>750</integer>
<integer>2048</integer>
</map>
<key>SceneLoadMinRadius</key>
<map>

View File

@ -383,6 +383,21 @@ void LLVOCacheEntry::updateDebugSettings()
LLMemory::updateMemoryInfo() ;
U32 allocated_mem = LLMemory::getAllocatedMemKB().value();
static const F32 KB_to_MB = 1.f / 1024.f;
// <FS:Beq> FIRE-32688 Area search and other visibility issues
// If this machine has limited RAM, then restore the LL defaults.
// So long as we have at least 8GB of RAM, then we will use our values.
if( LLMemory::getAvailableMemKB() * KB_to_MB < 8096 )
{
if( (U32)low_mem_bound_MB > 768 )
{
gSavedSettings.setU32("SceneLoadLowMemoryBound", 768);
}
if( (U32)high_mem_bound_MB > 2048 )
{
gSavedSettings.setU32("SceneLoadLowMemoryBound", 2048);
}
}
// </FS:Beq>
U32 clamped_memory = llclamp(allocated_mem * KB_to_MB, (F32) low_mem_bound_MB, (F32) high_mem_bound_MB);
const F32 adjust_range = high_mem_bound_MB - low_mem_bound_MB;
const F32 adjust_factor = (high_mem_bound_MB - clamped_memory) / adjust_range; // [0, 1]
@ -404,7 +419,11 @@ void LLVOCacheEntry::updateDebugSettings()
//the number of frames invisible objects stay in memory
static LLCachedControl<U32> inv_obj_time(gSavedSettings,"NonvisibleObjectsInMemoryTime");
static const U32 MIN_FRAMES = 10;
static const U32 MAX_FRAMES = 64;
// <FS:Beq> FIRE-32688 Area search and other visibility
// static const U32 MAX_FRAMES = 64;
// 64 frames for many users now is about a second. Having this as the longest we wait before purging leads to excessively aggressive purging.
static const U32 MAX_FRAMES = 1024;
// </FS:Beq>
const U32 clamped_frames = inv_obj_time ? llclamp((U32) inv_obj_time, MIN_FRAMES, MAX_FRAMES) : MAX_FRAMES; // [10, 64], with zero => 64
sMinFrameRange = MIN_FRAMES + ((clamped_frames - MIN_FRAMES) * adjust_factor);
}